機器學習中的矩陣向量求導(二) 矩陣向量求導之定義法


    在機器學習中的矩陣向量求導(一) 求導定義與求導布局中,我們討論了向量矩陣求導的9種定義與求導布局的概念。今天我們就討論下其中的標量對向量求導,標量對矩陣求導, 以及向量對向量求導這三種場景的基本求解思路。

    對於本文中的標量對向量或矩陣求導這兩種情況,如前文所說,以分母布局為默認布局。向量對向量求導,以分子布局為默認布局。如遇到其他文章中的求導結果和本文不同,請先確認使用的求導布局是否一樣。另外,由於機器學習中向量或矩陣對標量求導的場景很少見,本系列不會單獨討論這兩種求導過程。

1. 用定義法求解標量對向量求導

    標量對向量求導,嚴格來說是實值函數對向量的求導。即定義實值函數$f: R^{n} \to R$,自變量$\mathbf{x}$是n維向量,而輸出$y$是標量。對於一個給定的實值函數,如何求解$\frac{\partial y}{\partial \mathbf{x}}$呢?

    首先我們想到的是基於矩陣求導的定義來做,由於所謂標量對向量的求導,其實就是標量對向量里的每個分量分別求導,最后把求導的結果排列在一起,按一個向量表示而已。那么我們可以將實值函數對向量的每一個分量來求導,最后找到規律,得到求導的結果向量。

    首先我們來看一個簡單的例子:$y=\mathbf{a}^T\mathbf{x}$,求解$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}}$

    根據定義,我們先對$\mathbf{x}$的第i個分量進行求導,這是一個標量對標量的求導,如下:

$$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial x_i} = \frac{\partial \sum\limits_{j=1}^n a_jx_j}{\partial x_i} = \frac{\partial a_ix_i}{\partial x_i} =a_i$$

    可見,對向量的第i個分量的求導結果就等於向量$\mathbf{a}$的第i個分量。由於我們是分母布局,最后所有求導結果的分量組成的是一個n維向量。那么其實就是向量$\mathbf{a}$。也就是說:$$\frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}} = \mathbf{a}$$

    同樣的思路,我們也可以直接得到:$$\frac{\partial \mathbf{x}^T\mathbf{a}}{\partial \mathbf{x}} = \mathbf{a}$$

    給一個簡單的測試,大家看看自己能不能按定義法推導出:$$\frac{\partial \mathbf{x}^T\mathbf{x}}{\partial \mathbf{x}} =2\mathbf{x}$$

    再來看一個復雜一點點的例子:$y=\mathbf{x}^T\mathbf{A}\mathbf{x}$,求解$\frac{\partial \mathbf{x}^T\mathbf{A}\mathbf{x}}{\partial \mathbf{x}}$

    我們對$\mathbf{x}$的第k個分量進行求導如下:

$$\frac{\partial \mathbf{x}^T\mathbf{A}\mathbf{x}}{\partial x_k} = \frac{\partial \sum\limits_{i=1}^n\sum\limits_{j=1}^n x_iA_{ij}x_j}{\partial x_k} = \sum\limits_{i=1}^n A_{ik}x_i + \sum\limits_{j=1}^n A_{kj}x_j $$

    這個第k個分量的求導結果稍微復雜些了,仔細觀察一下,第一部分是矩陣$\mathbf{A}$的第k列轉置后和$x$相乘得到,第二部分是矩陣$\mathbf{A}$的第k行和$x$相乘得到,排列好就是: $$\frac{\partial \mathbf{x}^T\mathbf{A}\mathbf{x}}{\partial \mathbf{x}} = \mathbf{A}^T\mathbf{x} + \mathbf{A}\mathbf{x}$$

    從上面可以看出,定義法求導對於簡單的實值函數是很容易的,但是復雜的實值函數就算求出了任意一個分量的導數,要排列出最終的求導結果還挺麻煩的,因此我們需要找到其他的簡便一些的方法來整體求導,而不是每次都先去針對任意一個分量,再進行排列。

