通過乙個例子快速上手矩陣求導

2021-07-10 10:09:20 字數 1475 閱讀 4175

第一次遇見矩陣求導,大多數人都是一頭霧水,而搜了維基百科看也還是雲裡霧裡,一堆的名詞和一堆的**到底都是什麼呢?這裡總結了我個人的學習經驗,並且通過乙個例子可以讓你感受如何進行矩陣求導,下次再遇到需要進行矩陣求導的地方就不會措手不及。

前提:

x 為向量,則預設

x為列向量, xt

為行向量

布局簡單地理解就是分子

y 、分母

x是行向量還是列向量。

為了更加深刻地理解兩種布局的特點和區別,下面是從維基百科中布局部分拿來的例子:∂(

y−xw

)t(y

−xw)

∂w

說明:y、

w 為列向量,

x 為矩陣

看到這個例子不要急著去查表求導,先看看它的形式,是u(

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...