梯度下降和牛顿法

2020-10-07  本文已影响0人  zuomeng844

这里主要讨论梯度下降法和牛顿法的原理

1.梯度下降法

形式:\theta _{k+1}=\theta _{k}-\eta \bigtriangledown L(\theta _{k}),其中L为损失函数,\theta 为模型参数

下面将推导这一形式的由来.

首先,需要用到多元函数的一级泰勒展开式:L(\theta ) = L(\theta_0) + [\bigtriangledown L(\theta_0) ]^T (\theta - \theta_0) + \omicron (\theta - \theta_0)

如果忽略高阶无穷小,即\theta \theta _0\delta领域,那么等号就会变为近似相等,即:L(\theta ) -L(\theta_0) \approx    [\bigtriangledown L(\theta_0) ]^T (\theta - \theta_0)

要使得损失函数L下降更快,只需要等式右边得到最小值。

X^TY=||X||\cdot ||Y||\cdot cos\alpha 可知,当[\bigtriangledown L(\theta _0)](\theta -\theta _0)的夹角余弦cos\alpha =-1时等式右边可取得最小值。

由于[\bigtriangledown L(\theta _0)]对应的方向单位向量可表示为:\frac{[\bigtriangledown L(\theta _0)]}{||[\bigtriangledown L(\theta _0)]||}

[\bigtriangledown L(\theta _0)](\theta -\theta _0)的方向相反(夹角余弦cos\alpha =-1)时有:(\theta -\theta_0)= - \eta  \frac{[\bigtriangledown L(\theta _0)]}{||[\bigtriangledown L(\theta _0)]||} ,其中\eta 为正数。由于分母为标量,因此可以合并到\eta 中,化简为:\theta =\theta_0 - \eta \bigtriangledown L(\theta _0)

需要注意的是,\theta \theta_0要离的充分近,也就是在它的\delta邻域里面,才能忽略掉泰勒展开里面的一次以上的项,否则就不能忽略它了,它就不是高阶无穷小了,约等于的条件就不成立了,所以\eta 步长不能够太大,由此我们就得到了梯度下降法的公式。

2.牛顿法

    形式:\theta_{k+1} = \theta_{k} -H^{-1}g_k , 其中为Hessian矩阵

下面将推导这一形式的由来。

首先,需要用到多元函数的二级泰勒展开式:L(\theta ) = L(\theta_0)  + [\bigtriangledown L(\theta_0)]^T(\theta -\theta_0)+\frac{1}{2} (\theta -\theta_0)^T H(\theta -\theta_0) + \omicron (\theta -\theta_0)

如果忽略高阶无穷小,即\theta \theta_0\delta邻域,那么等号就会变为近似相等,即:L(\theta ) \approx  L(\theta_0)  + [\bigtriangledown L(\theta_0)]^T(\theta -\theta_0)+\frac{1}{2} (\theta -\theta_0)^T H(\theta -\theta_0)

如果是二次函数的话,我们找它梯度等于0的点是非常好找的,基于约等于的式子,两边同时求导。

因为

且H是对称矩阵,所以:\bigtriangledown L(\theta )\approx \bigtriangledown L(\theta_0)+H(\theta_0)(\theta - \theta_0) = 0

下面可以求解一次方程,如果hessian 矩阵可逆,就可以两边乘上 H 的逆矩阵,令g = \bigtriangledown L(\theta _0),则g+H(\theta -\theta_0)=0

两边同时乘H 的逆矩阵,有\theta -\theta_0 = -H^{-1}g

注意一下H和g都是\theta =\theta_0点处取得的,稍作调整为:\theta_{k+1}=\theta_{k}-H^{-1}g_k

有同学肯定会说,那我们去求解方程组,那不是一次就可以求得梯度等于 0 的点 \theta 了嘛, 但是因为我们忽略了后面的高阶无穷小,所以我们只是近似的找到了梯度等于 0 的点,但 是它并没有真正找到,所以我们下次要继续去用这个公式去迭代。

迭代优化时会加上步长:\theta_{k+1} = \theta_{k} -\eta H^{-1}g_k

如果我们的\theta 是二次函数的话,牛顿法一步就可以收敛,前提是步长不做设置,等于 1 的 时候就可以了,这是因为如果原函数L(\theta )是二次函数的话,泰勒展开里面就不是约等于,而是直接等于。

梯度下降法和牛顿法的关系

梯度下降法和牛顿法的关系

梯度下降法只用到了一阶导数的信息,牛顿法既用到了一阶导数的信息,也用到了二阶导数的信息。

梯度下降法是用线性函数来代替目标函数,牛顿法是用二次函数来代替目标函数, 所以说牛顿法的收敛速度是更快的。

但是牛顿法也有它的局限,hessian 矩阵不一定可逆,第二个即使存在,我们来解一个线性 方程组,当 hessian 矩阵规模很大,解线性方程组是非常耗时的,因此出现了一种改进的算 法叫拟牛顿法

上一篇 下一篇

猜你喜欢

热点阅读