舉例:已知e=(a+b)*(b+1),求a=2,b=1時,e的梯度。
首先它的復合關係圖:
可以先利用偏導數的定義求出不同層之間相鄰節點的偏導關係:
1.常規求法(自下到往上):
路徑為 a→c→e
路徑為 b→c→e;b→d→e
問題:c→e這條路徑重複了,對於權值動則數萬的深度模型中的神經網路,這樣的冗餘所導致的計算量是相當大的。
2.bp演算法(自上往下):
(1)簡單抽象:
從最上層的節點e開始,初始值為1,以層為單位進行處理。對於e的下一層的所有子節點,將1乘以e到某個節點路徑上的偏導值,並將結果「堆放」在該子節點中。
第二層的每乙個節點都「堆放"些值,然後我們針對每個節點,把它裡面所有「堆放」的值求和,就得到了頂點e對該節點的偏導。
然後將這些第二層的節點各自作為起始頂點,初始值設為頂點e對它們的偏導值,以"層"為單位重複上述傳播過程,即可求出頂點e對每一層節點的偏導數。
(2)具體實現:
以上圖為例,節點c接受e傳送的1×2並堆放起來,節點d接受e傳送的1×3並堆放起來,至此第二層完畢,求出各節點總堆放量並繼續向下一層傳送。
節點c向a傳送2×1並對堆放起來,節點c向b傳送2×1並堆放起來,節點d向b傳送3×1並堆放起來,至此第三層完畢。
節點a堆放起來的量為2,頂點e對a的偏導數為2;節點b堆放起來的量為2×1+3×1=5, 即頂點e對b的偏導數為5。
參考:1.anonymous的回答:
2.反向傳播訓練多層神經網路的原理演示圖:
3.反向傳播詳細數學推導:
憶臻回答(注意:在推c對w53的偏導時,y2與y5的混淆 z5和z2的混淆)
4.反向傳播演算法的**:
反向傳播演算法的理解
bp backpropagation algorithm,反向傳播演算法 在神經網路學習中有著無可替代的作用,關於其優化方法可閱讀該文章 一文看懂各種神經網路優化演算法 從梯度下降到adam方法 本文僅立足於反向傳播的實現過程。文中如有理解偏差,請各位指正。就反向傳播的字面理解是將資料從後 輸出 向...
反向傳播演算法
首先我們對數學符號做一些約定。我們首先考慮簡單的情況 前饋神經網路,如圖 所示。我們先假設任意兩層之間沒有權值共享。方向傳播演算法本質上就是梯度下降演算法,所以我們要對損失函式關於每個引數求導。設單個輸入例項 x 損失函式為 j x 那麼我們要求解 j wi 和 j bi i 1,2,n 對 j 關...
反向傳播演算法
反向傳播演算法的工作機制為對 錯誤的神經元施以懲罰。從輸出層開始,向上層次查詢 錯誤的神經元,微調這些神經元輸入值的權重,以達到修復輸出錯誤的目的。神經元之所以給出錯誤的 原因在於它前面為其提供輸入的神經元,更確切地說是由兩個神經元之間的權重及輸入值決定的。我們可以嘗試對權重進行微調。每次調整的幅度...