第一次遇見矩陣求導,大多數人都是一頭霧水,而搜了維基百科看也還是雲裡霧裡,一堆的名詞和一堆的**到底都是什麼呢?這裡總結了我個人的學習經驗,並且通過乙個例子可以讓你感受如何進行矩陣求導,下次再遇到需要進行矩陣求導的地方就不會措手不及。
前提:若布局簡單地理解就是分子x 為向量,則預設
x為列向量, xt
為行向量
y 、分母
x是行向量還是列向量。
為了更加深刻地理解兩種布局的特點和區別,下面是從維基百科中布局部分拿來的例子:∂(
y−xw
)t(y
−xw)
∂w
說明:y、看到這個例子不要急著去查表求導,先看看它的形式,是u(w 為列向量,
x 為矩陣
w)∗v
(w)的形式,這種形式一般求導較為複雜,因此為了簡化運算,我們先把式子展開成下面的樣子(注意:(x
w)t=
wtxt
): ∂(y
ty−y
txw−
wtxt
y+wt
xtxw
)∂w
然後就可以寫成四個部分求導的形式如下(累加後求導=求導後累加):
∂yty∂w−
∂ytx
w∂w−
∂wtx
ty∂w
+∂wt
xtxw
∂w說明:分子部分為標量,分母部分為向量,找到維基百科中的scalar-by-vector identities**,在**中匹配形式到第1行的位置,因為分母為列向量,因此為分母布局,對應的求導結果就是
0 。
說明:同樣的,在維基百科中的scalar-by-vector identities**,在**中匹配形式到第11行的位置,對應的求導結果就是 xt
y 。
說明:因為分子為標量,標量的轉置等於本身,所以對分子進行轉置操作,其等價於第二部分。
說明:同樣的,在維基百科中的scalar-by-vector identities**,在**中匹配形式到第13行的位置,矩陣的轉置乘上本身(xt
x )為對稱矩陣當做**中的
a ,所以得到求導結果 2x
txw。
把四個部分求導結果進行相應的加減就可以得到最終的結果: ∂y
ty∂w
−∂yt
xw∂w
−∂wt
xty∂
w+∂w
txtx
w∂w=
0−xt
y−xt
y+2x
txw=
−2xt
(y+x
w)現在你再看看維基百科裡那成堆的**,是不是覺得異常實用了!
通過乙個例子快速上手矩陣求導
第一次遇見矩陣求導,大多數人都是一頭霧水,而搜了維基百科看也還是雲裡霧裡,一堆的名詞和一堆的 到底都是什麼呢?這裡總結了我個人的學習經驗,並且通過乙個例子可以讓你感受如何進行矩陣求導,下次再遇到需要進行矩陣求導的地方就不會措手不及。前提 若 xx 為向量,則預設 xx 為列向量,xtxt 為行向量 ...
LineDDA的乙個例子
unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,extctrls,stdctrls,buttons type tfmmain class tform ...
SQL GROUP CONCAT的乙個例子
我有乙個這樣的資料庫 user info 現在有乙個需求是把這樣 9 條記錄按照 username 來 group 成3條記錄 目標 shu female 201 lee male 202 yuki female 181 如果用select from user info group by usern...