1.數(shù)據(jù)劃分
將數(shù)據(jù)分成三部分:訓(xùn)練集瞧掺,驗(yàn)證集(dev set),測(cè)試集
我們開(kāi)始對(duì)訓(xùn)練執(zhí)行算法纷宇,通過(guò)驗(yàn)證集選擇最好的模型夸盟,經(jīng)過(guò)充分驗(yàn)證,我們選定了最終模型像捶,然后就可以在測(cè)試集上進(jìn)行評(píng)估了上陕。
傳統(tǒng)的劃分比例:(適用于數(shù)據(jù)集規(guī)模較小的)
70%驗(yàn)證集桩砰,30%測(cè)試集
60%訓(xùn)練,20%驗(yàn)證释簿,20%測(cè)試
數(shù)據(jù)集規(guī)模較大的亚隅,驗(yàn)證集和測(cè)試集要小于數(shù)據(jù)總量的20%或10%。
要保證驗(yàn)證集和測(cè)試集的數(shù)據(jù)來(lái)自統(tǒng)一分布庶溶。
如果不需要無(wú)偏評(píng)估算法性能煮纵,那么也可以不設(shè)置測(cè)試集,可以再訓(xùn)練集上訓(xùn)練偏螺,嘗試不同的模型框架行疏,在驗(yàn)證集上評(píng)估這些模型,然后迭代選出適用的模型套像。
2.bias & variance
如果訓(xùn)練集的誤差很小酿联,而驗(yàn)證集的誤差比較大,那么也就意味著我們可能過(guò)擬合了訓(xùn)練集夺巩,驗(yàn)證集在某種程度上沒(méi)有充分利用交叉驗(yàn)證的作用贞让,這種情況稱(chēng)為“高方差”。
查看數(shù)據(jù)集的擬合情況的誤差柳譬,可以看出是不是“高偏差”喳张。
初始模型訓(xùn)練完成后,首先看一下算法的偏差高不高美澳,如果偏差的確很高销部,嘗試換個(gè)模型,比如含有更多的隱藏層或隱藏單元人柿,或花費(fèi)更多的時(shí)間訓(xùn)練網(wǎng)絡(luò)柴墩,或采用更好的優(yōu)化算法。當(dāng)偏差降下來(lái)之后凫岖,意味著當(dāng)前這個(gè)模型可以擬合或者過(guò)擬合訓(xùn)練集江咳,接下來(lái)檢查一下方差有沒(méi)有問(wèn)題,如果方差高哥放,有兩種方式歼指,一是采用更多的數(shù)據(jù),二是正則化減少過(guò)擬合甥雕。
3.正則化
正則化 L1和L2:
1.在代價(jià)函數(shù)的基礎(chǔ)上再加上λ/2m*范數(shù)踩身,其中λ為正則化參數(shù),我們通常使用驗(yàn)證集來(lái)配置這個(gè)參數(shù)社露。
神經(jīng)網(wǎng)絡(luò)中的正則化:弗洛貝尼烏斯范數(shù)挟阻,表示一個(gè)矩陣中所有數(shù)的平方和(矩陣L2范數(shù))
L2范數(shù)正則化被稱(chēng)為“權(quán)重衰減”,因?yàn)槲覀兗由险齽t化之后,對(duì)權(quán)重的更新相當(dāng)于乘了(1-aλ/m)的權(quán)重附鸽,在此基礎(chǔ)上再減去未加正則化之前的梯度下降的部分脱拼,見(jiàn)下圖:
2.為什么正則化能避免過(guò)擬合?
如果正則化參數(shù)λ很大坷备,那么參數(shù)W就會(huì)很小熄浓,相應(yīng)的Z=WX+b,Z也會(huì)變小,當(dāng)Z的范圍落在下面這個(gè)圖的紅色部分時(shí)省撑,g(z)大致呈線(xiàn)性赌蔑,而線(xiàn)性的激活函數(shù)我們通過(guò)前一章知道它并不能用于復(fù)雜的決策,本質(zhì)上和Logistic回歸是一樣的竟秫。
Dropout正則化
1.dropout會(huì)遍歷網(wǎng)絡(luò)的每一層娃惯,并設(shè)置消除神經(jīng)網(wǎng)絡(luò)中節(jié)點(diǎn)的概率。
最常用的是inverted dropout, 會(huì)除以一個(gè)keep-prob(代表每一層上保留單元的概率)的值鸿摇,測(cè)試過(guò)程中不要用drouput石景,因?yàn)樵跍y(cè)試階段進(jìn)行預(yù)測(cè)時(shí)劈猿,如果應(yīng)用dropout預(yù)測(cè)會(huì)受到干擾拙吉。
2.為什么dropout有效?
主觀上看揪荣,它意味著這個(gè)神經(jīng)網(wǎng)絡(luò)不依賴(lài)于任何一個(gè)特征筷黔,因?yàn)樵搯卧妮斎肟赡茈S時(shí)被清除,該單元就會(huì)通過(guò)這種方式傳播所有的權(quán)重仗颈,會(huì)產(chǎn)生收縮權(quán)重的平方范數(shù)的效果佛舱,類(lèi)似于L2正則化。
3.實(shí)施dropout中有兩個(gè)技巧挨决,且大多用于計(jì)算機(jī)視覺(jué)領(lǐng)域请祖。①如果擔(dān)心某些層比其它層更容易過(guò)擬合,可以把某些層的keep-prob值設(shè)置的低一些脖祈。②在某些層上應(yīng)用dropout,有些層不用dropout肆捕。
4.采用dropout帶來(lái)的缺點(diǎn)是代價(jià)函數(shù)J不再被明確定義,很難檢查梯度下降的值盖高。
其他正則化方法
數(shù)據(jù)增強(qiáng)(Data Augmentation)
1??從數(shù)據(jù)源頭采集更多數(shù)據(jù)復(fù)制2??原有數(shù)據(jù)并加上隨機(jī)噪聲3??重采樣4??根據(jù)當(dāng)前數(shù)據(jù)集估計(jì)數(shù)據(jù)分布參數(shù)慎陵,使用該分布產(chǎn)生更多數(shù)據(jù)等。
Early stopping(繪制驗(yàn)證集誤差會(huì)發(fā)現(xiàn)驗(yàn)證集誤差通過(guò)先呈下降趨勢(shì)然后在某個(gè)節(jié)點(diǎn)處開(kāi)始上升喻奥,于是我們?cè)谶@個(gè)地方停止訓(xùn)練)席纽。Early stopping的缺點(diǎn)是過(guò)早了停止了梯度下降,不能獨(dú)立的處理方差和偏差的問(wèn)題撞蚕。
5.神經(jīng)網(wǎng)絡(luò)的權(quán)重初始化tips
如果用的激活函數(shù)是relu,方差設(shè)置為2/n^([l?1])
如果用的激活函數(shù)時(shí)tanh润梯,方差設(shè)置為√(1/n^[l?1] )(這種叫Xavier初始化)
6.梯度檢查
把網(wǎng)絡(luò)中的參數(shù)W1,W2,W3…b1,b2,b3等轉(zhuǎn)換成一個(gè)巨大的向量θ,那么代價(jià)函數(shù)J就是θ的函數(shù)纺铭。
如何定義這兩個(gè)向量是否真的接近彼此抒和?我們使用下面的數(shù)學(xué)公式
如果這個(gè)值在10^(?7)或更小,就意味著導(dǎo)數(shù)逼近是正確的彤蔽。(使用np.linalg.norm(...))
注意事項(xiàng):①不要再訓(xùn)練中使用梯度檢驗(yàn)摧莽。調(diào)試的時(shí)候才需要。
②如果算法的梯度檢驗(yàn)失敗顿痪,要檢查每一項(xiàng)找出Bug镊辕。
③如果代價(jià)函數(shù)有正則化的形式,那么在實(shí)施梯度檢驗(yàn)時(shí)一定要注意包括這個(gè)正則項(xiàng)蚁袭。
④梯度檢驗(yàn)不能和dropout同時(shí)使用征懈。一般是先關(guān)閉dropout,用梯度檢驗(yàn)進(jìn)行檢查在沒(méi)有dropout的情況下算法是正確的,再打開(kāi)dropou
7揩悄、mini-batch
1.batch梯度下降
假設(shè)X的維度是(nx,m),Y的維度是(1,m)卖哎。之前的向量化能夠讓我們相對(duì)較快的處理m個(gè)樣本。但如果m很大删性,處理的速度仍然很慢亏娜,這意味著我們必須處理整個(gè)訓(xùn)練集才執(zhí)行一次梯度下降。
2.mini-batch
如果將訓(xùn)練集分成小一點(diǎn)的子集訓(xùn)練蹬挺,在每一個(gè)子集訓(xùn)練后執(zhí)行一次梯度下降维贺,那么這些子集就是mini-batch。在每一個(gè)Mini-batch上進(jìn)行前向傳播巴帮、計(jì)算損失函數(shù)溯泣、反向傳播更新參數(shù)的過(guò)程就叫做一個(gè)epoch径玖。
Mini-batch相比于batch梯度下降來(lái)說(shuō)狈涮,代價(jià)函數(shù)會(huì)有更多的噪聲,大趨勢(shì)上代價(jià)函數(shù)會(huì)隨著每次迭代而減小坤学。
我們需要確定mini-batch的大小,假設(shè)訓(xùn)練集的大小是m:
Mini-batch數(shù)量=m 即Batch gradient descent(batch梯度下降)用押,遍歷全部數(shù)據(jù)集算一次損失函數(shù)肢簿,然后算函數(shù)對(duì)各個(gè)參數(shù)的梯度,更新梯度只恨。太慢译仗。
Mini-batch數(shù)量=1 即stochastic gradient descent(隨機(jī)梯度下降),每看一個(gè)數(shù)據(jù)就算一下?lián)p失函數(shù)官觅,然后求梯度更新參數(shù)纵菌。
3.如何選取mini-batch的大小休涤?
m<2000時(shí)咱圆,直接用Batch梯度下降笛辟;m數(shù)量較大時(shí),mini-batch的大小一般設(shè)置為2的次方序苏,一般64-512的mini-batch比較常見(jiàn)手幢。
8.指數(shù)加權(quán)平均
但是使用指數(shù)加權(quán)平均的方法在前期會(huì)有很大的偏差,為此我們引入了偏差修正的概念:
帶修正偏差的指數(shù)加權(quán)平均
9.使用momument的梯度下降法
更新的時(shí)候在一定程度上保留之前更新的方向,同時(shí)利用當(dāng)前batch的梯度微調(diào)最終的更新方向忱详。
白話(huà)解釋?zhuān)?br>
在對(duì)應(yīng)上面的計(jì)算公式中围来,將Cost function想象為一個(gè)碗狀,想象從頂部往下滾球匈睁,其中:微分項(xiàng)dw,db想象為球提供的加速度监透;動(dòng)量項(xiàng)vdw,vdb相當(dāng)于速度;
- 若當(dāng)前梯度的方向與歷史梯度一致(表明當(dāng)前樣本不太可能為異常點(diǎn))航唆,則會(huì)增強(qiáng)這個(gè)方向的梯度胀蛮。
- 若當(dāng)前梯度與歷史梯方向不一致,則梯度會(huì)衰減糯钙。
小球在向下滾動(dòng)的過(guò)程中粪狼,因?yàn)榧铀俣鹊拇嬖谒俣葧?huì)變快,但是由于ββ的存在任岸,其值小于1再榄,可以認(rèn)為是摩擦力,所以球不會(huì)無(wú)限加速下去演闭。
其中的超參數(shù)為:α不跟,β
10.RMSProp
如下圖,我們想要減緩縱軸方向的浮動(dòng)幅度米碰,同時(shí)加快橫軸方向的學(xué)習(xí)。假設(shè)縱軸是b购城,橫軸是W吕座,那么RMSprop有以下的公式
我們希望Sdw較小,這樣在更新的時(shí)候除以一個(gè)較小的數(shù)就可以加快橫軸的學(xué)習(xí)瘪板;===> dw較小
同時(shí)希望Sdb較大吴趴,在更新b的時(shí)候除以一個(gè)較大的數(shù)就可以減緩縱軸上的變化。===>db較大
RMSprop將微分項(xiàng)進(jìn)行平方侮攀,然后使用平方根進(jìn)行梯度更新锣枝,同時(shí)為了確保算法不會(huì)除以0,平方根分母中在實(shí)際使用會(huì)加入一個(gè)很小的值如ε
11.Adam
一個(gè)結(jié)合了momentum和RMSprop的自適應(yīng)學(xué)習(xí)率的方法兰英。它利用梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率撇叁。Adam的優(yōu)點(diǎn)主要在于經(jīng)過(guò)偏置校正后,每一次迭代學(xué)習(xí)率都有個(gè)確定范圍畦贸,使得參數(shù)比較平穩(wěn)陨闹。
權(quán)重更新:
其中的超參數(shù)有:
α:需要進(jìn)行調(diào)試楞捂;
β1:常用缺省值為0.9,dw的加權(quán)平均趋厉;
β2:推薦使用0.999寨闹,dw2的加權(quán)平均值;
ε:推薦使用10^?8
12.學(xué)習(xí)率衰減
- 常用
- 指數(shù)衰減
- 離散下降:discrete stair caese(不同階段使用不同的學(xué)習(xí)速率)
-
其他
13.局部最優(yōu)問(wèn)題
在高緯度的情況下:
- 幾乎不可能陷入局部最小值點(diǎn)君账;
- 處于鞍點(diǎn)的停滯區(qū)會(huì)減緩學(xué)習(xí)過(guò)程繁堡,利用如Adam等算法進(jìn)行改善
14.超參數(shù)調(diào)試
經(jīng)常調(diào)試的有α,mini-batch的大小乡数,隱藏單元帖蔓。當(dāng)應(yīng)用Adam算法時(shí),不需要調(diào)試β1瞳脓,β2塑娇,ε
在深度學(xué)習(xí)領(lǐng)域,由于不知道哪個(gè)超參數(shù)更重要劫侧,推薦采用隨機(jī)選擇點(diǎn)埋酬,還有就是考慮使用由粗糙到精細(xì)的搜索過(guò)程。
在超參數(shù)選擇時(shí)烧栋,一些超參數(shù)是在一個(gè)范圍內(nèi)進(jìn)行均勻隨機(jī)取值的写妥,但還有一些參數(shù)均勻隨機(jī)取值不合適,這就需要使用對(duì)數(shù)標(biāo)尺搜索超參數(shù)审姓。
①如超參數(shù)α學(xué)習(xí)速率珍特,使用對(duì)數(shù)標(biāo)尺搜索超參數(shù):代碼中可以r=-4*np.random.rand()
在對(duì)數(shù)坐標(biāo)系中取值,取最小的對(duì)數(shù)得到a的值魔吐,取最大值的對(duì)數(shù)得到b值扎筒,現(xiàn)在在對(duì)數(shù)軸上的10a~10b區(qū)間取值,在a,b之間隨意均勻的選取r酬姆,超參數(shù)設(shè)置為10^r嗜桌。
②假設(shè)我們現(xiàn)在調(diào)整β的值,我們認(rèn)為β的取值在0.9~0.999之間辞色,那就可以讓1-β落在0.001-0.1之間骨宠,從而調(diào)整β的值。
15.歸一化
歸一化輸入需要兩個(gè)步驟:零均值相满,歸一化方差层亿,我們希望訓(xùn)練集和測(cè)試集都是通過(guò)相同的μ和σ^2定義的數(shù)據(jù)轉(zhuǎn)換。
我們歸一化的是輸入的特征值立美,不是y匿又。
網(wǎng)絡(luò)中激活值的歸一化:Batch Norm
1.公式
其中g(shù)amma和β是可以更新學(xué)習(xí)的參數(shù),兩個(gè)參數(shù)的值來(lái)確定z~的分布悯辙。
2.意義
當(dāng)對(duì)隱藏層的輸出值z(mì)進(jìn)行歸一化以后琳省,我們得到的是一個(gè)均值為0方差為1的分布迎吵,但是,假設(shè)這一層的激活函數(shù)是sigmoid针贬,這個(gè)分布就意味著所有的值都集中在sigmoid在原點(diǎn)附近近似線(xiàn)性的一段了击费,因此,使用上面的公式重新對(duì)其賦予我們想要的任意值桦他。
3.將batch norm擬合進(jìn)神經(jīng)網(wǎng)絡(luò)
對(duì)每一個(gè)mini-batch,使用z = WX+b計(jì)算出每一個(gè)隱藏層的輸出蔫巩,對(duì)其進(jìn)行batch norm(BN)后繼續(xù)送入下一個(gè)隱藏層…一直到輸出層,之后進(jìn)行一步梯度下降法(可以采用之前說(shuō)的momentum,rmsprop,Adam梯度下降法)快压。其中在對(duì)z進(jìn)行BN時(shí)圆仔,由于要計(jì)算z的均值再減去平均值,所以z中的任何常熟都會(huì)被抵消蔫劣,因此b這個(gè)參數(shù)是無(wú)用的坪郭,可以設(shè)置為0。
4.Batch norm為什么有用脉幢?
①類(lèi)似于前面的歸一化歪沃,可以改變cost function的形狀,使得每一次梯度下降都可以更快的接近函數(shù)的最小值點(diǎn)嫌松,從而加速模型訓(xùn)練的過(guò)程沪曙。只不過(guò)batch norm不是單純的將輸入的特征進(jìn)行歸一化,而是將各個(gè)隱藏層的激活函數(shù)的激活值進(jìn)行的歸一化萎羔,并調(diào)整到另外的分布液走。
②限制了前層的參數(shù)更新導(dǎo)致對(duì)后面網(wǎng)絡(luò)數(shù)值分布程度的影響,使得輸入后層的數(shù)值變得更加穩(wěn)定贾陷。
5.在訓(xùn)練數(shù)據(jù)上使用Batch norm
訓(xùn)練過(guò)程中缘眶,我們是在每個(gè)Mini-batch使用Batch Norm,來(lái)計(jì)算所需要的均值μ和方差σ^2昵宇。但是在測(cè)試的時(shí)候磅崭,我們需要對(duì)每一個(gè)測(cè)試樣本進(jìn)行預(yù)測(cè),無(wú)法計(jì)算均值和方差瓦哎。
此時(shí),我們需要單獨(dú)進(jìn)行估算均值μ和方差σ^2柔逼。通常的方法就是在我們訓(xùn)練的過(guò)程中蒋譬,對(duì)于訓(xùn)練集的Mini-batch,使用指數(shù)加權(quán)平均愉适,當(dāng)訓(xùn)練結(jié)束的時(shí)候犯助,得到指數(shù)加權(quán)平均后的均值μμ和方差σ2σ2,而這些值直接用于Batch Norm公式的計(jì)算维咸,用以對(duì)測(cè)試樣本進(jìn)行預(yù)測(cè)剂买。
16.softmax
1.作用:將所有可能的輸出歸一化惠爽,輸入一個(gè)向量,輸出一個(gè)向量瞬哼。
softmax回歸相比于hard max(將最大元素位置放1婚肆,其余放0)更加的溫和,將Logistic regression推廣到了兩種分類(lèi)以上坐慰。
2.怎么訓(xùn)練帶有softmax輸出層的神經(jīng)網(wǎng)絡(luò)较性?
損失函數(shù)一般選取的是交叉熵
所以為了最小化Loss function,我們的目標(biāo)就變成了使得y^2的概率盡可能的大
對(duì)應(yīng)的Cost function
3.Softmax 的梯度下降
在Softmax層的梯度計(jì)算公式為: