簡體   English   中英

澄清NN殘留層反向傳播推導

[英]Clarification on NN residual layer back-prop derivation

我四處張望,找不到任何可以解釋殘余層反向傳播的實際推導的內容。 這是我的最佳嘗試,也是我遇到的困難。 值得一提的是,我希望得到的推導是從通用角度出發的,不必局限於卷積神經網絡。

如果用於計算常規隱藏層輸出的公式為F(x),則具有剩余連接的隱藏層的公式為F(x)+ o,其中x是上一層的權重調整輸出,o為上一層的輸出,F是激活函數。 為了在反向傳播過程中獲得正常層的增量,需要計算輸出的梯度F(x)/ x。 對於殘差層,這是∂(F(x)+ o)/∂x,可分為∂F(x)/∂x+∂o/∂x(1)。

如果所有這些都是正確的,那么如何處理∂o/∂x? 在我看來,這取決於o的網絡距離。

  • 如果o剛好來自上一層,則o * w = x其中w是將上一層連接到F(x)層的權重。 取相對於o的每一邊的導數得到∂(o * w)/∂o=∂x/∂o,結果是w =∂x/ do,它只是在(1 ) 以上。 在這種情況下,殘留層的梯度僅為∂F(x)/∂x+ 1 / w有意義嗎? 將1 / w解釋為矩陣逆是否准確? 如果是這樣,那是使用殘差連接的NN框架實際計算出來的,還是有一些捷徑可用來添加殘差中的錯誤?

  • 我認為,如果o來自網絡的另一端,則推導會變得稍微復雜一些。 這是一個示例,其中殘差來自網絡中更遠的一層。 網絡體系結構是Input--w1-L1-w2--L2--w3--L3-Out,具有從L1到L3層的剩余連接。 為了明確起見,第一個示例中的符號o被圖層輸出L1取代。 我們正在嘗試計算反向傳播過程中L3處的梯度,該函數具有F(x)+ L1的正向函數,其中x = F(F(L1 * w2)* w3)。 此關系的導數為∂x/∂L1=∂F(F(L1 * w2)* w3 /∂L1,這雖然更復雜,但似乎在數值上求解起來並不難。

如果上述推導是合理的,則值得注意的是,在某些情況下推導失敗,即當殘余連接源自輸入層時。 這是因為無法將輸入分解為ao * w = x表達式(其中x為輸入值)。 我認為這必須表明殘余層不能源自輸入層,但是由於我已經看到了具有源自輸入的殘余連接的網絡體系結構圖,因此上述推論令人懷疑。 我看不到哪里出了問題。 如果有人可以提供一個派生或代碼示例來說明他們如何正確計算殘留合並點處的梯度,我將不勝感激。

編輯:

我的問題的核心是,當使用殘差層並進行香草反向傳播時,在添加殘差的層上是否對誤差進行了特殊處理? 由於在殘差來自的層和添加殘差的層之間存在“連接”,是否需要在該“連接”上向后分配錯誤? 我的想法是,由於殘留層從網絡的開始到較深的層都提供原始信息,因此較深的層應為較早的層提供原始錯誤。

根據我所看到的內容(閱讀可谷歌論壇的前幾頁,閱讀基本文章並觀看視頻講座)和下面的Maxim帖子,我開始認為答案是∂o/∂x= 0,我們將o視為常數。

在帶有殘留層的NN反向傳播過程中,有人做任何特別的事情嗎? 如果不是,那么這是否意味着殘留層僅在前向通道上是網絡的“活躍”部分?

我認為您使殘留網絡有些復雜化了。 這是何凱明等人的原始論文鏈接。

在第3.2節中,他們將“身份”快捷方式描述為y = F(x, W) + x ,其中W是可訓練的參數。 您可以看到為什么將其稱為“身份”:上一層的值按原樣添加,而無需進行任何復雜的轉換。 這有兩件事:

  • 簡而言之, F現在學習殘差y - x (在3.1中討論):它更容易學習。
  • 網絡與上一層建立了額外的連接,從而改善了梯度流。

通過標識映射的向后流動是微不足道的:錯誤消息不變地傳遞,不涉及逆矩陣(實際上,它們不涉及任何線性層 )。

現在,論文作者走得更遠,考慮了F的稍微復雜一點的版本,它改變了輸出尺寸(可能您已經想到了)。 他們通常將其寫為y = F(x, W) + Ws * x ,其中Ws投影矩陣 請注意,盡管它被寫為矩陣乘法,但實際上它非常簡單:它將額外的零添加到x以使其形狀更大。 您可以在這個問題中閱讀有關此操作的討論。 但這並沒有改變向后的變化:錯誤消息只是被裁剪為x的原始形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM