深度學習中梯度向量的計算,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, 即取向相反, 則減速運動, 類比於速度的導數加速度為負.
3、Hessian矩陣:
實際上,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