吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化
文章目錄
- 第一周:深度學(xué)習(xí)的實(shí)用層面
- 訓(xùn)練、開發(fā)、測試集
- 偏差、方差
- 機(jī)器學(xué)習(xí)基本步驟
- L2正則化
- Dropout(隨機(jī)失活)正則化
- 其它正則化方法
- 正則化輸入
- 神經(jīng)網(wǎng)絡(luò)的權(quán)重初始化
- 梯度檢驗(yàn)
- 第二周:優(yōu)化算法
- Mini-Batch梯度下降法
- 指數(shù)加權(quán)平均
- 指數(shù)加權(quán)平均的偏差修正
- 動(dòng)量梯度下降法
- RMSprop
- Adam優(yōu)化算法
- 學(xué)習(xí)率衰減
- 第三周:超參數(shù)調(diào)試、Batch正則化、程序框架
- 調(diào)試處理
- 為超參數(shù)選擇合適的范圍
- Batch Norm/z的歸一化處理
- Batch Norm作用的原理
- SoftMax回歸
第一周:深度學(xué)習(xí)的實(shí)用層面
訓(xùn)練、開發(fā)、測試集
應(yīng)用深度學(xué)習(xí)是一個(gè)典型的迭代過程,因?yàn)椴豢赡芤婚_始就確定最優(yōu)的超參數(shù),需要多次循環(huán)往復(fù),才能設(shè)計(jì)優(yōu)秀的神經(jīng)網(wǎng)絡(luò),因此循環(huán)該過程的效率是決定項(xiàng)目進(jìn)展速度的一個(gè)關(guān)鍵因素,而創(chuàng)建高質(zhì)量的訓(xùn)練數(shù)據(jù)集,驗(yàn)證集和測試集也有助于提高循環(huán)效率。如果不需要無偏估計(jì),也可以不設(shè)置測試集。
數(shù)據(jù)規(guī)模較小時(shí),開發(fā)和測試集占總數(shù)據(jù)的30%~40%;數(shù)據(jù)量較大時(shí)驗(yàn)證集和測試集占數(shù)據(jù)總量的比例會(huì)趨于變得更小。
建議確保驗(yàn)證集和測試集的數(shù)據(jù)來自同一分布。
偏差、方差
假設(shè)已有一個(gè)識別貓的分類器。已知人眼識別的錯(cuò)誤率接近0%
訓(xùn)練集錯(cuò)誤率:15% 測試集錯(cuò)誤率:16% 擬合結(jié)果的偏差較大
訓(xùn)練集錯(cuò)誤率:5% 測試集錯(cuò)誤率:20% 擬合結(jié)果方差較大
訓(xùn)練集錯(cuò)誤率:20% 測試集錯(cuò)誤率:40% 擬合結(jié)果偏差和方差都較大
訓(xùn)練集錯(cuò)誤率:0.1% 測試集錯(cuò)誤率:1% 擬合結(jié)果的誤差和方差合理
機(jī)器學(xué)習(xí)基本步驟
L2正則化
解決高方差通常采用增加數(shù)據(jù)量(如果可行)、正則化的方法。
假設(shè)采用tanh作為激活函數(shù),當(dāng)λ很大而w接近0的時(shí)候,z的范圍非常接近0,而對于tanh,接近0的部分約等于線性函數(shù),因此將神經(jīng)網(wǎng)絡(luò)的各個(gè)層向線性靠近,使得多層的神經(jīng)網(wǎng)絡(luò)計(jì)算結(jié)果更簡單(參考前面課程中介紹的,為什么要使用非線性激活函數(shù)),減輕過擬合的情況。
Dropout(隨機(jī)失活)正則化
對于神經(jīng)網(wǎng)絡(luò)的每個(gè)隱層,對每個(gè)節(jié)點(diǎn)設(shè)定其失活的概率,被設(shè)置為失活的節(jié)點(diǎn)其激活后的值設(shè)置為0,不參與神經(jīng)網(wǎng)絡(luò)的計(jì)算。在測試時(shí)不使用dropout方法。
假設(shè)有一L=3的神經(jīng)網(wǎng)絡(luò),d3是一個(gè)布爾類型的矩陣,d3.shape=(第3層節(jié)點(diǎn)數(shù), 樣本數(shù))
在Python的運(yùn)算中,將d3中的True解析為1,False解析為0,其中每個(gè)元素為True或False的概率由輸入 keep-prob決定。
a3 =np.multiply(a3,d3),讓d3中 0 元素與a3中相對元素歸零。
a3 /= keep-prob,以保證a3的期望值不變。
可以為不同層設(shè)置不同的keep-prob值,將易發(fā)生過擬合的層keep-prob值設(shè)置得更低;也可以將某些不會(huì)發(fā)生過擬合的層的keep-prob值設(shè)置為1,即不使用dropout阻塞節(jié)點(diǎn)。
使用dropout的一個(gè)缺點(diǎn)是,代價(jià)函數(shù)J無法明確定義,不便觀察訓(xùn)練效果。
其它正則化方法
①數(shù)據(jù)擴(kuò)增:將原輸入的圖片進(jìn)行對稱、裁剪、旋轉(zhuǎn)處理,以較小的代價(jià)得到更大的數(shù)據(jù)集。
②提前終止訓(xùn)練:當(dāng)神經(jīng)網(wǎng)絡(luò)在迭代到某時(shí)刻時(shí),其表現(xiàn)已滿足要求,提前終止。
early stopping 的主要缺點(diǎn)就是不能獨(dú)立地處理這兩個(gè)問題,因?yàn)樘嵩缤V固荻认陆?#xff0c;也就是停止了優(yōu)化代價(jià)函數(shù)J,因?yàn)榻K止后不再嘗試降低代價(jià)函數(shù)J,所以代價(jià)函數(shù)J的值可能不夠小,同時(shí)又希望不出現(xiàn)過擬合,沒有采取不同的方式來解決這兩個(gè)問題,而是用一種方法同時(shí)解決兩個(gè)問題,這樣做的結(jié)果是要考慮的東西變得更復(fù)雜。
注意:正則化有損于訓(xùn)練集的表現(xiàn),因?yàn)樗鼤?huì)限制網(wǎng)絡(luò)過度擬合訓(xùn)練集的能力,但是它最終會(huì)提高測試集的表現(xiàn)。
正則化輸入
神經(jīng)網(wǎng)絡(luò)的權(quán)重初始化
為了避免深層神經(jīng)網(wǎng)絡(luò)中,梯度爆炸和梯度消失的現(xiàn)象,需要對各層節(jié)點(diǎn)的權(quán)值進(jìn)行合理初始化。
梯度檢驗(yàn)
注意:
①不要在訓(xùn)練中使用梯度檢驗(yàn),它只用于調(diào)試。
②如果𝑑𝜃approx[𝑖]與𝑑𝜃[𝑖]的值相差很大,查找不同的𝑖值,找出是哪個(gè)導(dǎo)致𝑑𝜃approx[𝑖]與𝑑𝜃[𝑖]的值相差這么多。如果你發(fā)現(xiàn),相對某些層或某層的𝜃或𝑑𝜃的值相差很大,但是dw[𝑙]的各項(xiàng)非常接近,(𝜃的各項(xiàng)與𝑏和𝑤的各項(xiàng)都是一一對應(yīng)的)這時(shí)可能在計(jì)算參數(shù)𝑏的導(dǎo)數(shù)𝑑𝑏的過程中存在 bug。反過來也是一樣。
③在實(shí)施梯度檢驗(yàn)時(shí),如果使用正則化,注意包括正則項(xiàng)。
④梯度檢驗(yàn)不能與 dropout 同時(shí)使用。
第二周:優(yōu)化算法
Mini-Batch梯度下降法
將大規(guī)模的輸入集合切分成子集,并進(jìn)行梯度下降的處理。如:X具有5,000,000樣本數(shù),minibatch_size=1000,則X可劃分為X{1}…X{5000},對每個(gè)子集進(jìn)行向量化的正向傳播、反向傳播、更新參數(shù)。
采用Mini-Batch梯度下降法時(shí),cost值并非隨著迭代次數(shù)單調(diào)下降,但整體趨勢是下降的。
MiniBatch_Size的選擇:
①當(dāng)MiniBatch_Size=1時(shí),每次迭代僅輸入一個(gè)樣本,本質(zhì)上是隨機(jī)梯度下降算法。
②當(dāng)MiniBatch_Size=m時(shí),本質(zhì)上是Batch梯度下降法。
因此要在1~m的范圍內(nèi)選擇合適的值,使得每次迭代都能快速進(jìn)行,且迭代次數(shù)不至于過多。
batch梯度下降法從某處開始,相對噪聲低些,幅度也大一些。
在隨機(jī)梯度下降法中,每次迭代只對一個(gè)樣本進(jìn)行梯度下降,大部分時(shí)候向著全局最小值靠近。有時(shí)候你會(huì)遠(yuǎn)離最小值,因?yàn)槟莻€(gè)樣本恰好給你指的方向不對,因此隨機(jī)梯度下降法是有很多噪聲的,平均來看,它最終會(huì)靠近最小值,不過有時(shí)候也會(huì)方向錯(cuò)誤,因?yàn)殡S機(jī)梯度下降法永遠(yuǎn)不會(huì)收斂,而是會(huì)一直在最小值附近波動(dòng),但它并不會(huì)在達(dá)到最小值并停留在此。
指數(shù)加權(quán)平均
基本公式
當(dāng)β較小時(shí),1-β較大,θt的權(quán)重較高,能更快適應(yīng)變化,但受噪聲影響更大。
反之,θt的權(quán)重較低,適應(yīng)變化更慢,但受噪聲影響小,整體趨于穩(wěn)定。
第100天的數(shù)據(jù)是θ[1-100]的權(quán)值和,此時(shí)β=0.9,θ[90]及其之前的數(shù)據(jù)的權(quán)值很小,因此V100約為最近10天的溫度平均情況。
指數(shù)加權(quán)平均的偏差修正
按照上述公式,初始時(shí)期對溫度的估計(jì)會(huì)明顯偏小。
如果關(guān)心初始時(shí)期的偏差,可以在第t天時(shí)用Vt/(1-β^t)估計(jì)當(dāng)天的溫度。
隨著t的增加,偏差修正的效果逐漸下降。因此只有在初期的時(shí)候偏差修正起作用。
動(dòng)量梯度下降法
在梯度下降的過程中,希望縱軸的擺動(dòng)盡量小,橫軸的跨度盡量大。
注意!右側(cè)Vdw并非上一層的Vdw,而是該層上次更新參數(shù)時(shí)的Vdw
RMSprop
Adam優(yōu)化算法
本質(zhì)上是動(dòng)量法和RMSprop的結(jié)合。
學(xué)習(xí)率衰減
當(dāng)訓(xùn)練結(jié)果接近最優(yōu)值時(shí),繼續(xù)訓(xùn)練會(huì)使參數(shù)值在其附近擺動(dòng),此時(shí)可以嘗試減小學(xué)習(xí)率使其逼近最優(yōu)解。
第三周:超參數(shù)調(diào)試、Batch正則化、程序框架
調(diào)試處理
在神經(jīng)網(wǎng)絡(luò)中,超參數(shù)的重要程度存在差異。如:α是最重要的超參數(shù),而Adam方法中的ε重要性很低。
在搜索超參數(shù)時(shí),采用隨機(jī)取樣而不是網(wǎng)格取樣,效果更好。(因?yàn)槌瑓?shù)的重要性存在差異)
在最優(yōu)樣本附近進(jìn)行細(xì)粒度搜索,以確定更好的超參數(shù)值。
為超參數(shù)選擇合適的范圍
例如,對α在[0.0001, 1]進(jìn)行取值時(shí),用對數(shù)標(biāo)尺(而非線性標(biāo)尺)搜索超參數(shù)的方式會(huì)更合理。
在 Python 中,使 r=-4*np.random.rand(),α = 10r
當(dāng)選擇β時(shí),可以考察1-β的值。當(dāng)β接近1時(shí),其對變化的靈敏度會(huì)顯著提高,因此不能使用線性標(biāo)尺。
Batch Norm/z的歸一化處理
Batch Norm一次只能處理一個(gè) mini-batch 數(shù)據(jù)
默認(rèn)對每層的z進(jìn)行歸一化,而非a。
時(shí)刻記住:每層網(wǎng)絡(luò)的每個(gè)單元的輸出z,都是下層網(wǎng)絡(luò)的輸入,類比輸入層的一個(gè)(或多個(gè)樣本的同一位置的)特征。
將Batch Norm擬合進(jìn)神經(jīng)網(wǎng)絡(luò)中,對每個(gè)batch第k層的z[k],根據(jù)γ[k]和β[k]計(jì)算得歸一化后的值,再進(jìn)行激活。
因?yàn)闅w一化的操作,所以z[k]=w[k]*a[k-1]+b[k]中的b[k]可以刪去。
操作流程:
for k in batch_num:
前向傳播計(jì)算z{k},并用BN計(jì)算z~{k}
反向傳播計(jì)算dw{k},dγ{k},dβ{k}
更新參數(shù)w,γ,β # 可以使用梯度法,Adam方法,動(dòng)量法等
Batch Norm作用的原理
當(dāng)神經(jīng)網(wǎng)絡(luò)在之前層中更新參數(shù),Batch Norm可以確保無論其怎樣變化,得到z的均值和方差保持不變,所以即使z的值改變,至少他們的均值和方差是由β和γ決定的值。
Batch Norm減少了輸入值改變的問題,使這些值變得更穩(wěn)定,神經(jīng)網(wǎng)絡(luò)后層會(huì)有更堅(jiān)實(shí)的基礎(chǔ)。即使輸入分布改變了一些,后層網(wǎng)絡(luò)的值會(huì)改變得更少,即使后層適應(yīng)的程度減小了。它減弱了前層參數(shù)的作用與后層參數(shù)的作用之間的聯(lián)系,使得網(wǎng)絡(luò)每層都可以自己學(xué)習(xí),稍稍獨(dú)立于其它層,這有助于加速整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)。
SoftMax回歸
Loss(y, y_hat) = -ylog(y_hat)
Cost(Y, Y_hat) = ΣLoss(Y, Y_hat) / m
dz[l] = y_hat - y
有關(guān)tensorflow的用法的章節(jié)不在此記錄。
總結(jié)
以上是生活随笔為你收集整理的吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山药皮的功效与作用、禁忌和食用方法
- 下一篇: 吴恩达DeepLearningCours