本节是上一节的延续,主要介绍一下损失函数的概率解释,以及梯度下降和牛顿法两种可以用于极值求解的优化算法。

1. 损失函数的概率解释

对于线性回归模型,为什么最小化损失函数J是一种合理的选择?

假设目标变量和输入的关系如下:

其中,

代表偏差,可能是一些模型未覆盖的因素导致的偏差或者随机噪声,并且进一步假设它们服从高斯分布且独立同分布,

即:

表示给定

情况下

的条件分布。注意w是参数,并非随机变量,因此不能表示成

给定X(design matrix,包含所有的

)和参数w,采用极大似然法来求取Y的分布:

因此,最大化

即为最小化

,即最小二乘法的损失函数。需要注意的是,

的大小对最终参数w的选择没有影响。

2.梯度下降法(Gradient descent)

梯度下降法是一种求取函数的局部极小值的迭代算法, 每一步沿当前点的负梯度的方向按一定比例下降。

按照导数的定义:

由公式可见,

处的导数反映了函数在该点的瞬时变化速率,或者叫做在

处的斜率。推广到多维函数中,就有了梯度的概念,梯度是一个向量组合,反映了多维图形中变化速率最快的方向。

也就是说,多元可微函数

,在

处下降最快的方向即为

。当

在足够小时,对于

可以保证

。根据这个结论,为求得函数的局部最小值,我们从初始位置

开始,进行减去

的迭代操作得到

,……,可以得到

,因此

将有可能收敛至预期的局部最小值。其中,每次迭代时的步长

并不一定要固定不变。

如果F是凸函数,局部最小值即为其全局最小值。

回到本篇开头,我们试图最小化J(w),采用梯度下降法:

即:

上述方法称为批梯度下降(Batch Gradient Descent),在迭代过程中,每次更新ω时均要遍历整个数据集,如果样本数量m很大时收敛过程可能非常慢。

随机梯度下降算法(Stochastic Gradient Descent),每次只采用一个样本(或一部分样本)来更新ω,需要注意外层循环Loop,因为只遍历一次样本,不见得会收敛。

Loop {

for i=1 to m {

(for every j)

}

}

3.牛顿法

牛顿法就是求解函数零值位置的一种优化算法。

对于定义在实数域的函数

,其导数为

,选取初始点

,求出该点的导数(即切线的斜率),延长使其与x轴相交,以相交点的x值作为下次迭代的值,因此,迭代的更新规则为:

至于求解函数极值的过程中,我们经常转化为求解其导数为零的问题。比如极大似然法时,求解似然函数

的极大值:

,采用牛顿法,更新规则为:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