轉載出處: http://jacoxu.com/?p=146
1. Jacobian
在向量分析中, 雅可比矩陣是一階偏導數以一定方式排列成的矩陣, 其行列式稱爲雅可比行列式. 還有, 在代數幾何中, 代數曲線的雅可比量表示雅可比簇:伴隨該曲線的一個代數羣, 曲線可以嵌入其中. 它們全部都以數學家卡爾·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以發音爲[ja ˈko bi ən]或者[ʤə ˈko bi ən].
雅可比矩陣
雅可比矩陣的重要性在於它體現了一個可微方程與給出點的最優線性逼近. 因此, 雅可比矩陣類似於多元函數的導數.
假設FF: Rn→RmRn→Rm是一個從歐式n維空間轉換到歐式m維空間的函數.
這個函數由m個實函數組成: y1(x1,…,xn), …, ym(x1,…,xn). 這些函數的偏導數(如果存在)可以組成一個m行n列的矩陣, 這就是所謂的雅可比矩陣:
⎡⎣⎢⎢⎢⎢∂y1∂x1⋮∂ym∂x1⋯⋱⋯∂y1∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥[∂y1∂x1⋯∂y1∂xn⋮⋱⋮∂ym∂x1⋯∂ym∂xn]
此矩陣表示爲: JF(x1,…,xn)JF(x1,…,xn),
或者∂(y1,…,ym)∂(x1,…,xn)∂(y1,…,ym)∂(x1,…,xn).
這個矩陣的第i行是由梯度函數的轉置yi(i=1,…,m)表示的.
如果pp是RnRn中的一點, FF在pp點可微分,
那麼在這一點的導數由JF(p)JF(p)給出(這是求該點導數最簡便的方法).
在此情況下, 由F(p)F(p)描述的線性算子即接近點pp的FF的最優線性逼近, xx逼近於pp:
F(x)≈F(p)+JF(p)⋅(x–p)F(x)≈F(p)+JF(p)⋅(x–p)
雅可比行列式
如果m = n, 那麼FF是從n維空間到n維空間的函數,
且它的雅可比矩陣是一個方塊矩陣. 於是我們可以取它的行列式, 稱爲雅可比行列式.
在某個給定點的雅可比行列式提供了 在接近該點時的表現的重要信息. 例如, 如果連續可微函數FF在pp點的雅可比行列式不是零,
那麼它在該點附近具有反函數. 這稱爲反函數定理. 更進一步, 如果pp點的雅可比行列式是正數,
則FF在pp點的取向不變;如果是負數,
則FF的取向相反.
而從雅可比行列式的絕對值, 就可以知道函數FF在pp點的縮放因子;這就是爲什麼它出現在換元積分法中.
對於取向問題可以這麼理解, 例如一個物體在平面上勻速運動, 如果施加一個正方向的力FF,
即取向相同, 則加速運動, 類比於速度的導數加速度爲正;如果施加一個反方向的力FF,
即取向相反, 則減速運動, 類比於速度的導數加速度爲負.
2. 海森Hessian矩陣
在數學中, 海森矩陣(Hessian matrix或Hessian)是一個自變量爲向量的實值函數的二階偏導數組成的方塊矩陣, 此函數如下:
f(x1,x2…,xn)f(x1,x2…,xn)
如果ff的所有二階導數都存在,
那麼ff的海森矩陣即:
H(f)ij(x)=DiDjf(x)H(f)ij(x)=DiDjf(x)
其中x=(x1,x2…,xn)x=(x1,x2…,xn),
即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⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2]
(也有人把海森定義爲以上矩陣的行列式)海森矩陣被應用於牛頓法解決的大規模優化問題.
海森矩陣在牛頓法中的應用
一般來說, 牛頓法主要應用在兩個方面, 1, 求方程的根; 2, 最優化.
1), 求解方程
並不是所有的方程都有求根公式, 或者求根公式很複雜, 導致求解困難. 利用牛頓法, 可以迭代求解.
原理是利用泰勒公式, 在x0x0處展開,
且展開到一階, 即f(x)=f(x0)+(x–x0)f′(x0)f(x)=f(x0)+(x–x0)f′(x0)
求解方程f(x)=0f(x)=0,
即f(x0)+(x–x0)f′(x0)=0f(x0)+(x–x0)f′(x0)=0,
求解x=x1=x0–f(x0)/f′(x0)x=x1=x0–f(x0)/f′(x0),
因爲這是利用泰勒公式的一階展開, f(x)=f(x0)+(x–x0)f′(x0)f(x)=f(x0)+(x–x0)f′(x0)處並不是完全相等,
而是近似相等, 這裏求得的x1x1並不能讓f(x)=0f(x)=0,
只能說f(x1)f(x1)的值比f(x0)f(x0)更接近f(x)=0f(x)=0,
於是乎, 迭代求解的想法就很自然了, 可以進而推出xn+1=xn–f(xn)/f′(xn)xn+1=xn–f(xn)/f′(xn),
通過迭代, 這個式子必然在f(x∗)=0f(x∗)=0的時候收斂.
整個過程如下圖:
2), 最優化
在最優化的問題中, 線性最優化至少可以使用單純形法(或稱不動點算法)求解, 但對於非線性優化問題, 牛頓法提供了一種求解的辦法. 假設任務是優化一個目標函數ff,
求函數ff的極大極小問題,
可以轉化爲求解函數ff的導數f′=0f′=0的問題,
這樣求可以把優化問題看成方程求解問題(f′=0f′=0).
剩下的問題就和第一部分提到的牛頓法求解很相似了.
這次爲了求解f′=0f′=0的根,
把f(x)f(x)的泰勒展開,
展開到2階形式:
f(x+Δx)=f(x)+f′(x)Δx+12f′′(x)Δx2f(x+Δx)=f(x)+f′(x)Δx+12f″(x)Δx2
這個式子是成立的, 當且僅當 ΔxΔx 無限趨近於0時, f(x+Δx)=f(x)f(x+Δx)=f(x),
約去這兩項, 並對餘項式f′(x)Δx+12f”(x)Δx2=0f′(x)Δx+12f”(x)Δx2=0對ΔxΔx求導(注: f′(x)f′(x), f”(x)f”(x)均爲常數項.
此時上式等價與:
f′(x)+f′′(x)Δx=0f′(x)+f″(x)Δx=0
求解:
Δx=−f′(xn)f′′(xn)Δx=−f′(xn)f″(xn)
得出迭代公式:
xn+1=xn−f′(xn)f′′(xn),n=0,1,...xn+1=xn−f′(xn)f″(xn),n=0,1,...
一般認爲牛頓法可以利用到曲線本身的信息, 比梯度下降法更容易收斂(迭代更少次數), 如下圖是一個最小化一個目標方程的例子, 紅色曲線是利用牛頓法迭代求解, 綠色曲線是利用梯度下降法求解.
在上面討論的是2維情況, 高維情況的牛頓迭代公式是:
xn+1=xn−[Hf(xn)]–1∇f(xn),n≥0xn+1=xn−[Hf(xn)]–1∇f(xn),n≥0
其中H是hessian矩陣, 定義見上.
高維情況依然可以用牛頓迭代求解, 但是問題是Hessian矩陣引入的複雜性, 使得牛頓迭代求解的難度大大增加, 但是已經有了解決這個問題的辦法就是Quasi-Newton method, 不再直接計算hessian矩陣, 而是每一步的時候使用梯度向量更新hessian矩陣的近似.