機器學習中的矩陣向量求導(一) 求導定義與求導佈局

    在之前寫的上百篇機器學習博客中,不時會使用矩陣向量求導的方法來簡化公式推演,但是並沒有系統性的進行過講解,因此讓很多朋友迷惑矩陣向量求導的具體過程爲什麼會是這樣的。這裏準備用幾篇博文來討論下機器學習中的矩陣向量求導,今天是第一篇。

    本系列主要參考文獻爲維基百科的Matrix Caculas和張賢達的《矩陣分析與應用》。

1. 矩陣向量求導引入

    在高等數學裏面,我們已經學過了標量對標量的求導,比如標量$y$對標量$x$的求導,可以表示爲$\frac{\partial y}{\partial x}$。

    有些時候,我們會有一組標量$y_i,i=1,2,...,m$來對一個標量$x$的求導,那麼我們會得到一組標量求導的結果:$$\frac{\partial y_i}{\partial x}, i=1,2.,,,m$$

    如果我們把這組標量寫成向量的形式,即得到維度爲m的一個向量$\mathbf{y}$對一個標量$x$的求導,那麼結果也是一個m維的向量:$\frac{\partial \mathbf{y}}{\partial x}$

    可見,所謂向量對標量的求導,其實就是向量裏的每個分量分別對標量求導,最後把求導的結果排列在一起,按一個向量表示而已。類似的結論也存在於標量對向量的求導,向量對向量的求導,向量對矩陣的求導,矩陣對向量的求導,以及矩陣對矩陣的求導等。

    總而言之,所謂的向量矩陣求導本質上就是多元函數求導,僅僅是把把函數的自變量,因變量以及標量求導的結果排列成了向量矩陣的形式,方便表達與計算,更加簡潔而已。

    爲了便於描述,後面如果沒有指明,則求導的自變量用$x$表示標量,$\mathbf{x}$表示n維向量,$\mathbf{X}$表示$p \times q$維度的矩陣,求導的因變量用$y$表示標量,$\mathbf{y}$表示m維向量,$\mathbf{Y}$表示$m \times n$維度的矩陣。

2. 矩陣向量求導定義

    根據求導的自變量和因變量是標量,向量還是矩陣,我們有9種可能的矩陣求導定義,如下:

自變量\因變量 標量$y$ 向量$\mathbf{y}$ 矩陣$\mathbf{Y}$
標量$x$ $\frac{\partial y}{\partial x}$ $\frac{\partial  \mathbf{y}}{\partial x}$ $\frac{\partial  \mathbf{Y}}{\partial x}$
向量$\mathbf{x}$ $\frac{\partial y}{\partial \mathbf{x}}$ $\frac{\partial  \mathbf{y}}{\partial \mathbf{x}}$ $\frac{\partial  \mathbf{Y}}{\partial \mathbf{x}}$
矩陣$\mathbf{X}$ $\frac{\partial y}{\partial \mathbf{X}}$ $\frac{\partial  \mathbf{y}}{\partial \mathbf{X}}$ $\frac{\partial  \mathbf{Y}}{\partial \mathbf{X}}$

 

    這9種裏面,標量對標量的求導高數裏面就有,不需要我們單獨討論,在剩下的8種情況裏面,我們先討論上圖中標量對向量或矩陣求導,向量或矩陣對標量求導,以及向量對向量求導這5種情況。另外三種向量對矩陣的求導,矩陣對向量的求導,以及矩陣對矩陣的求導我們在後面再講。

    現在我們回看第一節講到的例子,維度爲m的一個向量$\mathbf{y}$對一個標量$x$的求導,那麼結果也是一個m維的向量:$\frac{\partial \mathbf{y}}{\partial x}$。這是我們表格裏面向量對標量求導的情況。這裏有一個問題沒有講到,就是這個m維的求導結果排列成的m維向量到底應該是列向量還是行向量?

    這個問題的答案是:行向量或者列向量皆可!畢竟我們求導的本質只是把標量求導的結果排列起來,至於是按行排列還是按列排列都是可以的。但是這樣也有問題,在我們機器學習算法法優化過程中,如果行向量或者列向量隨便寫,那麼結果就不唯一,亂套了。

    爲了解決這個問題,我們引入求導佈局的概念。

