前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jacobin和Hessian矩阵

Jacobin和Hessian矩阵

作者头像
狼啸风云
修改2022-09-03 19:55:47
1.6K0
修改2022-09-03 19:55:47
举报

有时我们需要计算输入和输出都为向量和函数的所有偏导数。包含所有这样的偏导数的矩阵被称为Jacobian矩阵。具体来说,如果我们有一个函数f: R^{m} \rightarrow R^{n}, f 的Jacobian矩阵J \in R^{n \times m} 定义为J_{i, j}=\frac{\partial}{\partial x_{j}} f(x)_{i} 。有时,我们也对导数的导数感兴趣,即二阶导数(second derivative)。例如,有一个函数J_{i, j}=\frac{\partial}{\partial x_{j}} f(x)_{i}f 的一阶导数(关于x_j )关于x_i 的导数记为\frac{\partial^{2}}{\partial x^{2}} ff^{\prime \prime \prime}(x) 。二阶导数告诉我们,一阶导数(关于x_j )关于x_i 的导数记为\frac{\partial^{2}}{\partial x_{i} x_{j}} f 。在一维情况下,我们可以将\frac{\partial^{2}}{\partial x^{2}} ff^{\prime \prime}(x) 。二阶导数告诉我们,一阶导数如何随着输入的变化而改变。它表示只基于梯度信息的梯度下降步骤是否会产生如我们预期那样大的改善,因此它是重要的,我们可以认为,二阶导数是对曲率的衡量。假设我们有一个二次函数(虽然实践中许多函数都是二次的,但至少在局部可以很好地用二次近似),如果这样的函数具有零二阶导数,那就没有曲率,也就是一条完全平坦的线,仅用梯度就可以预测它的值。我们使用沿负梯度方向下降代销为\varepsilon 的下降步,当该梯度是1时,代价函数将下降\varepsilon 。如果二阶导数是正的,函数曲线是向上凹陷的(向下凸出的),因此代价函数将下降得比\varepsilon 少。

当我们的函数具有多维输入时,二阶导数也有很多。我们可以将这些导数合并成一个矩阵,称为Hesian矩阵。Hessian矩阵H(f)(x) 定义为

H(f)(x)_{i, j}=\frac{\partial^{2}}{\partial x_{i} x_{j}} f(x)

Hessian等价于梯度的Jacobian矩阵。

微分算子在任何二阶偏导连续的点处可交换,也就是它们的顺序可以互换:

\frac{\partial^{2}}{\partial x_{i} x_{j}} f(x)=\frac{\partial^{2}}{\partial x_{j} x_{i}} f(x)

f^{\prime \prime}(x)>0

这意味着H_{i, j}=H_{j, i} ,因此Hessian矩阵在这些点上是对称的。在深度学习背景下,我们遇到的大多数函数的Hessian矩阵几乎都是对称的。因为Hessian矩阵是实对称的,我们可以将其分解成一组实特征值和一组特征向量的正交阵。在特定方向d上的二阶导数可以写成d^{T} H d 。当dH的一个特征向量时,这个方向的二阶导数就是对应的特征值。对于其他的方向d,方向二阶导数是所有特征值的加权平均,且与d夹角越小的特征向量的权重越大。最大特征值确定最大二阶导数,最小特征值确定最小二阶导数。我们可以通过(方向)二阶导数预期一个梯度下降步骤能表现得多好\epsilon 。我们在当前点x^{(0)} 处函数f(x)的近似二阶泰勒级数:

f(x) \approx f\left(x^{(0)}\right)+\left(x-x^{(0)}\right)^{T} g+\frac{1}{2}\left(x-x^{(0)}\right)^{T} H\left(x-x^{(0)}\right)

其中g是梯度,Hx^{(0)} 点的Hessian。如果我们使用学习率x^{(0)} ,那么新的点x将会是x^{(0)}-\varepsilon g 。代入上述的近似,可得

f\left(x^{(0)}-\varepsilon g\right) \approx f\left(x^{(0)}\right)-\epsilon g^{T} g+\frac{1}{2} \epsilon^{2} g^{T} H g

其中有3项:函数的原始值、函数息率导致的预期改善和函数曲率导致的校正。当最后一项太大时,梯度下降实际上是可能向上移动的。当g^{T} H g 为零或负时,近似的泰勒级数表明增加\epsilon 将永远使f下降。在实践中,泰勒级数不会在\epsilon 大的时候也保持准确,因此在这种情况下我们必须采取更具启发式的选择。当g^{T} H g 为正时,通过计算可得,使近似泰勒级数下降最多的最优步长为\epsilon^{*}=\frac{g^{T} g}{g^{T} H g}

