批規範化(batch normalization)是深度學習中經常見到的一種訓練trick,指在採用梯度下降法訓練dnn時,對網路層中每個mini-batch的資料進行歸一化,使其均值變為0,方差變為1,其主要作用是緩解dnn訓練中的梯度消失/**現象,加快模型的訓練速度。
下面是作者原**中的演算法介紹:
關於bn的兩點理解:
1.為什麼它能緩解dnn訓練中的梯度消失/**現象?
關於梯度消失的乙個簡單例子是0.930≈0.040.930≈0.04,而bn通過歸範化各層的輸入資料使得原本會減小的data value的scale變大,這樣反向求出的梯度scale應該也會相應增大。
2.為什麼在normalize後還有乙個scale and shift操作?
就像上面演算法注釋解釋的,僅是簡單的對網路層輸入作歸一化可能會改變原本的輸入表示,而加入scale and shift操作,讓歸一化操作有機會通過對引數γ,βγ,β 的學習將其變回去,不改變輸入表示。
關於bn的具體介紹和討論,可以看知乎上的兩個問題
1.深度學習中 batch normalization為什麼效果好?
2.請問batch_normalization做了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原理 為了減少深度神經網路中的internal covariate shift,中提出了batch normalization演算法,首先是對 每一層 的輸入做乙個batch normalization 變換 批標準化 bactch normalization,...