Batch Normalization
阿新 • • 發佈:2022-01-03
BN回顧
首先Batch Normalization 中的Normalization被稱為標準化,通過將資料進行平和縮放拉到一個特定的分佈。BN就是在batch維度上進行資料的標準化。BN的引入是用來解決 internal covariate shift 問題,即訓練迭代中網路啟用的分佈的變化對網路訓練帶來的破壞。BN通過在每次訓練迭代的時候,利用minibatch計算出的當前batch的均值和方差,進行標準化來緩解這個問題。雖然How Does Batch Normalization Help Optimization 這篇文章探究了BN其實和Internal Covariate Shift (ICS)問題關係不大,本文不深入討論,這個會在以後的文章中細說。
一般來說,BN有兩個優點:
降低對初始化、學習率等超參的敏感程度,因為每層的輸入被BN拉成相對穩定的分佈,也能加速收斂過程。
應對梯度飽和和梯度彌散,主要是對於使用sigmoid和tanh的啟用函式的網路。
當然,BN的使用也有兩個前提:
minibatch和全部資料同分布。因為訓練過程每個minibatch從整體資料中均勻取樣,不同分佈的話minibatch的均值和方差和訓練樣本整體的均值和方差是會存在較大差異的,在測試的時候會嚴重影響精度。
batchsize不能太小,否則效果會較差,論文給的一般性下限是32。