最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[Quant 1.4] 矩陣微積分Matrix Calculus基礎(chǔ) (1)

2022-07-28 08:46 作者:安平生一人好_  | 我要投稿

資源是MIT 2020年的一節(jié)網(wǎng)課,教授是Alan Edelman

https://www.youtube.com/watch?v=oGZK3yGF-6k

我在B站沒找到搬運的資源,所以要看這個視頻需要??


還有一個問答的鏈接,我下面也提到了

https://math.stackexchange.com/questions/3724359/does-there-exist-a-gradient-chain-rule-for-this-case


本來我想寫一期RNN的筆記的。結(jié)果發(fā)現(xiàn)有一個很重要的部分的數(shù)學我已經(jīng)忘的差不多了,而且知識點還很多,所以決定單獨拿出來寫一篇。


1. Vector到Scalar的函數(shù)梯度

假設(shè)我們現(xiàn)在有一個向量%5Cmathbf%7Bx%7D%20%5Cin%20%5Cmathbb%7BR%7D%5En,還有作用于%5Cmathbf%7Bx%7D的函數(shù)f%3A%20%5Cmathbb%7BR%7D%5En%20%5Crightarrow%20%5Cmathbb%7BR%7D。那么%5Cmathbf%7Bx%7Df作用在%5Cmathbf%7Bx%7D上的梯度就可以寫成

%5Cmathbf%7Bx%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%5C%5C%0Ax_2%5C%5C%0A%5Cvdots%5C%5C%0Ax_n%0A%5Cend%7Bpmatrix%7D

%5Cnabla_%5Cmathbf%7Bx%7D%20f%20%3D%20(%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20x_1%7D%20%5C%2C%20%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20x_2%7D%20%5Cldots%20%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20x_n%7D)%20

