日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

3.6 BatchNorm 为什么起作用-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

發布時間:2025/4/5 pytorch 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.6 BatchNorm 为什么起作用-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

←上一篇↓↑下一篇→
3.5 將 Batch Norm 擬合進神經網絡回到目錄3.7 測試時的 Batch Norm

BatchNorm 為什么起作用? (Why does Batch Norm work?)

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

一個原因是,你已經看到如何歸一化輸入特征值 xxx ,使其均值為0,方差1,它又是怎樣加速學習的,有一些從0到1而不是從1到1000的特征值,通過歸一化所有的輸入特征值 xxx ,以獲得類似范圍的值,可以加速學習。所以Batch歸一化起的作用的原因,直觀的一點就是,它在做類似的工作,但不僅僅對于這里的輸入值,還有隱藏單元的值,這只是Batch歸一化作用的冰山一角,還有些深層的原理,它會有助于你對Batch歸一化的作用有更深的理解,讓我們一起來看看吧。

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


這是一個網絡的訓練,也許是個淺層網絡,比如logistic回歸或是一個神經網絡,也許是個淺層網絡,像這個回歸函數。或一個深層網絡,建立在我們著名的貓臉識別檢測上,但假設你已經在所有黑貓的圖像上訓練了數據集,如果現在你要把此網絡應用于有色貓,這種情況下,正面的例子不只是左邊的黑貓,還有右邊其它顏色的貓,那么你的cosfa可能適用的不會很好。

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

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

Covariate shift”的問題怎么應用于神經網絡呢?試想一個像這樣的深度網絡,讓我們從這層(第三層)來看看學習過程。此網絡已經學習了參數 w[3]w^{[3]}w[3]b[3]b^{[3]}b[3] ,從第三隱藏層的角度來看,它從前層中取得一些值,接著它需要做些什么,使希望輸出值 y^\hat{y}y^? 接近真實值 yyy

讓我先遮住左邊的部分,從第三隱藏層的角度來看,它得到一些值,稱為 a1[2],a2[2],a3[2],a4[2]a_1^{[2]},a_2^{[2]},a_3^{[2]},a_4^{[2]}a1[2]?a2[2]?a3[2]?a4[2]? ,但這些值也可以是特征值 x1,x2,x3,x4x_1,x_2,x_3,x_4x1?x2?x3?x4? ,第三層隱藏層的工作是找到一種方式,使這些值映射到 y^\hat{y}y^? ,你可以想象做一些截斷,所以這些參數 w[3]w^{[3]}w[3]b[3]b^{[3]}b[3]w[4]w^{[4]}w[4]b[4]b^{[4]}b[4]w[5]w^{[5]}w[5]b[5]b^{[5]}b[5] ,也許是學習這些參數,所以網絡做的不錯,從左邊我用黑色筆寫的映射到輸出值 y^\hat{y}y^?

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

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

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

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

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

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

對比而言,Batch歸一化含幾重噪音,因為標準偏差的縮放和減去均值帶來的額外噪音。這里的均值和標準差的估計值也是有噪音的,所以類似于dropoutBatch歸一化有輕微的正則化效果,因為給隱藏單元添加了噪音,這迫使后部單元不過分依賴任何一個隱藏單元,類似于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歸一化來做出預測。

課程PPT







←上一篇↓↑下一篇→
3.5 將 Batch Norm 擬合進神經網絡回到目錄3.7 測試時的 Batch Norm

總結

以上是生活随笔為你收集整理的3.6 BatchNorm 为什么起作用-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。