矩陣求導(二)


本文承接上篇 ,來講矩陣對矩陣的求導術。使用小寫字母x表示標量,粗體小寫字母[公式]表示列向量,大寫字母X表示矩陣。矩陣對矩陣的求導采用了向量化的思路,常應用於二階方法求解優化問題。

首先來琢磨一下定義。矩陣對矩陣的導數,需要什么樣的定義?第一,矩陣F(p×q)對矩陣X(m×n)的導數應包含所有mnpq個偏導數[公式],從而不損失信息;第二,導數與微分有簡明的聯系,因為在計算導數和應用中需要這個聯系;第三,導數有簡明的從整體出發的算法。我們先定義向量[公式](p×1)對向量[公式](m×1)的導數[公式](m×p),有[公式];再定義矩陣的(按列優先)向量化[公式](mn×1),並定義矩陣F對矩陣X的導數[公式](mn×pq)。導數與微分有聯系[公式]。幾點說明如下:

  1. 按此定義,標量f對矩陣X(m×n)的導數[公式]是mn×1向量,與上篇的定義不兼容,不過二者容易相互轉換。為避免混淆,用記號[公式]表示上篇定義的m×n矩陣,則有[公式]。雖然本篇的技術可以用於標量對矩陣求導這種特殊情況,但使用上篇中的技術更方便。讀者可以通過上篇中的算例試驗兩種方法的等價轉換。
  2. 標量對矩陣的二階導數,又稱Hessian矩陣,定義為[公式](mn×mn),是對稱矩陣。對向量[公式]或矩陣[公式]求導都可以得到Hessian矩陣,但從矩陣[公式]出發更方便。
  3. [公式],求導時矩陣被向量化,弊端是這在一定程度破壞了矩陣的結構,會導致結果變得形式復雜;好處是多元微積分中關於梯度、Hessian矩陣的結論可以沿用過來,只需將矩陣向量化。例如優化問題中,牛頓法的更新[公式],滿足[公式]
  4. 在資料中,矩陣對矩陣的導數還有其它定義,比如[公式](mp×nq),或是[公式](mp×nq),它能兼容上篇中的標量對矩陣導數的定義,但微分與導數的聯系(dF等於[公式]中逐個m×n子塊分別與dX做內積)不夠簡明,不便於計算和應用。文獻[5]綜述了以上定義,並批判它們是壞的定義,能配合微分運算的才是好的定義。

 

然后來建立運算法則。仍然要利用導數與微分的聯系[公式],求微分的方法與上篇相同,而從微分得到導數需要一些向量化的技巧:

  1. 線性:[公式]
  2. 矩陣乘法:[公式],其中[公式]表示Kronecker積,A(m×n)與B(p×q)的Kronecker積是[公式](mp×nq)。此式證明見張賢達《矩陣分析與應用》第107-108頁。
  3. 轉置:[公式],A是m×n矩陣,其中[公式](mn×mn)是交換矩陣(commutation matrix),將按列優先的向量化變為按行優先的向量化。例如[公式]
  4. 逐元素乘法:[公式],其中[公式](mn×mn)是用A的元素(按列優先)排成的對角陣。

 

觀察一下可以斷言,若矩陣函數F是矩陣X經加減乘法、逆、行列式、逐元素函數等運算構成,則使用相應的運算法則對F求微分,再做向量化並使用技巧將其它項交換至vec(dX)左側,對照導數與微分的聯系[公式],即能得到導數。

特別地,若矩陣退化為向量,對照導數與微分的聯系[公式],即能得到導數。

 

再談一談復合:假設已求得[公式],而Y是X的函數,如何求[公式]呢?從導數與微分的聯系入手,[公式],可以推出鏈式法則[公式]

和標量對矩陣的導數相比,矩陣對矩陣的導數形式更加復雜,從不同角度出發常會得到形式不同的結果。有一些Kronecker積和交換矩陣相關的恆等式,可用來做等價變形:

  1. [公式]
  2. [公式]
  3. [公式]。可以對[公式]求導來證明,一方面,直接求導得到[公式];另一方面,引入[公式],有[公式],用鏈式法則得到[公式]
  4. [公式]
  5. [公式],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求微分,再使用向量化的技巧可求得導數,特別地,向量對向量的導數與微分的聯系是[公式]

 

 

參考資料:

  1. 張賢達. 矩陣分析與應用. 清華大學出版社有限公司, 2004.
  2. Fackler, Paul L. "Notes on matrix calculus." North Carolina State University(2005).
  3. Petersen, Kaare Brandt, and Michael Syskind Pedersen. "The matrix cookbook." Technical University of Denmark 7 (2008): 15.
  4. HU, Pili. "Matrix Calculus: Derivation and Simple Application." (2012).
  5. Magnus, Jan R., and Heinz Neudecker. "Matrix Differential Calculus with Applications in Statistics and Econometrics." Wiley, 2019.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM