矩陣求導的理解(重要!)
《矩陣求導術》重點筆記
首先是標量對矩陣的求導
一元微積分(標量對標量)中的導數與微分的關係:
多元微積分(標量對向量)中的梯度與微分的關係:
(第一個等號是全微分公式,第二個等號表達了梯度與微分的聯繫:全微分 是梯度向量 (nx1)與微分向量 (nx1)的內積)
矩陣導數與微分建立聯繫:
其中tr代表跡(trace)是方陣對角線元素之和,滿足性質:
對尺寸相同的矩陣A,B, ,即 是矩陣A,B的內積。
這裡表示,全微分 是導數 (m×n)與微分矩陣 (m×n)的內積。
矩陣微分的運演算法則:
1.加減法:
矩陣乘法:
轉置:
跡:
2.逆:
3.行列式: , 表示X的伴隨矩陣
如果X可逆,上式可寫成
4.逐元素乘法: , 代表尺寸相同的矩陣逐元素相乘
5.逐元素函數: 是逐元素標量函數運算, 是逐元素求導數。
一些跡技巧:
1.標量套上跡:
2.轉置:
3.線性:
4.矩陣乘法交換: ,其中 與 尺寸相同,兩側都等於
5.矩陣乘法/逐元素乘法交換: ,其中A,B,C尺寸相同,兩側都等於
觀察一下可以斷言,若標量函數f是矩陣X經加減乘法、逆、行列式、逐元素函數等運算構成,則使用相應的運演算法則對f求微分,再使用跡技巧給df套上跡並將其它項交換至dX左側,即能得到導數。
關於複合:
假設已求得 ,而Y是X的函數,如何求 呢?在微積分中有標量求導的鏈式法則 ,但這裡我們不能沿用鏈式法則,因為矩陣對矩陣的導數 截止目前仍是未定義的。我們直接從微分入手建立複合法則:先寫出 ,再將dY用dX表示出來代入,並使用跡技巧將其他項交換至dX左側,即可得到 。
來看幾個例子:
例1:,求。其中是列向量,是矩陣,是列向量,是標量。
解:先使用矩陣乘法法則求微分,這裡的是常量,,得到:,再套上跡並做矩陣乘法交換:,注意這裡我們根據交換了與。對照導數與微分的聯繫,得到。
注意:這裡不能用,導數與乘常數矩陣的交換是不合法則的運算(而微分是合法的)。有些資料在計算矩陣導數時,會略過求微分這一步,這是邏輯上解釋不通的。
例2:,求。其中是列向量,是矩陣,是列向量,exp表示逐元素求指數,是標量。
解:先使用矩陣乘法、逐元素函數法則求微分:,再套上跡並做,注意這裡我們先根據交換了、與,再根據交換了與。對照導數與微分的聯繫,得到。
例3:,求。其中是列向量,是矩陣,是矩陣,是對稱矩陣,是逐元素函數,是標量。
解:先求,求微分,使用矩陣乘法、轉置法則:,對照導數與微分的聯繫,得到。為求,寫出,再將dY用dX表示出來代入,並使用矩陣乘法/逐元素乘法交換:,對照導數與微分的聯繫,得到。
例4【線性回歸】:, 求的最小二乘估計,即求的零點。其中是列向量,是矩陣,是列向量,是標量。
解:嚴格來說這是標量對向量的導數,不過可以把向量看做矩陣的特例。先將向量模平方改寫成向量與自身的內積:,求微分,使用矩陣乘法、轉置等法則:。對照導數與微分的聯繫,得到。的零點即的最小二乘估計為。
例5【方差的最大似然估計】:樣本,求方差的最大似然估計。寫成數學式是:,求的零點。其中是列向量,是樣本均值,是對稱正定矩陣,是標量。
解:首先求微分,使用矩陣乘法、行列式、逆等運演算法則,第一項是,第二項是。再給第二項套上跡做交換:,其中先交換跡與求和,然後將 交換到左邊,最後再交換跡與求和,並定義為樣本方差矩陣。得到。對照導數與微分的聯繫,有,其零點即的最大似然估計為。
例6【多元logistic回歸】:,求。其中是除一個元素為1外其它元素為0的列向量,是矩陣,是列向量,是標量;,其中表示逐元素求指數,代表全1向量。
解:首先將softmax函數代入並寫成,這裡要注意逐元素log滿足等式,以及滿足。求微分,使用矩陣乘法、逐元素函數等法則:。再套上跡並做交換,注意可化簡,這是根據等式,故。對照導數與微分的聯繫,得到。
另解:定義,則,先如上求出,再利用複合法則:,得到。
然後是矩陣對矩陣的求導
先定義向量 (p×1)對向量 (m×1)的導數:
有 ;
再定義矩陣的(按列優化)向量化
(mn×1),並定義矩陣F對矩陣X的導數 (mn×pq)。導數與微分有聯繫:
向量化的技巧:
1.線性:
2.矩陣乘法: ,其中 代表Kronecker積,A(m×n)與B(p×q)的Kronecker積是(mp×nq)。
3.轉置:,A是m×n矩陣,其中(mn×mn)是交換矩陣(commutation matrix)。
4.逐元素乘法:,其中(mn×mn)是用A的元素(按列優先)排成的對角陣。
觀察一下可以斷言,若矩陣函數F是矩陣X經加減乘法、逆、行列式、逐元素函數等運算構成,則使用相應的運演算法則對F求微分,再做向量化並使用技巧將其它項交換至vec(dX)左側,即能得到導數。
再談一談複合:假設已求得,而Y是X的函數,如何求呢?從導數與微分的聯繫入手,,可以推出鏈式法則。
有一些Kronecker積和交換矩陣相關的恆等式,可用來做等價變形:
- 。
- 。
- 。可以對求導來證明,一方面,直接求導得到;另一方面,引入,有,用鏈式法則得到。
- 。
- ,A是m×n矩陣,B是p×q矩陣。可以對做向量化來證明,一方面,;另一方面,。
例子:
例1:,X是m×n矩陣,求。
解:先求微分:,再做向量化,使用矩陣乘法的技巧,注意在dX右側添加單位陣:,對照導數與微分的聯繫得到。
特例:如果X退化為向量,即,則根據向量的導數與微分的關係,得到。
例2:,X是n×n矩陣,求和。
解:使用上篇中的技術可求得。為求,先求微分:,再做向量化,使用轉置和矩陣乘法的技巧,對照導數與微分的聯繫,得到,注意它是對稱矩陣。在是對稱矩陣時,可簡化為。
例3:,A是l×m矩陣,X是m×n矩陣,B是n×p矩陣,exp為逐元素函數,求。
解:先求微分:,再做向量化,使用矩陣乘法的技巧:,再用逐元素乘法的技巧:,再用矩陣乘法的技巧:,對照導數與微分的聯繫得到。
例4【一元logistic回歸】:,求和。其中是取值0或1的標量,是列向量。
解:使用上篇中的技術可求得,其中 為sigmoid函數。為求,先求微分:,其中為sigmoid函數的導數,對照導數與微分的聯繫,得到。
推廣:樣本,,求和。有兩種方法,方法一:先對每個樣本求導,然後相加;方法二:定義矩陣,向量,將寫成矩陣形式,進而可以求得,。
例5【多元logistic回歸】:,求和。其中其中是除一個元素為1外其它元素為0的列向量,是矩陣,是列向量,是標量。
解:上篇中已求得。為求,先求微分:定義,,這裡需要化簡去掉逐元素乘法,第一項中,第二項中,故有,其中,代入有,做向量化並使用矩陣乘法的技巧,得到。
最後做個總結。我們發展了從整體出發的矩陣求導的技術,導數與微分的聯繫是計算的樞紐,標量對矩陣的導數與微分的聯繫是,先對f求微分,再使用跡技巧可求得導數,特別地,標量對向量的導數與微分的聯繫是;矩陣對矩陣的導數與微分的聯繫是,先對F求微分,再使用向量化的技巧可求得導數,特別地,向量對向量的導數與微分的聯繫是。
參考資料:
Matrix calculus - Wikipedia
通過一個例子快速上手矩陣求導 - NoGeek - CSDN博客
矩陣求導術(上)
矩陣求導術(下)
推薦閱讀:
TAG:理解 |