3. 矩陣向量求導佈局

    爲了解決矩陣向量求導的結果不唯一,我們引入求導佈局。最基本的求導佈局有兩個:分子佈局(numerator layout)和分母佈局(denominator layout )。

    對於分子佈局來說,我們求導結果的維度以分子爲主,比如對於我們上面對標量求導的例子,結果的維度和分子的維度是一致的。也就是說,如果向量$\mathbf{y}$是一個m維的列向量,那麼求導結果$\frac{\partial \mathbf{y}}{\partial x}$也是一個m維列向量。如果如果向量$\mathbf{y}$是一個m維的行向量,那麼求導結果$\frac{\partial \mathbf{y}}{\partial x}$也是一個m維行向量。

    對於分母佈局來說,我們求導結果的維度以分母爲主,比如對於我們上面對標量求導的例子,如果向量$\mathbf{y}$是一個m維的列向量,那麼求導結果$\frac{\partial \mathbf{y}}{\partial x}$是一個m維行向量。如果如果向量$\mathbf{y}$是一個m維的行向量,那麼求導結果$\frac{\partial \mathbf{y}}{\partial x}$是一個m維的列向量向量。

    可見,對於分子佈局和分母佈局的結果來說,兩者相差一個轉置。

    再舉一個例子,標量$y$對矩陣$ \mathbf{X}$求導,那麼如果按分母佈局,則求導結果的維度和矩陣$X$的維度$m \times n$是一致的。如果是分子佈局,則求導結果的維度爲$n \times m$。

    這樣,對於標量對向量或者矩陣求導,向量或者矩陣對標量求導這4種情況,對應的分子佈局和分母佈局的排列方式已經確定了。

    稍微麻煩點的是向量對向量的求導,本文只討論列向量對列向量的求導,其他的行向量求導只是差一個轉置而已。比如m維列向量$\mathbf{y}$對n維列向量$\mathbf{x}$求導。它的求導結果在分子佈局和分母佈局各是什麼呢?對於這2個向量求導,那麼一共有$mn$個標量對標量的求導。求導的結果一般是排列爲一個矩陣。如果是分子佈局,則矩陣的第一個維度以分子爲準,即結果是一個$m \times n$的矩陣,如下:$$ \frac{\partial  \mathbf{y}}{\partial \mathbf{x}} = \left( \begin{array}{ccc} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_1}{\partial x_2}& \ldots & \frac{\partial y_1}{\partial x_n}\\  \frac{\partial y_2}{\partial x_1}& \frac{\partial y_2}{\partial x_2} & \ldots & \frac{\partial y_2}{\partial x_n}\\   \vdots&  \vdots &  \ddots & \vdots \\ \frac{\partial y_m}{\partial x_1}& \frac{\partial y_m}{\partial x_2} & \ldots & \frac{\partial y_m}{\partial x_n}  \end{array} \right)$$

    上邊這個按分子佈局的向量對向量求導的結果矩陣,我們一般叫做雅克比 (Jacobian)矩陣。有的資料上會使用$ \frac{\partial  \mathbf{y}}{\partial \mathbf{x^T}}$來定義雅克比矩陣,意義是一樣的。

    如果是按分母佈局,則求導的結果矩陣的第一維度會以分母爲準,即結果是一個$n \times m$的矩陣,如下:$$ \frac{\partial  \mathbf{y}}{\partial \mathbf{x}} = \left( \begin{array}{ccc} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_2}{\partial x_1}& \ldots & \frac{\partial y_m}{\partial x_1}\\  \frac{\partial y_1}{\partial x_2}& \frac{\partial y_2}{\partial x_2} & \ldots & \frac{\partial y_m}{\partial x_2}\\   \vdots&  \vdots &  \ddots & \vdots \\ \frac{\partial y_1}{\partial x_n}& \frac{\partial y_2}{\partial x_n} & \ldots & \frac{\partial y_m}{\partial x_n}  \end{array} \right)$$

    上邊這個按分母佈局的向量對向量求導的結果矩陣,我們一般叫做梯度矩陣。有的資料上會使用$ \frac{\partial  \mathbf{y^T}}{\partial \mathbf{x}}$來定義梯度矩陣,意義是一樣的。

    有了佈局的概念,我們對於上面5種求導類型,可以各選擇一種佈局來求導。但是對於某一種求導類型,不能同時使用分子佈局和分母佈局求導。

    但是在機器學習算法原理的資料推導裏,我們並沒有看到說正在使用什麼佈局,也就是說佈局被隱含了,這就需要自己去推演,比較麻煩。但是一般來說我們會使用一種叫混合佈局的思路,即如果是向量或者矩陣對標量求導,則使用分子佈局爲準,如果是標量對向量或者矩陣求導,則以分母佈局爲準。對於向量對對向量求導,有些分歧,我的所有文章中會以分子佈局的雅克比矩陣爲主。

    具體總結如下:

自變量\因變量 標量$y$ 列向量$\mathbf{y}$ 矩陣$\mathbf{Y}$
標量$x$ /

$\frac{\partial  \mathbf{y}}{\partial x}$

分子佈局:m維列向量(默認佈局)

分母佈局:m維行向量

$\frac{\partial  \mathbf{Y}}{\partial x}$

分子佈局:$p \times q$矩陣(默認佈局)

分母佈局:$q \times p$矩陣

列向量$\mathbf{x}$

$\frac{\partial y}{\partial \mathbf{x}}$

分子佈局:n維行向量

分母佈局:n維列向量(默認佈局)

$\frac{\partial  \mathbf{y}}{\partial \mathbf{x}}$

分子佈局:$m \times n$雅克比矩陣(默認佈局)

分母佈局:$n \times m$梯度矩陣

/
矩陣$\mathbf{X}$

$\frac{\partial y}{\partial \mathbf{X}}$

分子佈局:$n \times m$矩陣

分母佈局:$m \times n$矩陣(默認佈局)

/ /

4. 矩陣向量求導基礎總結

    有了矩陣向量求導的定義和默認佈局,我們後續就可以對上表中的5種矩陣向量求導過程進行一些常見的求導推導總結求導方法,並討論向量求導的鏈式法則。

 

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]) 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章