在上文一文让你彻底搞懂最小二乘法(超详细推导)中我们提到过,发明最小二乘法的勒让德认为,让误差的平方和最小估计出来的模型是最接近真实情形的(误差=真实值-理论值)。换句话说,勒让德认为最佳的拟合准则是使 y i y_{i} yi f ( x i ) f(x_{i}) f(xi)的距离的平方和最小,即:
L = ∑ i = 1 n ( y i − f ( x i ) ) 2 L=\sum_{i=1}^{n}(y_{i}-f(x_i))^{2} L=i=1n(yif(xi))2
这个准则也被称为最小二乘准则。

勒让德在原文中提到:使误差平方和达到最小,在各方程的误差之间建立了一种平衡,从而防止了某一极端误差取得支配地位,而这有助于揭示系统的更接近真实的状态。至于说为什么最佳准则就是误差平方而不是其它的,当时是没有给出解释的,直到后来高斯建立了正态误差分析理论才成功回答了该问题。

误差分析理论其实说到底就一个结论:观察值的误差服从标准正态分布,即 ϵ ∈ N ( 0 , σ 2 ) \epsilon \in N\left(0, \sigma^{2}\right) ϵN(0,σ2)

这个结论现在在我们看来是理所当然的,因为它实在太符合直觉了,观测值距离理论值有时大有时小,当观测样本多起来后,根据大数定理,这些样本的误差就一定会服从正态分布!

那么如何根据这个结论推导出最小二乘法呢?

我们先暂时忘记什么是最小二乘法,重新审视一下这个问题:我们观测得到了一组样本,我们想通过这组样本去估计出模型的参数。

我们假设真实的模型参数为 θ \theta θ,模型的真实输出为 f θ ( x i ) f_{\theta}(x_i) fθ(xi), 由于各种问题,我们观测到的样本 y i y_{i} yi距离真实值都是存在误差的,这个误差项记为 ϵ \epsilon ϵ。那么根据高斯误差分析的结论,误差项 ϵ \epsilon ϵ应当满足 ϵ ∈ N ( 0 , σ 2 ) \epsilon \in N\left(0, \sigma^{2}\right) ϵN(0,σ2),则每个观测样本 y i y_{i} yi应该有: y i ∈ N ( f θ ( x i ) , σ 2 ) y_{i} \in N\left(f_{\theta}(x_i), \sigma^{2}\right) yiN(fθ(xi),σ2),即观察到的样本 y i y_{i} yi是由理论值(模型的真实输出) f θ ( x i ) f_{\theta}(x_i) fθ(xi) 叠加上高斯噪声 ϵ \epsilon ϵ 得到的,这个不难理解。

从概率统计的视角,我们把观测样本看作随机变量,其中随机变量 y i y_{i} yi符合概率分布: y i ∈ N ( f θ ( x i ) , σ 2 ) y_{i} \in N\left(f_{\theta}(x_i), \sigma^{2}\right) yiN(fθ(xi),σ2) ,目前已经给定了一批样本,那么我如何去估计出模型的参数呢?

没错,极大似然估计!

推导

极大似然估计的思想总结来说就是,最大化当前这个样本集发生的概率,专业点说就是最大化似然函数(likelihood function),而似然函数就是样本的联合概率。由于我们通常都会假设样本是相互独立的,因此联合概率就等于每个样本发生的概率乘积。

在这个问题中,每个样本 y i y_{i} yi发生概率:
p ( y i ∣ x i ; θ ) = 1 2 π σ exp ⁡ ( − ( y i − f θ ( x i ) ) 2 2 σ 2 ) p\left(y_{i} \mid x_{i} ; \theta\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-f_{\theta}(x_i)\right)^{2}}{2 \sigma^{2}}\right) p(yixi;θ)=2π σ1exp(2σ2(yifθ(xi))2)

则似然函数:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) = ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y i − f θ ( x i ) ) 2 2 σ 2 ) \begin{aligned} L(\theta) &=\prod_{i=1}^{m} p\left(y_{i} \mid x_{i} ; \theta\right)=\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-f_{\theta}(x_i)\right)^{2}}{2 \sigma^{2}}\right) \end{aligned} L(θ)=i=1mp(yixi;θ)=i=1m2π σ1exp(2σ2(yifθ(xi))2)

