前言
反向傳播算法是深度學習中求取各層梯度的核心算法,了解反向傳播算法對于了解深度學習原理至關重要。應屆生在找工作時很容易被問到反向傳播算法,經常會要求手推反向傳播算法。
一些符号說明
假設現在有如下神經網絡:
神經網絡示例
我們把輸入記為
(
向量 ),輸入當作第0層,最後一層為第
層。第
層的節點數記為
,則上圖中
,
,
,
。
上圖中每個節點的計算方式如下,其中
是激活函數的輸出值,
是激活函數。
我們把第
層中的激活函數輸出值記為
(
是個向量 ) ,則
。我們把輸入
看做第0層的激活值
,最後一層的激活值為網絡的預測輸出,即
。計算
的權重矩陣記為
,第
層的偏移值記為
(
是個向量 )。
前向傳播
第1層:
即
第2層:
...
第4層(最後一層):
前向傳播中第 層的值計算公式為 :
(1)
(2)
上面每次隻輸入一個資料
,在實際訓練時模型中輸入的是一個batch的資料
,那麼對于批量資料
的前向傳播公式又是怎樣的呢?
假設
,其中
是
列向量 表示單個的輸入資料。第
層中的激活函數輸出值記為
,
是個矩陣,第 列代表 在目前層的激活值, 。同理有
。
則有:
...
最後得到的
相當于把所有輸入資料的預測值水準排在一起。
批量前向傳播中第 層的值計算公式為 :
(3)
(4)
反向傳播
我們在反向傳播過程中計算權值矩陣
的梯度
和偏移項的梯度
。
對于單個的輸入資料 ,第
層,由鍊導法則和式(1)可得:
(5)
(6)
由式(2)和鍊導法則可得下式,其中
表示按元素位置對應相乘。
(7)
由式(1)和鍊導法則可得:
(8)
将(8)代入(7)得:
(9)
通過式(7)我們找到了
和
的關系。
上面是針對單個的輸入資料 的反向傳播公式,同樣的我們可以得到批量輸入資料 的反向傳播公式如下:(假設每個批次包含 個輸入資料) (10)
(11)
(12)
(13)
(14)
其中
表示按元素位置對應相乘。
總結
整個反向傳播算法的過程如下: