BN 小結(jié)

  1. 問題: 即使使用He initialization和ELU, 也不能保證在訓(xùn)練過程中, 出現(xiàn)梯度消失/爆炸
  2. 原因: 在訓(xùn)練過程中, 隨著上層的參數(shù)發(fā)生改變, 每層輸入的分布也會隨之改變 (內(nèi)部協(xié)變量偏移問題)
  3. 解決方法: 在訓(xùn)練過程中, 對每層輸入激活函數(shù)前加入一個運算, 用來對輸入進行標準化(均值(shifting), 方差(scaling))
    • 因此, 每層會多兩個參數(shù), 這兩個參數(shù)通過訓(xùn)練時的小批量樣本進行計算
  4. 預(yù)測: 在測試過程中, 使用全部的訓(xùn)練樣本計算出經(jīng)驗均值和方差, 然后對測試數(shù)據(jù)歸一化
    • 因此, BN層一共四個參數(shù), 訓(xùn)練過程的(scale, offset), 測試過程的(mean, std)
  5. 非常有效的解決梯度消失問題, 對初始化方法不敏感, 明顯的提高訓(xùn)練時間
    • BN也有正則化效果, 使得不用依賴其他的正則化方法(Dropout)
  6. 不足: 訓(xùn)練和測試時的計算量增大, 因此對于預(yù)測時間有要求的時候需要考慮
    • 訓(xùn)練時要計算小批量訓(xùn)練樣本的offset和scale
    • 測試時要計算經(jīng)驗均值和方差, 并對測試數(shù)據(jù)標準化
  7. 其他
    1. 簡單點說: BN就是對每層的輸入進行中心化和標準化
    2. BN會加大訓(xùn)練時的計算量, 但是收斂過程會更快(迭代的次數(shù)更少)
    3. BN相當于在兩層網(wǎng)絡(luò)的中間加入一個標準化處理層, 用來解決輸入與輸出方差的差異
    4. ReLU和None activity function不需要scale(下層權(quán)重會受影響)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容