在各類機器學習和深度學習算法的推導過程中,尤其是通過損失函數求解參數最優解過程中,經常用到向量矩陣的求導。從本質上講,向量矩陣求導就是将多元标量函數求導按照一定的布局排列為向量或矩陣。
按照求導中自變量和因變量的關系,标量、向量、矩陣可排列組合為9種組合(見下表)。本文僅涉及标量與向量和矩陣,向量與向量的五種求導。而矩陣和向量間的混合求導不做涉及。
自變量/因變量 | 标量y | 向量? | 矩陣? |
---|---|---|---|
标量? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
向量? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
矩陣? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
一、求導布局
對向量矩陣求導結果進行布局的統一。常見有的分子布局和分母布局兩種,兩者之間互為轉置:
分子布局:求導結果次元主要參考分子。
分母布局:求導結果次元主要參考分母。
若分母或分子次元無法确定,則取分子或分母分布的轉置,如列向量與标量求導,結果按分母布局,應為行向量
向量和向量導數的布局定義:m維列向量?對n維列向量?求導,分子布局,則矩陣的第一個次元以分子為準( m × n m\times n m×n),常稱為雅可比矩陣;分母布局,則矩陣的第一個次元以分母為準( n × m n\times m n×m),常稱為梯度矩陣。
混合布局:一種預設的分子或分布布局。标量對向量或矩陣求導,按照分母布局;向量或矩陣對标量求導,按照分子布局;向量對向量求導,以雅可比矩陣(即分子布局)為主。
在看推導過程中經常出現 A A A或 A T A^T AT的表達,隻是布局方式不一樣。
二、定義法直接求解
即展開成多元函數對某個變量的求導,然後寫成向量的形式。
三、标量對向量求導的基本法則
(1)常量對向量的求導結果為0。
(2)線性法則:如果?,?都是實值函數, c 1 c_1 c1, c 2 c_2 c2為常數,則:
(3)乘法法則,如果?,?都是實值函數(注意,這點必須滿足),則:
(4)除法法則,如果?,?都是實值函數,且?(?)≠0,則:
四、微分法求導
微分法特别适用于矩陣?經加減乘法、逆、行列式、逐元素函數等運算構成的标量函數?的求導。其基本步驟為:
(1)使用相應的運算法則對?求微分;
(2)微分等式兩邊取迹tr,并對等式右邊項進行變換,使??位于迹内最右側
(3)對??左側項取轉置,即為所求導數
4.1 矩陣迹的基本屬性
1) ∑ i ∑ j A i j B i j = t r ( A T B ) \sum\limits_i\sum\limits_j\boldsymbol A_{ij}\boldsymbol B_{ij}=tr(\boldsymbol {A^TB}) i∑j∑AijBij=tr(ATB)
2)标量的迹等于其子集 t r ( x ) = x tr(x)=x tr(x)=x
3)矩陣轉置迹不變 t r ( A ) = t r ( A T ) tr(\boldsymbol A)=tr(\boldsymbol A^T) tr(A)=tr(AT)
4)轉置同維矩陣 ( A , B T ) (\boldsymbol A,\boldsymbol B^T) (A,BT)的交換率: t r ( A B ) = t r ( B A ) tr(\boldsymbol A\boldsymbol B)=tr(\boldsymbol B\boldsymbol A) tr(AB)=tr(BA)
5)同維矩陣的加減法: t r ( A ± B ) = t r ( A ) ± t r ( B ) tr(\boldsymbol A\pm\boldsymbol B)=tr(\boldsymbol A)\pm tr(\boldsymbol B) tr(A±B)=tr(A)±tr(B)
6)同維三個矩陣的乘法和迹交換: t r ( ( A ⊙ B ) T C ) tr((\boldsymbol A\odot\boldsymbol B)^T\boldsymbol C) tr((A⊙B)TC)= t r ( A T ( B ⊙ C ) ) tr(\boldsymbol A^T(\boldsymbol B\odot\boldsymbol C)) tr(AT(B⊙C))
式中 ⊙ \odot ⊙為哈達馬乘積,即逐元素乘積。
7)迹函數求導: ∂ t r ( A B ) ∂ A = B T \frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol A}=\boldsymbol B^T ∂A∂tr(AB)=BT, ∂ t r ( A B ) ∂ B = A T \frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol B}=\boldsymbol A^T ∂B∂tr(AB)=AT
可由 d ( t r ( A B ) ) = t r ( d A B ) = t r ( A d B ) + t r ( B d A ) d(tr(\boldsymbol{AB}))=tr(d\boldsymbol{AB})=tr(\boldsymbol Ad\boldsymbol B)+tr(\boldsymbol Bd\boldsymbol A) d(tr(AB))=tr(dAB)=tr(AdB)+tr(BdA)推導得到
4.2 向量矩陣微分的寫法
向量微分:
矩陣微分:
可見,标量函數對向量或矩陣的求導可轉換為:微分取迹後迹内自變量前系數項的轉置
4.3 矩陣微分的性質
微分加減法: d ( X ± Y ) = d X ± d Y d(\boldsymbol X\pm\boldsymbol Y)=d\boldsymbol X\pm d\boldsymbol Y d(X±Y)=dX±dY
微分乘法: d ( X Y ) = X d Y + Y d X d(\boldsymbol{XY})=\boldsymbol Xd\boldsymbol Y+\boldsymbol Yd\boldsymbol X d(XY)=XdY+YdX
微分轉置: d ( X T ) = ( d X ) T d(\boldsymbol X^T)=(d\boldsymbol X)^T d(XT)=(dX)T
微分的迹: d ( t r X ) = t r ( d X ) d(tr\boldsymbol X)=tr(d\boldsymbol X) d(trX)=tr(dX)
微分哈達馬乘積: d ( X ⊙ Y ) = X ⊙ d Y + Y ⊙ d X d(\boldsymbol X\odot\boldsymbol Y)=\boldsymbol X\odot d\boldsymbol Y+\boldsymbol Y \odot d\boldsymbol X d(X⊙Y)=X⊙dY+Y⊙dX
逐元素求導: d σ ( X ) = σ ′ ( X ) d X d\sigma(\boldsymbol X)=\sigma'(\boldsymbol X)d\boldsymbol X dσ(X)=σ′(X)dX
逆矩陣微分: d X − 1 = − X − 1 d X X − 1 d\boldsymbol X^{-1}=-\boldsymbol X^{-1}\boldsymbol dX\boldsymbol X^{-1} dX−1=−X−1dXX−1
行列式微分: d ∣ X ∣ = ∣ X ∣ t r ( X − 1 d X ) d|\boldsymbol X|=|\boldsymbol X|tr(\boldsymbol X^{-1}d\boldsymbol X) d∣X∣=∣X∣tr(X−1dX)
五、鍊式求導法則
鍊式求導法則可用于向量對向量、标量對向量的求導等場景
5.1 向量對向量求導的鍊式法則
對于向量間關系,?→?→?,其鍊式求導表達式可以表示為:
∂?/∂?=∂?/∂?*∂?/∂?
5.2 标量對多個向量恩鍊式法則
對于向量到标量的關系, y 1 \boldsymbol y_1 y1→ y 2 \boldsymbol y_2 y2→…→ y n \boldsymbol y_n yn→?,則其鍊式求導表達式可以表示為:
5.3 标量對多個矩陣的鍊式求導法則
對于矩陣到标量的關系,X→Y→…z,其鍊式求導表達式可以表示為:
∂ z ∂ X i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ X i j = t r ( ( ∂ z ∂ Y ) T ∂ Y ∂ X i j ) \frac{\partial z}{\partial \boldsymbol X_{ij}}=\sum\limits_{k,l}\frac{\partial z}{\partial \boldsymbol Y_{kl}}\frac{\partial \boldsymbol Y_{kl}}{\partial \boldsymbol X_{ij}}=tr((\frac{\partial z}{\partial \boldsymbol Y})^T\frac{\partial \boldsymbol Y}{\partial \boldsymbol X_{ij}}) ∂Xij∂z=k,l∑∂Ykl∂z∂Xij∂Ykl=tr((∂Y∂z)T∂Xij∂Y)
若矩陣間為線性關系,則改鍊式求導表達式可進一步表示。
參考資料
劉建平 向量矩陣求導 系列文章