引入
回顾洒水问题,我们根据 p(O1∣C1)=0.8>p(O1∣C2)=0.6>p(O1∣C3)=0.2,作出了“当门口有水时,最有可能是下雨了”的推断。如果使用上一节最后所提到的最大似然估计的视角来看待这个问题,这个问题可以被表述为 “如果 θ 的值域为集合 (C1,C2,C3),其中L(θ)=(d1=有水∣θ),那么当θ 为何值时,L(θ) 最大?”。对于这个问题,我们当然可以轻松地推出,要使得 L(θ) 最大,那么应该选择 θ=C1(下雨)。
在这个过程中,我们完成了一次对离散分布下的似然函数进行最大似然估计。那么,严格上最大似然估计该如何定义?在刚刚的例子中,我们只关注单个数据点(d1=有水),但在实践中我们通常面对的都是一系列数据点,如何对一系列实验数据的似然函数进行极大似然估计呢?
最大似然估计的基本概念
3.n 最大似然估计
已知数据
D=[d1,d2,...di],求其背后的高斯分布
θ=(u,σ) ,使其似然函数
L(θ)=∏i=1np(di∣θ) 取得最大值,即求解
θ^=⟨u^,σ^⟩=θargmaxL(θ),该过程被称为最大似然估计。
在第二章中,我们学习了优化,在优化问题中我们需要使得损失函数最小。而实际上求解最大似然估计的过程同样也是优化过程。不过在具体操作上,两者存在少许差别:我们通常会对似然函数进行一些转换。
首先,因为概率 p(di∣θ) 一定小于1,那么连乘过后往往非常小。为了避免在数值计算过程中的数据下溢,通常我们使用 log 函数进行变换。
一方面 log 变换不改变函数的单调性,如下图所示,x2在x=0处取得最小值,ln(x2)也在x=0处取得最小值。
另一方面, log 函数的导数是它的倒数,这会使得在反向传播算法中计算梯度变得更加方便。
进行 log 变换后,我们可以得到对数似然函数:
LL(θ)=log(L(θ))=log(i=1∏np(di∣θ))=i∑nlog(p(di∣θ))(3.1) 其次, p(di∣θ) 小于1,则log(p(di∣θ))小于0,要使得小于0的∑inlog(p(di∣θ))取得最大值,就等价于求−∑inlog(p(di∣θ))的最小值(或许有点绕,但大家可以暂停一下理清思路)。
这样,我们再在对数似然函数的前面加个 负号,就得到了负对数似然函数
NLL(θ)=−log(L(θ))=−log(i=1∏np(di∣θ))=−i∑nlog(p(di∣θ))(3.2) 此时有,
θ^=⟨u^,σ^>=θargmaxL(θ)=θargmaxLL(θ)=θargminNLL(θ)(3.3) 至此,又回到了之前介绍过的优化问题,如何使得函数取得最小值,这样就能使用我们熟悉的python minimize函数进行求解了!
下面我们对极大似然估计进行技术总结:
极大似然估计的步骤
根据数据生成模型写出基于参数的似然函数(此步为最关键也是最难的一步)
利用matlab或者python等优化软件的数值优化方法求解。例如python里面的minimize函数,matlab里面的fminsearch函数
最大似然估计与最小二乘法
在先前的章节中,我们已经学习了求解简单线性模型的最小二乘法。最小二乘法是:在线性回归中,我们通过最小化误差的平方和找到最能拟合数据的
那么最大似然估计跟最小二乘法的关系是什么,我们先给出一个结论:
在线性回归中,当残差(或称为噪音)满足正态分布的条件下,最大似然估计和最小二乘法在数学上是等价的
现在,我们来一步步证明这个结论:
考虑一个简单线性模型: y=ax+b , 其中残差ϵ满足均值为0,标准差为σ的高斯分布(所以假定σ已知)
我们从这个模型中得到了一组数据, 自变量为 X=[x1,x2,…,xi,…] ,因变量为 Y=[y1,y2,…,yi,…] ,为找到能够最佳拟合这一组数据的线性模型,我们使用最小二乘法对模型参数进行求解:
a,bargmini∑n(yi−(axi+b))2(3.4) 那么,在最大似然估计的情况下,我们要怎么来表示这个求解过程?
现在,我们将参数 a,b 看作一个参数对 θ ,将数据 xi,yi 看作一个数据对 di ,整个数据集用 D 表示。结合先前的内容,我们可以写作:
已知数据 D=[d1,d2,...di],其中di=(xi,yi),求其背后的高斯分布 θ=(a,b) ,使其负对数似然函数取得最小值
但这么说并不是很直观,你或许会想,为什么这些数据点(xi,yi)背后跟高斯分布有关,跟高斯分布有关的不是残差吗?
通常来说,我们这么来表示线性模型:
y=ax+b+ϵϵ∼N(0,σ2) 但这可以等价写为:
y∼N(μ,σ2)μ=ax+b 因此,我们完全可以用高斯分布来表示线性模型
那么很显然,在给定的μ(即a,b),σ下,取到数据点di=(xi,yi)的条件概率可以表示为:
p(di∣θ)=p(yi∣xi,a,b)=2πσ21exp(−2σ2(yi−μ)2) 代入负对数似然函数,可以表示为:
NLL(θ)=−LL(θ)=−log(L(θ))=−log(i=1∏np(di∣θ))=−i∑nlog(p(di∣θ))=−i∑nlog(2πσ21exp(−2σ2(yi−μ)2))=i∑n(−log(2πσ21)+2σ2(yi−μ)2) 在 σ 已知的情况下,其中的 −log(2πσ21) , 2σ2 都为常数,在计算中可以直接省去
θargminNLL(θ)=θargmini∑n(yi−μ)2 对于每个 yi 来说,高斯分布的 μ 实际上就是 axi+b
θargminNLL(θ)=θargmini∑n(yi−μ)2=θargmini∑n(yi−(axi+b))2 故对于已知高斯噪音(即残差的标准差已知)的简单线性模型,最大似然估计和最小二乘法在数学上是等价的。