最坏的情况下,gH最大特征值\lambda_{\max } 对应的特征向量对齐,则最优步长是\frac{1}{\lambda_{\max }} 。当我们要最小化的函数能用二次函数很好地近似的情况下,Hessian的特征值决定了学习率的量级。

二阶导数还可以用于确定一个临界点是否是局部极大值点、局部极小值点或鞍点。回想一下,在临界点处f^{\prime}(x)=0 。而f^{\prime\prime}(x)=0 意味着f^{\prime}(x)=0 会随着我们移向右边而增加,移向左边而减少,也就是f^{\prime}(x-\epsilon)>0 对足够小的\epsilon 成立。换句话说,当我们移向右边,斜率开始指向右边的上坡;当我们移向左边,斜率开始指向左边的上坡。因此我们得出结论,当f^{\prime}(x)=0f^{\prime\prime}(x)=0 时,x是一个局部极小点。同理,当f^{\prime}(x)=0f^{\prime\prime}(x)=0 时,x是一个局部极大点。这就是所谓的二阶导数测试。不幸的是,当f^{\prime\prime}(x)=0 时,测试是不确定的。在这种情况下,x可以是一个鞍点或平坦区域的一部分。

在多维情况下,我们需要检测函数的所有二阶导数。利用Hessian的特征值分解,我们可以将二阶导数测试扩展到多维情况。在临界点处(\nabla x f(x)=0) ,我们通过检测Hessian的特征值来判断该临界点是一个局部极大值、局部极小值还是鞍点。当Hessian是正定的(所有特征值都为正的),则该临界点是局部极小值。因为方向二阶导数在任意方向都是正的,参考单位变量的二阶导数测试就能得出此结论。同样的,当Hessian是负定的(所有特征值都是负的),这个点就是局部极大点。在多维情况下,实际上我们可以找到确定该点是否为鞍点的积极迹象(某些情况下)。如果Hessian的特征值中至少一个是正的且至少一个是负的,那么x是f某个横截面的局部极大点。最后多维二阶导数测试可能像单变量版本那样是不正确的。当所有非零特征值是同号的且至少有一个特征值是0时,这个检测就是不确定的。当所有非零特征值是同号的且至少有一个特征值是0时,这个检测就是不正确的。这是因为单变量的二阶导数测试在零特征值对应的横截面上是不确定的。

多维情况下,单个点处每个方向上的二阶导数是不同的。Hessian的条件数衡量这些二阶导数的变化范围。当Hessian的条件数很差时,梯度下降法也会表现得很差。这是因为一个方向上的导数增加得很快,而在另一个方向上增加得很慢。梯度下降不知道导数的这种变化必须足够小,以免冲过最小而向具有较强曲率的方向上升。这通常意味着步长太少,以至于在其他较小的曲率的方向上进展不明显。

我们可以使用Hessian矩阵的信息来指导搜索,以解决这个问题。其中最简单的方法是牛顿法(Nowton's method)。牛顿法基于一个二阶泰勒展开来近似x^{(0)} 附近的f(x)

f(x) \approx f\left(x^{(0)}\right)+\left(x-x^{(0)}\right) \nabla x\left(x-x^{(0)}\right)+\frac{1}{2} f\left(x^{(0)}\right)+\left(x-x^{(0)}\right) H(f)\left(x-x^{(0)}\right)

接着通过计算,我们可以得到这个函数的临界点:

x^{*}=x^{(0)}-H(f)\left(x^{(0)-1} \nabla_{x} f\left(x^{(0)}\right)\right)

如果f是一个正定二次函数,牛顿法只要应用一次就能直接跳到函数的最小点。如果f不是一个真正二次但能在局部近似为正定二次,牛顿法则需要更多次迭代。迭代地更新近似函数和跳到近似函数的最小点可以比梯度下降更快地到达临界点。这在接近局部极小点是一个特别有用的性质,但是在鞍点附近是有害的。当临界点是最小点(Hessian的所有特征值都是正的)时牛顿法才适用,而梯度下降不会被吸引到鞍点(除非梯度指向鞍点)。仅使用梯度信息的优化称为一阶优化算法,如梯度下降。使用Hessian矩阵的优化算法称为二阶优化算法,如牛顿法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档