梯度之上:Hessian 矩阵

原文链接:原文

梯度之上:Hessian 矩阵

本文讨论研究梯度下降法的一个有力的数学工具:海森矩阵。在讨论海森矩阵之前,需要首先了解梯度和雅克比矩阵的基本概念。

⭐️本文假设读者已经熟悉梯度下降法和简单的数值分析、线性代数知识
原文链接

梯度、雅克比矩阵

梯度下降算法需要当前函数点的导数信息,当此函数点包含多个方向时,梯度是包含所有方向的(偏)导数向量。

上述情况对应于输出为一个的情况,当函数的输出也为一个向量时,我们需要把输出向量的每一个元素对于多个输入的梯度罗列在一起,罗列形成的矩阵就是雅克比矩阵(Jacobian Matrix)

举例说明:

  • 若函数 f f f接受三个输入 x 1 、 x 2 、 x 3 x1、x2、x3 x1x2x3,产生一个输出 y y y,则其梯度为:

G r a d = [ ∂ y ∂ x 1 , ∂ y ∂ x 2 , ∂ y ∂ x 3 ] \begin{equation} Grad = [\frac{\partial y}{\partial x_1}, \frac{\partial y}{\partial x_2}, \frac{\partial y}{\partial x_3}] \end{equation} Grad=[x1y,x2y,x3y]

  • 若函数 f 2 f2 f2接受三个输入 x 1 、 x 2 、 x 3 x1、x2、x3 x1x2x3,产生三个输出 y 1 、 y 2 、 y 3 y1、y2、y3 y1y2y3,则其雅克比矩阵为:

J a c o b i a n = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 1 ∂ x 3 ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ∂ y 2 ∂ x 3 ∂ y 3 ∂ x 1 ∂ y 3 ∂ x 2 ∂ y 3 ∂ x 3 ] \begin{equation} Jacobian = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2}&\frac{\partial y_1}{\partial x_3} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2}&\frac{\partial y_2}{\partial x_3} \\ \frac{\partial y_3}{\partial x_1} & \frac{\partial y_3}{\partial x_2}&\frac{\partial y_3}{\partial x_3} \end{bmatrix} \end{equation} Jacobian= x1y1x1y2x1y3x2y1x2y2x2y3x3y1x3y2x3y3

利用二阶导数,我们可以知道关于函数在特定方向 d d d 上的凹凸信息,利用凹凸信息可以在一定程度上预判梯度下降法的表现效果。如果在特定方向 d d d 上:

  • 二阶导数为正,则函数在方向 d d d上一阶导数增加,函数值下降更慢;

  • 二阶导数为负,则函数在方向 d d d上一阶导数减少,函数值下降更快;

  • 二阶导数为零,则函数在方向 d d d上一阶导数不变,函数值匀速下降;

    ⭐️注意在梯度下降法中是对损失函数进行下降,因此需要使用减函数来分析函数中某一小段(经常使用二次函数的减半部近似:二阶泰勒展开、牛顿法)中的导数变化情况;

海森矩阵

和雅克比矩阵类似,海森矩阵(Hessian 矩阵)可以包含函数中二阶导的信息:
H e s s i a n = [ ∂ 2 y ∂ x 1 ∂ x 1 ∂ 2 y ∂ x 1 ∂ x 2 ∂ 2 y ∂ x 1 ∂ x 3 ∂ 2 y ∂ x 2 ∂ x 1 ∂ 2 y ∂ x 2 ∂ x 2 ∂ 2 y ∂ x 2 ∂ x 3 ∂ 2 y ∂ x 3 ∂ x 1 ∂ 2 y ∂ x 3 ∂ x 2 ∂ 2 y ∂ x 3 ∂ x 3 ] Hessian = \begin{bmatrix} \frac{\partial^2y}{\partial x_1\partial x_1} & \frac{\partial^2y}{\partial x_1\partial x_2}&\frac{\partial^2y}{\partial x_1\partial x_3} \\ \frac{\partial^2y}{\partial x_2\partial x_1} & \frac{\partial^2y}{\partial x_2\partial x_2}&\frac{\partial^2y}{\partial x_2\partial x_3} \\ \frac{\partial^2y}{\partial x_3\partial x_1} & \frac{\partial^2y}{\partial x_3\partial x_2}&\frac{\partial^2y}{\partial x_3\partial x_3} \end{bmatrix} Hessian= x1x12yx2x12yx3x12yx1x22yx2x22yx3x22yx1x32yx2x32yx3x32y
同时由于二阶导数计算顺序的可交换性,即 ∂ 2 y ∂ x 1 ∂ x 2 = ∂ 2 y ∂ x 2 ∂ x 1 \frac{\partial^2y}{\partial x_1\partial x_2}=\frac{\partial^2y}{\partial x_2\partial x_1} x1x22y=x2x12y,因此
海森矩阵是一个对称矩阵
,对于对称矩阵我们可以使用特征分解来研究特征值和二阶导数的关系,便于我们快速获得某个方向的二阶导数。

针对于特定方向d,已知此方向的二阶导数可以写成 d T H d d^THd dTHd ,则:

🔗 基于Hessian矩阵的二阶方向导数与性质_Hi 喀什噶尔的胡杨的博客-CSDN博客_二阶方向导数

  • 若d是H对应特征值λ的特征向量:

    因为d为对应λ的特征向量(以下简称特征向量),则据定义有:
    H d = λ d ⇒ d T H d = d T λ d = λ d T d = λ    对称矩阵 d T = d − Hd = \lambda d\\ \Rightarrow d^THd=d^T\lambda d = \lambda d^Td=\lambda \ \ \ 对称矩阵d^T = d^- Hd=λddTHd=dTλd=λdTd=λ   对称矩阵dT=d

    因此特征向量对应的特征值λ即为此方向的二阶导数;

  • 若d为其他方向:设 e i e_i ei H H H对应特征值 λ i \lambda_i λi的特征向量,由上可知,
    λ i = e i T H e i \lambda_i=e_i^THe_i λi=eiTHei
    可知任何一个方向 d = ∑ i m t i e i d=\sum_i^mt_ie_i d=imtiei为特征向量的线性组合,其中m为特征值个数, t i t_i ti为第 i i i个特征向量的加权数,则:
    d T H d = ( ∑ i m t i e i ) T H ( ∑ i m t i e i ) = ∑ i m t i e i T H t i e i = ∑ i m t i 2 λ i d^THd=(\sum_i^mt_ie_i)^TH(\sum_i^mt_ie_i)=\sum_i^mt_ie_i^THt_ie_i=\sum_i^mt_i^2\lambda_i dTHd=(imtiei)TH(imtiei)=imtieiTHtiei=imti2λi
    因此任意非特征向量方向的二阶导数是所有特征值的加权和,特别的,此时的加权和是一个椭球体,在二维的特征值情况下,二阶导数是一个椭圆,椭圆方程为:
    y = λ 1 1 t 1 2 + λ 2 1 t 2 2 y=\frac{\lambda_1}{\frac{1}{t_1^2}}+\frac{\lambda_2}{\frac{1}{t_2^2}} y=t121λ1+t221λ2
    在这里插入图片描述

    由图可知,最大二阶导数由最大特征值决定(长半轴),而最小二阶导数由最小特征值决定(短半轴)。

海森矩阵应用

在弄清海森矩阵的基本定义后,就可以使用海森矩阵的一些性质来分析优化方法中的一些问题了。如确定局部最大点、局部最小点和鞍点、确定学习率、以及使用病态条件来确定梯度下降的表现等,同时我们还可以利用Hessian矩阵来实现牛顿法这种优化算法,。

(本节完)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值