深度學習中的Batch Normalization

2021-08-20 22:22:25 字數 1040 閱讀 9354

batch normalization原理

為了減少深度神經網路中的internal covariate shift,**中提出了batch normalization演算法,首先是對」每一層「的輸入做乙個batch normalization 變換

批標準化(bactch normalization,bn)是為了克服神經網路加深導致難以訓練而誕生的,隨著神經網路深度加深,訓練起來就會越來越困難,收斂速度回很慢,常常會導致梯度瀰散問題(vanishing gradient problem)。

統計機器學習中有乙個經典的假設:source domain 和 target domain的資料分布是一致的。也就是說,訓練資料和測試資料是滿足相同分布的。這是通過訓練資料獲得的模型能夠在測試集上獲得好的效果的乙個基本保障。

convariate shift是指訓練集的樣本資料和目標樣本集分布不一致時,訓練得到的模型無法很好的generalization。它是分布不一致假設之下的乙個分支問題,也就是指sorce domain和target domain的條件概率一致的,但是其邊緣概率不同。的確,對於神經網路的各層輸出,在經過了層內操作後,各層輸出分布就會與對應的輸入訊號分布不同,而且差異會隨著網路深度增大而加大了,但每一層所指向的label仍然是不變的。

解決辦法:一般是根據訓練樣本和目標樣本的比例對訓練樣本做乙個矯正。所以,通過引入bactch normalization來標準化某些層或者所有層的輸入,從而固定每層輸入資訊的均值和方差。

方法:bactch normalization一般用在非線性對映(啟用函式)之前,對x=wu+b做標準化,是結果(輸出訊號各個維度)的均值為0,方差為1。讓每一層的輸入有乙個穩定的分布會有利於網路的訓練。

加大搜尋的步長,加快收斂的速度;

更容易跳出區域性最小值;

破壞原來的資料分布,一定程度上緩解了過擬合;

因此,在遇到神經網路收斂速度很慢或梯度**(gradient explore)等無法訓練的情況系啊,都可以嘗試用bactch normalization來解決。

梯度**:梯度非常大,鏈式求導後乘積就變得很大,使權重變得非常大,產生指數級**。

深度學習中的大牛

只怪自己太貪玩,知道的少,不小心發現大牛都是一起的,圈子是真的小。大牛總是自帶光環與神秘感。最近一直晃蕩在學術圈,真的是很想志輝哥哥的,哼,思想太容易開小差。牛1 geoffrey hinton 傑弗里 辛頓 geoffrey hinton,被稱為 神經網路之父 深度學習鼻祖 他曾獲得愛丁堡大學人工...

深度學習中的Batch Normalization

batch normalization 假設我們有兩組training data x1 1,2,3,x 1 1,2 3,x2 100,200,300,x2 100,200,300,當我們利用這組資料進行機器學習的時候,會發現對於第一筆資料x1 x 1,它的梯度會比第二筆資料x2 x 2的梯度要小得多...

深度學習中的Batch normalization

批規範化 batch normalization 是深度學習中經常見到的一種訓練trick,指在採用梯度下降法訓練dnn時,對網路層中每個mini batch的資料進行歸一化,使其均值變為0,方差變為1,其主要作用是緩解dnn訓練中的梯度消失 現象,加快模型的訓練速度。下面是作者原 中的演算法介紹 ...