1. 程式人生 > >吳恩達深度學習筆記 course2 week3 超參數調試,Batch Norm,和程序框架

吳恩達深度學習筆記 course2 week3 超參數調試,Batch Norm,和程序框架

etc 值範圍 操作 normal 可能 標準 通過 pan 範圍

1.Tuning Process

對超參數的一個調試處理

技術分享圖片

一般而言,在調試超參數的過程中,我們通常將學習率learning_rate看作是最重要的一個超參數,其次是動量梯度下降因子β(一般為0.9),隱藏層單元個數,mini-batch size,再然後是layers,learning rate decacy. 當然,這並不是絕對的.

在adam算法中,β1,β2,ε通常取值為0.9,0.999,10-8

調試超參數的方法:隨機取值

技術分享圖片

假設我們要調試兩個超參數α和ε,每一個都有25種取值情況,在傳統的機器學習算法中,會根據其數值範圍,等分為5種情況,如上左圖,這樣構成了一個5X5的點陣,在從其中選取點來進行調試,這種方法參數較少的時候效果比較好,但是其中ε影響比較小,這樣我們相當於只實驗了5個α值,不能確保能取到最好的參數α.實際問題中,常采用隨機取值的方法.

隨機選取α與ε的組合來進行調試,在進行隨機選取之後,我們可以采用Coarse to fine的方法,即對表現較好的隨機選取的組合在進行一個細化,將其整個區域放大,再來選取調試,如下:

技術分享圖片

2.Using an appropriate scale to pick hyperparameters

我們可以使用一個標準的標尺來隨機選取某些超參數,如下:

技術分享圖片

但是,對於某些超參數的選取,我們要進行一個log scale

技術分享圖片

如:當我們要選取學習率α從0.0001-1時,如果我們使用一個均勻的標尺,那麽出現在0.1-1的概率比較大,而實際上,學習率α在這個範圍的可能表現效果不太好,對此,可以進行一個log scale

即對其進行一個求對數的操作,然後在選取的隨機數後進行一個對應的冪運算就能得到隨機的結果,如上圖所示.

對於指數加權平均中的β,也是運用相同的方法,只是β的範圍一般為0.9-0.999,采用log scale 時要用1-β,在采取與上圖相同的方法,至於為什麽這麽做,因為1/1-β,β越大時,越靈敏,假設β為0.9000變化到0.9005,那麽它基本沒太大變化,而從0.999-0.9995則變化非常大,所以取接近1的值應該更密集一些

技術分享圖片

3.Hyperparameters tuning in practice:Panda vs Caviar

根據調試選擇的超參數往往不是一成不變的,經過一段時間後,根據實際的情況我們往往需要重新調試

技術分享圖片

根據我們所擁有的計算能力的不同,我們可以構建一個模型或多個模型同時訓練來獲取最優參數組合

技術分享圖片

用一個模型時,我們會對其參數不停的調試優化

如果所擁有的計算能力大,可以選擇不同的參數組合,構成不同的模型,對其進行同時訓練,來找到最好的結果,對於復雜的計算能力大的,我們往往采用第一種

4.Normalizing activations in a network

之前我們已經了解了規格化輸入層的輸入,能夠加快訓練速度,那麽能否規格化l-1層的a[l-1],讓l層的w,b更加迅速的訓練得到呢

技術分享圖片

答案是肯定的,在實際中我們往往對z[l-1]進行一個規格化,而不是a[l-1]

之前對訓練集輸入的歸一化過程如上圖,得到的結果是一個均值為0,方差為1的向量,對z[l-1]的規格化,我們往往不一定希望得到均值為0,方差為1的結果,所以對其進行如下處理:

技術分享圖片

通過調整γ與β的取值,我們可以得到任意均值,方差的結果,如上右圖,其中γ與β是可學習的參數

5.Fitting Batch norm into a neural network

如果把對z[l-1]的規格化用於batch中,則過程如下:

技術分享圖片

上述過程如果利用框架的話,可以一行代碼就完成

值得一提的是,我們可以把b[l]省略,因為對z[l-1]進行了一個求平均,然後減去平均,這樣,常數項b便對其不構成影響,而是通過規格化後調整β對其進行一個偏移

對mini-batch采用規格化與之前類似,過程如下:

技術分享圖片

在使用梯度下降算法時,分別對W [l] , β[l] 和γ [l] 進行叠代更新。除了傳統的梯度下降算法之外,還可以使用我們之前介紹過的動量梯度下降、RMSprop或者Adam等優化算法。

6.why does Batch Norm work

技術分享圖片

假設我們訓練了淺層網絡,其中訓練樣本為黑色的貓,測試樣本為各種顏色的貓,這種訓練樣本和測試樣本分布不同的情況稱為convirate shift.

這種情況下我們往往需要對模型進行一個重新訓練

技術分享圖片

重新訓練後,各個w[l],b[l]都會發生一個偏移,而batch norm可以減弱convirate shift,使模型更加的穩定,batch norm對每一層都進行了一個均值與方差化的處理,減少了之前層因的w,b變化所帶來的影響,使每一層變得更加的獨立

BN也有一些類似正則化的地方:

技術分享圖片

每一個mini-batch 都會進行一個均值,方差的歸一化計算

這會增加一些noise對於z~[l],因為每一個mini batch的情況不同,均值和方差也會有一些小noise,有些類似dropout正則化,對於每一個隱藏層的激活函數會增加noise,dropout增加noise是因為隨機刪除神經元,導致計算的z[l]具有噪音,如果你想增強dropout的正則化效果,可以使用BN.

mini-batch size越大,BN的正則化效果越弱,因為size越大,均值方差的noise也會越小,計算得到的Z~[l]噪音也越小,bn起到的正則化效果也就弱了

7.Batch Norm at test time

BN的測試

訓練的時候BN 所涉及到的μ和σ2都是mini-batch的,但測試的時候,μ和σ2怎麽解決,測試一個樣本的話,求μ和σ2是沒有意義的

技術分享圖片

在實際中,我們往往采用指數加權平均來對μ和σ2進行一個估計,具體做法如上:假設我們要求第l層的μ和σ2,可以將每一個mini-batch中的μ和σ2求出來,然後應用指數加權平均對μ和σ2進行一個估計,再利用訓練過程得到的γ β 值計算出各層的z ~ (i)

8.softmax regression

之前所學的都是二分類問題,對於兩類問題的分類,如果是更多的分類情況可以使用softmax

技術分享圖片

如圖,要分4個類別需要使用softmax,我們定義C=4,它的激活函數為

技術分享圖片

其中a_i[L]即屬於該類的概率

9.Trying a softmax classifier

訓練一個softmax 與二分類問題有些不同,不同之處在於正向傳播的輸出層的激活函數不同,計算loss function時的表達式也不同,計算softmax的loss function和cost function的表達式如下:

技術分享圖片

技術分享圖片

,反向傳播的推導過程也不同,如下:

技術分享圖片

向量化後,dZ=A[l]-Y,其結果與二分類的結果相同

10.deep learning framwork

技術分享圖片

深度學習框架很多,選擇原則如上:易與開發,運行速度快,在很長一段時間內會保持開源.

11.Tensorflow

技術分享圖片

具體就不做描述了..

吳恩達深度學習筆記 course2 week3 超參數調試,Batch Norm,和程序框架