Jacobian矩阵和Hessian矩阵的理解
深度學習中梯度向量的計算,Jacobian矩陣和Hessian矩陣是基礎的知識點。
求微分其實就是線性化,導數其實就是線性空間之間的線性變換,Jaocibian矩陣本質上就是導數。
比如,映射在處的導數就是在處的切空間到在處的切空間之間的線性映射。切空間都是矢量空間,都有基底,所以這個線性變換就是矩陣。在歐氏空間子空間的開集上,切空間就是某個,比如實軸上的切空間就是,曲面上的切空間為。這樣一想,函數的導數無非就是切空間到切空間的線性變換,是一個矩陣,同構于一個實數。
因此,Jacobian矩陣實質上就是切空間之間的基底之間的線性變換,這也是為什么積分中變換坐標時前面會乘以一個Jacobian矩陣的行列式。1、梯度向量:
定義:
目標函數f為單變量,是關于自變量向量x=(x1,x2,…,xn)T的函數,
單變量函數f對向量x求梯度,結果為一個與向量x同維度的向量,稱之為梯度向量;
2、Jacobian矩陣:
定義:
目標函數f為一個函數向量,f=(f1(x),f2(x),…fm(x))T;
其中,自變量x=(x1,x2,…,xn)T;
函數向量f對x求梯度,結果為一個矩陣;行數為f的維數;列數位x的維度,稱之為Jacobian矩陣;
其每一行都是由相應函數的梯度向量轉置構成的;
【注】:梯度向量Jacobian矩陣的一個特例;
當目標函數為標量函數時,Jacobian矩陣是梯度向量;
雅可比矩陣的重要性在于它體現了一個可微方程與給出點的最優線性逼近. 因此, 雅可比矩陣類似于多元函數的導數.
雅可比行列式
如果m = n, 那么F是從n維空間到n維空間的函數, 且它的雅可比矩陣是一個方塊矩陣. 于是我們可以取它的行列式, 稱為雅可比行列式.在某個給定點的雅可比行列式提供了 在接近該點時的表現的重要信息. 例如, 如果連續可微函數F在p點的雅可比行列式不是零, 那么它在該點附近具有反函數. 這稱為反函數定理. 更進一步, 如果p點的雅可比行列式是正數, 則F在p點的取向不變;如果是負數, 則F的取向相反. 而從雅可比行列式的絕對值, 就可以知道函數F在p點的縮放因子;這就是為什么它出現在換元積分法中.
對于取向問題可以這么理解, 例如一個物體在平面上勻速運動, 如果施加一個正方向的力F, 即取向相同, 則加速運動, 類比于速度的導數加速度為正;如果施加一個反方向的力F, 即取向相反, 則減速運動, 類比于速度的導數加速度為負.
實際上,Hessian矩陣是梯度向量g(x)對自變量x的Jacobian矩陣:
在數學中, 海森矩陣(Hessian matrix或Hessian)是一個自變量為向量的實值函數的二階偏導數組成的方塊矩陣。海森矩陣被應用于牛頓法解決的大規模優化問題.
海森矩陣在牛頓法中的應用
一般來說, 牛頓法主要應用在兩個方面, 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)在探索點xn處泰勒展開, 展開到2階形式進行近似:
f(x)=f(xn)+f′(xn)(x?xn)+f′′(xn)2(x?xn)2然后用f(x)的最小點做為新的探索點xn+1,據此,令:
f′(x)=f′(xn)+f′′(xn)(x?xn)=0求得出迭代公式:
xn+1=xn?f′(xn)f′′(xn),n=0,1,...一般認為牛頓法可以利用到曲線本身的信息, 比梯度下降法更容易收斂(迭代更少次數), 如下圖是一個最小化一個目標方程的例子, 紅色曲線是利用牛頓法迭代求解, 綠色曲線是利用梯度下降法求解.
在上面討論的是2維情況, 高維情況的牛頓迭代公式是:
xn+1=xn?[Hf(xn)]–1?f(xn),n≥0其中H是hessian矩陣, 定義見上.?
高維情況依然可以用牛頓迭代求解, 但是問題是Hessian矩陣引入的復雜性, 使得牛頓迭代求解的難度大大增加, 但是已經有了解決這個問題的辦法就是Quasi-Newton method, 不再直接計算hessian矩陣, 而是每一步的時候使用梯度向量更新hessian矩陣的近似.
總結
以上是生活随笔為你收集整理的Jacobian矩阵和Hessian矩阵的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据挖掘知识点四】参数估计
- 下一篇: 【数据挖掘知识点五】层次聚类方法的理解