三维重建面试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].
雅可比矩阵
雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数.
假设
是一个从欧式n维空间转换到欧式m维空间的函数. 这个函数由m个实函数组成: y1(x1,…,xn), …, ym(x1,…,xn). 这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵:
此矩阵表示为:
这个矩阵的第i行是由梯度函数的转置yi(i=1,…,m)表示的.
如果
雅可比行列式
如果m = n, 那么
在某个给定点的雅可比行列式提供了 在接近该点时的表现的重要信息. 例如, 如果连续可微函数
对于取向问题可以这么理解, 例如一个物体在平面上匀速运动, 如果施加一个正方向的力
2. 海森Hessian矩阵
在数学中, 海森矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵, 此函数如下:
如果
的海森矩阵即:
其中
(也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题.
海森矩阵在牛顿法中的应用
一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化.
1), 求解方程
并不是所有的方程都有求根公式, 或者求根公式很复杂, 导致求解困难. 利用牛顿法, 可以迭代求解.
原理是利用泰勒公式, 在
求解方程
2), 最优化
在最优化的问题中, 线性最优化至少可以使用单纯形法(或称不动点算法)求解, 但对于非线性优化问题, 牛顿法提供了一种求解的办法. 假设任务是优化一个目标函数
). 剩下的问题就和第一部分提到的牛顿法求解很相似了.
这次为了求解
这个式子是成立的, 当且仅当
均为常数项. 此时上式等价与:
求解:
得出迭代公式:
一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解.
在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:
其中H是hessian矩阵, 定义见上.
高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性, 使得牛顿迭代求解的难度大大增加, 但是已经有了解决这个问题的办法就是Quasi-Newton method, 不再直接计算hessian矩阵, 而是每一步的时候使用梯度向量更新hessian矩阵的近似.
[参考: Wikipedia]