tft每日頭條

 > 生活

 > 吳恩達深度學習筆記23

吳恩達深度學習筆記23

生活 更新时间:2024-12-24 04:32:50
Batch Norm 為什麼奏效?(Why does Batch Norm work?)

為什麼Batch歸一化會起作用呢?

一個原因是,你已經看到如何歸一化輸入特征值x,使其均值為0,方差1.

它又是怎樣加速學習的,有一些從0到1而不是從1到1000的特征值,通過歸一化所有的輸入特征值x,以獲得類似範圍的值,可以加速學習。

所以Batch歸一化起的作用的原因,直觀的一點就是,它在做類似的工作,但不僅僅對于這裡的輸入值,還有隐藏單元的值,這隻是Batch歸一化作用的冰山一角,還有些深層的原理,它會有助于你對Batch歸一化的作用有更深的理解,讓我們一起來看看吧。

Batch歸一化有效的第二個原因是,它可以使權重比你的網絡更滞後或更深層,比如,第10層的權重更能經受得住變化,相比于神經網絡中前層的權重,比如第1層,為了解釋我的意思,讓我們來看看這個最生動形象的例子。

吳恩達深度學習筆記23(吳恩達深度學習筆記)1

這是一個網絡的訓練,也許是個淺層網絡,比如logistic回歸或是一個神經網絡,也許是個淺層網絡,像這個回歸函數。

或一個深層網絡,建立在我們著名的貓臉識别檢測上,但假設你已經在所有黑貓的圖像上訓練了數據集,如果現在你要把此網絡應用于有色貓,這種情況下,正面的例子不隻是左邊的黑貓,還有右邊其它顔色的貓,那麼你的cosfa可能适用的不會很好。

吳恩達深度學習筆記23(吳恩達深度學習筆記)2

如果圖像中,你的訓練集是這個樣子的,你的正面例子在這兒,反面例子在那兒(左圖),但你試圖把它們都統一于一個數據集,也許正面例子在這,反面例子在那兒(右圖)。你也許無法期待,在左邊訓練得很好的模塊,同樣在右邊也運行得很好,即使存在運行都很好的同一個函數,但你不會希望你的學習算法去發現綠色的決策邊界,如果隻看左邊數據的話。

吳恩達深度學習筆記23(吳恩達深度學習筆記)3

所以使你數據改變分布的這個想法,有個有點怪的名字“Covariate shift”,想法是這樣的,如果你已經學習了x到y 的映射,如果x的分布改變了,那麼你可能需要重新訓練你的學習算法。這種做法同樣适用于,如果真實函數由x到y 映射保持不變,正如此例中,因為真實函數是此圖片是否是一隻貓,訓練你的函數的需要變得更加迫切,如果真實函數也改變,情況就更糟了。

吳恩達深度學習筆記23(吳恩達深度學習筆記)4

“Covariate shift”的問題怎麼應用于神經網絡呢?

試想一個像這樣的深度網絡,讓我們從這層(第三層)來看看學習過程。此網絡已經學習了參數w^([3])和b^([3]),從第三隐藏層的角度來看,它從前層中取得一些值,接着它需要做些什麼,使希望輸出值^y接近真實值y。

吳恩達深度學習筆記23(吳恩達深度學習筆記)5

讓我先遮住左邊的部分,從第三隐藏層的角度來看,它得到一些值,稱為a_1^([2]),a_2^([2]),a_3^([2]),a_4^([2]),但這些值也可以是特征值x_1,x_2,x_3,x_4,第三層隐藏層的工作是找到一種方式,使這些值映射到^y,你可以想象做一些截斷,所以這些參數w^([3])和b^([3])或w^([4])和b^([4])或w^([5])和b^([5]),也許是學習這些參數,所以網絡做的不錯,從左邊我用黑色筆寫的映射到輸出值^y。

吳恩達深度學習筆記23(吳恩達深度學習筆記)6

現在我們把網絡的左邊揭開,這個網絡還有參數w^([2]),b^([2])和w^([1]),b^([1]),如果這些參數改變,這些a^([2])的值也會改變。所以從第三層隐藏層的角度來看,這些隐藏單元的值在不斷地改變,所以它就有了“Covariate shift”的問題,上張幻燈片中我們講過的。

吳恩達深度學習筆記23(吳恩達深度學習筆記)7

