矩陣/向量/標量間相互求導


矩陣、向量都可以表示成張量的形式,向量是矩陣的特殊形式,按實際應用可分為標量對向量求導,標量對矩陣求導、向量對向量求導、矩陣對標量求導、矩陣對向量求導、矩陣對矩陣求導等,在深度學習的反向傳播(BP)中所涉及求導不外乎以上幾種形式,本篇結合實例分別介紹以上各種求導過程。

一、含標量的求導方式

    標量指的是一個實數,可看成一維向量,含標量的求導方式情形分類兩類,一類是矩陣、向量對標量求導,另一類是標量對向量、矩陣求導。

1.1、矩陣、向量對標量求導

    這種情形下矩陣為函數矩陣,向量為函數向量,與數值型矩陣、向量不同,函數矩陣、函數向量中元素都是函數,例如有n行m列函數矩陣A,其中元素aij.png為一元變量x的函數,矩陣對標量x求導形式為:

AX.png

顯然AX2.png形狀與矩陣A一樣,也是一個n行m列矩陣,再如y是一個n維列向量y=(y1,y2,y3,...yn)T,y對標量x求導形式為:

yx.png

以上兩個例子可以看出,矩陣、向量對標量求導的結果是與原矩陣、向量形狀一樣的矩陣或向量,矩陣對標量求導的典型應用是求解線性微分方程。

1.2、標量對矩陣、向量求導:方陣跡的使用

    由於向量是特殊的矩陣,這種類型也可以統稱為標量對矩陣求導,標量對矩陣求導在人工智能算法中很常見,在深度學習框架中,如pytorch、tensorflow要求損失函數的結果必須是一個實數,即標量,在反向傳播時,第一層誤差就是標量對向量或矩陣求導,然后再通過鏈式求導法則將第一層誤差傳播到其他層級神級元。如有多元函數y=f(x11,x12,...xnm),自變量xij是n行m列的函數矩陣x,則標量y對矩陣x求導為:

yyx.png

自變量x為向量時,求導過程與標量對矩陣一樣,如有多元函數y=f(x1,x2,...xn),自變量x為n維列向量即x=(x1,x2,...xn)T,標量y對x的求導結果為:

y.png

標量對矩陣或向量求導,其結果是與自變量形狀一樣的矩陣或向量,該性質與剛才介紹的'矩陣、向量對標量求導'一樣,單純的標量對矩陣或向量求導很簡單,實際應用中往往會有下面形式的標量對矩陣求導:

y=XTAX

其中y∈R,為標量,X為n維列向量,A為Rn*n方陣,如果套用定義求導上式就會復雜,針對標量對矩陣或向量求導,最好的解決方案是'跡'的使用,方陣A的跡用tr(A)表示,其數學意義為方陣A的對角線元素之和,對於兩個形狀一樣的矩陣A和B,A、B∈Rn*m,他們內積可表示為<A,B>,<A,B>等於將兩個矩陣位置相同的元素相乘之后再整體求和,公式如下:

矩陣內積.png            (1)

矩陣內積是一個實數,可以證明<A,B>=tr(ATB),即矩陣內積等於其中一個矩陣轉置后與另一個矩陣相乘,新的矩陣是一個方陣C∈Rm*m,方陣C的跡等於A、B兩個矩陣的內積,這里不提供證明過程,感興趣的讀者可以試一下,方陣C的對角線上的元素恰好是A、B兩個矩陣相同位置元素相乘的結果,這與矩陣內積定義的運算結果一致,公式(1)可寫成下面的等式:

內積即.png    (2)

顯然一個標量的跡等於標量本身a=tr(a),其他常用跡的性質有:

跡的性質.png

注意tr(AB)=tr(BA)並不是說跡有交換性,這稱為跡的循環置換性,多個矩陣相乘時可想象為一個循環隊列,最前面的被擠入隊列尾部,其他的順次向前移動,例如有:tr(ABC)=tr(BCA)=tr(CAB),但是tr(ABC)≠tr(BAC)。

由數學分析知識知,對於一個多元函數y=f(x1,x2,...,xn),其微分形式為:

微分形式.png     (3)

從之前分析可知,標量對矩陣、向量求導與原矩陣、向量形狀是一樣的,(3)式實質為求fx.pngdx.png兩個矩陣的內積,注意x都加粗,表示x是矩陣或向量,結合矩陣內積公式(2):內積即.png,式(3)可寫成:

吉祥.png   (4)

在求標量對矩陣求導時,如果能最終處理成(4)的形式就可以得到fx.png具體形式,也就得到了標量對矩陣、向量的求導結果,矩陣的微分運算有以下性質:

WEIFRN.png

上面的公式中X、Y為矩陣,○符號代表兩個矩陣逐元素相乘。再來看問題y=XTAX,求yx2.png過程如下:

XAX.png

得到yx2.png結果為:

R1.png

對於標量的表達式是多個矩陣的加、減、乘、除的復合類型時,使用跡可以很快捷的求出導數,強調一點是,使用跡來求導必須是標量對矩陣、向量求導的情形。

二、向量對向量求導

    這種情形在深度學習的反向傳播中也很常見,幾乎所有的神經網絡反向傳播中都有向量對向量求導,向量分為行向量與列向量,通過引入分子布局和分母布局抵消這向量求導時的形式上的差異性,將表達式yx2.png分子.png視為分子,分母.png視為分母,假設y是m維向量,x是n維向量,那么y中每個元素都是x各個元素的函數,例如有:

yi.png

所以無論采用哪種布局,求導結果中必須有形式1.png這些結果才有意義,分子布局會在列方向上先展開y向量:

分子求導.png

然后再在行方向上展開x:

分子布局1.png

分子布局求導結果是一個m*n的矩陣,本質是雅克比矩陣(jaccobi矩陣)。當求導采用分母布局時,在列方向上首先展開x,然后在行方向上展開y:

余下文章鏈接:

矩陣向量求導


免責聲明!

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



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