矩阵求导实例
前提及說明
第一次遇見矩陣求導,大多數人都是一頭霧水,而搜了維基百科看也還是云里霧里,一堆的名詞和一堆的表格到底都是什么呢?這里總結了我個人的學習經驗,并且通過一個例子可以讓你感受如何進行矩陣求導,下次再遇到需要進行矩陣求導的地方就不會措手不及。
在進行概念的解說之前,首先大家需要先知道下面的這個前提:
前提:?若?x?為向量,則默認?x?為列向量,?xT?為行向量
布局的概念
布局簡單地理解就是分子?y?、分母?x?是行向量還是列向量。
- 分子布局(Numerator-layout):?分子為?y?或者分母為?xT?(即,分子為列向量或者分母為行向量)
- 分母布局(Denominator-layout):?分子為?yT?或者分母為?x?(即,分子為行向量或者分母為列向量)
為了更加深刻地理解兩種布局的特點和區別,下面是從維基百科中布局部分拿來的例子:
分子布局
-
標量/向量:??(分母的向量為行向量)
-
向量/標量:??(分子的向量為列向量)
-
向量/向量:??(分子為列向量橫向平鋪,分母為行向量縱向平鋪)
-
標量/矩陣:??(注意這個矩陣部分是轉置的,而下面的分母布局是非轉置的)
-
矩陣/標量:?
分母布局
-
標量/向量:??(分母的向量為列向量)
-
向量/標量:??(分子的向量為行向量)
-
向量/向量:??(分子為行向量縱向平鋪,分母為列向量橫向平鋪)
-
標量/矩陣:??(矩陣部分為原始矩陣)
一個求導的例子
問題
?
說明:?y、w為列向量,X為矩陣
式子演化
看到這個例子不要急著去查表求導,先看看它的形式,是的形式,這種形式一般求導較為復雜,因此為了簡化運算,我們先把式子展開成下面的樣子(注意:: )
然后就可以寫成四個部分求導的形式如下(累加后求導=求導后累加):?
求導
說明:分子部分為標量,分母部分為向量,找到維基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第1行的位置,因為分母為列向量,因此為分母布局,對應的求導結果就是?0?。
說明:同樣的,在維基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第11行的位置,對應的求導結果就是?。
說明:因為分子為標量,標量的轉置等于本身,所以對分子進行轉置操作,其等價于第二部分。
說明:同樣的,在維基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第13行的位置,矩陣的轉置乘上本身為對稱矩陣當做表格中的A?,所以得到求導結果?。
整合
把四個部分求導結果進行相應的加減就可以得到最終的結果:?
?
現在你再看看維基百科里那成堆的表格,是不是覺得異常實用了!
參考文獻
- 維基百科 Matrix calculus
- 求導的例子來自《機器學習實戰》-第八章 回歸 138頁
總結
- 上一篇: 吴恩达对话Yann LeCun:从相识H
- 下一篇: 几何间隔、函数间隔和||W||