似然函数,在机器学习的算法模型中,可以说是“老熟人”了,虽然总感觉自己已经掌握了这个概念,但是每次遇到具体的情况时,发现还是难以说清楚,于是根据wiki上关于Likelihood function的解释,以及个人的学习理解,整理笔记如下:
在统计学中,似然函数(或简称似然)是一个基于给定数据模型参数的特殊函数,似然(likelihood)与概率(probability)所表示的意义是完全不同的,具体如下:
在给定参数值的情况下,概率用于描述未来出现某种情况的观测数据的可信度。
在给定观测数据的情况下,似然用于描述参数值的可信度。
听起来可能会觉得摸不着头脑,先不着急,待我给出似然的定义之后,我们再来结合具体实例来理解上面的两句话。
根据概率的分布属于离散型还是连续型,似然函数的定义也略有不同,下面分别进行说明:
(1)对于离散型变量
假设X是一个离散型的随机变量,它的概率分布p取决于参数θ,那么它的似然函数定义为:
L ( θ ∣ x ) = p θ ( x ) = P θ ( X = x ) = P ( X = x ∣ θ ) = P ( X = x ; θ ) L(\theta | x)=p_{\theta}(x)=P_{\theta}(X=x)=P(X=x | \theta)=P(X=x ; \theta) L(θ∣x)=pθ(x)=Pθ(X=x)=P(X=x∣θ)=P(X=x;θ) 【注】其中 L ( θ ∣ x ) L(\theta | x) L(θ∣x) 为 L ( Θ = θ ∣ X = x ) L(\Theta=\theta | X=x) L(Θ=θ∣X=x) 的缩写,它表示基于给定的X=x,我们认为参数Θ=θ的似然(可信度),它的值则等于基于给定的参数Θ=θ,我们预测出现X=x的概率(可信度)(概率有好几种表达方式,这里全部列举了出来…)
(2)对于连续型变量
假设X是一个连续型的随机变量,它的概率分布是一个概率密度函数f(f取决于参数θ),这时它的似然函数定义为:
L ( θ ∣ x ) = f θ ( x ) {L}(\theta |{x})={f}_{\theta}({x}) L(θ∣x)=fθ(x) 【注】 L ( θ ∣ x ) L(\theta | x) L(θ∣x) 的含义与上面一致,不做解释, f θ ( x ) {f}_{\theta}({x}) fθ(x)表示基于参数 θ ,预计 X=x 的概率值为 f θ ( x ) {f}_{\theta}({x}) fθ(x),也可写作 f ( x ∣ θ ) {f}({x} | \theta) f(x∣θ)。这个看着有点抽象,举个具体实例来进行说明。
比如说X服从正态分布,我们知道正态分布的概率密度函数形式是:
f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}} f(x)=σ2π1e−2σ2(x−μ)2 在机器学习的模型中,我们假设误差 ε 是独立同分布的,并且服从N(μ,σ2) 的高斯/正太分布,即ε相当于上面概率密度函数中的x。在线性回归模型中,我们知道 y(i) =θT· x(i) + ε(i) ,其中x(i) 和y(i) 表示是第i个样本的特征向量和真实标签值。
于是代入 ε(i) = y(i) - θT· x(i) 到正太分布的概率密度函数中,我们可以得到,对于已经观测到的m个样本的结果,它的似然函数为:
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) − μ ) 2 2 σ 2 ) L(\theta)=\prod_{i=1}^{m} p\left(y^{(i)} | x^{(i)} ; \theta\right) =\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}-\mu\right)^{2}}{2 \sigma^{2}}\right) L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1exp(−2σ2(y(i)−θTx(i)−μ)2) 【注】我们已经观测到m个样本的结果,每个样本之间是独立同分布的,于是计算m个样本同时发生的概率,则将每个样本发生的概率相乘。
这里讲述关于正态分布的例子,是我本文写完后加的,主要是希望有助于理解连续型变量的概率与似然之间的联系,如果不好理解的话,建议先阅读完下面的掷硬币例子,虽然是一个离散型变量的案例,但二者的原理是很相似的。
在了解完似然函数的定义之后,我们接下来通过实例来理解最上面灰色框中的那两句话。
考虑经典的掷硬币问题,定义参数ρ1表示硬币的公平性。这个参数ρ1即为掷硬币时正面朝上的概率,ρ1的取值可以为 [0, 1] 区间的任意一个值。当然,对于一个均匀的硬币来说,ρ1的取值应该是0.5。
现在假设我们掷了两次硬币,假设每次掷硬币的结果是独立同分布的(简称i.i.d.),那么在给定参数值ρ1=0.5的情况下,预计观测到两次正面朝上的概率为:
P( 两次正面朝上 | ρ1=0.5) = 0.52 = 0.25
于是,根据前面关于离散型随机变量,似然函数的定义,我们知道,基于给定的观测数据(观测到两次正面朝上),我们认为参数ρ1=0.5的似然(likelihood)为0.25,数学式写作:
L(ρ1=0.5 | 两次正面朝上) = 0.25
注意哦,这里可不能按照概率表达式的理解,读作在两次正面朝上的情况下,ρ1=0.5的概率为0.25。它实际上表达的含义是,在观测到两次正面朝上的情况下,我们推测硬币正面朝上的概率ρ1=0.5的可信度为0.25。
现在假设这是一枚不均匀的硬币,正面朝上的概率ρ1=0.3,在这个情况下,连续两次正面朝上的概率为:
P( 两次正面朝上 | ρ1=0.3) = 0.32 = 0.09
同理,基于观测数据(两次正面朝上),我们认为参数ρ1=0.3的似然(likelihood)为0.09,数学式写作:
L(ρ1=0.3 | 两次正面朝上) = 0.09
翻译一下上式的含义,在观测到两次正面朝上的情况下,我们推测硬币正面朝上的概率ρ1=0.3的可信度为0.09。
读到这里的时候,是不是感觉好像有点尔理解了似然的意义了!它更加符合我们的主观认识,如果我们连续掷硬币两次,两次结果都是正面朝上,那么肯定会认为硬币正面朝上的概率为0.5的可信度比硬币正面朝上的概率为0.3的可信度高吧!
那么现在,我希望你能够理解上面的这两句话了。
在给定参数值的情况下,概率用于描述未来出现某种情况的观测数据的可信度。
在给定观测数据的情况下,似然用于描述参数值的可信度。
理解了概率与似然的区别与联系之后,我们趁热打铁,赶紧来学习一下另外一个很常见的概念极大似然估计(MLE)!
一句话来定义极大似然估计如下:
在给定观测数据的情况下,某个参数值有多个取值可能,但是如果存在某个参数值,使其对应的似然值最大,那就说明这个值就是该参数最可信的参数值!
我们极大似然估计的目的,就是为了找到似然最大时所对应的参数,这个方法在机器学习中经常用到!
仍然用前面掷硬币的例子来进行说明,假设我们连续掷一枚硬币两次,观测到的结果是两次正面朝上,我们要求硬币正面朝上的概率ρ1的极大似然估计,过程如下:
假设硬币出现正面朝上的概率ρ1的值为θ,那么似然函数为:
L(ρ1=θ | 两次正面朝上) = θ2 其中θ∈[0, 1]
接下来就是简单的数学问题了,给定函数f(x) = x2,x∈[0, 1] 求 f(x) 的最大值。一个简单的思路,就是求一阶导,然后分析自变量在给定区间的单调性,然后找出函数的最大值,以及对应的x。
于是在本例中,我们回想一下二次函数的图像就知道,L(ρ1=θ | 两次正面朝上) 在θ=1时取得最大值,也就是说,在连续观测到硬币出现两次正面朝上的情况下,我们认为硬币正面朝上的概率ρ1=1是最可信的(因为此时似然估计最大)。
如果你觉得还不够过瘾的话,我们假设连续掷硬币三次,观测到的结果是出现了两次正面朝上,一次正面朝下,在这种情况下,掷硬币出现正面朝上的极大似然估计为多少呢?
假设硬币出现正面朝上的概率ρ1的值为θ,那么似然函数为:
L(ρ1=θ | 两次正面朝上,一次正面朝下) = θ2 * (1-θ) 其中θ∈[0, 1]
很明显这是一个三次函数,我们对它求导之后,找到函数的极值点,发现θ = 2/3时似然函数L取得最大值,于是我们得出结论,在观测到硬币出现两次正面朝上和一次正面朝下的情况下,我们认为硬币正面朝上的概率ρ1 = 2/3是最可信的!
希望看到这里时,你在心中已经对似然、概率、极大似然估计有了一定的认识,我们最后再来说一下对数似然函数吧,这个在机器学习的算法中也经常遇到。
根据前面的学习,我们发现极大似然估计的求解方法,往往是对参数θ求导,然后找到导函数为0时对应的参数值,根据函数的单调性,找到极大似然估计时对应的参数θ。
但是在实际问题中,对于大批量的样本(大量的观测结果),其概率值是由很多项相乘组成的式子,对于参数θ的求导,是一个很复杂的问题,于是我们一个直观的想法,就是把它转成对数函数,累乘就变成了累加。
至于为什么可以用对数函数进行转换呢 ?
首先我们可以知道的是,每一个观测结果的概率是大于0的,所以是满足对数函数的定义域的。
然后呢,我们知道对数函数f(x) = ln x 是一个单调递增的函数,根据高中所学知识,如果f(x)为单调函数,那么对于函数g(x),f(g(x))和g(x) 在同一个定义域内的变化趋势是一致的。
以下图为例: f ( x ) = l n ( x ) f(x)=ln (x) f(x)=ln(x), g ( x ) = 1 / x g(x)=1 / x g(x)=1/x, h ( x ) = f ( g ( x ) ) h(x)= f ^{}(g(x)) h(x)=f(g(x)),发现 h ( x ) h(x) h(x)和 g ( x ) g(x) g(x)在 x > 0 x>0 x>0的区间内,变化趋势是一致的。
换句话说,我们用对数函数,对前面的似然函数进行转换之后,是不会影响原来似然函数的变化趋势的,即对数似然函数的最大值点就是似然函数的最大值点,这个结论太重要啦!
对数似然函数的的主要作用,就是用来定义某个机器学习模型的损失函数,线性回归或者逻辑回归中都可以用到,然后我们再根据梯度下降/上升法求解损失函数的最优解,取得最优解时对应的参数θ,就是我们机器学习模型想要学习的参数 !
本文采用循序渐进的方式,一步步揭示了似然与概率之间的区别与联系,由似然我们联想到了最大似然,由最大似然我们想到了利用对数似然函数,来求解极大似然估计,希望本文能够对正在学习机器学习算法的同学们起到一定的帮助作用。