三维重建面试4:Jacobian矩阵和Hessian矩阵
在使用BA平差之前,对每一个观测方程,得到一个代价函数。对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法。相当于同时对相机位姿和路标进行调整,这就是所谓的BA。
在优化过程中,对每一个代价函数求取雅克比矩阵E和F,形成一个H矩阵,正因为H矩阵的稀疏性,才可是使用稀疏方法对BA进行求解。把一个大的稀疏矩阵,通过特定的消元法,消解为一个小的稠密矩阵,降低计算量。
摘抄部分有趣的链接,如有不适,请移步原文。
参考原文链接:Jacobian矩阵和Hessian矩阵
1. Jacobian
在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式.。
还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都以数学家卡尔·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以发音为[ja ˈko bi ən]或者[ʤə ˈko bi ən].
雅可比矩阵
雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数.
假设F:Rn→Rm
是一个从欧式n维空间转换到欧式m维空间的函数. 这个函数由m个实函数组成: y1(x1,…,xn), …, ym(x1,…,xn). 这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵:
此矩阵表示为:
JF(x1,…,xn),
或者∂(y1,…,ym)∂(x1,…,xn).
这个矩阵的第i行是由梯度函数的转置yi(i=1,…,m)表示的.
如果p是Rn中的一点,F在p点可微分,
那么在这一点的导数由JF(p)给出(这是求该点导数最简便的方法).
在此情况下, 由F(p)描述的线性算子即接近点p的F的最优线性逼近,x逼近于p:F(x)≈F(p)+JF(p)⋅(x–p)
雅可比行列式
如果m = n, 那么F是从n维空间到n维空间的函数,
且它的雅可比矩阵是一个方块矩阵. 于是我们可以取它的行列式, 称为雅可比行列式.
在某个给定点的雅可比行列式提供了 在接近该点时的表现的重要信息. 例如, 如果连续可微函数F在p点的雅可比行列式不是零,
那么它在该点附近具有反函数. 这称为反函数定理. 更进一步, 如果p点的雅可比行列式是正数,
则F在p点的取向不变;如果是负数,
则F的取向相反.
而从雅可比行列式的绝对值, 就可以知道函数F在p点的缩放因子;这就是为什么它出现在换元积分法中.
对于取向问题可以这么理解, 例如一个物体在平面上匀速运动, 如果施加一个正方向的力F,
即取向相同, 则加速运动, 类比于速度的导数加速度为正;如果施加一个反方向的力F,
即取向相反, 则减速运动, 类比于速度的导数加速度为负.
2. 海森Hessian矩阵
在数学中, 海森矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵, 此函数如下:
如果f
的所有二阶导数都存在, 那么f
的海森矩阵即:
其中x=(x1,x2…,xn),
即H(f)为:
(也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题.
海森矩阵在牛顿法中的应用
一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化.
1), 求解方程
并不是所有的方程都有求根公式, 或者求根公式很复杂, 导致求解困难. 利用牛顿法, 可以迭代求解.
原理是利用泰勒公式, 在x0处展开,
且展开到一阶, 即f(x)=f(x0)+(x–x0)f′(x0)
求解方程f(x)=0,
即f(x0)+(x–x0)f′(x0)=0,
求解x=x1=x0–f(x0)/f′(x0),
因为这是利用泰勒公式的一阶展开,
f(x)=f(x0)+(x–x0)f′(x0)处并不是完全相等,
而是近似相等, 这里求得的x1并不能让f(x)=0,
只能说f(x1)的值比f(x0)更接近f(x)=0,
于是乎, 迭代求解的想法就很自然了, 可以进而推出 xn+1=xn–f(xn)/f′(xn),
通过迭代, 这个式子必然在f(x∗)=0的时候收敛.
整个过程如下图:
2), 最优化
在最优化的问题中, 线性最优化至少可以使用单纯形法(或称不动点算法)求解, 但对于非线性优化问题, 牛顿法提供了一种求解的办法. 假设任务是优化一个目标函数f
, 求函数f的极大极小问题,
可以转化为求解函数f的导数f′=0的问题,
这样求可以把优化问题看成方程求解问题(f′=0
). 剩下的问题就和第一部分提到的牛顿法求解很相似了.
这次为了求解f′=0的根,
把f(x)的泰勒展开,
展开到2阶形式:
这个式子是成立的, 当且仅当 Δx无限趋近于0时,f(x+Δx)=f(x),
约去这两项, 并对余项式f′(x)Δx+12f”(x)Δx2=0对Δx求导(注:f′(x),f”(x)
均为常数项. 此时上式等价与:
求解:
得出迭代公式:
一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解.
在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:
其中H是hessian矩阵, 定义见上.
高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性, 使得牛顿迭代求解的难度大大增加, 但是已经有了解决这个问题的办法就是Quasi-Newton method, 不再直接计算hessian矩阵, 而是每一步的时候使用梯度向量更新hessian矩阵的近似.
[参考: Wikipedia]
此条目由 jacoxu 发表在
Optimization Theory 分类目录,并贴了 Hessian、Jacobian 标签。将固定链接加入收藏夹。
三维重建面试4:Jacobian矩阵和Hessian矩阵的更多相关文章
- 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 ...
- 梯度vs Jacobian矩阵vs Hessian矩阵
梯度向量 定义: 目标函数f为单变量,是关于自变量向量x=(x1,x2,-,xn)T的函数, 单变量函数f对向量x求梯度,结果为一个与向量x同维度的向量,称之为梯度向量: 1. Jacobian 在向 ...
- C#处理医学图像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比
在医院实际环境中,经常遇到有问题的患者,对于一些特殊的场景,比如骨折,肺结节,心脑血管问题 需要图像对比增强来更为清晰的显示病灶助于医生确诊,先看效果: 肺纹理增强: 肺结节增强: 血管对比增强: 骨 ...
- Hessian矩阵
http://baike.baidu.com/link?url=o1ts6Eirjn5mHQCZUHGykiI8tDIdtHHOe6IDXagtcvF9ncOfdDOzT8tmFj41_DEsiUCr ...
- Hessian矩阵【转】
http://blog.sina.com.cn/s/blog_7e1ecaf30100wgfw.html 在数学中,海塞矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,一元函数就是二阶导, ...
- Hessian矩阵与多元函数极值
Hessian矩阵与多元函数极值 海塞矩阵(Hessian Matrix),又译作海森矩阵,是一个多元函数的二阶偏导数构成的方阵.虽然它是一个具有悠久历史的数学成果.可是在机器学习和图像处理(比如SI ...
- Hessian矩阵与牛顿法
Hessian矩阵与牛顿法 牛顿法 主要有两方面的应用: 1. 求方程的根: 2. 求解最优化方法: 一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解 ...
- 【机器学习】梯度、Hessian矩阵、平面方程的法线以及函数导数的含义
想必单独论及" 梯度.Hessian矩阵.平面方程的法线以及函数导数"等四个基本概念的时候,绝大部分人都能够很容易地谈个一二三,基本没有问题. 其实在应用的时候,这几个概念经常被混 ...
随机推荐
- flask_model防止循环引用
1 首先介绍app-model的循环引用 https://www.cnblogs.com/fuzzier/p/7920645.html 2 解决方式 https://www.cnblogs.com/f ...
- 了解一下JAVA中的NIO模块
网上资料大把,但要写写代码,我这个年纪的人才有一点点记忆了.. 参考URL: http://blog.csdn.net/wuxianglong/article/details/6612282 pack ...
- Network Saboteur POJ 2531 回溯搜索
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12886 Accepted: 6187 Description A un ...
- Axis2中使用wsdl2java.bat生成客户端代码
1 准备环境 (1)下载Axis2的zip包axis2-1.5.5-bin.zip,并解压. 官方网址:http://ws.apache.org/axis2/ (2)设置环境变量(我的电脑->属 ...
- JAVA 大数据
- [C++基础]goto的用法
原文: http://blog.csdn.net/shimazhuge/article/details/8448773 ---------------------------------------- ...
- 3D数学读书笔记——多坐标系和向量基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453 第一个知识点 ...
- activeMQ公布订阅模式中中经常使用工具类
package com.jms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.j ...
- [ACM] ZOJ 3819 Average Score (水题)
Average Score Time Limit: 2 Seconds Memory Limit: 65536 KB Bob is a freshman in Marjar Universi ...
- Android中关闭DatePicker、TimePicker、NumberPicker的可编辑模式
DatePicker.TimePicker.NumberPicker这三个控件在使用的过程中,用户点击数字会弹出键盘,有时候会造成布局被挤压不好看,也有其他的需求. 我看了网上很多文章的解决办法都无效 ...