返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、二阶导数与海森矩阵

发布于 2023-07-17 23:38:26 字数 5081 浏览 0 评论 0 收藏 0

3.1 海森矩阵

  1. 二阶导数 $ MathJax-Element-127 $ 刻画了曲率。假设有一个二次函数(实际任务中,很多函数不是二次的,但是在局部可以近似为二次函数):

    • 如果函数的二阶导数为零,则它是一条直线。如果梯度为 1,则当沿着负梯度的步长为 $ MathJax-Element-383 $ 时,函数值减少 $ MathJax-Element-383 $ 。
    • 如果函数的二阶导数为负,则函数向下弯曲。如果梯度为1,则当沿着负梯度的步长为 $ MathJax-Element-383 $ 时,函数值减少的量大于 $ MathJax-Element-383 $ 。
    • 如果函数的二阶导数为正,则函数向上弯曲。如果梯度为1,则当沿着负梯度的步长为 $ MathJax-Element-383 $ 时,函数值减少的量少于 $ MathJax-Element-383 $ 。 curvature.PNG
  2. 当函数输入为多维时,定义海森矩阵:

    $ \mathbf H(f)(\mathbf{\vec x}) =\begin{bmatrix} \frac{\partial^{2}}{\partial x_1\partial x_1}f&\frac{\partial^{2}}{\partial x_1\partial x_2}f&\cdots&\frac{\partial^{2}}{\partial x_1\partial x_n}f\\ \frac{\partial^{2}}{\partial x_2\partial x_1}f&\frac{\partial^{2}}{\partial x_2\partial x_2}f&\cdots&\frac{\partial^{2}}{\partial x_2\partial x_n}f\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial^{2}}{\partial x_n\partial x_1}f&\frac{\partial^{2}}{\partial x_n\partial x_2}f&\cdots&\frac{\partial^{2}}{\partial x_n\partial x_n}f \end{bmatrix} $

    即海森矩阵的第 $ MathJax-Element-438 $ 行 $ MathJax-Element-135 $ 列元素为: $ MathJax-Element-136 $ 。

  3. 当二阶偏导是连续时,海森矩阵是对称阵,即有: $ MathJax-Element-137 $ 。

    在深度学习中大多数海森矩阵都是对称阵。

  4. 对于特定方向 $ MathJax-Element-142 $ 上的二阶导数为: $ MathJax-Element-139 $ 。

    • 如果 $ MathJax-Element-142 $ 是海森矩阵的特征向量,则该方向的二阶导数就是对应的特征值。
    • 如果 $ MathJax-Element-142 $ 不是海森矩阵的特征向量,则该方向的二阶导数就是所有特征值的加权平均,权重在 (0,1)之间。且与 $ MathJax-Element-142 $ 夹角越小的特征向量对应的特征值具有更大的权重。
    • 最大特征值确定了最大二阶导数,最小特征值确定最小二阶导数。