Batch歸一化做的,是它減少了這些隐藏值分布變化的數量。如果是繪制這些隐藏的單元值的分布,也許這是重整值z,這其實是z_1^([2]),z_2^([2]),我要繪制兩個值而不是四個值,以便我們設想為2D,Batch歸一化講的是z_1^([2]),z_2^([2])的值可以改變,它們的确會改變,當神經網絡在之前層中更新參數,Batch歸一化可以确保無論其怎樣變化z_1^([2]),z_2^([2])的均值和方差保持不變,所以即使z_1^([2]),z_2^([2])的值改變,至少他們的均值和方差也會是均值0,方差1,或不一定必須是均值0,方差1,而是由β^([2])和γ^([2])決定的值。如果神經網絡選擇的話,可強制其為均值0,方差1,或其他任何均值和方差。但它做的是,它限制了在前層的參數更新,會影響數值分布的程度,第三層看到的這種情況,因此得到學習。

Batch歸一化減少了輸入值改變的問題,它的确使這些值變得更穩定,神經網絡的之後層就會有更堅實的基礎。即使使輸入分布改變了一些,它會改變得更少。它做的是當前層保持學習,當改變時,迫使後層适應的程度減小了,你可以這樣想,它減弱了前層參數的作用與後層參數的作用之間的聯系,它使得網絡每層都可以自己學習,稍稍獨立于其它層,這有助于加速整個網絡的學習。

吳恩達深度學習筆記23(吳恩達深度學習筆記)8

所以,希望這能帶給你更好的直覺,重點是Batch歸一化的意思是,尤其從神經網絡後層之一的角度而言,前層不會左右移動的那麼多,因為它們被同樣的均值和方差所限制,所以,這會使得後層的學習工作變得更容易些。

Batch歸一化還有一個作用,它有輕微的正則化效果,Batch歸一化中非直觀的一件事是,每個mini-batch,我會說mini-batchX^({t})的值為z^([t]),z^([l]),在mini-batch計算中,由均值和方差縮放的,因為在mini-batch上計算的均值和方差,而不是在整個數據集上,均值和方差有一些小的噪聲,因為它隻在你的mini-batch上計算,比如64或128或256或更大的訓練例子。因為均值和方差有一點小噪音,因為它隻是由一小部分數據估計得出的。縮放過程從z^([l])到̃z^([l]),過程也有一些噪音,因為它是用有些噪音的均值和方差計算得出的。

吳恩達深度學習筆記23(吳恩達深度學習筆記)9

所以和dropout相似,它往每個隐藏層的激活值上增加了噪音,dropout有增加噪音的方式,它使一個隐藏的單元,以一定的概率乘以0,以一定的概率乘以1,所以你的dropout含幾重噪音,因為它乘以0或1。

對比而言,Batch歸一化含幾重噪音,因為标準偏差的縮放和減去均值帶來的額外噪音

這裡的均值和标準差的估計值也是有噪音的,所以類似于dropout,Batch歸一化有輕微的正則化效果,因為給隐藏單元添加了噪音,這迫使後部單元不過分依賴任何一個隐藏單元,類似于dropout,它給隐藏層增加了噪音,因此有輕微的正則化效果。因為添加的噪音很微小,所以并不是巨大的正則化效果,你可以将Batch歸一化和dropout一起使用,如果你想得到dropout更強大的正則化效果。

也許另一個輕微非直觀的效果是,如果你應用了較大的mini-batch,對,比如說,你用了512而不是64,通過應用較大的min-batch,你減少了噪音,因此減少了正則化效果,這是dropout的一個奇怪的性質,就是應用較大的mini-batch可以減少正則化效果。

說到這兒,我會把Batch歸一化當成一種正則化,這确實不是其目的,但有時它會對你的算法有額外的期望效應或非期望效應。

但是不要把Batch歸一化當作正則化,把它當作将你歸一化隐藏單元激活值并加速學習的方式,我認為正則化幾乎是一個意想不到的副作用。

所以希望這能讓你更理解Batch歸一化的工作,在我們結束Batch歸一化的讨論之前,我想确保你還知道一個細節。

Batch歸一化一次隻能處理一個mini-batch數據,它在mini-batch上計算均值和方差。

所以測試時,你試圖做出預測,試着評估神經網絡,你也許沒有mini-batch的例子,你也許一次隻能進行一個簡單的例子,所以測試時,你需要做一些不同的東西以确保你的預測有意義。

在下一個也就是最後一個Batch歸一化筆記中,讓我們詳細談談你需要注意的一些細節,來讓你的神經網絡應用Batch歸一化來做出預測。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved