【最小二乘法】最大似然估计与最大后验估计视角
· 最小二乘法Least Square
让我们从一个最简单的问题开始,如何根据一组观测数据\((x_i,y_i)\)来寻找它背后的规律呢?通过先验知识我们可以确定输入输出模型是\(y=kx+b\),但由于观测数据有采样误差,因此并不完全符合模型。那么,我们就需要寻找一个最佳的拟合结果,来尽可能好地描述观测数据。
可是,最佳的判别标准是什么?是点到直线的距离,误差\(\Delta y\)的代数和,还是绝对值之和,还是平方或者四次方和?勒让德对此提出了最小二乘准则:让误差的平方和最小估计出来的模型是最接近真实情形的。这从直观上来讲是对的,使误差平方和达到最小在各方程的误差之间建立了一种平衡,从而防止了某一极端误差取得支配地位,而这有助于揭示系统的更接近真实的状态。不过他并没有给出证明。
当模型为线性函数时,这样的函数拟合称为线性回归问题,即求一个合适的x使得\(Ax=b\)。这时候,我们从几何上可以发现最小二乘的直观性——当b不在A的列空间内时,最小二乘法给出的是b在A的列向量空间中的投影,这确实是最佳的结果(如上图右)。
回顾一下线代中的推导:
\(y=w^Tx\)
令\(x\)为未知的参数向量,\(y=Ax\)为模型的理论值,而\(b\)为观测值,则最小二乘的代价函数为
\(J(x) = ||y-b||^2 = ||Ax-b||^2=(Ax-b)^T(Ax-b)\)
由矩阵分析中的求导公式,
\(\frac{\partial x^TA}{\partial x} = \frac{\partial xA^T}{\partial x} = A,\space \frac{\partial x^TAx}{\partial x} = Ax + A^Tx\)
可以得到
\(\frac{\partial}{\partial x}J(x) = 2A^TAx - 2A^Tb=0, \space A^T(Ax-b)=0\)
\(x=(A^TA)^{-1}A^Tb\)
· 当逆不存在或为病态矩阵时,可以添加一个正则项(待补充)
· 为什么是平方和?最大似然估计MLE
(Maximum Likelihood Estimate,也译为极大似然估计)
我们回到最开始的问题:为什么使用平方和最小来度量,而不是差的绝对值,四次方,垂线距离或其他?有没有更一般地解释呢。让我们暂且忘记最小二乘法,来审视一下我们遇到的问题:我们观测得到了一组样本,并根据先验知识确定了模型(比如\(y=kx+b\)),现在需要通过这组样本去估计模型的参数(\(k,b\))。由于观测有随机误差,因此只能求最佳近似,也即参数最可能的取值。
想到了什么?这是一个典型的最大似然估计问题。即若知道了服从某一分布\(F(x;\theta)(\theta为参数)\)的随机变量\(x\)的一组采样\(x_1,x_2,x_3...\)后,去反推出这个分布最可能是什么形态,也就是参数\(\theta\)的最可能取值(似然指的是参数取某一值的可能性).
我们按照这个思路来解决这一问题。假设真实模型有参数\(w\),其输出为\(f_w(x)\),我们观测时会产生一个随机误差\(\epsilon\),那么观测值可以认为是一个随机变量\(y=f_w(x)+\epsilon\)。这个随机变量的分布模型是什么呢?显然取决于误差的分布。拉普拉斯在高斯工作的基础上,提出可以把误差设想成个数很多的、独立同分布的“元误差”之和,根据中心极限定理,误差应服从正态分布\(\epsilon \sim N(0,\sigma^2)。\)因此,观测样本应满足\(y_i \sim N(f_w(x_i),\sigma^2)\),也即由理论值\(f_w(x_i)\)叠加一个所谓的高斯噪声\(\epsilon\)得到。
接下来,我们进行最大似然估计。通常我们假设样本之间都是相互独立的,因此在参数为\(w,\sigma\)时,取得样本集的联合概率就是各个样本概率的乘积。每个样本发生的概率为
\(p(y_i|x_i; w)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y_i-f_w(x_i))^2}{2\sigma^2})\)
样本集的整体发生概率,也就是所谓的似然函数为
\(L(w)=\prod_{i=1}^n p(y_i|x_i; w) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y_i-f_w(x_i))^2}{2\sigma^2})\)
样本集发生的概率被表示为了一个以\(w\)为自变量的函数,那么当样本集发生概率最大时,\(w\)也就达到了最可能取值。因此我们只需要求出上式的最大值。由于连乘形式不方便求导,并且多个\(p<1\)的乘积会使得最终结果非常小,计算不便。我们取对数处理
\(J(w)=ln( L(w)) = -\frac{1}{2\sigma^2} \sum_{i=1}^{n} (y_i - f_w(x_i))^2 -n ln(\sqrt{2\pi}\sigma)\)
这时,我们惊奇地发现,由于参数\(\sigma\)并不影响极值点的位置,因此最前面的系数和后面的常数都可以忽略,而剩下的部分,就是最小二乘法则!由于负号的关系,似然函数的最大值便转换为了平方和的最小值,即
\(arg\space max_w \space J(w) = arg\space min_w \space \sum_{i=1}^{n} (y_i - f_w(x_i))^2\)
这个漂亮的结果表明,最大化似然函数等价于最小化最小二乘的代价函数,表明了以误差平方和作为最佳拟合准则的合理性。因此我们可以说,最小二乘法就是误差满足正态分布的最大似然估计!将误差平方和作为代价函数是正态分布下的特殊结果,而如果我们改变误差的分布,也就会得到新的代价函数。比如伯努利分布对应的是逻辑回归,多项分布对应的结果是softmax函数等等(有待证明和进一步解释).
· 机器学习在干什么?最大似然估计的视角
传统观念上,机器学习是一个优化问题。以监督学习为例,给定一个数据集\((x_i,y_i)\),利用先验知识建立起y和x的关系模型\(y=f(x;w),w为参数\),然后通过最小化代价函数\(Loss(Y-f_w(X))\)来确定参数的取值。也即所谓的“模型已定,参数未知”,但这样会带来一个很严重的后果,没有解释清为什么观测样本不会完全符合理论值\(f_w(X)\),而是存在偏差。由于模型是预先已经确定的,这就带来了偏差到底是由于模型不完善(比如用直线去拟合二次曲线的采样),还是存在观测误差的问题。
由于我们得到的数据集样本只是所有可能数据中一个有限的子集,在这个问题上的糊涂不清,必然会导致“以偏概全”,也就是我们常说的过拟合问题。一次抛硬币试验的结果是“正反反正反反反正反反”,那么在新的预测中,机器学习模型就更可能给出“反”的结果,尽管我们知道两者可能性相同。换句话说,如果一个参数很好地满足了已知的样本,往往会在新的数据上表现地相当糟糕,产生泛化能力比较差的问题。在实践中,会采取增大样本量,提早停机,参数惩罚(正则化,限制参数范围),dropout(随机舍弃一些数据)等技术,来艰难地在满足已知和预测未知之间保持平衡。
另一个问题是度量标准,也即代价函数如何选取,才能更好地使得模型满足实际情况。对于一个发病率仅仅为0.01%的罕见病,如果采取准确率为指标,即使模型对所有人都报告为健康,也能达到99.99%的准确率。这时候就需要更换评估标准,引入先验的发病率,去考虑假阴性(将阳性病人报告为阴性)的概率,来更合理地设计评估指标。
如何解决这些问题呢?我们考虑到统计与机器学习之间的共性——根据采样数据来反推模型参数,认为机器学习训练的实质就是根据观测数据来进行参数估计的过程。这时,我们承认\(y\)是一个随机变量,观测值是对这一随机变量的若干次采样\(y_i\),其与理论值\(f_w(x_i)\)的偏差是由误差引起。最大似然估计得出的是在当前采样数据下参数最可能的取值,是根据部分推断全体,由有限的数据确定整体最可能的分布情况,由此得出的最佳拟合和代价函数才是最合理的。
【图片:每次观测都是对随机变量的一次采样】
以二分类问题所用到的Logistic回归为例,其可以表示为
\(P(y=1|x) = S(w^T x)=\frac{1}{1+exp(-w^T x)}, \space S(x)=Sigmoid(x)=\frac{1}{1+exp(-x)}\)
\(P(y=0|x) = 1-P(y=1|x) = \frac{exp(-w^T x)}{1+exp(-w^T x)}\)
对于给定的训练数据\((x_i,y_i),y_i=0 \space or \space 1\),有似然函数
\(L(w) = \prod_{i=1}^{n} S(w^Tx)^{y_i} (1-S(w^Tx))^{1-y_i}\)
取对数有
\(J(w)=ln(L(w))=\sum_{i=1}^{n} y_iln(S(w^Tx)) + (1-y_i)ln(1-S(w^Tx))\)
\(=w^Tx(y-1)-ln(1+exp(-w^Tx))\)
这样就变成了以对数似然函数为目标的最优化问题,可以使用梯度下降法,得到\(w\)的参数估计。
事实上,深度学习中的损失函数也是由最大似然估计决定的。最小二乘法中的模型是我们根据先验知识确定的,也就是可以显式地写出\(f_w(x)\)。但面对如图像识别这样的复杂问题,我们就无法这样轻松地写出输出函数,而只能去搭建一个复杂的神经网络,添加大量的参数\(W\),去自动拟合输入输出之间的映射。此时用来衡量预测值与真实值之间关系的便是损失函数(Loss Function)。虽然损失函数有很多种,但每种特定问题都有确定的损失函数,比如回归问题用误差平方损失,分类问题用交叉熵损失函数,这也是由最大似然估计的结果决定的。
· 更进一步——考虑先验知识(MAP)
在前面抛硬币的例子里,虽然根据一次试验结果“正反反正反反反正反反”进行最大似然估计的结果是
\(P(X|\theta) = \theta^3(1-\theta)^7\)
\(lnL(\theta) = 3ln(\theta)+7ln(1-\theta),\space \theta_{MLE}=0.3\)
但我们会敏锐地意识到,这个结果有问题,硬币正面朝上的概率不大可能是0.3。这种在试验开始前,对\(\theta\)可能为多少的认知称为先验概率,也即根据常识预先对\(\theta\)的分布有一个估计,新的试验结果是在先验的基础上进行更新。
而在进行最大似然估计时,我们认为\(\theta\)是一个客观存在的固定值,完全由最大似然函数决定,也即是使数据集\(X\)出现概率最大的值(或者说,先验认为是均匀分布)。但最大似然估计并没有考虑到,X可能不是一个最好的采样,它也可能是如上述硬币试验一样处在一个可能性比较低的位置。为了解决这一问题,贝叶斯学派认为\(\theta\)也是一个有着概率分布的随机变量,对于它的分布我们会预先有一个先验估计,应当也纳入其中。
于是,根据贝叶斯定理
\(P(\theta|X) = \frac{P(X|\theta)P(\theta)}{P(X)}\)
由于\(P(X)与\theta\)无关,那么就可以用\(P(X|\theta)P(\theta)\)来估计\(P(\theta|X)\)的最值点。
\(P(\theta|X)\)被称为后验概率,因此这种估计方法称为最大后验估计MAP。实质上,它就是在似然函数\(P(X|\theta)\)基础上,乘以了先验概率\(P(\theta)\)。
以前文分析的\(y_i \sim N(f_w(x_i),\sigma^2)\)这一数据集为例,假设先验认为\(w \sim N(0, \gamma^2), \sigma为均匀分布\),则
\(w_{MAP}=arg \space max \space L(w)p(w)p(\sigma^2) = arg \space max \space lnL(w)+lnp(w)+lnp(\sigma^2)\)
\(= arg\space min_w \space \sum_{i=1}^{n} (y_i - f_w(x_i))^2 + \frac{1}{2\gamma^2}||w||^2 + C(\sigma)\)
可见,该最大后验估计是在最大似然估计的基础上,增加了两个修正项\(\frac{1}{2\gamma^2}||w||^2 + C(\sigma)\)。
至此,问题也就基本阐释清楚了。