2. 標量對向量求導的一些基本法則

    在我們尋找一些簡單的方法前,我們簡單看下標量對向量求導的一些基本法則,這些法則和標量對標量求導的過程類似。

    1) 常量對向量的求導結果為0。

    2)線性法則:如果$f,g$都是實值函數,$c_1,c_2$為常數,則:$$\frac{\partial (c_1f(\mathbf{x})+c_2g(\mathbf{x})}{\partial \mathbf{x}} = c_1\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} +c_2\frac{\partial g(\mathbf{x})}{\partial \mathbf{x}} $$

    3) 乘法法則:如果$f,g$都是實值函數,則:$$\frac{\partial f(\mathbf{x})g(\mathbf{x})}{\partial \mathbf{x}} = f(\mathbf{x})\frac{\partial g(\mathbf{x})}{\partial \mathbf{x}} +\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} g(\mathbf{x}) $$

    要注意的是如果不是實值函數,則不能這么使用乘法法則。

    4) 除法法則:如果$f,g$都是實值函數,且$g(\mathbf{x}) \neq 0$,則:$$\frac{\partial f(\mathbf{x})/g(\mathbf{x})}{\partial \mathbf{x}} = \frac{1}{g^2(\mathbf{x})}(g(\mathbf{x})\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} - f(\mathbf{x})\frac{\partial g(\mathbf{x})}{\partial \mathbf{x}})$$

3. 用定義法求解標量對矩陣求導

     現在我們來看看定義法如何解決標量對矩陣的求導問題。其實思路和第一節的標量對向量的求導是類似的,只是最后的結果是一個和自變量同型的矩陣。

    我們還是以一個例子來說明。$y=\mathbf{a}^T\mathbf{X}\mathbf{b}$,求解$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial \mathbf{X}}$

    其中, $\mathbf{a}$是m維向量,$\mathbf{b}$是n維向量,  $\mathbf{X}$是$m \times n$的矩陣。

    我們對矩陣$\mathbf{X}$的任意一個位置的$X_{ij}$求導,如下:$$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial X_{ij}} =  \frac{\partial \sum\limits_{p=1}^m\sum\limits_{q=1}^n a_pA_{pq}b_q}{\partial X_{ij}} =  \frac{\partial  a_iA_{ij}b_j}{\partial X_{ij}} = a_ib_j$$

    即求導結果在$(i.j)$位置的求導結果是$\mathbf{a}$向量第i個分量和$\mathbf{b}$第j個分量的乘積,將所有的位置的求導結果排列成一個$m \times n$的矩陣,即為$ab^T$,這樣最后的求導結果為:$$\frac{\partial \mathbf{a}^T\mathbf{X}\mathbf{b}}{\partial \mathbf{X}} = ab^T$$

    簡單的求導的確不難,但是如果是比較復雜的標量對矩陣求導,比如$y=\mathbf{a}^Texp(\mathbf{X}\mathbf{b})$,對任意標量求導容易,排列起來還是蠻麻煩的,也就是我們遇到了和標量對向量求導一樣的問題,定義法比較適合解決簡單的問題,復雜的求導需要更簡便的方法。這個方法我們在下一篇來講。

    同時,標量對矩陣求導也有和第二節對向量求導類似的基本法則,這里就不累述了。

4.用定義法求解向量對向量求導

    這里我們也同樣給出向量對向量求導的定義法的具體例子。

    先來一個簡單的例子: $\mathbf{y} = \mathbf{A} \mathbf{x} $,其中$ \mathbf{A}$為$n \times m$的矩陣。$\mathbf{x}, \mathbf{y}$分別為$m,n$維向量。需要求導$\frac{\partial \mathbf{A}\mathbf{x}}{\partial \mathbf{x}}$,根據定義,結果應該是一個$n \times m$的矩陣

    先求矩陣的第i行和向量的內積對向量的第j分量求導,用定義法求解過程如下:$$\frac{\partial \mathbf{A_i}\mathbf{x}}{\partial \mathbf{x_j}} = \frac{\partial A_{ij}x_j}{\partial \mathbf{x_j}}= A_{ij}$$

    可見矩陣 $\mathbf{A}$的第i行和向量的內積對向量的第j分量求導的結果就是矩陣 $\mathbf{A}$的$(i,j)$位置的值。排列起來就是一個矩陣了,由於我們分子布局,所以排列出的結果是$ \mathbf{A}$,而不是 $\mathbf{A}^T$

5. 定義法矩陣向量求導的局限

    使用定義法雖然已經求出一些簡單的向量矩陣求導的結果,但是對於復雜的求導式子,則中間運算會很復雜,同時求導出的結果排列也是很頭痛的。下一篇我們討論使使用矩陣微分和跡函數的方法來求解矩陣向量求導。    

 

(歡迎轉載,轉載請注明出處。歡迎溝通交流: liujianping-ok@163.com) 


免責聲明!

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



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