Hessian矩阵与多元函数极值

海塞矩阵(Hessian Matrix),又译作海森矩阵,是一个多元函数的二阶偏导数构成的方阵。虽然它是一个具有悠久历史的数学成果。可是在机器学习和图像处理(比如SIFT和SURF特征检測)中,我们也经常遇到它。所以本文就来向读者道一道Hessian Matrix的来龙去脉。本文的主要内容包括:

  • 多元函数极值问题
  • 泰勒展开式与Hessian矩阵

多元函数极值问题

回忆一下我们是怎样处理一元函数求极值问题的。

比如。f(x)=x2,我们会先求一阶导数,即f′(x)=2x,依据费马定理极值点处的一阶导数一定等于 0。但这仅是一个必要条件。而非充分条件。对于f(x)=x2来说,函数的确在一阶导数为零的点取得了极值,可是对于f(x)=x3来说,显然只检查一阶导数是不足以下定论的。

这时我们须要再求一次导,假设二阶导数 f″<0,那么说明函数在该点取得局部极大值;假设二阶导数 f″>0,则说明函数在该点取得局部极小值;假设 f″=0。则结果仍然是不确定的,我们就不得不再通过其它方式来确定函数的极值性。

假设要在多元函数中求极值点,方法与此相似。

作为一个演示样例。最好还是用一个三元函数 f=f(x,y,z) 来作为演示样例。首先要对函数中的每一个变量分别求偏导数,这会告诉我们该函数的极值点可能出如今哪里。即

∂f∂x=0∂f∂y=0∂f∂x=0

接下来。要继续求二阶导数,此时包括混合偏导数的情况一共同拥有 9 个。假设用矩阵形式来表示的话就得到

H=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂2f∂x∂x∂2f∂y∂x∂2f∂z∂x∂2f∂x∂y∂2f∂y∂y∂2f∂z∂y∂2f∂x∂z∂2f∂y∂z∂2f∂z∂z⎤⎦⎥⎥⎥⎥⎥⎥⎥

这个矩阵就称为Hessian矩阵。当然上面所给出的不过一个三阶的Hessian矩阵。

稍作扩展。我们能够对一个在定义域内二阶连续可导的实值多元函数 f(x1,x2,⋯,xn) 定义其Hessian矩阵H例如以下

H=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x21∂2f∂x2∂x1⋮∂2f∂xn∂x1∂2f∂x1∂x2∂2f∂x22⋮∂2f∂xn∂x2⋯⋯⋱⋯∂2f∂x1∂xn∂2f∂x2∂xn⋮∂2f∂x2n⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥

当一元函数的二阶导数等于 0 时,我们并不能确定函数在该点的极值性。相似地,面对Hessian矩阵,仍然存在无法断定多元函数极值性的的情况。即当Hessian矩阵的行列式为 0 时。我们无法确定函数能否取得极值。甚至我们可能会得到一个鞍点,也就是一个既非极大值也非极小值的的点。





基于Hessian矩阵,就能够推断多元函数的极值情况了。结论例如以下

  • 假设是正定矩阵,则临界点处是一个局部极小值
  • 假设是负定矩阵,则临界点处是一个局部极大值
  • 假设是不定矩阵,则临界点处不是极值

怎样推断一个矩阵是否是正定的,负定的,还是不定的呢?一个最经常使用的方法就是顺序主子式。实对称矩阵为正定矩阵的充要条件是的各顺序主子式都大于零。当然这个判定方法的计算量比較大。

对于实二次型矩阵另一个判定方法:实二次型矩阵为正定二次型的充要条件是的矩阵的特征值全大于零。为负定二次型的充要条件是的矩阵的特征值全小于零,否则是不定的。

假设你对二次型的概念仍然不非常熟悉,这里也稍作补充。定义含有 n

个变量 x1,x2,⋯,xn 的二次齐次函数

f(x1,x2,⋯,xn)=a11x21+a22x22+⋯+annx2n+2a12x1x2+2a13x1x3+⋯+2an−1,nxn−1xn

为二次型。取 aij=aji,则 2aijxixj+ajixjxi,于是上式能够写成

f==a11x21+a12x1x2+⋯+a1nx1xn+a21x2x1+a22x22+⋯+a2nx2xn+⋯+an1xnx1+an2xnx2+⋯+annx2n∑i,j=1naijxixj

更进一步,假设用矩阵对上式进行改写,则有

