反向傳播理解 從抽象到具體

2021-08-27 23:45:51 字數 1712 閱讀 6728

反向傳播是深度學習的基礎理論知識,在去年很早的時候,就把研究生期間學習推導bp的過程總結了一下,寫了一篇文章,但是給同事分享的時候還是發現不能非常清晰的讓大家理解什麼是反向傳播,反思一下,可能是那篇文章講的太細節了,不能從巨集觀的角度理解,這一篇文章從抽象的角度出發,忽略公式推導的細節,然後反過來研究全連線層的誤差回傳。

神經網路從計算的角度看,資料是從底層輸入,經過每一層,根據與該層之間的權重計算以乙個中間結果,這個中間結果再經過乙個非線性啟用函式作用,得到該層的輸出結果,然後把該層的輸出結果傳遞給下一層,繼續進行下一層的中間結果計算與非線性函式啟用,直到最後一層,得到最終的結果,最後的結果或者用來表示分類結果,或者表示回歸結果。

如果乙個網路訓練好了,所有層之間的權重都是確定好的,給定任意的乙個輸入,根據每一層之間的權重係數,從底層到頂層,計算出最終的結果,這一階段叫做推理或者叫做測試。

反向傳播發生是在學習過程中,每一次迭代根據計算出的結果與實際對應結果的誤差,反向調整網路層之間的係數。

網路結構對於解決特定的問題是關鍵,但是最底層還是網路的反向傳播過程,這是學習過程的基礎,理解這部分,才能更清晰的理解乙個網路結構,以及如何修改網路或者涉及全新的網路。

很久之前,寫過乙個從bp神經網路理解反向傳播文章,那是從細節描述,反而理解起來不是很容易,尤其是跟同事講或者帶新人的時候,不太容易讓他們清晰的理解反向傳播的過程。這裡反過來,從高層的抽象開始,逐步到細節,先從整體上有乙個概念,然後逐步細化。

如下圖,表示乙個抽象的多層神經網路的結構。

第0層是資料層,沒有特別的,用

x x

表示;

第1層是中間網路層,不管是卷積層,還是全連線層,還是bn層,與前一層之間的權重是$$,這一層的非線性啟用函式是 ;

第2層也是中間網路層,不知道是個什麼東西,與第一層之間的權重是 ,非線性啟用函式是 ;

第3層是最後的輸出層,與第2層之間的權重是 ,非線性啟用函式是 。

一般的網路結構都類似於上面的這個樣子,下面圖描述了網路的前向計算過程中的資料傳遞。

從圖中可以看出,第1、2、3層之間的計算過程。前向傳遞理解起來比較容易,不管這樣抽象的表示,還是具體的網路實現。下面看看反向傳遞是怎麼回事。

下圖是反向傳播時,從頂端的誤差如何反向傳遞給下面的每一層。

第3層是最後一層,可以直接計算誤差的損失,根據損失計算對權重的導數;但是到了內部的層,沒有辦法直接獲取損失,只能通過上圖中的鏈式規則計算對內層權重大導數。

從上面的圖中發現,層次越深,這個導數計算越多,這哪能受得了,每一層的導數對輸入的導數,在下面一層的計算中還會有用,所以,可以把這一部分直接傳遞給下面的層,這也就是誤差回傳的本質。

對上面的圖進行修改能更清晰的理解。

從上面的圖中,應該可以從巨集觀的角度理解反省傳播的鏈式規則,那麼剩下的就是如何從細節理解,在之前的文章中,是從數學計算的角度,如何逐步推導每乙個公式(全連線層),對於其它層,也會有類似的方式,或者更簡單的方法。

反向傳播演算法的理解

bp backpropagation algorithm,反向傳播演算法 在神經網路學習中有著無可替代的作用,關於其優化方法可閱讀該文章 一文看懂各種神經網路優化演算法 從梯度下降到adam方法 本文僅立足於反向傳播的實現過程。文中如有理解偏差,請各位指正。就反向傳播的字面理解是將資料從後 輸出 向...

反向傳播演算法理解

舉例 已知e a b b 1 求a 2,b 1時,e的梯度。首先它的復合關係圖 可以先利用偏導數的定義求出不同層之間相鄰節點的偏導關係 1.常規求法 自下到往上 路徑為 a c e 路徑為 b c e b d e 問題 c e這條路徑重複了,對於權值動則數萬的深度模型中的神經網路,這樣的冗餘所導致的...

反向傳播 具體是如何計算的

從左至右分別是輸入層 input i1 i2 隱含層 hidden h1 h2 和輸出層 output o1 o2 以及下方的兩個偏置 bias 這裡兩個bias取值皆為1 中間的w1 w8則分別是每層節點之間的權重。我們的目標是讓輸出層的輸出結果 o1 o2 跟實際應該得到的結果 target1 ...