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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化

發(fā)布時(shí)間:2023/12/4 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • 第一周:深度學(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。