3.2.2 最大似然估计

引入

回顾洒水问题,我们根据 p(O1C1)=0.8>p(O1C2)=0.6>p(O1C3)=0.2p(O 1 \mid C 1)=0.8>p(O 1 \mid C 2)=0.6>p(O 1 \mid C 3)=0.2,作出了“当门口有水时,最有可能是下雨了”的推断。如果使用上一节最后所提到的最大似然估计的视角来看待这个问题,这个问题可以被表述为 “如果 θ\theta 的值域为集合 C1C2C3(C1,C2,C3),其中L(θ)=(d1=有水θ)L(\theta)=\left(d_1 = 有水 \mid \theta\right),那么当θ\theta 为何值时,L(θ)L(\theta) 最大?”。对于这个问题,我们当然可以轻松地推出,要使得 L(θ) L(\theta) 最大,那么应该选择 θ=C1(下雨)\theta = C_1(下雨)

在这个过程中,我们完成了一次对离散分布下的似然函数进行最大似然估计。那么,严格上最大似然估计该如何定义?在刚刚的例子中,我们只关注单个数据点(d1=有水d_1 = 有水),但在实践中我们通常面对的都是一系列数据点,如何对一系列实验数据的似然函数进行极大似然估计呢

最大似然估计的基本概念

3.n 最大似然估计

在第二章中,我们学习了优化,在优化问题中我们需要使得损失函数最小。而实际上求解最大似然估计的过程同样也是优化过程。不过在具体操作上,两者存在少许差别:我们通常会对似然函数进行一些转换。

首先,因为概率 p(diθ) p\left(d_i \mid \theta\right) 一定小于1,那么连乘过后往往非常小。为了避免在数值计算过程中的数据下溢,通常我们使用 log\log 函数进行变换。

一方面 log\log 变换不改变函数的单调性,如下图所示,x2x^2x=0x=0处取得最小值,ln(x2)ln(x^2)也在x=0x=0处取得最小值。

另一方面, log\log 函数的导数是它的倒数,这会使得在反向传播算法中计算梯度变得更加方便。

进行 log\log 变换后,我们可以得到对数似然函数

LL(θ)=log(L(θ))=log(i=1np(diθ))=inlog(p(diθ))(3.1)L L(\theta)=\log (L(\theta))=\log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right)=\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right)\qquad\qquad\tag{3.1}

其次, p(diθ) p\left(d_i \mid \theta\right) 小于1,则log(p(diθ))\log(p(d_i \mid \theta))小于0,要使得小于0的inlog(p(diθ))\sum_i^n \log (p(d_i|\theta))取得最大值,就等价于求inlog(p(diθ))-\sum_i^n \log (p(d_i|\theta))的最小值(或许有点绕,但大家可以暂停一下理清思路)。

这样,我们再在对数似然函数的前面加个 负号,就得到了负对数似然函数

NLL(θ)=log(L(θ))=log(i=1np(diθ))=inlog(p(diθ))(3.2)N L L(\theta)= - \log (L(\theta)) = - \log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right)=-\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right)\qquad\qquad\tag{3.2}

此时有,

θ^=u^,σ^>=argmaxθL(θ)=argmaxθLL(θ)=argminθNLL(θ)(3.3)\hat{\theta}=\langle\hat{u}, \hat{\sigma}>=\underset{\theta}{\arg \max } L(\theta)=\underset{\theta}{\arg \max } L L(\theta)=\underset{\theta}{\arg \min } N L L(\theta)\qquad\qquad\tag{3.3}

至此,又回到了之前介绍过的优化问题,如何使得函数取得最小值,这样就能使用我们熟悉的python minimize函数进行求解了!

下面我们对极大似然估计进行技术总结:

