Jacobian矩阵
在向量分析中,雅可比(Jacobian)矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式成为雅可比行列式。
雅可比矩阵
雅可比矩阵的而重要性在于它体现了一个可微方程与给出点的最优线性逼近。因此,雅可比矩阵类似于多元函数的导数。
假设F:Rn→Rmbf F:R_nrightarrow R_m是一个从欧式n维空间转换到欧式m维空间的函数。这个函数由m个实函数组成:y1(x1,…,xn),…,ym(x1,…,xn)y_1(x_1,ldots,x_n),ldots,y_m(x_1,ldots,x_n)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵,这就是所谓的雅可比矩阵:
⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1∂x1⋮∂ym∂x1⋯⋱⋯∂y1∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥
left begin{matrix} 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{matrix} right
此矩阵表示为:JF(x1,…,xn)J_F(x_1,ldots,x_n),或者∂(y1,…,ym)∂(x1,…,xn)frac{partial(y_1,ldots,y_m)}{partial(x_1,ldots,x_n)}.
这个矩阵的第i行是由梯度函数的转置yi(i=1,…,m)y_i(i=1,ldots,m)表示的。
如果pp是RnR_n中的一点,FF在pp点可微分,那么在这一点的导数由JF(p)J_F(p)给出(这是求该点导数最简便的方法)。在此情况下,由F(p)F(p)描述的线性算子即接近点pp的FF的最优线性逼近,xx逼近于pp:
F(x)≈F(p) JF(p)⋅(x−p)
F(x) approx F(p) J_F(p)cdot(x-p)
雅可比行列式
如果m=nm = n, 那么FF是从n维空间到n维空间的函数, 且它的雅可比矩阵是一个方块矩阵. 于是我们可以取它的行列式, 称为雅可比行列式.
在某个给定点的雅可比行列式提供了 在接近该点时的表现的重要信息. 例如, 如果连续可微函数FF在pp点的雅可比行列式不是零, 那么它在该点附近具有反函数. 这称为反函数定理. 更进一步, 如果pp点的雅可比行列式是正数, 则FF在pp点的取向不变;如果是负数, 则FF的取向相反. 而从雅可比行列式的绝对值, 就可以知道函数FF在pp点的缩放因子;这就是为什么它出现在换元积分法中.
对于取向问题可以这么理解, 例如一个物体在平面上匀速运动, 如果施加一个正方向的力FF, 即取向相同, 则加速运动, 类比于速度的导数加速度为正;如果施加一个反方向的力FF, 即取向相反, 则减速运动, 类比于速度的导数加速度为负.
Hessian矩阵
在数学中,海森矩阵(Hessian matrix)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下:
f(x1,x2,…,xn)
f(x_1,x_2,ldots,x_n)
如果f的所有二阶导数都存在,那么ff的Hessian矩阵即:
H(f)ij(x)=DiDjf(x)
H(f)_{ij}(x)=D_iD_jf(x)
其中x=(x1,x2,…,xn)x=(x_1,x_2,ldots,x_n),即H(f)H(f)为:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x21∂2f∂x2∂x1⋮∂2f∂xn∂x1∂2f∂x1∂x2∂2f∂x22⋮∂2f∂xn∂x2⋯⋯⋱⋯∂2f∂x1∂xn∂2f∂x2∂xn⋮∂2f∂x2n⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
left begin{matrix} frac{partial^2f}{partial x_1^2} & frac{partial^2f}{partial x_1partial x_2} & cdots & frac{partial^2f}{partial x_1partial x_n} frac{partial^2f}{partial x_2partial x_1} & frac{partial^2f}{partial x_2^2} & cdots & frac{partial^2f}{partial x_2partial x_n} vdots & vdots & ddots & vdots frac{partial^2f}{partial x_npartial x_1} & frac{partial^2f}{partial x_npartial x_2} & cdots & frac{partial^2f}{partial x_n^2} end{matrix} right
(也有人把海森定义为以上矩阵的行列式)海森矩阵被应用于牛顿法解决的大规模优化问题。
海森矩阵在牛顿法中的应用
一般来说,牛顿法主要应用在两个方面:
- 求方程根
- 最优化问题
1. 求方程根
并不是所有的方程都有求根公式,或者求根公式很复杂,求导求解困难。利用牛顿法,可以迭代求解。原理是泰勒公式,展开到一阶,即f(x)=f(x0) (x−x0)f′(x0)f(x)=f(x_0) (x-x_0)f'(x_0).具体可以参考我另一篇博客:
多元函数的泰勒(Taylor)展开式
求解方程f(x)=0f(x)=0,即f(x0) (x−x0)f′(x0)=0f(x_0) (x-x_0)f'(x_0)=0,求解x=x1=x0−f(x0)/f′(x0)x=x_1=x_0-f(x_0)/f'(x_0),并不是完全相等,而是近似相等。这里求得的x1x_1并不能让f(x)=0f(x)=0,只能说f(x1)f(x_1)的值比f(x0)f(x_0)更接近f(x)=0f(x)=0。根据这种迭代的思想,可以推出xn 1=xn−f(xn)/f′(xn)x_{n 1}=x_n-f(x_n)/f'(x_n),经过若干次迭代后,这个式子必然在f(x∗)=0f(x^*)=0的时候收敛。整个过程如下图:
2.最优化
在最优化的问题中,例如曲线拟合问题,一般分为线性问题和非线性优化问题。基于最小二乘法的思想可以使用不同的方法进行解决。相关介绍请参考我的另一篇博客:
最小二乘法和梯度下降法的一些总结
对于非线性优化问题,牛顿法提供了一种求解的方法。假设任务是优化一个目标函数ff,求函数ff的极大极小问题,可以转化为求解函数ff的导数f′=0f'=0的问题,这样求可以把优化问题看成方程求解问题(f′=0f'=0)。剩下的问题就和第一部分提到的牛顿法求解很相似。
为了求解f′=0f'=0的根,把f(x)f(x)二阶泰勒展开:
f(x1)=f(x) (x1−x)f′(x) 12(x1−x)2f′′(x)
f(x_1)=f(x) (x_1-x)f'(x) frac12(x_1-x)^2f''(x)
当且仅当x1x_1无限接近于xx时,上式成立,即f(x1)=f(x)f(x_1)=f(x),约去这两项,并对ΔxΔx求导,则得到下列表达式:
f′(x) f′′(x)Δx=0
f'(x) f''(x)Δx=0
求解:
Δx=−f′(x)f′′(x)
Δx=-frac{f'(x)}{f''(x)}
得出迭代公式:
xn 1=xn−f′(x)f′′(x),n=1,2,…
x_{n 1}=x_n-frac{f'(x)}{f''(x)},n=1,2,ldots
一般认为牛顿法可以利用到曲线本身的信息, 比梯度下降法更容易收敛(迭代更少次数), 如下图是一个最小化一个目标方程的例子, 红色曲线是利用牛顿法迭代求解, 绿色曲线是利用梯度下降法求解。
在上面讨论的是2维情况, 高维情况的牛顿迭代公式是:
xn 1=xn−Hf(xn)−1∇f(xn),n≥0
x_{n 1}=x_n-Hf(x_n)^{-1}nabla f(x_n),ngeq0
其中H是hessian矩阵, 定义见上。
高维情况依然可以用牛顿迭代求解, 但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就是Quasi-Newton method或者LM算法,不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。
原文出处