Batch Normalization,拆開來看,第一個單詞意思是批,出現在梯度下降的概念里,第二個單詞意思是標准化,出現在數據預處理的概念里。
我們先來看看這兩個概念。
數據預處理
方法很多,后面我會在其他博客中專門講,這里簡單回憶下
歸一化,x-min/max-min,
標准化,包括標准差標准化,x-mean/std,極差標准化,x-mean/(max-min),
中心化,x-mean,
白化,pac-->歸一化
梯度下降
梯度下降中 mini batch sgd 是比 sgd 更好的一種方法,因為min batch是平均梯度,使得梯度更平穩,容易收斂,而且batch能夠並行計算,減少運算。
我們知道,在機器學習中,梯度下降是要歸一化的,因為如果不歸一化,y在各個維度上的量綱不一樣,使得y的圖形不規則,扁平或者瘦高,這樣在求梯度時經常會歪歪曲曲,一般會陷入局部最優。
圖示如下
神經網絡也是用的梯度下降,從這點來看,也是需要數據預處理的。
獨立同分布 IID
在機器學習中有這個概念,意思是訓練數據和測試數據需要服從同樣的分布,這樣才有意義,很好理解。
但是在深度學習中,訓練和測試都是圖片(cnn為例,圖片為例),似乎不牽扯IID。
那這根batch normalization 有什么關系呢?
因為在神經網絡中有層的概念,每一層都有輸入,每一層的輸入是上一層的輸出,而輸出是經過非線性函數的,非線性函數的取值都有特定的區間,這就和原始的輸入在數據分布上存在很大不同,
此時需要用一定的方法統一數據分布。
神經網絡的訓練問題
神經網絡層數越深,越是難以訓練,收斂速度越來越慢,為什么呢?下面我以sigmoid函數為例簡要說明。(后面我會專門寫一篇激活函數的博客,詳細闡述)
在數學建模時一般會要求樣本服從正態分布,正態分布標准化后就是標准正態分布。圖像如下
可以看到標准正態分布95%的概率落在 [-2, 2] 之間
sigmoid 函數的特點是在絕大多數x上(除了-2到2的區間)取值要么無限接近於1,要么無限接近於0,而且,這種情況下其梯度無限接近於0,這就是神經網絡梯度消息的本質,這也是sigmoid函數很難作為深度神經網絡的激活函數的原因。
而 batch normalization 的作用是把x規范到0附近,此時其梯度很大,收斂很快。
scale and shift
batch normalization 雖然增加了梯度,但是同時我們發現,當x在0附近時,其函數非常接近於線性,這大大降低了模型的表達能力。
為了解決這個問題,作者又提出了 scale and shift,即y=scale*x+shift,這相當於是把數據從0向左或向右平移了一段並拉伸或壓縮,使得y處於線性和非線性的交界處,這樣既保證了較大的梯度,也保留了模型的非線性表達能力。
scale 和 shift 通過訓練學習到。
到這基本就講完 batch normalization 的原理了,下面看看具體怎么使用。
使用方法
之前講到batch normalization使得神經網絡每一層的輸入變得規范,也就是說它是把 wx+b 變得規范,即用在線性變換之后,非線性變換之前。如圖
總體計算方法如下
這里在標准化時分母加了個ε,是防止分母為0。
總結
batch normalization的優點
1. 提高神經網絡的訓練效率,避免梯度消失
2. 使得神經網絡不依賴於初始值,方便調參
3. 抑制過擬合,降低dropout的使用,提高泛化能力
batch normalization的缺點
1. batch normalization 仍然有很多地方科學理論無法解釋
2. batch大小對其效果影響很大,batch 很小時,其梯度不夠穩定,收斂變慢,極端情況就是 sgd
2020-1-14 更新
1. 上面的博客中我寫到 由於每層網絡的輸出作為新的輸入 與 之前的輸入不符合 iid,現在想想感覺不妥,
我稍微更正下,應該是 同一層網絡,每次輸入的數據由於經過了調整后的不同參數,很可能不服從 iid,故需要進行 BN
2. 初始化的參數雖然使得 wx+b 在 0 附近,但是隨着參數的調整,很可能不在 0 附近,如果 BN,可以強行拉回 0 附近;
所以 BN 是為了把 激活函數的 輸入 拉回 0 附近,故放在機會函數之前 ,即 wx+b --> BN --> 激活函數
參考資料:
https://www.cnblogs.com/guoyaohua/p/8724433.html
https://www.zhihu.com/question/38102762
https://blog.csdn.net/whitesilence/article/details/75667002
https://blog.csdn.net/liangjiubujiu/article/details/80977502