認識上圖這些人嗎?這些人把本身叫作「The Myth Busters」,爲何?在他們的啓發下,咱們纔會在Paperspace作相似的事情。咱們要解決是Batch Normalization(BN)是否確實解決了Internal Covariate Shift的問題。雖然Batch Normalization已經存在了幾年,而且已經成爲深度神經網絡的主要內容,但它仍然是深度學習中最容易被誤解的概念之一。算法
Batch Normalization真的解決了Internal Covariate Shift問題了嗎?它是用來作什麼的?你所學的深度學習是真的嗎?咱們來看看吧!網絡
在開始以前函數
咱們曾經討論過:學習
一、如何利用隨機梯度降低來解決深度學習中局部極小值和鞍點的問題。優化
二、Momentum(動量)和Adam(自適應矩估計)等優化算法如何加強梯度降低以解決優化曲面中的曲率問題。spa
三、如何使用不一樣的激活函數來解決梯度消失問題。orm
爲了有效地學習神經網絡,神經網絡的每一層分佈都應該:均值爲0、始終保持相同的分佈;第二個條件意味着經過批梯度降低輸入到網路層的數據分佈不該該變化太多,而且隨着訓練的進行它應該保持不變,而不是每一層的分佈都在發生變化。blog
Batch Normalization:經過減小Internal Covariate Shift來加快深度網絡訓練,其前提是解決一個稱爲Internal Covariate Shift的問題。深度學習
就像咱們如今所稱的那樣,Internal Covariate Shift是指在訓練過程當中,隱層的輸入分佈總是變來變去,Internal指的是深層網絡的隱層,是發生在網絡內部的事情,Covariate指的是輸入分佈被變化的權重參數化,Shift指分佈正在發生變化。io
因此,讓咱們試着觀察這件事情怎樣發生的。再次,儘量想象一下最簡單的神經網絡之一:線性堆疊的神經元,這樣你也能夠經過替換神經元網絡層來擴展類比。
假設咱們正在優化損失函數L,神經元d權重的更新規則是:
咱們能夠看到權重d的梯度取決於c的輸出,對於神經網絡中的任何層也是如此。神經元的權重梯度取決於它的輸入或者下一層的輸出。