吴恩达深度学习笔记7-Course2-Week3【超参数调试、Batch 正则化和程序框架】
超參數調試、Batch 正則化和程序框架
一、超參數調試(hyperparameter tuning)
推薦的超參數重要性排序:
1、學習率(learning rate): α
2、隱藏神經單元(hidden units); mini-batch的大小 (mini-batch size); β (momentum)
3、神經網絡層數(layers); 學習率衰減率(learning rate decay)
4、Adam優(yōu)化算法的其它超參數,正常不用調優(yōu)
參數調試的方法:
網格點選取(grid):
對每一個超參數取一系列不同的值, 組成一個大表包含所有的組合,然后從頭到尾一個一個試。超參數比較少的情況下使用。
隨機選擇(select random values):
對每一個超參數隨機選取不同的值組合成一個實驗組合, 然后進行調試,重復隨機選取。超參數較多的情況下使用,通常神經網絡采取這種方式。
粗超到精細(coarse to fine):
先進行比較粗超的調試,如果發(fā)現在某一區(qū)域里的點效果都比較好,對這個的小區(qū)域進行更精細的調試。
選擇超參數的合理范圍(appropriate scale):
在 0.0001~1 的范圍內進行進行均勻隨機取值,則有90%的概率選擇到 0.1~1 之間,而只有10%的概率選擇到0.0001~0.1之間,顯然是不合理的。合理的選擇應該是對于不同比例范圍隨機選取的概率一樣,如在 0.0001~0.001、0.001~0.01、0.01~0.1、0.1~1 中隨機選擇的概率一樣。稱為對數坐標選擇,即logx。
python實現代碼:
超參數調試的不同策略(Panda & Caviar):
計算資源有限時:使用Panda策略(左圖),每次僅調試一個模型,不斷查看效果并相應的修改超參數;
計算資源充足時:使用Caviar策略(右圖),同時并行調試多個模型,選取其中最好的模型。
二、Batch 正則化(batch normolization)
Batch 正則化:
類似于我們對input進行歸一化,Batch 正則化是對每一層的每個z(不是a)進行歸一化,起到加速訓練的作用。公式如下:ε的作用就是不讓分母過小。
這樣所有的z都變成了平均值為0、方差為1的分布,但我們不希望隱藏層的單元總是如此,也許不同的分布會更有意義,所以進行下式計算:
這個式子的含義就是z可以還原會沒有歸一化的時候,也可以還原一部分,也可以不還原。這就使得 γ 和 β 需要被學習變成了超參數,可以用梯度下降進行更新。
將Batch正則化擬合進神經網絡(Fitting Batch Norm into a neural network):
因為z[l]=w[l]*a[l?1]+b[l],對z[l]進行歸一化使其均值為0,標準差為1的分布,所以無論b[l]值為多少,在歸一化的過程中都會被減去,所以可以將b[l]去掉,或者將其置零。之后由β和γ進行重新的縮放,其實β[l]等效于b[l]的功能。
Batch正則化梯度下降的實現(implementing gradient descent)
主要就是用把z[l] 替換為經過正則化的z?[l],還有刪除b[l]這個參數:
Batch Norm為什么有效:
1、類似于歸一化輸入,優(yōu)化cost function的形狀,加速迭代
2、因為對z進行正則化,使其值保持在相同的均值和方差的分布上。一定程度上減小z的變化,即減小了前層的參數更新對后層網絡數值分布的影響,使得輸入后層的數值變得更加穩(wěn)定。另一個角度就是可以看作,Batch Norm 削弱了前層參數與后層參數之間的聯系,使得網絡的每層都可以自己進行學習,相對其他層有一定的獨立性,這會有助于加速整個網絡的學習。
Batch Norm有輕微的正則化效果:
這只是順帶產生的副作用,好壞不定,不能以此來作為正則化的工具。
測試時如何進行 Batch Norm( Batch Norm at test time):
訓練時對每個Mini-batch使用Batch Norm時,可以計算出均值μ和方差σ2。但是在測試的時候,我們需要對每一個測試樣本進行預測,計算單個樣本的均值和方差沒有意義。因此需要事先給出均值μ和方差σ2,通常的方法在訓練每個Mini-batch時,緩存使用指數加權平均求出的均值μ和方差σ2,當訓練結束的時候,可以得到指數加權平均后的均值μ和方差σ2并把它用于測試集的 Batch Norm 的計算,進而對測試樣本進行預測。
三、Softmax回歸(Softmax Regression)
二分類的時候使用 Logistic Regression,即得出是該類別的概率。多分類的時候實現相同作用的叫做 Softmax Regression,即得出和為1的各個類別可能的概率。預測時將最大的概率值所對應的類別作為預測類別。
只要把最后一層的 hidden unit 的個數改為要分類的類別數即可。
softmax計算:
loss function–交叉熵(cross entropy):
cost function:
softmax層的梯度:
四、深度學習框架( Deep learning frameworks)
各種深度學習的框架和選擇框架的建議:
tensorflow框架的編程例子:
總結
以上是生活随笔為你收集整理的吴恩达深度学习笔记7-Course2-Week3【超参数调试、Batch 正则化和程序框架】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql rsync复制,mysql复
- 下一篇: Spring的任务调度@Schedule