雅可比矩阵(Jacobian)和海森矩阵(Hessian)

文章目录

  • 一. Jacobian
  • 二. 雅可比矩阵
    • 2.1. 雅可比行列式
  • 三. 海森Hessian矩阵
    • 3.1. 海森矩阵的正定与函数凹凸性的关系
    • 3.2. 海森矩阵在牛顿法中的应用
      • 3.2.1. 泰勒公式
      • 3.2.2. 求解方程
      • 3.2.3. 最优化
  • 参考文章

一. Jacobian

  • 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都以数学家卡尔·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以发音为[ja ˈko bi ən]或者[ʤə ˈko bi ən].

二. 雅可比矩阵

  • 雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数.
  • 假设:F:Rn→RmF : R_{n} \rightarrow R_{m}F:Rn​→Rm​:是一个从欧式 nnn 维空间转换到欧式 mmm 维空间的函数.这个函数由mmm个实函数组成: y1(x1,…,xn),…,ym(x1,…,xn)\mathrm{y_{1}}(\mathrm{x_{1}} , \ldots, \mathrm{x_{n}}), \ldots, \mathrm{y_{m}}(\mathrm{x_{1}} , \ldots, \mathrm{x_{n}})y1​(x1​,…,xn​),…,ym​(x1​,…,xn​);这些函数的偏导数(如果存在)可以组成一个mmm行nnn列的矩阵, 这就是所谓的雅可比矩阵
    [∂y1∂x1⋯∂y1∂xn⋮⋱⋮∂ym∂x1⋯∂ym∂xn]\left[ \begin{array}{ccc}{\frac{\partial y_{1}}{\partial x_{1}}} & {\cdots} & {\frac{\partial y_{1}}{\partial x_{n}}} \\\\ {\vdots} & {\ddots} & {\vdots} \\\\ {\frac{\partial y_{m}}{\partial x_{1}}} & {\cdots} & {\frac{\partial y_{m}}{\partial x_{n}}}\end{array}\right]⎣⎢⎢⎢⎢⎢⎡​∂x1​∂y1​​⋮∂x1​∂ym​​​⋯⋱⋯​∂xn​∂y1​​⋮∂xn​∂ym​​​⎦⎥⎥⎥⎥⎥⎤​
  • 此矩阵表示为:JF(x1,…,xn)J_{F}\left(x_{1}, \ldots, x_{n}\right)JF​(x1​,…,xn​)或者∂(y1,…,ym)∂(x1,…,xn)\frac{\partial\left(y_{1}, \ldots, y_{m}\right)}{\partial\left(x_{1}, \ldots, x_{n}\right)}∂(x1​,…,xn​)∂(y1​,…,ym​)​
  • 这个矩阵的第iii行是由梯度函数的转置yi(i=1,…,m)yi(i=1,…,m)yi(i=1,…,m)表示的.
  • 如果ppp是RnR_{n}Rn​中的一点, FFF在ppp点可微分, 那么在这一点的导数由JF(p)J_{F}(\mathbf{p})JF​(p)给出(这是求该点导数最简便的方法). 在此情况下, 由F(p)F(\mathbf{p})F(p)描述的线性算子即接近点ppp的FFF的最优线性逼近, xxx逼近于ppp:
    F(x)≈F(p)+JF(p)⋅(x−p)(1)F(\mathbf{x}) \approx F(\mathbf{p})+J_{F}(\mathbf{p}) \cdot(\mathbf{x}-\mathbf{p})\tag{1} F(x)≈F(p)+JF​(p)⋅(x−p)(1)