极大似然估计的步骤

  1. 根据数据生成模型写出基于参数的似然函数(此步为最关键也是最难的一步

  2. 将得到的似然函数变换为负对数似然函数

  3. 利用matlab或者python等优化软件的数值优化方法求解。例如python里面的minimize函数,matlab里面的fminsearch函数

最大似然估计与最小二乘法

先前的章节中,我们已经学习了求解简单线性模型的最小二乘法。最小二乘法是:在线性回归中,我们通过最小化误差的平方和找到最能拟合数据的

那么最大似然估计跟最小二乘法的关系是什么,我们先给出一个结论:

在线性回归中,当残差(或称为噪音)满足正态分布的条件下,最大似然估计和最小二乘法在数学上是等价的

现在,我们来一步步证明这个结论:

考虑一个简单线性模型: y=ax+by=a x+b , 其中残差ϵ\epsilon 满足均值为0,标准差为σ\sigma的高斯分布(所以假定σ\sigma已知)

我们从这个模型中得到了一组数据, 自变量为 X=[x1,x2,,xi,]X=\left[x_1, x_2, \ldots, x_i, \ldots\right] ,因变量为 Y=[y1,y2,,yi,]Y=\left[y_1, y_2, \ldots, y_i, \ldots\right] ,为找到能够最佳拟合这一组数据的线性模型,我们使用最小二乘法对模型参数进行求解:

argmina,bin(yi(axi+b))2(3.4)\underset{a, b}{\arg \min } \sum_i^n\left(y_i-\left(a x_i+b\right)\right)^2 \qquad\qquad\tag{3.4}

那么,在最大似然估计的情况下,我们要怎么来表示这个求解过程?

现在,我们将参数 a,ba, b 看作一个参数对 θ\theta ,将数据 xi,yix_i, y_i 看作一个数据对 did_i ,整个数据集用 DD 表示。结合先前的内容,我们可以写作:

已知数据 D=[d1,d2,...di] D = [d_1, d_2, ...d_i],其中di=(xi,yi)d_i = (x_i, y_i),求其背后的高斯分布 θ=(a,b)\theta=(a, b) ,使其负对数似然函数取得最小值

但这么说并不是很直观,你或许会想,为什么这些数据点(xi,yi)(x_i,y_i)背后跟高斯分布有关,跟高斯分布有关的不是残差吗?

通常来说,我们这么来表示线性模型:

y=ax+b+ϵ          ϵN(0,σ2)y = ax+ b +\epsilon \;\;\;\;\;\epsilon \sim N(0,\sigma^2)

但这可以等价写为:

yN(μ,σ2)          μ=ax+by \sim N(\mu,\sigma^2)\;\;\;\;\; \mu = ax+b

因此,我们完全可以用高斯分布来表示线性模型

(改编自:https: // saylordotorg.github.io/text_introductory-statistics/s14-03-modelling-linear-relationships.html)

那么很显然,在给定的μ(a,b),σ\mu(即a, b), \sigma下,取到数据点di=(xi,yi)d_i = (x_i, y_i)的条件概率可以表示为:

p(diθ)=p(yixi,a,b)=12πσ2exp((yiμ)22σ2)p(d_i|\theta) = p(y_i|x_i,a,b) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left(-\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right)

代入负对数似然函数,可以表示为:

NLL(θ)=LL(θ)=log(L(θ))=log(i=1np(diθ))=inlog(p(diθ))=inlog(12πσ2exp((yiμ)22σ2))=in(log(12πσ2)+(yiμ)22σ2)\begin{aligned} N L L(\theta) & =-L L(\theta) \\ & =-\log (L(\theta)) \\ & =-\log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right) \\ & =-\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right) \\ & =-\sum_i^n \log \left(\frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left(-\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right)\right)\\ & = \sum_i^n\left(-\log \left(\frac{1}{\sqrt{2 \pi \sigma^2}}\right)+\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right) \\ \end{aligned}

σ\sigma 已知的情况下,其中的 log(12πσ2)-\log \left(\frac{1}{\sqrt{2 \pi \sigma^2}}\right) , 2σ22 \sigma^2 都为常数,在计算中可以直接省去

arg minθNLL(θ)=argminθin(yiμ)2\begin{aligned} \underset{\theta}{\argmin}N L L(\theta) & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\mu\right)^2 \\ \end{aligned}

对于每个 yiy_i 来说,高斯分布的 μ\mu 实际上就是 axi+ba x_i + b

arg minθNLL(θ)=argminθin(yiμ)2=argminθin(yi(axi+b))2\begin{aligned} \underset{\theta}{\argmin}N L L(\theta) & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\mu\right)^2 \\ & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\left(a x_i+b\right)\right)^2 \\ \end{aligned}

故对于已知高斯噪音(即残差的标准差已知)的简单线性模型,最大似然估计和最小二乘法在数学上是等价的。

最后更新于