我個人習慣讓%5Cmathbf%7Bx%7D做列向量,因為后面的d%5Cmathbf%7Bx%7D也是個列向量,因此%5Cnabla_%5Cmathbf%7Bx%7D%20f是一個行向量 (為什么梯度是行向量呢?詳見https://math.stackexchange.com/questions/3724359/does-there-exist-a-gradient-chain-rule-for-this-case)。

上面是我們在微積分課程中學過的求偏導(dǎo)/梯度,我們舉一個簡單的例子

f(x_1%2Cx_2)%3D%202x_1%20%2B%20x_2

那么它的梯度就可以寫成

%5Cnabla%20f%20%3D%20(%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20x_1%7D%2C%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20x_2%7D)%20%3D(2%2C1)%5ET

這里面%5Cnabla%20f%20是一個1%5Ctimes%202的行向量。梯度也可以用全微分的形式表現(xiàn)出來

df%20%3D%202dx_1%20%2B%20dx_2



但是在矩陣微積分中,有些函數(shù)的變量可以寫成整體的矩陣或者向量的形式,而不是把他們中每一個單個的項拿出來做變量。換句話說,上面的函數(shù)表達式在矩陣微積分中就可以寫成

f(%5Cmathbf%7Bx%7D)%20%3D%20(2%2C1)%5ET%20%5Ccdot%5Cmathbf%7Bx%7D%20

它的梯度也可以寫成

%5Cnabla_%5Cmathbf%7Bx%7D%20f%20%3D%20(2%2C1)%5ET

全微分的形式就可以寫成

df%20%3D%20(2%2C1)%5ET%20%5Ccdot%20d%5Cmathbf%7Bx%7D

這里面的d%5Cmathbf%7Bx%7D和上面的%5Cmathbf%7Bx%7D一樣,需要理解成列向量

d%5Cmathbf%7Bx%7D%20%3D%20(dx_1%2Cdx_2)%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Adx_1%5C%5C%0Adx_2%0A%5Cend%7Bpmatrix%7D


我們可以證明,對于f%3A%20%5Cmathbb%7BR%7D%5En%20%5Crightarrow%20%5Cmathbb%7BR%7D%20%5Cquad%20%5Cmathbf%7Bx%7D%20%5Crightarrow%20c%5ET%20%5Ccdot%20%5Cmathbf%7Bx%7D%2Bb,它的梯度可以寫成以下兩種形式中的任何一種

%5Cbegin%7Balign%7D%0A%5Cnabla_%7B%5Cmathbf%7Bx%7D%7D%20f%20%26%3D%20c%5ET%5C%5C%0Adf%20%26%20%3D%20c%5ET%5Ccdot%20d%5Cmathbf%7Bx%7D%0A%5Cend%7Balign%7D


再看另一個例子:

f(%5Cmathbf%7Bx%7D)%20%3D%20%5Cmathbf%7Bx%7D%5ET%5Cmathbf%7Bx%7D

想要求這個函數(shù)的梯度,我們需要先介紹一個公式(下面稱它為AB公式)。這個公式不僅好記而且管用,后面在求matrix到scalar的函數(shù)梯度的時候也經(jīng)常用:

d(AB)%20%3D%20dA%5Ccdot%20B%20%2B%20A%5Ccdot%20dB

其中A%2C%20B是矩陣,因此也可以是向量。我們把f代入到這個公式里面去,得到梯度的全微分形式:

%5Cbegin%7Balign%7D%0Adf%20%26%3D%20(d%5Cmathbf%7Bx%7D%5ET)%5Ccdot%5Cmathbf%7Bx%7D%20%2B%20%5Cmathbf%7Bx%7D%5ET%20%5Ccdot%20d%5Cmathbf%7Bx%7D%5C%5C%0A%26%20%3D%202%5Cmathbf%7Bx%7D%5ET%5Ccdot%20d%5Cmathbf%7Bx%7D%0A%5Cend%7Balign%7D

因為第一行相加的兩項都是scalar,取轉(zhuǎn)置之后數(shù)值不變。把第一項取轉(zhuǎn)置之后就和第二項相等了。所以梯度也可以寫成

%5Cnabla_%5Cmathbf%7Bx%7D%20f%20%3D%202%5Cmathbf%7Bx%7D%5ET


當然,不是所有的%5Cmathbb%7BR%7D%5En%20%5Crightarrow%20%5Cmathbb%7BR%7D的函數(shù)都可以寫成向量的形式。這種情況下還是要用微積分里面學到的最原本的公式(開頭的公式)來求梯度。在機器學習里面會出現(xiàn)的Vector到Scalar的函數(shù)梯度,我們掌握上面兩種情況還有AB公式就夠用了。



2. Vector到Vector的函數(shù)梯度

假設(shè)我們的自變量向量長度為n

%5Cmathbf%7Bx%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%5C%5C%0Ax_2%5C%5C%0A%5Cvdots%5C%5C%0Ax_n%0A%5Cend%7Bpmatrix%7D

函數(shù)%5Cmathbf%7Bf%7D%3A%20%5Cmathbb%7BR%7D%5En%20%5Crightarrow%20%5Cmathbb%7BR%7D%5Em%20%5Cquad%20%5Cmathbf%7Bx%7D%20%5Crightarrow%20%5Cmathbf%7Bf%7D(%5Cmathbf%7Bx%7D)可以展開為

%5Cmathbf%7Bf%7D(%5Cmathbf%7Bx%7D)%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Af_1(%5Cmathbf%7Bx%7D)%5C%5C%0Af_2(%5Cmathbf%7Bx%7D)%5C%5C%0A%5Cvdots%5C%5C%0Af_m(%5Cmathbf%7Bx%7D)%0A%5Cend%7Bpmatrix%7D

Element-wise,這個函數(shù)的梯度要寫成

%5Cnabla_%5Cmathbf%7Bx%7D%20%5Cmathbf%7Bf%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0A%5Cfrac%7B%5Cpartial%20f_1%7D%7B%5Cpartial%20x_1%7D%20%26%20%5Cldots%20%26%20%5Cfrac%7B%5Cpartial%20f_1%7D%7B%5Cpartial%20x_n%7D%20%5C%5C%0A%5Cvdots%20%26%20%5Cddots%20%26%20%5Cvdots%5C%5C%0A%5Cfrac%7B%5Cpartial%20f_m%7D%7B%5Cpartial%20x_1%7D%20%26%20%5Cldots%20%26%20%5Cfrac%7B%5Cpartial%20f_m%7D%7B%5Cpartial%20x_n%7D%0A%5Cend%7Bpmatrix%7D

這個矩陣就是微積分里面也講過的Jacobian matrix,它十分重要,在多元積分換元的時候也要用到。Vector到Vector函數(shù)的梯度就是Jacobian matrix。


此外,值得注意的一點是,Vector到Vector函數(shù)%5Cmathbf%7Bf%7D%3A%5Cmathbb%7BR%7D%5En%20%5Crightarrow%20%5Cmathbb%7BR%7D%5Em的梯度(即Jacobian矩陣)的維度是m%5Ctimes%20n。特別的,當m%3D1的時候,梯度就是一個1%5Ctimes%20n%0A的矩陣,即行向量,這一點我在Vector到Scaler函數(shù)的梯度中提到過。


對于一般形式的Vector到Vector函數(shù),我們只需要一個接著一個求偏導(dǎo),把這個m%5Ctimes%20n的矩陣填滿就行了。但是,有些Vector到Vector函數(shù)是可以整體表達成矩陣乘法形式的,例如多元線性函數(shù)。

例如函數(shù)

%5Cbegin%7Balign%7D%0A%5Cmathbf%7Bf%7D(%5Cmathbf%7Bx%7D)%20%26%3D%20A%5Cmathbf%7Bx%7D%2Bb%5C%5C%0A%26%3D%0A%5Cbegin%7Bpmatrix%7D%0AA_%7B11%7D%20%26%20A_%7B12%7D%5C%5C%0AA_%7B21%7D%20%26%20A_%7B22%7D%0A%5Cend%7Bpmatrix%7D%0A%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%5C%5C%0Ax_2%0A%5Cend%7Bpmatrix%7D%0A%2B%0A%5Cbegin%7Bpmatrix%7D%0Ab_1%5C%5C%0Ab_2%0A%5Cend%7Bpmatrix%7D%5C%5C%0A%26%3D%0A%5Cbegin%7Bpmatrix%7D%0AA_%7B11%7Dx_1%20%2B%20A_%7B12%7Dx_2%20%2Bb_1%5C%5C%0AA_%7B21%7Dx_1%20%2B%20A_%7B22%7Dx_2%20%2B%20b_2%0A%5Cend%7Bpmatrix%7D%0A%5Cend%7Balign%7D

這里面的A_%7B11%7Dx_1%20%2B%20A_%7B12%7Dx_2%20%2Bb_1對應(yīng)的就是一般形式中的f_1(%5Cmathbf%7Bx%7D),A_%7B21%7Dx_1%20%2B%20A_%7B22%7Dx_2%20%2Bb_2則對應(yīng)f_2(%5Cmathbf%7Bx%7D)。我們應(yīng)用一下Jacobian的公式,可以得到

%5Cnabla_%5Cmathbf%7Bx%7D%20%5Cmathbf%7Bf%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0AA_%7B11%7D%20%26%20A_%7B12%7D%5C%5C%0AA_%7B21%7D%20%26%20A_%7B22%7D%0A%0A%5Cend%7Bpmatrix%7D

以此類推,對于%5Cmathbf%7Bf%7D(%5Cmathbf%7Bx%7D)%20%3D%20A%5Cmathbf%7Bx%7D%20%2B%20b,其梯度可以寫成

%5Cnabla_%5Cmathbf%7Bx%7D%20%5Cmathbf%7Bf%7D%20%3D%20A

或者

d%5Cmathbf%7Bf%7D%20%3D%20Ad%5Cmathbf%7Bx%7D


上面的例子就是Vector到Vector的多元線性函數(shù)可以寫成矩陣乘法形式的例子,接下來再介紹一個例子,這個實際上是Vector到Scalar,但是需要怎們學了上面的例子之后才能做

f(%5Cmathbf%7Bx%7D)%20%3D%20(A%5Cmathbf%7Bx%7D-b)%5ET(A%5Cmathbf%7Bx%7D-b)

這里我們可以使用AB公式。AB公式就像分步求導(dǎo)法則一樣的:當我們不知道函數(shù)整體如何求道,但是知道函數(shù)是兩個容易求道的函數(shù)的乘積,那么我們就可以使用AB公式

%5Cbegin%7Balign%7D%0Adf%20%26%3D%20(d(A%5Cmathbf%7Bx%7D-b)%5ET)(A%5Cmathbf%7Bx%7D-b)%2B(A%5Cmathbf%7Bx%7D-b)%5ETd(A%5Cmathbf%7Bx%7D-b)%5C%5C%0A%26%20%3D%20d%5Cmathbf%7Bx%7D%5ETA%5ET(A%5Cmathbf%7Bx%7D-b)%2B(A%5Cmathbf%7Bx%7D-b)%5ETAd%5Cmathbf%7Bx%7D%0A%5Cend%7Balign%7D

因為d%5Cmathbf%7Bx%7D%5ETA%5ET(A%5Cmathbf%7Bx%7D-b)是scalar,所以它的轉(zhuǎn)置就是它本身,所以

df%3D%202(A%5Cmathbf%7Bx%7D-b)%5ETAd%5Cmathbf%7Bx%7D

%5Cnabla_%5Cmathbf%7Bx%7Df%20%3D%202(A%5Cmathbf%7Bx%7D-b)%5ETA%20

多說一句,這里因為f是一個凸函數(shù),所以求導(dǎo)之后讓導(dǎo)函數(shù)=0可以求出來全局最大值或者最小值(這里是最小值)。最后反推出來的%5Cmathbf%7Bx%7D就有兩種解釋:第一個是方程A%5Cmathbf%7Bx%7D%3Db當b不在col(A)中的情況下的最優(yōu)近似解;另一個是關(guān)于樣本數(shù)據(jù)矩陣A的最小二乘法線性回歸系數(shù)。


第三個例子其實還是一個Vector到Scalar的例子,但是也要用這里第一個例子的結(jié)果:

f(%5Cmathbf%7Bx%7D)%20%3D%20%5Cmathbf%7Bx%7D%5ETA%5Cmathbf%7Bx%7D

再次運用AB公式

%5Cbegin%7Balign%7D%0Adf%20%26%3D%20(d%5Cmathbf%7Bx%7D%5ET)A%5Cmathbf%7Bx%7D%20%2B%20%5Cmathbf%7Bx%7D%5ET(dA%5Cmathbf%7Bx%7D)%5C%5C%0A%26%3D%5Cmathbf%7Bx%7D%5ETA%5ETd%5Cmathbf%7Bx%7D%2B%5Cmathbf%7Bx%7D%5ETAd%5Cmathbf%7Bx%7D%5C%5C%0A%26%3D%5Cmathbf%7Bx%7D%5ET(A%5ET%2BA)d%5Cmathbf%7Bx%7D%0A%5Cend%7Balign%7D%0A%0A

也就是說

%5Cnabla_%5Cmathbf%7Bx%7Df%20%3D%20%5Cmathbf%7Bx%7D%5ET(A%5ET%2BA)

注意,這里我可能跟大多數(shù)教材的習慣不一樣。因為我默認%5Cmathbf%7Bx%7D是一個列向量,所以梯度應(yīng)該是一個行向量。很多地方喜歡把這個結(jié)果寫成它的轉(zhuǎn)置的形式。大家可以依照自己的習慣來記憶。



[Quant 1.4] 矩陣微積分Matrix Calculus基礎(chǔ) (1)的評論 (共 條)

分享到微博請遵守國家法律
翁源县| 景泰县| 龙南县| 连云港市| 胶州市| 无棣县| 城固县| 延边| 江永县| 平昌县| 梨树县| 开化县| 延寿县| 奈曼旗| 邯郸市| 讷河市| 甘洛县| 密云县| 右玉县| 双鸭山市| 沂源县| 嘉禾县| 潮安县| 巴南区| 工布江达县| 封丘县| 屯昌县| 南溪县| 武冈市| 嘉禾县| 喀喇| 水城县| 长沙市| 黄浦区| 莆田市| 宜川县| 日照市| 巴东县| 九寨沟县| 全州县| 仪征市|