3.2 海森矩阵与学习率

  1. 将 $ MathJax-Element-143 $ 在 $ MathJax-Element-193 $ 处泰勒展开: $ MathJax-Element-189 $ 。其中: $ MathJax-Element-190 $ 为 $ MathJax-Element-193 $ 处的梯度; $ MathJax-Element-325 $ 为 $ MathJax-Element-193 $ 处的海森矩阵。

    根据梯度下降法: $ MathJax-Element-150 $ 。

    应用在点 $ MathJax-Element-193 $ ,有: $ MathJax-Element-152 $ 。

    • 第一项代表函数在点 $ MathJax-Element-193 $ 处的值。
    • 第二项代表由于斜率的存在,导致函数值的变化。
    • 第三项代表由于曲率的存在,对于函数值变化的矫正。
  2. 注意:如果 $ MathJax-Element-154 $ 较大,则很有可能导致:沿着负梯度的方向,函数值反而增加!

    • 如果 $ MathJax-Element-155 $ ,则无论 $ MathJax-Element-383 $ 取多大的值, 可以保证函数值是减小的。

    • 如果 $ MathJax-Element-168 $ , 则学习率 $ MathJax-Element-383 $ 不能太大。若 $ MathJax-Element-383 $ 太大则函数值增加。

      • 根据 $ MathJax-Element-160 $ ,则需要满足: $ MathJax-Element-161 $ 。若 $ MathJax-Element-162 $ ,则会导致沿着负梯度的方向函数值在增加。

      • 考虑最速下降法,选择使得 $ MathJax-Element-461 $ 下降最快的 $ MathJax-Element-383 $ ,则有: $ MathJax-Element-165 $ 。求解 $ MathJax-Element-166 $ 有: $ MathJax-Element-167 $ 。

        根据 $ MathJax-Element-168 $ ,很明显有: $ MathJax-Element-169 $ 。

  3. 由于海森矩阵为实对称阵,因此它可以进行特征值分解。假设其特征值从大到小排列为: $ MathJax-Element-170 $ 。

    海森矩阵的瑞利商为: $ MathJax-Element-171 $ 。可以证明:

    $ \lambda_n \le R(\mathbf{\vec x}) \le \lambda_1\\ \lambda_1=\max_{\mathbf{\vec x}\ne \mathbf{\vec 0}} R(\mathbf{\vec x})\\ \lambda_n=\min_{\mathbf{\vec x}\ne \mathbf{\vec 0}} R(\mathbf{\vec x}) $

    根据 $ MathJax-Element-172 $ 可知:海森矩阵决定了学习率的取值范围。最坏的情况下,梯度 $ MathJax-Element-190 $ 与海森矩阵最大特征值 $ MathJax-Element-174 $ 对应的特征向量平行,则此时最优学习率为 $ MathJax-Element-175 $ 。

3.3 驻点与全局极小点

  1. 满足导数为零的点(即 $ MathJax-Element-176 $ )称作驻点。驻点可能为下面三种类型之一:

    • 局部极小点:在 $ MathJax-Element-208 $ 的一个邻域内,该点的值最小。
    • 局部极大点:在 $ MathJax-Element-208 $ 的一个邻域内,该点的值最大。
    • 鞍点:既不是局部极小,也不是局部极大。

    critical_point.PNG

  2. 全局极小点: $ MathJax-Element-179 $ 。

    • 全局极小点可能有一个或者多个。

    • 在深度学习中,目标函数很可能具有非常多的局部极小点,以及许多位于平坦区域的鞍点。这使得优化非常不利。

      因此通常选取一个非常低的目标函数值,而不一定要是全局最小值。 deeplearning_optimization.PNG

  3. 二阶导数可以配合一阶导数来决定驻点的类型:

    • 局部极小点: $ MathJax-Element-180 $ 。
    • 局部极大点: $ MathJax-Element-181 $ 。
    • $ MathJax-Element-182 $ :驻点的类型可能为任意三者之一。
  4. 对于多维的情况类似有:

    • 局部极小点: $ MathJax-Element-185 $ ,且海森矩阵为正定的(即所有的特征值都是正的)。

      当海森矩阵为正定时,任意方向的二阶偏导数都是正的。

    • 局部极大点: $ MathJax-Element-185 $ ,且海森矩阵为负定的(即所有的特征值都是负的)。

      当海森矩阵为负定时,任意方向的二阶偏导数都是负的。

    • $ MathJax-Element-185 $ ,且海森矩阵的特征值中至少一个正值、至少一个负值时,为鞍点。

    • 当海森矩阵非上述情况时,驻点类型无法判断。

    下图为 $ MathJax-Element-186 $ 在原点附近的等值线。其海森矩阵为一正一负。

    • 沿着 $ MathJax-Element-187 $ 方向,曲线向上弯曲;沿着 $ MathJax-Element-188 $ 方向,曲线向下弯曲。
    • 鞍点就是在一个横截面内的局部极小值,另一个横截面内的局部极大值。

    saddle.PNG

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文