一般来说,我们会对似然函数取 l o g log log以将连乘变成累加,主要有两个目的:防止溢出和方便求导,则有:
J ( θ ) = log ⁡ ( L ( θ ) ) = ∑ i = 1 m log ⁡ p ( y i ∣ x i ; θ ) = ∑ i = 1 m ( log ⁡ 1 2 π σ exp ⁡ ( − ( y i − f θ ( x i ) ) 2 2 σ 2 ) ) = − 1 2 σ 2 ∑ i = 1 m ( y i − f θ ( x i ) ) 2 − m ln ⁡ σ 2 π \begin{aligned} J(\theta) &=\log (L(\theta)) \\ &= \sum_{i=1}^{m}\log p\left(y_{i} \mid x_{i} ; \theta\right) \\ &=\sum_{i=1}^{m}\left(\log \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-f_{\theta}(x_i)\right)^{2}}{2 \sigma^{2}}\right)\right) \\ &=-\frac{1}{2 \sigma^{2}} \sum_{i=1}^{m}\left(y_{i}-f_{\theta}(x_i)\right)^{2}-m \ln \sigma \sqrt{2 \pi} \end{aligned} J(θ)=log(L(θ))=i=1mlogp(yixi;θ)=i=1m(log2π σ1exp(2σ2(yifθ(xi))2))=2σ21i=1m(yifθ(xi))2mlnσ2π

去掉不包含 θ \theta θ 的常数项,以及系数,则
arg ⁡ max ⁡ θ J ( θ ) ⇔ arg ⁡ min ⁡ θ ∑ i = 1 m ( y i − f θ ( x i ) ) 2 \arg \max _{\theta} J(\theta) \Leftrightarrow \arg \min _{\theta} \sum_{i=1}^{m}\left(y_{i}-f_{\theta}(x_i)\right)^{2} argθmaxJ(θ)argθmini=1m(yifθ(xi))2

即极大化似然函数等价于极小化最小二乘法的代价函数,这也表明了以误差平方和作为最佳拟合准则的合理性。

因此我们可以这样说,最小二乘法其实就是误差满足正态分布的极大似然估计!

深度学习中的损失函数

事实上,深度学习中的损失函数也与极大似然估计有关。

最小二乘法中的模型是我们根据先验知识定下的,换句话说 f f f是有显示的函数表达式的,这是因为问题比较简单。当面对复杂问题时,这种方式就无能为力了,因为我们很难估计出输入与输出之间的关系应该是什么样子的。

而在深度学习里,我们就不需要去考虑该问题,我们通过搭建复杂的神经网络让它去自动拟合输入到输出之间的映射关系,因此也是一种更强大的技术。

当我们选定了一个具体的神经网络(比如CNN、RNN、transformer等)后,我们就相当于构建了模型 f θ f_{\theta} fθ,输入与输出之间的映射关系就隐含在模型参数 θ \theta θ中。我们通过在训练集上使用梯度下降法来不断调整参数 θ \theta θ,使得模型预测值与真实值越近越好。

那么需要考虑的一个问题就是,需要何种准则去衡量模型预测值与真实值之间的距离。这种衡量准则被称为损失函数(loss function)或代价函数(cost function)。虽然损失函数有很多种,但每种类型的问题都有事实上确定的损失函数,比如数值回归问题就用误差平方损失,分类问题就用交叉熵损失。

大家有没有想过,为什么就非要用这些损失函数,用别的就不可以吗?
当然是有原因的,因为在极大似然估计理论下,使用这些特定的损失函数训练出来的模型在理论上就是最优的。

关于回归问题的误差平方损失我们已经证明过了,那么分类问题为什么要用交叉熵损失呢?这个我问题会写在下一篇博客。

以上就是全部内容。

Reference
https://wenku.baidu.com/view/0c6004c27375a417876f8f43.html
https://www.zhihu.com/question/20447622/answer/209839263

如果对你有帮助,请点个赞让我知道:-D

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