矩阵求导术(上、下)
點擊上方“Datawhale”,選擇“星標”公眾號
第一時間獲取價值內容
矩陣求導的技術,在統計學、控制論、機器學習等領域有廣泛的應用。鑒于我看過的一些資料或言之不詳、或繁亂無緒,本文來做個科普,分作兩篇,上篇講標量對矩陣的求導術,下篇講矩陣對矩陣的求導術。本文使用小寫字母x表示標量,粗體小寫字母?表示向量,大寫字母X表示矩陣。
首先來琢磨一下定義,標量f對矩陣X的導數,定義為,即f對X逐元素求導排成與X尺寸相同的矩陣。然而,這個定義在計算中并不好用,實用上的原因是在對較復雜的函數難以逐元素求導;哲理上的原因是逐元素求導破壞了整體性。試想,為何要將f看做矩陣X而不是各元素的函數呢?答案是用矩陣運算更整潔。所以在求導時不宜拆開矩陣,而是要找一個從整體出發的算法。
為此,我們來回顧,一元微積分中的導數(標量對標量的導數)與微分有聯系:;多元微積分中的梯度(標量對向量的導數)也與微分有聯系:?,這里第一個等號是全微分公式,第二個等號表達了梯度與微分的聯系;受此啟發,我們將矩陣導數與微分建立聯系:?,這里tr代表跡(trace)是方陣對角線元素之和,滿足性質:對尺寸相同的矩陣A,B,,即是矩陣A,B的內積,因此上式與原定義相容。
然后來建立運算法則。回想遇到較復雜的一元函數如,我們是如何求導的呢?通常不是從定義開始求極限,而是先建立了初等函數求導和四則運算、復合等法則,再來運用這些法則。故而,我們來創立常用的矩陣微分的運算法則:
加減法:;矩陣乘法:?;轉置:;跡:。
逆:。此式可在兩側求微分來證明。
行列式:?,其中表示X的伴隨矩陣,在X可逆時又可以寫作。此式可用Laplace展開來證明,詳見張賢達《矩陣分析與應用》第279頁。
逐元素乘法:,表示尺寸相同的矩陣X,Y逐元素相乘。
逐元素函數:?,是逐元素運算的標量函數。
我們試圖利用矩陣導數與微分的聯系?,在求出左側的微分df后,該如何寫成右側的形式并得到導數呢?這需要一些跡技巧(trace trick):
標量套上跡:
轉置:。
線性:。
矩陣乘法交換:。兩側都等于。
矩陣乘法/逐元素乘法交換:。兩側都等于。
觀察一下可以斷言,若標量函數f是矩陣X經加減乘法、行列式、逆、逐元素函數等運算構成,則使用相應的運算法則對f求微分,再使用跡技巧給df套上跡并將其它項交換至dX左側,即能得到導數。
在建立法則的最后,來談一談復合:假設已求得,而Y是X的函數,如何求呢?在微積分中有標量求導的鏈式法則,但這里我們不能隨意沿用標量的鏈式法則,因為矩陣對矩陣的導數截至目前仍是未定義的。于是我們繼續追本溯源,鏈式法則是從何而來?源頭仍然是微分。我們直接從微分入手建立復合法則:先寫出,再將dY用dX表示出來代入,并使用跡技巧將其他項交換至dX左側,即可得到。
接下來演示一些算例。特別提醒要依據已經建立的運算法則來計算,不能隨意套用微積分中標量導數的結論,比如認為AX對X的導數為A,這是沒有根據、意義不明的。
例1:,求。
解:先使用矩陣乘法法則求微分:?,再套上跡并做交換:,對照導數與微分的聯系,得到。
注意:這里不能用,導數與乘常數矩陣的交換是不合法則的運算(而微分是合法的)。有些資料在計算矩陣導數時,會略過求微分這一步,這是邏輯上解釋不通的。
例2【線性回歸】:,求。
解:嚴格來說這是標量對向量的導數,不過可以把向量看做矩陣的特例。將向量范數寫成,求微分,使用矩陣乘法、轉置等法則:。對照導數與微分的聯系,得到。
例3【多元logistic回歸】:,求。其中是除一個元素為1外其它元素為0的向量;,其中表示逐元素求指數,代表全1向量。
解1:首先將softmax函數代入并寫成,這里要注意逐元素log滿足等式,以及滿足。求微分,使用矩陣乘法、逐元素函數等法則:。再套上跡并做交換,注意可化簡,這是根據等式,故。對照導數與微分的聯系,得到。
解2:定義,則?,先如上求出?,再利用復合法則:,得到。
例4【方差的最大似然估計】:樣本,其中是對稱正定矩陣,求方差的最大似然估計。寫成數學式是:,求的零點。
解:首先求微分,使用矩陣乘法、行列式、逆等運算法則,第一項是,第二項是。再給第二項套上跡做交換:,其中定義為樣本方差。對照導數與微分的聯系,有,其零點即的最大似然估計為。
最后一例留給經典的神經網絡。神經網絡的求導術是學術史上的重要成果,還有個專門的名字叫做BP算法,我相信如今很多人在初次推導BP算法時也會頗費一番腦筋,事實上使用矩陣求導術來推導并不復雜。為簡化起見,我們推導二層神經網絡的BP算法。
例5【二層神經網絡】:,求和。其中是除一個元素為1外其它元素為0的向量,同例3,是逐元素sigmoid函數。
解:定義,,,則。在例3中已求出?。使用復合法則,注意此處,?都是變量:,使用矩陣乘法交換的跡技巧從第一項得到,從第二項得到。接下來求,繼續使用復合法則,并利用矩陣乘法和逐元素乘法交換的跡技巧:,得到。為求,再用一次復合法則:,得到。
使用小寫字母x表示標量,粗體小寫字母?表示列向量,大寫字母X表示矩陣。矩陣對矩陣的求導采用了向量化的思路,常應用于二階方法求解優化問題。
首先來琢磨一下定義。矩陣對矩陣的導數,需要什么樣的定義?第一,矩陣對矩陣的導數應包含所有mnpq個偏導數,從而不損失信息;第二,導數與微分有簡明的聯系,因為在計算導數和應用中需要這個聯系;第三,導數有簡明的從整體出發的算法。我們先定義向量對向量的導數?;再定義矩陣的(按列優先)向量化,并定義矩陣F對矩陣X的導數。導數與微分有聯系。幾點說明如下:
按此定義,標量對矩陣的導數是向量,與上篇的定義不兼容,不過二者容易相互轉換。為避免混淆,用記號表示上篇定義的矩陣,則有。雖然本篇的技術可以用于標量對矩陣求導這種特殊情況,但使用上篇中的技術更方便。讀者可以通過上篇中的算例試驗兩種方法的等價轉換。
標量對矩陣的二階導數,又稱Hessian矩陣,定義為,是對稱矩陣。對向量或矩陣求導都可以得到Hessian矩陣,但從矩陣?f出發更方便。
,求導時矩陣被向量化,弊端是這在一定程度破壞了矩陣的結構,會導致結果變得形式復雜;好處是多元微積分中關于梯度、Hessian矩陣的結論可以沿用過來,只需將矩陣向量化。例如優化問題中,牛頓法的更新,滿足。
在資料中,矩陣對矩陣的導數還有其它定義,比如,它能兼容上篇中的標量對矩陣導數的定義,但微分與導數的聯系(dF等于中每個子塊分別與dX做內積)不夠簡明,不便于計算和應用。
然后來建立運算法則。仍然要利用導數與微分的聯系,求微分的方法與上篇相同,而從微分得到導數需要一些向量化的技巧:
線性:。
矩陣乘法:,其中表示Kronecker積,與的Kronecker積是。此式證明見張賢達《矩陣分析與應用》第107-108頁。
轉置:,A是矩陣,其中是交換矩陣(commutation matrix)。
逐元素乘法:,其中是用A的元素(按列優先)排成的對角陣。
觀察一下可以斷言,若矩陣函數F是矩陣X經加減乘法、行列式、逆、逐元素函數等運算構成,則使用相應的運算法則對F求微分,再做向量化并使用技巧將其它項交換至左側,即能得到導數。
再談一談復合:假設已求得,而Y是X的函數,如何求呢?從導數與微分的聯系入手,?,可以推出鏈式法則。
和標量對矩陣的導數相比,矩陣對矩陣的導數形式更加復雜,從不同角度出發常會得到形式不同的結果。有一些Kronecker積和交換矩陣相關的恒等式,可用來做等價變形:
。
。
。可以對求導來證明,一方面,直接求導得到;另一方面,引入,有,?,用鏈式法則得到。
。
,A是m×n矩陣,B是p×q矩陣。可以對做向量化來證明,一方面,;另一方面,。
接下來演示一些算例。
例1:,是矩陣,求。
解:先求微分:,再做向量化,使用矩陣乘法的技巧,注意在dX右側添加單位陣:,對照導數與微分的聯系得到。
特例:如果退化為向量,??,則根據向量的導數與微分的關系?,得到??。
例2:?,是矩陣,求和。
解:使用上篇中的技術可求得?。為求,先求微分:,再做向量化,使用轉置和矩陣乘法的技巧,對照導數與微分的聯系,得到,注意它是對稱矩陣。在X是對稱矩陣時,可簡化為。
例3:,是,是,是矩陣,為逐元素函數,求。
解:先求微分:,再做向量化,使用矩陣乘法的技巧:,再用逐元素乘法的技巧:,再用矩陣乘法的技巧:,對照導數與微分的聯系得到。
例4【一元logistic回歸】:
。其中是取值0或1的標量,,是向量。
解:使用上篇中的技術可求得,其中為sigmoid函數。為求,先求微分:?,其中為sigmoid函數的導數,對照導數與微分的聯系,得到。
推廣:樣本,?,?,,求和。有兩種方法,方法一:先對每個樣本求導,然后相加;方法二:定義矩陣,向量,將l寫成矩陣形式,進而可以求得。
例5【多元logistic回歸】:,求和?。
解:上篇例3中已求得。為求,先求微分:定義,,這里需要化簡去掉逐元素乘法,第一項中?,第二項中,故有,其中?,代入有,做向量化并使用矩陣乘法的技巧,得到。
最后做個總結。我們發展了從整體出發的矩陣求導的技術,導數與微分的聯系是計算的樞紐,標量對矩陣的導數與微分的聯系是,先對f求微分,再使用跡技巧可求得導數,特別地,標量對向量的導數與微分的聯系是;矩陣對矩陣的導數與微分的聯系是,先對F求微分,再使用向量化的技巧可求得導數,特別地,向量對向量的導數與微分的聯系是。
參考資料:
張賢達. 矩陣分析與應用. 清華大學出版社有限公司, 2004.
Fackler, Paul L. "Notes on matrix calculus." North Carolina State University(2005).
Petersen, Kaare Brandt, and Michael Syskind Pedersen. "The matrix cookbook." Technical University of Denmark 7 (2008): 15.
HU, Pili. "Matrix Calculus: Derivation and Simple Application." (2012).
總結
以上是生活随笔為你收集整理的矩阵求导术(上、下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科研神器推荐之那些年你用过的工具
- 下一篇: 如何写好一篇高质量的IEEE/ACM T