f===x1(a11x1+a12x2+⋯+a1nxn)+x2(a21x1+a22x2+⋯+a2nxn)+⋯+xn(an1x1+an2x2+⋯+annxn)(x1,x2,⋯,xn)⎡⎣⎢⎢⎢⎢a11x1+a12x2+⋯+a1nxna21x1+a22x2+⋯+a2nxn⋮an1x1+an2x2+⋯+annxn⎤⎦⎥⎥⎥⎥(x1,x2,⋯,xn)⎡⎣⎢⎢⎢⎢a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥

A=⎡⎣⎢⎢⎢⎢a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎤⎦⎥⎥⎥⎥,x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥

则二次型可记作 f=xTAx,当中 A为对称阵。

设有二次型 f=xTAx,假设对不论什么 x≠0,都有 f>0,则称 f 为正定二次型。并称对称矩阵 A 是正定的。假设对不论什么 x≠0,都有 f<0,则称 f 为负定二次型,并称对称矩阵 A 是负定的。

正定矩阵一定是非神秘的。对阵矩阵 A 为正定的充分必要条件是: A 的特征值全为正。由此还可得到以下这个推论:对阵矩阵 A 为正定的充分必要条件是 A 的各阶主子式都为正。

假设将正定矩阵的条件由 xTAx>0 弱化为 xTAx≥0。则称对称矩阵 A 是半正定的。


泰勒展开式与Hessian矩阵

主页君已经在之前的《图像处理中的数学原理具体解释》系列文章中介绍过泰勒展开式了。

但那个时候我们给出的是一元函数的泰勒公式,最好还是先来复习一下。

设一元函数 f(x) 在包括点x0的开区间 (a,b) 内具有 n+1 阶导数。则当 x∈(a,b) 时。有

f(x)=f(x0)+f′(x0)(x−x0)+f″(x0)2!(x−x0)2+⋯+f(n)(x0)n!(x−x0)n+Rn(x)

当中

Rn(x)=f(n+1)(ξ)(n+1)!(x−x0)n+1

而且。ξ 在 x 和 x0之间,这被称作是拉格朗日余项。上式被称为 f(x) 的 n 阶泰勒公式。在不须要余项的精确表达式时。Rn(x) 能够记作 o[(x−x0)n],这被称为是皮亚诺余项。

如今我们把上面这个结论略微做一下推广,从而给出二元函数的泰勒公式。设二元函数 z=f(x,y) 在点 (x0,y0) 的某一邻域内连续且有直到 n+1 阶的连续偏导数,则有

f(x,y)=f(x0,y0)+[(x−x0)∂∂x+(y−y0)∂∂y]f(x0,y0)+12![(x−x0)∂∂x+(y−y0)∂∂y]2f(x0,y0)+⋯++1n![(x−x0)∂∂x+(y−y0)∂∂y]nf(x0,y0)+1(n+1)![(x−x0)∂∂x+(y−y0)∂∂y](n+1)f[x0+θ(x−x0),y0+θ(y−y0)]

当中,0<θ<1,记号

[(x−x0)∂∂x+(y−y0)∂∂y]f(x0,y0)

表示

(x−x0)fx(x0,y0)+(y−y0)fy(x0,y0)

记号

[(x−x0)∂∂x+(y−y0)∂∂y]2f(x0,y0)

表示

(x−x0)2fxx(x0,y0)+2(x−x0)(y−y0)fxy(x0,y0)+(y−y0)2fyy(x0,y0)

一般地,记号

[(x−x0)∂∂x+(y−y0)∂∂y]mf(x0,y0)

表示

∑p=0mCpm(x−x0)p(y−y0)(m−p)∂mf∂xp∂y(m−p)∣∣∣(x0,y0)

当然。我们能够用一种更加简洁的形式来重写上面的和式,则有

f(x,y)=∑k=0n1k![(x−x0)∂∂x+(y−y0)∂∂y]kf(x0,y0)+1(n+1)![(x−x0)∂∂x+(y−y0)∂∂y](n+1)f[x0+θ(x−x0),y0+θ(y−y0)],(0<θ<1)

当余项Rn(x,y)採用上面这样的形式时称为拉格朗日余项,假设採用皮亚诺余项,则二元函数的泰勒公式能够写成

f(x,y)=∑k=0n1k![(x−x0)∂∂x+(y−y0)∂∂y]kf(x0,y0)+o(ρn)

特别低。对于一个多维向量 X, 以及在点 X0 的邻域内有连续二阶偏导数的多元函数 f(X) ,能够写出该函数在点 X0 处的(二阶)泰勒展开式

f(X)=f(X0)+(X−X0)T∇f(X0)+12!(X−X0)T∇2f(X0)(X−X0)+o(∥X−X0∥2)

当中,o(∥X−X0∥2) 是高阶无穷小表示的皮亚诺余项。而 ∇2f(X0) 显然就是一个Hessian矩阵。所以上述式子也能够写成

