目錄
- 向量對向量
- 標量對多個向量
- 標量對多個矩陣
- 矩陣向量求導小結
求導的自變量和因變量直接有復雜的多層鏈式求導的關系,此時微分法使用起來也有些麻煩。需要一些簡潔的方法。
本文我們討論矩陣向量求導鏈式法則,使用該法則很多時候可以幫我們快速求出導數結果。如果遇到其他資料求
導結果不同,請先確認布局是否一樣。
若沒有特殊說明,默認情況定義如下:求導的自變量用x表示標量,x表示n維向量,X表示m×n維度的矩陣,求導的因變量用y表示標量,y表示m維向量,Y表示p×q維度的矩陣。默認向量為列向量,若是行向量,本文全部使用對應字母的轉置表示。
總的求導准則:形式和平時高中所述的鏈式求導方式一樣,這里矩陣和向量求導一定要注意維度統一。
一、向量對向量
假設多個向量存在依賴關系,比如三個向量 x → y → z 存在依賴關系,則我們有下面的鏈式求導法則:
維度探討:假設x y z 的維度分別為m,n,p,∂z/∂x 是 p×m,∂z/∂y 是 p×n,∂y/∂x 是 n×m,符合矩陣乘法維度原則。
二、標量對多個向量
2.1 3個向量
最后到1標量的依賴關系: x → y → z ,此時很容易發現維度不相容。不能再簡單套用上面的式子,而做了對應的變形:
維度探討:假設x y z 的維度分別為m,n,1,∂z/∂x 是 m×1,(∂y/∂x)T 是 m×n,∂z/∂x 是 n×1,符合矩陣乘法維度原則。
2.2 多個向量
對於更加復雜的形式:如: y1 → y2 →…… yn → z ,則表達式為:
2.3 實際應用
ML-2最小二乘法中使用到的,最小二乘法優化的目標是最小化如下損失函數:
對上述進行如下假設:
很容易得到以下表達式:
三、標量對多個矩陣
假設: X → Y → z 存在依賴關系,則我們有下面的鏈式求導法則:
上面的式子是矩陣跡性質來的,不是特別實用,也不便於推廣。我們再看一個偏難得問題:
同樣還是如此,
我們再來看看后半部分的導數:
那么最終的標簽鏈式求導公式轉化為:
排列成矩陣即為:
對上面的式子做個總結:
維度探討:假設Y A X 的維度分別為p×n,p×m,m×n,∂z/∂X是m×n,(A)T 是 m×p,∂z/∂Y是 p×n,符合矩陣乘法維度原則。
這結論在是一個向量x的時候也成立,即
同理:如果要求導的自變量在左邊,線性變換在右邊,也有類似稍有不同的結論如下:
使用好上述四個結論,對於機器學習尤其是深度學習里的求導問題可以非常快的解決
四、矩陣向量求導小結
矩陣向量求導的三種方法:定義法,微分法和鏈式求導法。在同等情況下,優先考慮鏈式求導法,尤其是第三節的四個結論。其次選擇微分法、在沒有好的求導方法的時候使用定義法是最后的保底方案。
基本上大家看了系列里這四篇后對矩陣向量求導就已經很熟悉了,對於機器學習中出現的矩陣向量求導問題已足夠。
主要來自: https://www.cnblogs.com/pinard/p/10825264.html
附件:手寫推導