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