三、二阶导数与海森矩阵
3.1 海森矩阵
二阶导数 刻画了曲率。假设有一个二次函数(实际任务中,很多函数不是二次的,但是在局部可以近似为二次函数):
- 如果函数的二阶导数为零,则它是一条直线。如果梯度为 1,则当沿着负梯度的步长为 时,函数值减少 。
- 如果函数的二阶导数为负,则函数向下弯曲。如果梯度为1,则当沿着负梯度的步长为 时,函数值减少的量大于 。
- 如果函数的二阶导数为正,则函数向上弯曲。如果梯度为1,则当沿着负梯度的步长为 时,函数值减少的量少于 。
当函数输入为多维时,定义海森矩阵:
即海森矩阵的第 行 列元素为: 。
当二阶偏导是连续时,海森矩阵是对称阵,即有: 。
在深度学习中大多数海森矩阵都是对称阵。
对于特定方向 上的二阶导数为: 。
- 如果 是海森矩阵的特征向量,则该方向的二阶导数就是对应的特征值。
- 如果 不是海森矩阵的特征向量,则该方向的二阶导数就是所有特征值的加权平均,权重在
(0,1)
之间。且与 夹角越小的特征向量对应的特征值具有更大的权重。 - 最大特征值确定了最大二阶导数,最小特征值确定最小二阶导数。
3.2 海森矩阵与学习率
将 在 处泰勒展开: 。其中: 为 处的梯度; 为 处的海森矩阵。
根据梯度下降法: 。
应用在点 ,有: 。
- 第一项代表函数在点 处的值。
- 第二项代表由于斜率的存在,导致函数值的变化。
- 第三项代表由于曲率的存在,对于函数值变化的矫正。
注意:如果 较大,则很有可能导致:沿着负梯度的方向,函数值反而增加!
如果 ,则无论 取多大的值, 可以保证函数值是减小的。
如果 , 则学习率 不能太大。若 太大则函数值增加。
根据 ,则需要满足: 。若 ,则会导致沿着负梯度的方向函数值在增加。
考虑最速下降法,选择使得 下降最快的 ,则有: 。求解 有: 。
根据 ,很明显有: 。
由于海森矩阵为实对称阵,因此它可以进行特征值分解。假设其特征值从大到小排列为: 。
海森矩阵的瑞利商为: 。可以证明:
根据 可知:海森矩阵决定了学习率的取值范围。最坏的情况下,梯度 与海森矩阵最大特征值 对应的特征向量平行,则此时最优学习率为 。
3.3 驻点与全局极小点
满足导数为零的点(即 )称作驻点。驻点可能为下面三种类型之一:
- 局部极小点:在 的一个邻域内,该点的值最小。
- 局部极大点:在 的一个邻域内,该点的值最大。
- 鞍点:既不是局部极小,也不是局部极大。
全局极小点:。
全局极小点可能有一个或者多个。
在深度学习中,目标函数很可能具有非常多的局部极小点,以及许多位于平坦区域的鞍点。这使得优化非常不利。
因此通常选取一个非常低的目标函数值,而不一定要是全局最小值。
二阶导数可以配合一阶导数来决定驻点的类型:
- 局部极小点: 。
- 局部极大点: 。
- :驻点的类型可能为任意三者之一。
对于多维的情况类似有:
局部极小点:,且海森矩阵为正定的(即所有的特征值都是正的)。
当海森矩阵为正定时,任意方向的二阶偏导数都是正的。
局部极大点:,且海森矩阵为负定的(即所有的特征值都是负的)。
当海森矩阵为负定时,任意方向的二阶偏导数都是负的。
,且海森矩阵的特征值中至少一个正值、至少一个负值时,为鞍点。
当海森矩阵非上述情况时,驻点类型无法判断。
下图为 在原点附近的等值线。其海森矩阵为一正一负。
- 沿着 方向,曲线向上弯曲;沿着 方向,曲线向下弯曲。
- 鞍点就是在一个横截面内的局部极小值,另一个横截面内的局部极大值。