天天看點

反向傳播的推導

直覺了解反向傳播(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](?)的列向量堆疊成的矩陣,以下類同。

下圖寫了主要的推導過程

反向傳播的推導

繼續閱讀