Hessian矩阵与多元函数极值
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) 来作为演示样例。首先要对函数中的每一个变量分别求偏导数,这会告诉我们该函数的极值点可能出如今哪里。即
接下来。要继续求二阶导数,此时包括混合偏导数的情况一共同拥有 9 个。假设用矩阵形式来表示的话就得到
这个矩阵就称为Hessian矩阵。当然上面所给出的不过一个三阶的Hessian矩阵。
稍作扩展。我们能够对一个在定义域内二阶连续可导的实值多元函数 f(x1,x2,⋯,xn) 定义其Hessian矩阵H例如以下
当一元函数的二阶导数等于 0 时,我们并不能确定函数在该点的极值性。相似地,面对Hessian矩阵,仍然存在无法断定多元函数极值性的的情况。即当Hessian矩阵的行列式为 0 时。我们无法确定函数能否取得极值。甚至我们可能会得到一个鞍点,也就是一个既非极大值也非极小值的的点。
基于Hessian矩阵,就能够推断多元函数的极值情况了。结论例如以下
- 假设是正定矩阵,则临界点处是一个局部极小值
- 假设是负定矩阵,则临界点处是一个局部极大值
- 假设是不定矩阵,则临界点处不是极值
怎样推断一个矩阵是否是正定的,负定的,还是不定的呢?一个最经常使用的方法就是顺序主子式。实对称矩阵为正定矩阵的充要条件是的各顺序主子式都大于零。当然这个判定方法的计算量比較大。
对于实二次型矩阵另一个判定方法:实二次型矩阵为正定二次型的充要条件是的矩阵的特征值全大于零。为负定二次型的充要条件是的矩阵的特征值全小于零,否则是不定的。
假设你对二次型的概念仍然不非常熟悉,这里也稍作补充。定义含有 n
个变量 x1,x2,⋯,xn 的二次齐次函数
为二次型。取 aij=aji,则 2aijxixj+ajixjxi,于是上式能够写成
更进一步,假设用矩阵对上式进行改写,则有
记
则二次型可记作 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) 时。有
当中
而且。ξ 在 x 和 x0之间,这被称作是拉格朗日余项。上式被称为 f(x) 的 n 阶泰勒公式。在不须要余项的精确表达式时。Rn(x) 能够记作 o[(x−x0)n],这被称为是皮亚诺余项。
如今我们把上面这个结论略微做一下推广,从而给出二元函数的泰勒公式。设二元函数 z=f(x,y) 在点 (x0,y0) 的某一邻域内连续且有直到 n+1 阶的连续偏导数,则有
当中,0<θ<1,记号
表示
记号
表示
一般地,记号
表示
当然。我们能够用一种更加简洁的形式来重写上面的和式,则有
当余项Rn(x,y)採用上面这样的形式时称为拉格朗日余项,假设採用皮亚诺余项,则二元函数的泰勒公式能够写成
特别低。对于一个多维向量 X, 以及在点 X0 的邻域内有连续二阶偏导数的多元函数 f(X) ,能够写出该函数在点 X0 处的(二阶)泰勒展开式
当中,o(∥X−X0∥2) 是高阶无穷小表示的皮亚诺余项。而 ∇2f(X0) 显然就是一个Hessian矩阵。所以上述式子也能够写成
我们已经知道对于 n 元函数 u=f(x1,x2,⋯,xn)在点 M 处有极值,则有
也就是说这是一个必要条件,而充分条件则由上一节中之结论给出 。
Hessian矩阵与多元函数极值的更多相关文章
- Hessian矩阵
http://baike.baidu.com/link?url=o1ts6Eirjn5mHQCZUHGykiI8tDIdtHHOe6IDXagtcvF9ncOfdDOzT8tmFj41_DEsiUCr ...
- Hessian矩阵【转】
http://blog.sina.com.cn/s/blog_7e1ecaf30100wgfw.html 在数学中,海塞矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,一元函数就是二阶导, ...
- 三维重建面试4:Jacobian矩阵和Hessian矩阵
在使用BA平差之前,对每一个观测方程,得到一个代价函数.对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法.相当于同时对相机位姿和路标进行调整,这就是所谓的BA ...
- 梯度、Hessian矩阵、平面方程的法线以及函数导数的含义
本文转载自: Xianling Mao的专栏 =========================================================================== 想 ...
- 梯度vs Jacobian矩阵vs Hessian矩阵
梯度向量 定义: 目标函数f为单变量,是关于自变量向量x=(x1,x2,-,xn)T的函数, 单变量函数f对向量x求梯度,结果为一个与向量x同维度的向量,称之为梯度向量: 1. Jacobian 在向 ...
- Jacobian矩阵和Hessian矩阵
1.Jacobian矩阵 在矩阵论中,Jacobian矩阵是一阶偏导矩阵,其行列式称为Jacobian行列式.假设 函数 $f:R^n \to R^m$, 输入是向量 $x \in R^n$ ,输出为 ...
- Jacobian矩阵、Hessian矩阵和Newton's method
在寻找极大极小值的过程中,有一个经典的算法叫做Newton's method,在学习Newton's method的过程中,会引入两个矩阵,使得理解的难度增大,下面就对这个问题进行描述. 1, Jac ...
- Hessian矩阵与牛顿法
Hessian矩阵与牛顿法 牛顿法 主要有两方面的应用: 1. 求方程的根: 2. 求解最优化方法: 一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解 ...
- 【机器学习】梯度、Hessian矩阵、平面方程的法线以及函数导数的含义
想必单独论及" 梯度.Hessian矩阵.平面方程的法线以及函数导数"等四个基本概念的时候,绝大部分人都能够很容易地谈个一二三,基本没有问题. 其实在应用的时候,这几个概念经常被混 ...
随机推荐
- Python学习之read()方法
read([size [,chars [,firstline]]]) 含义: 从文本流(io.TextIOWrapper)中解码数据并返回字符串对象.
- tomcat能启动正常,但是输入localhost:8080不能登录
怎么配置JDK和TOMCAT应该百度经验已经很好地解释了. tomcat启动成功了,但是 localhost:8080 登录不成功. 有一种可能,缺少http:// 输入: http://loca ...
- 在控制台快速定位js函数
最近在搞教务处的模拟登录,教务处用js加密密码和账号,为了构造能用的post数据,需要快速的找到对应的js代码.但是,那么多js代码,手动找会找到死的. 恰好学习了两个快速定位的方法:console ...
- HDU 1020 Encoding 模拟
Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- Ream的入门使用
一.介绍 Realm是一个不错的手机平台上的数据库,支持多种编程环境,如:Java.Object-C.React Native.Swift.Xamari等. Realm的官网:https://real ...
- 猫猫学iOS 之微博项目实战(5)微博自己定义搜索框searchBar
猫猫分享.必须精品 原创文章.欢迎转载. 转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 用UITextField简单定义一个搜索框 二:调用 ...
- 爬虫 (5)- Scrapy 框架简介与入门
Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...
- flask 中xx.init_app(app)方法
bootstrap = Bootstrap() mail = Mail() moment = Moment() db = SQLAlchemy() def create_app(config_name ...
- Json.net操作json
string str="{\"size\":15,\"query\":{\"match\":{\"data.query. ...
- 基于Jquery的实现回车键Enter切换焦点
系统默认情况下,使用Tab按键切换页面元素的焦点,有没有想过回车键Enter也可以实现这种功能,并且具有良好的用户体验. 接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE ...