神經網路中利用矩陣進行反向傳播運算的實質
01-24
訓練神經網路模型時,為了優化目標函數,我們需要不斷地迭代更新網路中的權值,而這一過程是通過反向傳播演算法(Backpropagation,BP)實現的。在神經網路中,訓練樣本和權值參數都被表示為矩陣的形式,因為這樣更利於反向傳播的計算。
之前學習反向傳播演算法的時候一直有誤解,認為它需要用到大量的矩陣求導,但仔細理解後發現實際上用到的還是標量的求導,只不過用矩陣表示出來了而已。
本文中通過遞推的方法,用矩陣來形象化地表示神經網路模型訓練中反向傳播的過程,並從單個輸入樣本逐步擴展到多個輸入樣本(mini-batch)。
單個輸入樣本計算
對於形如的目標函數來說(省略偏置項,因為它可以被整合進中),若中間項取單一值,則其可以表示為兩個向量相乘的形式
若中間值取多維,則可以表示為兩個矩陣相乘的形式
對於其中每一個目標值,。那麼如果想要求得對的導數,只需要列出公式
那麼對於參數矩陣的列向量來說
假設目標函數對於的導數為,那麼對於(的列向量)的偏導數則為
即
那麼對於的偏導數則可以通過矩陣表示為
即。
多個輸入樣本計算
在神經網路中,我們通常採用mini-batch的方法進行訓練,對於含有個樣本的mini-batch來說
其中,可表示為
即(為的列向量),
則表示為
即。
快速計算方法
其實還有一種簡便的方法可以推導上面的公式,對於,假設的維度是,的維度是,的維度是,那麼可以利用維度的關係進行導數的計算。的維度必然是,那麼的維度必然是且與有關,那麼必有,同理必有。
參考
- CS231n Convolutional Neural Networks for Visual Recognition
推薦閱讀:
※用人工神經網路求解微分方程
※邏輯與神經之間的橋
※9行Python代碼搭建神經網路
※M.1.0 神經網路的數學基礎-前言
TAG:神经网络 | 深度学习DeepLearning |