當前位置:
首頁 > 最新 > 關於 Batch Normalization 你只需要知道這麼多

關於 Batch Normalization 你只需要知道這麼多

本周給大家推薦的文章是:

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

-- Sergey Ioffe,Christian Szegedy

Batch Normalization 的作用是什麼?

Batch Normalization 是目前深度神經網路中很常見和實用的一個操作。在GoogleI CML的論文中用來解決Internal covariate shift的問題。我們知道在統計機器學習中的一個經典假設是源空間和目標空間的概率分布是一致的。如果不一致,那麼就出現了新的機器學習問題,如transferlearning。 而 Internal covariate shift 就是在源空間和目標空間分布不一致的情況下所出現的問題。

在深度神經網路的訓練中,每一層網路的輸入都會因為前一層網路參數的變化導致其分布發生改變,這就要求我們必須使用一個很小的學習率,並且對參數要有很好的初始化,但是這麼做會讓訓練過程變得慢而且複雜,作者把這種現象稱作Internal Covariate Shift。Batch Normalization就是用來解決Internal covariate shift 的問題。也有觀點說,Batch Normalization其實主要還是為了防止梯度彌散問題。關於梯度彌散問題,UniDeep在之前的文章中為大家介紹過。

Batch Normalization的演算法是什麼?

簡單地說,就是在SGD的過程中,通過對mini-batch樣本中每一個維度做歸一化操作,使得其結果的均值為和方差為1。 同時在歸一化操作之後加入scale和 shift的操作,其目的是讓因刻意加入Batch Normalization 的輸入有還原為最初數據的可能,從而保證整個神經網路的泛化能力。畢竟不是每一層的輸入數據都Internal covariate shift 問題需要Batch Normalization 來解決。具體演算法如下:

訓練帶有Batch Normalization 神經網路的演算法如下:

值得注意的是,在對testing sample進行 Batch Normalization操作的時候,此時的U和Var用的是所有 mini-batch 訓練時得到的統計平均。 同時,方差是統計平均的無偏差估計。

Batch Normalization 怎麼應用?

按照之前對於Internal covariate shift 的解釋,Batch Normalization應當用在每一層的激活函數之後,比如ReLU之後。但是文章的觀點是,在訓練初期,當分界面還在劇烈變化的時候,計算出的參數是不穩定的,所以並不適合做Batch Normalization。

所以退而求其次,我們在Wx+b之後進行Batch Normalization。初始的W是從標準高斯分布中採樣得到的,所以在Wx+b後使用Batch Normalization 能得到更穩定的結果。

同時值得注意,在對於卷積神經網路進行Batch Normalization操作的時候,要按照圖片的channel來進行,即進行channel個Batch Normalization操作。

Batch Normalization 的好處是什麼?

使用更高的學習率。如果每層的scale不一致,實際上每層需要的學習率是不一樣的。同一層不同維度的scale往往也需要不同大小的學習率,通常需要使用最小的那個學習率才能保證損失函數有效下降。Batch Normalization將每層、每維的scale保持一致,那麼我們就可以直接使用較高的學習率進行優化。

移除或使用較低的dropout。 dropout是常用的防止overfitting的方法,而導致overfit的位置往往在數據邊界處,如果初始化權重就已經落在數據內部,overfit現象就可以得到一定的緩解。

降低L2權重衰減係數。 理由同dropout。

取消Local Response Normalization層。

減少圖像扭曲的使用。由於現在訓練次數降低,所以對輸入數據可以少做一些扭曲,讓神經網路多接觸真實的數據。

總結

Batch Normalization的作用體現在兩個方面:一是歸一化了每層和每維度的scale,進而可以整體使用一個較高的學習率,而不必像以前那樣遷就小scale的維度;二是歸一化後使得更多的權重分界面落在了數據中,降低了overfit的可能性。因此那些為了防止overfit,但降低訓練速度的方法,例如dropout和權重衰減,就可以不使用或少用。

但就目前來看,Batch Normalization的爭議在於使用的位置。理論上來說,Batch Normalization目前的使用位置並不符合ReLU的特性。在ReLU後,數據分布重新回到第一象限,這時其實是最應當進行歸一化的。其次,引入gamma和beta兩個參數是為了避免數據只用sigmoid的線性部分,因此gamma與beta對sigmoid函數確實能起到一定的作用。但對於ReLU這種分段線性的激活函數,其實並不存在sigmoid似的線性現象。

論文連接:

https://arxiv.org/abs/1502.03167

UniDeep會為大家每周精心推薦整理一篇AI和Machine Learning領域的經典論文,並以paper review的形式呈現給大家。閱讀學術論文是進入一個領域的必經之路,我們的初衷是藉此機會能夠和大家一起探索,討論與成長。也希望感興趣的朋友能夠參與到我們的討論中來,提出你們的問題,理解和觀點!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 UniDeep數據科學家 的精彩文章:

TAG:UniDeep數據科學家 |

您可能感興趣

穿Vetements tabi的人從不需要知道Martin Margiela是誰
Learning Dharma Requires Good Companions 學佛需要善友
關於Harden Vol.2 你需要知道這些
python開發利器,python shell和vim中都需要的tab補全方法
急停變向?你可能需要一雙adidas Harden Vol.2
需要Windows才能在發布時運行Oculus Rift
Geoffrey Hinton:人工智慧需要重頭再來
Supreme x LV | 機會來了,只需要19萬美刀,Supreme x Louis Vuitton法拉利直接開走!
做一個好的設計,需要考慮那些因素byFoster+partners設計事務所
seo需要學習python嗎?學習python有什麼好處?
Bronzer VS Contour!節後胖五斤的你需要知道這些修容小技巧
Kali Linux 是什麼,你需要它嗎?
Xbox老大Phil Spencer:微軟需要一個復甦的機會
iOS11越獄也許你需要它Workflow MiniSSH規則!
Forest: 節後收心,你需要這個專註助手 | Hello App
Google兩步驗證下載Google身份驗證器掃描二維碼時提示需要更新 GooglePlay又無法正常訪問 GoolgePlay
cosplay是需要演技的
《We Were Here Too》:這遊戲需要基情!
Windows 10 Solitaire每年需要10美元才能移除廣告
你可能需要一款運動耳機了!我選繽特力BackBeat FIT Boost