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

2022-03-17 05:41:16 字數 3718 閱讀 4446

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

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

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

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

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

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

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

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

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

自變數\因變數

標量$y$

向量$\mathbf$

矩陣$\mathbf$

標量$x$

$\frac$

$\frac}$

$\frac}$

向量$\mathbf$

$\frac}$

$\frac}}$

$\frac}}$

矩陣$\mathbf$

$\frac}$

$\frac}}$

$\frac}}$

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

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

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

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

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

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

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

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

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

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

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

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

如果是按分母布局,則求導的結果矩陣的第一維度會以分母為準,即結果是乙個$n \times m$的矩陣,如下:$$ \frac}} = \left( \begin \frac& \frac& \ldots & \frac\\  \frac& \frac & \ldots & \frac\\   \vdots&  \vdots &  \ddots & \vdots \\ \frac& \frac & \ldots & \frac  \end \right)$$

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

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

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

具體總結如下:

自變數\因變數

標量$y$

列向量$\mathbf$

矩陣$\mathbf$

標量$x$

/$\frac}$

分子布局:m維列向量(預設布局)

分母布局:m維行向量

$\frac}$

分子布局:$p \times q$矩陣(預設布局)

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

列向量$\mathbf$

$\frac}$

分子布局:n維行向量

分母布局:n維列向量(預設布局)

$\frac}}$

分子布局:$m \times n$雅克比矩陣(預設布局)

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

/矩陣$\mathbf$

$\frac}$

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

分母布局:$m \times n$矩陣(預設布局)//

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

矩陣(向量)求導

在網上看到有人貼了如下求導公式 y a x dy dx a y x a dy dx a y a x b dy dx a b y a x b dy dx b a 1.矩陣y對標量x求導 相當於每個元素求導數後轉置一下,注意m n矩陣求導後變成n m了 y y ij dy dx dy ji dx 2.標...

矩陣(向量)求導

1.矩陣y對標量x求導 相當於每個元素求導數後轉置一下,注意m n矩陣求導後變成n m了 y y ij dy dx dy ji dx 2.標量y對列向量x求導 注意與上面不同,這次括號內是求偏導,不轉置,對n 1向量求導後還是n 1向量 y f x1,x2,xn dy dx dy dx1,dy dx...

機器學習矩陣求導

矩陣求導好像讀書的時候都沒學過,因為講矩陣的課程上不講求導,講求導的課又不提矩陣。如果從事機器學習方面的工作,那就一定會遇到矩陣求導的東西。維基百科上 根據y與x的不同型別 實值,向量,矩陣 給出了具體的求導公式,以及一堆相關的公式,查起來都費勁。其實在實際的機器學習工作中,最常用到的就是實值函式y...