美文网首页
Hessian Matrix: When Gradient is

Hessian Matrix: When Gradient is

作者: 单调不减 | 来源:发表于2019-11-26 16:03 被阅读0次

Why Deep Structure 一文中我已经说明了 Deep Structure 的表示能力很强,以及相比 Shallow Structure 的优势所在。但“能力越大责任越大”,拟合能力越强的模型往往越难找到最优解。

本文根据李宏毅老师的讲义整理了关于 Deep Learning 中的 Optimization 部分的一个特殊情形,即梯度为 0 的情形。

首先,我们知道,若损失函数为凸函数,则使用梯度下降法找到的局部最优解即为全局最优解,但深度学习难就难在其损失函数通常不是凸函数,如图所示:

图中通过一个很简单的例子说明了为什么 DL 的 Loss Function 通常非凸。假如我们当前找到了一组权重使得 Loss Function 达到局部最小值,那么我们通过交换神经元的位置而不改变权重,显然得到的还是局部最小值,而这两者的权重向量是不同的,由其中一个向量变化到另一个向量的过程中 Loss Function 必然会有一个上升过程(因为当前处于局部最小),因此局部的函数图像如右下角的图形所示,是一个非凸函数。

非凸函数的麻烦在于,当我们利用梯度下降法找到局部最小值时,我们不知道和全局最小值相差多少,也无法保证能够得到全局最小值。

但近期的研究中人们猜测,虽然 DL 的损失函数局部最小值很多,但都相差不大,也就是说,当陷入局部最小的时候,我们就得到了一个不错的解。

所以接下来的问题就是,利用梯度下降法能够得到局部最优解吗?

如上图所示,当我们陷入梯度为 0 (或梯度数值非常小)的点时,有可能是局部最小值,有可能是局部最大值,也有可能是鞍点。

当然,利用梯度下降法最终停在局部最大值的可能性几乎为 0,除非你的初始位置就在局部最大值点,使得参数无法更新。

当梯度下降法运行停止的时候,我们要如何判断所在点是以上哪一种情形呢?

其实思路和高中时期求二阶导没有本质区别。首先将 Loss Function 在当前的临界点 \theta_0 进行 Taylor expansion,由于当前导数 g=0,因此函数值在 \theta_0 附近的变化情形由二阶项决定。

这里就自然引出了 Hessian Matrix 的定义。

由图中的形式我们知道,若 H 是正定矩阵(即对任意x,都有x^THx>0),则 f 在点 \theta_0 附近的所有 \theta 的取值都大于在 \theta_0 的取值(因为二次项恒正),所以 \theta_0 是 local minimum。

同理,若 H 是负定矩阵,则 f 在点 \theta_0 附近的所有 \theta 的取值都小于在 \theta_0 的取值(因为二次项恒负),所以 \theta_0 是 local maximum。

若有时𝑥^𝑇𝐻𝑥 > 0, 有时𝑥^𝑇𝐻𝑥 < 0,则 \theta_0 是一个鞍点。

需要注意的是,如果 H 是半正定或半负定的,即对任意x,都有x^THx\geq0x^THx\leq0,则无法确定 \theta_0 是哪一种情形,因此当 x^THx=0 的时候,决定 \theta_0 附近点的取值的就变成三次项了。

最后,需要说明的是,梯度下降法有时候会卡住,也就是说 Loss Function 的值不再呈下降趋势,而是在某个值附近振荡,这时候我们往往认为是接近临界点导致的,而事实并不一定如此。

如图所示,当梯度下降法导致的 Loss Function 变化平缓的时候,其实它的梯度值仍然可能很大。

此外,在实践中人们发现,DL 的训练过程中 Loss Function 的变化趋势更像下面的形式。

也就是说,我们一直在不断跳入鞍点(下降)然后逃离(上升),而不是一路下降停在一个局部最优点。

相关文章

网友评论

      本文标题:Hessian Matrix: When Gradient is

      本文链接:https://www.haomeiwen.com/subject/mzxjwctx.html