直覺了解反向傳播(Backpropagation intuition)
反向傳播的推導
下圖是邏輯回歸的推導:
正向傳播,其中我們計算?,然後?,然後損失函數?。
神經網絡的計算中,與邏輯回歸十分類似,但中間會有多層的計算。
假設一個雙層神經網絡,有一個輸入層,一個隐藏層和一個輸出層。
前向傳播:
計算?[1],?[1],再計算?[2],?[2],最後得到 loss function。
反向傳播:
向後推算出??[2],然後推算出??[2],接着推算出??[1],然後推算出??[1]。我們不需要
對?求導,因為?是固定的,我們也不是想優化?。向後推算出??[2],然後推算出??[2]的步驟
可以合為一步:
??[2] = ?[2] − ? , ??[2] = ??[2]?[1]?
??[2] = ??[2]
??[1] = ?[2]???[2] ∗ ?[1]′(?[1])
注意:
這裡的矩陣: ?[2]的次元是: (?[2],?[1])。
?[2] , ??[2]的次元都是:(?[2],1),如果是二分類,那次元就是(1,1)。
?[1],??[1]的次元都是:(?[1],1)。
證明過程:
其中?[2]???[2]次元為: (?[1],?[2])、 (?[2],1)相乘得到(?[1],1),和 ?[1]次元相同, ?[1]′(?[1])
的次元為(?[1],1),這就變成了兩個都是(?[1],1)向量逐元素乘積。
實作後向傳播有個技巧,就是要保證矩陣的次元互相比對。最後得到??[1]和??[1]
??[1] = ??[1]??,??[1] = ??[1]
可以看出??[1] 和??[2] 非常相似,其中?扮演了?[0]的角色,?? 等同于?[0]?。
由: ?[1] = ?[1]? + ?[1] , ?[1] = ?[1](?[1]) 得到: ?[1] = ?[1]? + ?[1],?[1] = ?[1](?[1])
注意:大寫的?[1]表示?[1](1),?[1](2),?[1](3)...?[1](?)的列向量堆疊成的矩陣,以下類同。
下圖寫了主要的推導過程