f(X)=f(X0)+(X−X0)T∇f(X0)+12(X−X0)TH(X0)(X−X0)+o(∥X−X0∥2)

我们已经知道对于 n 元函数 u=f(x1,x2,⋯,xn)在点 M 处有极值,则有

∇f(M)={∂f∂x1,∂f∂x2,⋯,∂f∂xn}M=0

也就是说这是一个必要条件,而充分条件则由上一节中之结论给出 。

Hessian矩阵与多元函数极值的更多相关文章

  1. Hessian矩阵

    http://baike.baidu.com/link?url=o1ts6Eirjn5mHQCZUHGykiI8tDIdtHHOe6IDXagtcvF9ncOfdDOzT8tmFj41_DEsiUCr ...

  2. Hessian矩阵【转】

    http://blog.sina.com.cn/s/blog_7e1ecaf30100wgfw.html 在数学中,海塞矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,一元函数就是二阶导, ...

  3. 三维重建面试4:Jacobian矩阵和Hessian矩阵

    在使用BA平差之前,对每一个观测方程,得到一个代价函数.对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法.相当于同时对相机位姿和路标进行调整,这就是所谓的BA ...

  4. 梯度、Hessian矩阵、平面方程的法线以及函数导数的含义

    本文转载自: Xianling Mao的专栏 =========================================================================== 想 ...

  5. 梯度vs Jacobian矩阵vs Hessian矩阵

    梯度向量 定义: 目标函数f为单变量,是关于自变量向量x=(x1,x2,-,xn)T的函数, 单变量函数f对向量x求梯度,结果为一个与向量x同维度的向量,称之为梯度向量: 1. Jacobian 在向 ...

  6. Jacobian矩阵和Hessian矩阵

    1.Jacobian矩阵 在矩阵论中,Jacobian矩阵是一阶偏导矩阵,其行列式称为Jacobian行列式.假设 函数 $f:R^n \to R^m$, 输入是向量 $x \in R^n$ ,输出为 ...

  7. Jacobian矩阵、Hessian矩阵和Newton's method

    在寻找极大极小值的过程中,有一个经典的算法叫做Newton's method,在学习Newton's method的过程中,会引入两个矩阵,使得理解的难度增大,下面就对这个问题进行描述. 1, Jac ...

  8. Hessian矩阵与牛顿法

    Hessian矩阵与牛顿法 牛顿法 主要有两方面的应用: 1. 求方程的根: 2. 求解最优化方法: 一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解 ...

  9. 【机器学习】梯度、Hessian矩阵、平面方程的法线以及函数导数的含义

    想必单独论及" 梯度.Hessian矩阵.平面方程的法线以及函数导数"等四个基本概念的时候,绝大部分人都能够很容易地谈个一二三,基本没有问题. 其实在应用的时候,这几个概念经常被混 ...

随机推荐

  1. Windows 内核(WRK)简介

    引子 WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码,WRK(Windows Research Kernel)也就是 Windows 研究内核,在 WRK 中不仅 ...

  2. onActivityResult 通过case对不同情况进行处理

    @Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) { switch (result ...

  3. Dijkstra普通算法及优先队列优化

    #include<stdio.h> #include<iostream> #define maxv 100 #define inf 0x3fffffff using names ...

  4. java printf long

    System.out.printf("%d\n", 1000000000000000000L); 

  5. c# 文件操作 txt、xml、ini

    1. txt文件 /// <summary> /// 读文本文件信息 /// </summary> /// <param name="FilePath" ...

  6. linux设置时间的方法

    0. date -R  中国上海的时区是+8000 1.tzselect 设置时区,依次选择5,9,1,1(如果时区不一样,执行下面的命令得到之后时间是不一样的) 2.sudo ntpdate asi ...

  7. HDU 3294 Manacher模版题

    点击打开链接 题意:求最长回文子串所在的区间,然后第一个字符代表a,以后的顺推,最后输出这个区间顺推后的串 思路:Manacher轻松水过.记录下最长回文串的位置和长度即可了,然后输出时自己处理一下, ...

  8. iframe宽高百分百显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 下列哪个为JSP的隐含对象。

    下列哪个为JSP的隐含对象. A.env B.page C.jspinfo D.context 解答:B JSP有九个隐士对象 request对象:保存了很多客户端请求的信息. response对象: ...

  10. 从客户端检测到有潜在危险的Request.Form 值”错误提示

    http://www.cnblogs.com/UouHt/archive/2008/10/30/1322697.html asp.net开发中,经常遇到“从客户端检测到有潜在危险的Request.Fo ...