2.1. 雅可比行列式

  • 如果m=nm = nm=n, 那么FFF是从nnn维空间到nnn维空间的函数, 且它的雅可比矩阵是一个方块矩阵. 于是我们可以取它的行列式, 称为雅可比行列式。
    在某个给定点的雅可比行列式提供了 在接近该点时的表现的重要信息.
  • 例如, 如果连续可微函数FFF在ppp点的雅可比行列式不是零, 那么它在该点附近具有反函数. 这称为反函数定理.
  • 更进一步, 如果ppp点的雅可比行列式是正数, 则FFF在ppp点的取向不变;
  • 如果是负数, 则FFF的取向相反. 而从雅可比行列式的绝对值, 就可以知道函数FFF在ppp点的缩放因子;
  • 这就是为什么它出现在换元积分法中.
  • 1.举例理解:对于取向问题可以这么理解, 例如一个物体在平面上匀速运动, 如果施加一个正方向的力F, 即取向相同, 则加速运动, 类比于速度的导数加速度为正;如果施加一个反方向的力F, 即取向相反, 则减速运动, 类比于速度的导数加速度为负.

三. 海森Hessian矩阵

  • 在数学中, 海森矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵, 此函数如下:
    f(x1,x2…,xn)(2)f\left(x_{1}, x_{2} \ldots, x_{n}\right)\tag{2} f(x1​,x2​…,xn​)(2)
  • 如果fff的所有二阶导数都存在, 那么fff的海森矩阵即:
    H(f)ij(x)=DiDjf(x)(3)H(f)_{i j}(x)=D_{i} D_{j} f(x)\tag{3} H(f)ij​(x)=Di​Dj​f(x)(3)
  • 其中x=(x1,x2…,xn)x=\left(x_{1}, x_{2} \dots, x_{n}\right)x=(x1​,x2​…,xn​), 即H(f)H(f)H(f)为:
    [∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2](4)\left[ \begin{array}{cccc}{\frac{\partial^{2} f}{\partial x_{1}^{2}}} & {\frac{\partial^{2} f}{\partial x_{1} \partial x_{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{1} \partial x_{n}}} \\ \\{\frac{\partial^{2} f}{\partial x_{2} \partial x_{1}}} & {\frac{\partial^{2} f}{\partial x_{2}^{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{2} \partial x_{n}}} \\\\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\\\ {\frac{\partial^{2} f}{\partial x_{n} \partial x_{1}}} & {\frac{\partial^{2} f}{\partial x_{n} \partial x_{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{n}^{2}}}\end{array}\right]\tag{4} ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​∂x12​∂2f​∂x2​∂x1​∂2f​⋮∂xn​∂x1​∂2f​​∂x1​∂x2​∂2f​∂x22​∂2f​⋮∂xn​∂x2​∂2f​​⋯⋯⋱⋯​∂x1​∂xn​∂2f​∂x2​∂xn​∂2f​⋮∂xn2​∂2f​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​(4)
  • (也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题.)

3.1. 海森矩阵的正定与函数凹凸性的关系

  • Hessian矩阵的正定性在判断优化算法可行性时非常有用,简单地说,海森矩阵正定,则:
  • 1. 函数的二阶偏导数恒大于0
  • 2. 函数的变化率(斜率)即一阶导数始终处于递增状态
  • 3. 函数为凸
  • 因此,在诸如牛顿法等梯度方法中,使用黑塞矩阵的正定性可以非常便捷的判断函数是否有凸性,也就是是否可收敛到局部/全局的最优解
  • 注意:正定性的判定方法有很多重,其中最方便也是常用的一种为:
  • 1. 若所有特征值均不小于零,则称为半正定
  • 2. 若所有特征值均大于零,则称为正定。详细的判断方法可以参考我的博客:奇异值分解SVD
  • 多元函数Hessian矩阵半正定就相当于一元函数二阶导非负;多元函数为凸函数的充要条件为其二阶Hessian矩阵半正定

3.2. 海森矩阵在牛顿法中的应用

  • 一般来说, 牛顿法主要应用在两个方面,
  • 1, 求方程的根;
  • 2, 最优化;

3.2.1. 泰勒公式

  • 泰勒公式是将一个在x=x0x=x_{0}x=x0​处具有n阶导数的函数f(x)f(x)f(x)利用关于(x−x0)(x-x_{0})(x−x0​)的nnn次多项式来逼近函数的方法。
  • 若函数f(x)f(x)f(x)在包含x0x_{0}x0​的某个闭区间[a,b][a,b][a,b]上具有nnn阶导数,且在开区间(a,b)(a,b)(a,b)上具有(n+1)(n+1)(n+1)阶导数,则对闭区间[a,b][a,b][a,b]上任意一点xxx,成立下式:
    f(x)=f(x0)0!+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+…+f(n)(x0)n!(x−x0)n+Rn(x)(5)f(x)=\frac{f\left(x_{0}\right)}{0 !}+\frac{f^{\prime}\left(x_{0}\right)}{1 !}\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\ldots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+R_{n}(x)\tag{5} f(x)=0!f(x0​)​+1!f′(x0​)​(x−x0​)+2!f′′(x0​)​(x−x0​)2+…+n!f(n)(x0​)​(x−x0​)n+Rn​(x)(5)
  • 其中:f(n)(x)f^{(n)}(x)f(n)(x):表示f(x)f(x)f(x)的nnn阶导数;等号后的多项式称为函数f(x)f(x)f(x)在x0x_{0}x0​处的泰勒展开式,剩余的Rn(x)R_{n}(x)Rn​(x)是泰勒公式的余项,是(x−x0)n\left(x-x_{0}\right)^{n}(x−x0​)n的高阶无穷小。
  • 1、佩亚诺(Peano)余项(普遍):
    Rn(x)=o[(x;−x0)n](6)R_{n}(x)=\mathrm{o}\left[\left(x ;-x_{0}\right)^{n}\right]\tag{6} Rn​(x)=o[(x;−x0​)n](6)
  • 2、拉格朗日(Lagrange)余项:
    Rn(x)=f(n+1)[x0+θ(x−x0)](x−x0)n+1(n+1)!(7)R_{n}(x)=f^{(n+1)}\left[x_{0}+\theta\left(x-x_{0}\right)\right] \frac{\left(x-x_{0}\right)^{n+1}}{(n+1) !}\tag{7} Rn​(x)=f(n+1)[x0​+θ(x−x0​)](n+1)!(x−x0​)n+1​(7)

3.2.2. 求解方程

  • 并不是所有的方程都有求根公式, 或者求根公式很复杂, 导致求解困难. 利用牛顿法, 可以迭代求解.
    原理是利用泰勒公式, 在x0x_{0}x0​处展开, 且展开到一阶, 如下:
    f(x)=f(x0)+(x−x0)f′(x0)(8)f(x)=f\left(x_{0}\right)+\left(x-x_{0}\right) f^{\prime}\left(x_{0}\right)\tag{8} f(x)=f(x0​)+(x−x0​)f′(x0​)(8)
  • 求解方程f(x)=0f(x)=0f(x)=0, 即:f(x0)+(x–x0)f′(x0)=0f(x_{0})+(x–x_{0})f′(x_{0})=0f(x0​)+(x–x0​)f′(x0​)=0, 求解:x=x1=x0–f(x0)/f′(x0)x=x_{1}=x_{0}–f(x_{0})/f′(x_{0})x=x1​=x0​–f(x0​)/f′(x0​), 因为这是利用泰勒公式的一阶展开, f(x)=f(x0)+(x–x0)f′(x0)f(x)=f(x0)+(x–x0)f′(x0)f(x)=f(x0)+(x–x0)f′(x0)处并不是完全相等, 而是近似相等
  • 这里求得的x1x_{1}x1​并不能让f(x)=0f(x)=0f(x)=0, 只能说f(x1)f(x_{1})f(x1​)的值比f(x0)f(x_{0})f(x0​)更接近f(x)=0f(x)=0f(x)=0, 于是乎, 迭代求解的想法就很自然了, 可以进而推出xn+1=xn–f(xn)/f′(xn)x_{n}+1=x_{n}–f(x_{n})/f′(x_{n})xn​+1=xn​–f(xn​)/f′(xn​), 通过迭代, 这个式子必然在f(x∗)=0f\left(x^{*}\right)=0f(x∗)=0 的时候收敛. 整个过程如下图:

3.2.3. 最优化

  • 在最优化的问题中, 线性最优化至少可以使用单纯形法(或称不动点算法)求解, 但对于非线性优化问题, 牛顿法提供了一种求解的办法. 假设任务是优化一个目标函数fff, 求函数fff的极大极小问题, 可以转化为求解函数f的导数f′=0f′=0f′=0的问题, 这样求可以把优化问题看成方程求解问题(f′=0f′=0f′=0). 剩下的问题就和第一部分提到的牛顿法求解很相似了.
    这次为了求解f′=0f′=0f′=0的根, 首先把f(x)f(x)f(x)在探索点xnx_{n}xn​处泰勒展开, 展开到2阶形式进行近似:
    f(x)=f(xn)+f′(xn)(x−xn)+f′′(xn)2(x−xn)2(9)f(x)=f\left(x_{n}\right)+f^{\prime}\left(x_{n}\right)\left(x-x_{n}\right)+\frac{f^{\prime \prime}\left(x_{n}\right)}{2}\left(x-x_{n}\right)^{2}\tag{9} f(x)=f(xn​)+f′(xn​)(x−xn​)+2f′′(xn​)​(x−xn​)2(9)
  • 然后用f(x)f(x)f(x)的最小点做为新的探索点xn+1x_{n}+1xn​+1,据此,令:
    f′(x)=f′(xn)+f′′(xn)(x−xn)=0(10)f^{\prime}(x)=f^{\prime}\left(x_{n}\right)+f^{\prime \prime}\left(x_{n}\right)\left(x-x_{n}\right)=0\tag{10} f′(x)=f′(xn​)+f′′(xn​)(x−xn​)=0(10)
  • 求得出迭代公式:
    xn+1=xn−f′(xn)f′(xn),n=0,1,…(11)x_{n+1}=x_{n}-\frac{f^{\prime}\left(x_{n}\right)}{f^{\prime}\left(x_{n}\right)}, n=0,1, \ldots\tag{11} xn+1​=xn​−f′(xn​)f′(xn​)​,n=0,1,…(11)
  • 一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解.

  • 在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:
    xn+1=xn−[Hf(xn)]−1∇f(xn),n≥0(12)x_{n+1}=x_{n}-\left[H f\left(x_{n}\right)\right]^{-1} \nabla f\left(x_{n}\right), n \geq 0\tag{12} xn+1​=xn​−[Hf(xn​)]−1∇f(xn​),n≥0(12)
  • 其中H是hessian矩阵, 定义见上. 高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性, 使得牛顿迭代求解的难度大大增加, 但是已经有了解决这个问题的办法就是Quasi-Newton method, 不再直接计算hessian矩阵, 而是每一步的时候使用梯度向量更新hessian矩阵的近似.

参考文章

参考了以下作者,这里表示感谢!

  • - jacoxu
  • 刺客五六柒
  • 番茄发烧了

『矩阵论笔记』雅可比矩阵(Jacobian)和海森矩阵(Hessian)相关推荐

  1. 局部最优、梯度消失、鞍点、海森矩阵(Hessian Matric)、批梯度下降算法(btach批梯度下降法BGD、小批量梯度下降法Mini-Batch GD、随机梯度下降法SGD)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) BATCH_SIZE大小设置对训练耗时的影响:1.如果当设置B ...

  2. 『矩阵论笔记』详解最小二乘法(矩阵形式求导)+Python实战

    详解最小二乘法(矩阵形式求导)+Python实战! 文章目录 一. 矩阵的迹 1.1. 转置矩阵 1.2. 迹的定义 1.3. 七大定理 二. 最小二乘法 2.1. 求解介绍 2.2. 另一角度 2. ...

  3. 『矩阵论笔记』线性判别分析(LDA)最全解读+python实战二分类代码+补充:矩阵求导可以参考

    线性判别分析(LDA)最全解读+python实战二分类代码! 文章目录 一.主要思想! 二.具体处理流程! 三.补充二中的公式的证明! 四.目标函数的求解过程! 4.1.优化问题的转化 4.2.拉格朗 ...

  4. 『矩阵论笔记』张量CP分解的详细数学推导以及Python实现

    张量CP分解的详细数学推导以及Python实现! 文章目录 一. 张量的基本概念 1.1 张量定义以及张量空间 1.2 阶和纤维(fiber)及切片 1.3 内积和范数及秩一张量/可合张量 1.4 超 ...

  5. 『矩阵论笔记』详细介绍矩阵的三角分解(LR分解)+平方根分解(Cholesky分解)

    详细介绍矩阵的三角分解(LR分解)+平方根分解(Cholesky分解)! 文章目录 一. 三角分解(LR分解) 1.1. 方阵的两个重要分解 1.2. 上(下)三角阵的性质 1.3. 三角分解的概念 ...

  6. 雅克比矩阵和海森矩阵 Jacobian and Hessian Matrix

    转:http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/ 1. Jacobian 在向量分析中 ...

  7. 多元函数严格凹 海塞矩阵正定_海森矩阵的应用:多元函数极值的判定

    海森矩阵(Hessian Matrix),又译作黑塞矩阵.海瑟矩阵. 海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述 了函数的局部曲率.黑塞矩阵最早于19世纪由德国数学家 Ludwig Ott ...

  8. 雅可比矩阵 和 海森矩阵

    雅可比矩阵 假设F:Rn→Rm 是一个从欧式n维空间转换到欧式m维空间的函数.这个函数由m个实函数组成: y1(x1,...,xn), ..., ym(x1,...,xn). 这些函数的偏导数(如果存 ...

  9. 海森矩阵和雅克比矩阵的区别

    海森矩阵是梯度矩阵的雅克比矩阵 雅可比矩阵可以理解为: 若在n维欧式空间中的一个向量映射成m维欧式空间中的另一个向量的对应法则为F,F由m个实函数组成,即: 那么雅可比矩阵是一个m×n矩阵: 与海森矩 ...

  10. 牛顿法、雅克比矩阵、海森矩阵

    转自:https://blog.csdn.net/Yan456jie/article/details/52332043 一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化. 1, ...

最新文章

  1. CNN光流计算--FlowNet: Learning Optical Flow with Convolutional Networks
  2. php基础+jquery基础
  3. jenkins如何在一台机器上开启多个slave
  4. TFS的Web门户工作项(七)
  5. win7或xp下常用命令
  6. HDU - 5988 Coding Contest(最大费用最大流+思维建边)
  7. c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗
  8. CSS+HTML+JQuery简单菜单
  9. java界面化_java怎么实现图形化界面
  10. 有道翻译接口问题(续)
  11. linux rt 应用程序,RTlinux编程
  12. python数据类型总结
  13. 【工具】 原版完美激活 Flash builder 4.7 【非破解激活】
  14. js中ajax的异步性
  15. MySQL的sql_mode解析设置
  16. Kafka的安装部署(分布式部署安装)
  17. 【PATL2-002】链表去重(链表模拟)---水题
  18. linux命令学习之---- file
  19. 手机无法服务器获取信息,荒野行动获取服务器信息一直不动怎么办 获取服务器信息为0解决方法...
  20. 广告公司测试软件题目,信息流广告测试题,看看你广告优化能力

热门文章

  1. 自动驾驶中的多种卡尔曼滤波算法及推导详解,值得一读!
  2. C#获取登录验证码图片
  3. 进制转换方法总结——摘自百度
  4. 用计算机进行进制换算方法,计算机进制怎么转换?计算机进制换算方法
  5. laravel-admin固定表头
  6. CSS 美化checkbox
  7. Latex希腊字母对照表
  8. 温控PLC三菱风机程序设计多路多路风机,温度控制,时间控制
  9. android硬盘加密软件,Whisper Systems推出Android硬盘加密工具
  10. 调用远程摄像头进行人脸识别_【论文精选】基于人脸识别技术的燃气远程开户系统...