1. Jacobian
在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都以数学家卡尔·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以发音为[ja ˈko bi ən]或者[ʤə ˈko bi ən].
雅可比矩阵
雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数.
假设\(F\): \({R_n} \to {R_m}\)是一个从欧式n维空间转换到欧式m维空间的函数. 这个函数由m个实函数组成: y1(x1,…,xn), …, ym(x1,…,xn). 这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵:
\begin{bmatrix} \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{bmatrix}
此矩阵表示为: \({J_F}({x_1}, \ldots ,{x_n})\), 或者\(\frac{{\partial ({y_1}, \ldots ,{y_m})}}{{\partial ({x_1}, \ldots ,{x_n})}}\).
这个矩阵的第i行是由梯度函数的转置yi(i=1,…,m)表示的.
如果\({\bf{p}}\)是\({R_n}\)中的一点, \(F\)在\({\bf{p}}\)点可微分, 那么在这一点的导数由\({J_F}({\bf{p}})\)给出(这是求该点导数最简便的方法). 在此情况下, 由\(F({\bf{p}})\)描述的线性算子即接近点\({\bf{p}}\)的\(F\)的最优线性逼近, \({\bf{x}}\)逼近于\({\bf{p}}\):
\(F({\bf{x}}) \approx F({\bf{p}}) + {J_F}({\bf{p}}) \cdot ({\bf{x}} – {\bf{p}})\)
雅可比行列式
如果m = n, 那么\(F\)是从n维空间到n维空间的函数, 且它的雅可比矩阵是一个方块矩阵. 于是我们可以取它的行列式, 称为雅可比行列式.
在某个给定点的雅可比行列式提供了 在接近该点时的表现的重要信息. 例如, 如果连续可微函数\(F\)在\({\bf{p}}\)点的雅可比行列式不是零, 那么它在该点附近具有反函数. 这称为反函数定理. 更进一步, 如果\({\bf{p}}\)点的雅可比行列式是正数, 则\(F\)在\({\bf{p}}\)点的取向不变;如果是负数, 则\(F\)的取向相反. 而从雅可比行列式的绝对值, 就可以知道函数\(F\)在\({\bf{p}}\)点的缩放因子;这就是为什么它出现在换元积分法中.
对于取向问题可以这么理解, 例如一个物体在平面上匀速运动, 如果施加一个正方向的力\(F\), 即取向相同, 则加速运动, 类比于速度的导数加速度为正;如果施加一个反方向的力\(F\), 即取向相反, 则减速运动, 类比于速度的导数加速度为负.
2. 海森Hessian矩阵
在数学中, 海森矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵, 此函数如下:
\[f({x_1},{x_2} \ldots ,{x_n})\]
如果\(f\)的所有二阶导数都存在, 那么\(f\)的海森矩阵即:
\[H{(f)_{ij}}(x) = {D_i}{D_j}f(x)\]
其中\(x = ({x_1},{x_2} \ldots ,{x_n})\), 即\(H(f)\)为:
\begin{bmatrix}
\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{bmatrix}
(也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题.
海森矩阵在牛顿法中的应用
一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化.
1), 求解方程
并不是所有的方程都有求根公式, 或者求根公式很复杂, 导致求解困难. 利用牛顿法, 可以迭代求解.
原理是利用泰勒公式, 在\({x_0}\)处展开, 且展开到一阶, 即\(f(x) = f({x_0}) + (x – {x_0})f’({x_0})\)
求解方程\(f(x) = 0\), 即\(f({x_0}) + (x – {x_0})f’({x_0}) = 0\), 求解\(x = {x_1} = {x_0} – f({x_0})/f’({x_0})\), 因为这是利用泰勒公式的一阶展开, \(f(x) = f({x_0}) + (x – {x_0})f’({x_0})\)处并不是完全相等, 而是近似相等, 这里求得的\({x_1}\)并不能让\(f(x) = 0\), 只能说\(f({x_1})\)的值比\(f({x_0})\)更接近\(f(x){\rm{ = }}0\), 于是乎, 迭代求解的想法就很自然了, 可以进而推出\({x_{n + 1}} = {x_n} – f({x_n})/f’({x_n})\), 通过迭代, 这个式子必然在\(f({x^ * }){\rm{ = }}0\)的时候收敛. 整个过程如下图:
2), 最优化
在最优化的问题中, 线性最优化至少可以使用单纯形法(或称不动点算法)求解, 但对于非线性优化问题, 牛顿法提供了一种求解的办法. 假设任务是优化一个目标函数\(f\), 求函数\(f\)的极大极小问题, 可以转化为求解函数\(f\)的导数\(f’{\rm{ = }}0\)的问题, 这样求可以把优化问题看成方程求解问题(\(f’{\rm{ = }}0\)). 剩下的问题就和第一部分提到的牛顿法求解很相似了.
这次为了求解\(f’{\rm{ = }}0\)的根, 首先把\(f(x)\)在探索点\(x_n\)处泰勒展开, 展开到2阶形式进行近似:
\[f(x) = f({x_n}) + f'({x_n})(x - {x_n}) + \frac{{f''({x_n})}}{2}{(x - {x_n})^2}\]
然后用\(f(x)\)的最小点做为新的探索点\(x_{n+1}\),据此,令:
\[f'(x) = f'({x_n}) + f''({x_n})(x - {x_n}) = 0\]
求得出迭代公式:
\[{x_{n + 1}} = {x_n}{\rm{ - }}\frac{{f'({x_n})}}{{f''({x_n})}},n = 0,1,...\]
一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解.
在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:
\[{x_{n + 1}} = {x_n} - {[Hf({x_n})]^{ – 1}}\nabla f({x_n}),n \ge 0\]
其中H是hessian矩阵, 定义见上.
高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性, 使得牛顿迭代求解的难度大大增加, 但是已经有了解决这个问题的办法就是Quasi-Newton method, 不再直接计算hessian矩阵, 而是每一步的时候使用梯度向量更新hessian矩阵的近似.
[1. Hessian参考: Wikipedia]
[2. Newton优化法参考: 运筹学第三版 刁在筠著]
啊!博主写的太好了。看了好几遍牛顿法都没搞懂,看了博主写的终于茅塞顿开!
非常感谢
楼主您好,想知道你接近尾部的 等高线图 是用什么工具绘制的,谢谢!
不好意思,是截图。可查阅Matlab如何画等高线 应该有很多方法。
你好,倒数第二张图挂了,还有原图吗?
你好,本博客的两张图:http://ww4.sinaimg.cn/mw690/697b070fjw1dvpdvfz24hj.jpg
http://ww1.sinaimg.cn/mw690/697b070fjw1dvpdvu65zij.jpg
解释的很清楚 还想知道具体实际应用
茅塞顿开
Best Jacobian Matrix introduction ever!
写得非常好,数学系的吧
谢谢,CS系的。
感谢!
确实讲得非常清楚,感谢!
确实讲得非常清楚,感谢!
谢谢,写的很好,一下搞明白了牛顿法和梯度下降法区别
好东西!
博主你好,最近正在看阻尼最小二乘法在对神经网络权值修正上的应用,里面涉及到雅克比矩阵,但是有很多不懂的地方。比如那等高线代表的是什么意思?为什么牛顿法和梯度下降法在等高线的指示线是那样子画的?
欢迎邮件交流。
您好,等高线是(x, y=f(x)),指示线是更新方向(梯度或其变种)
太赞了!如果可以分享就更好了!
可以分享
楼主写的很好,感谢。
Pingback 引用通告: Jacobian matrix and Hessian matrix - Soso Blog knowledge share
写得非常好,谢谢博主^(●゚∀゚○)ノ
哇!真是清晰明了,意义深刻!
非常感谢!谢谢博主~
很棒 很清晰明了,
谢谢楼主,一直搞不清牛顿迭代法什么时候用一阶泰勒展开什么时候用二阶泰勒展开,看了你的博文之后豁然开朗,谢谢!
您好,我是东北大学的一名学生,在做机器学习问题的时候遇到了一些高维求导的问题,希望您能帮助我,具体问题是:我知道了一个非线性函数的样本点x1,x2(都是n维的数据),以及它的函数值f(x1),f(x2) ,具体函数表达式不清楚,现在我需要知道向量x1.x2的二阶导,如果x是1维的话我会求,用有限差分法就可以了,但是高维怎么求,我主要求的高维导数不是个矩阵,而是个数值,看了您的博文,是不是直接对Hesse矩阵求行列式就可以了?希望您能给我些指点
这种情况同图像的Hessian矩阵的求法很像,因为图像也可以看成是离散的二维采样点(空间位置)和对应的函数值(灰度值)。
关于图像的Hessian矩阵
H = [Ixx, Ixy;
Ixy, Iyy;]
其中Ixx表示X方向的二阶偏导数
Iyy表示Y方向的二阶偏导数
Ixy表XY方向的二阶导数。
具体的求法可以参考:
http://blog.csdn.net/xiaoxin_ling/article/details/43734835
http://www.cnblogs.com/tiandsp/archive/2013/04/11/3015522.html
请教一个问题,对余项式f′(x)Δx+(1/2)*f”(x)*(Δx)^2=0对Δx求导有点不理解。 为什么要求导来消Δx,不能直接除吗,这里有什么trick吗?
delta x 趋向于0啊 不好除的啊
感觉博主有点误导人,所谓delta x趋向于0,本质上delta x是不等于0的,所以并不存在不好除的问题。所以博主的解释是有些牵强的。
谢谢指正,已经更正。祝好!
Pingback 引用通告: 麦夸特法 – 投影世界
楼主你好,我和楼上一样不太懂你写的牛顿法求最优化那部分的思路。按我的理解,原方程泰勒二阶展开 f(x+Δx)=f(x)+f′(x)*Δx+1/2*f′′(x)Δx^2,然后看成Δx的函数,即我们要在给定x下,求一个能让 f(x+Δx)最小的Δx,那么 f(x+Δx)对 Δx求导后得到f′(x)+f′′(x)Δx,即得到Δx=-f′(x)/f′′(x).
楼主的思路我有两点不懂,第一是 f(x+Δx)=f(x)约掉后的余项式是什么意思呢,第二这个余项式对Δx求导又可以怎么理解呢?
同样的问题,求解答
我觉得可能博主讲的有些问题,我对这里的理解如下:
f(x+Δx)=f(x)+f′(x)*Δx+1/2*f′′(x)Δx^2 是指的 x 增加 Δx 后的 f(x+Δx)逼近
这里需要求解的Δx是:找到一个Δx使得 f(x+Δx)相对于f(x) 在 Δx 上下降的程度最大,即 f(x+Δx) – f(x) 的极值,也就是对 f(x+Δx) – f(x) 求导。
为什么f(x+Δx) – f(x) 的极值是重要的?一阶导数下我们通过判定导数方向来确定下降的方向。但是该下降方向的最优步长是不确定的,在曲率很大的点,一个较大的Δx的可能反而让梯度向上移动。这时候引入二阶导数,对f(x+Δx) – f(x) 求导,来计算出使得f(x+Δx) – f(x) 有着最大下降梯度的步长。
参考文献:《深度学习》-数值计算-基于梯度的优化方法
将的非常好,正好做图像遇到了,作者也讲到在图像上的应用。
很棒
你好,我想问一下牛顿法最优化问题中△x趋于0是怎么给出的,如果初始值x与极值点的差值较大,那么△x就不趋于0了
楼主,我最近在用牛顿算法求解。但是遇到一个问题,Hessia矩阵求解时,程序提醒矩阵是奇异的。想请教一下楼主是否有可解决的方法。
用拟牛顿法或者modified H矩阵分解,比如cholesky分解修正,让矩阵正定化应该就可以
Pingback 引用通告: Jacobian矩阵和Hessian矩阵 | 科学杂谈
最后的优化方法中忽略掉了牛顿法里的步长,其实博主应该提一下在牛顿法中step=1是被证明具有全局收敛性质的,不然容易被人误解