2.1? 深度學(xué)習(xí)的實(shí)踐層面
(1)首先了解訓(xùn)練集狐榔、驗(yàn)證集褒搔、測試集的概念:
訓(xùn)練集:訓(xùn)練的樣本娜汁;
開發(fā)集:訓(xùn)練之后的參數(shù)放到這些數(shù)據(jù)中做驗(yàn)證腋逆;
測試集:最終的測試的樣本咐蚯。
一般的劃分比例:6:2:2把兔,當(dāng)數(shù)據(jù)量較大(上百萬丐怯,上千萬)户辞,驗(yàn)證集和測試集可縮減到0.5%-3%僵闯。另外卧抗,驗(yàn)證集和測試集的數(shù)據(jù)要來源相同,同分布鳖粟,也就是同一類的數(shù)據(jù)社裆。
(2)偏差和方差:
偏差:算法在訓(xùn)練集上面的錯(cuò)誤率,偏差大表現(xiàn)為欠擬合向图。
方差:算法在開發(fā)集和訓(xùn)練集上的錯(cuò)誤率差值泳秀,方差大表現(xiàn)為過擬合。
可用以下三幅圖來形象地解釋:圖1的曲線擬合程度較差张漂,即高偏差晶默,但波動(dòng)較小,接近線性航攒,故低方差磺陡。圖2的曲線擬合程度高,但波動(dòng)大漠畜,所以是過擬合币他。圖3介于兩者之間,擬合較好憔狞,且波動(dòng)小蝴悉,是優(yōu)秀的模型!
減小方差的方法主要有:
1.增加訓(xùn)練數(shù)據(jù)量(以圖像識別為例瘾敢,可以通過圖片反轉(zhuǎn)拍冠,放大增加數(shù)據(jù)量);
2.正則化簇抵;
3.提前終止等庆杜。
本文主要介紹正則化的原理和實(shí)現(xiàn)方法。
(3)正則化——避免過擬合
(3.1)L2正則
對損失函數(shù)加上一項(xiàng)碟摆,如下式:
由上圖可知晃财,權(quán)重W的L2范數(shù)的平方等于矩陣中所有元素的平方和,最后一項(xiàng)可理解為:對所有層的權(quán)重L2范數(shù)平方求和典蜕,再乘一個(gè)系數(shù)λ/2m断盛。
反向傳播還要對該項(xiàng)求導(dǎo)罗洗,即在原來的formbackprop基礎(chǔ)上多加一項(xiàng)范數(shù)求導(dǎo),如下式:
dW[l]=(formbackprop)+λ/m*W[l]
代入 W[l]=W[l]?α*dW[l]钢猛,可得到下式:
(1?α*λ/m)<1伙菜,所以每一次都會(huì)讓W(xué)變小,因此L2正則化也稱為“權(quán)重衰減”厢洞。
直觀理解:在代價(jià)函數(shù)加入正則項(xiàng)后仇让,如果λ非常大,為了滿足代價(jià)函數(shù)最小化躺翻,那么w[l]這一項(xiàng)必須非常接近于0丧叽,所以就等價(jià)于很多神經(jīng)元都沒有作用了,從原本的非線性結(jié)構(gòu)變成了近似的線性結(jié)構(gòu)公你,自然就不會(huì)過擬合了踊淳。如果是tanh函數(shù),當(dāng)w非常接近于0時(shí)陕靠,z也接近于0迂尝,該段接近于線性,那么整個(gè)神經(jīng)網(wǎng)絡(luò)也非常接近于線性的網(wǎng)絡(luò)剪芥,那么就不會(huì)過擬合了垄开。
(3.2)dropout(隨機(jī)失活)正則
即讓神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元按照一定的概率隨機(jī)失活。
直觀理解:因?yàn)樯窠?jīng)元有可能會(huì)被隨機(jī)清除税肪,這樣子在訓(xùn)練中溉躲,就不會(huì)過分依賴某一個(gè)神經(jīng)元或者特征的權(quán)重。但是這個(gè)東西的一大缺點(diǎn)就是代價(jià)函數(shù)J不能再被明確定義益兄,每次都會(huì)隨機(jī)移除一些節(jié)點(diǎn)锻梳,所以很難進(jìn)行復(fù)查。如果需要調(diào)試的話净捅,通常會(huì)關(guān)閉dropout疑枯,設(shè)置為1,這樣再來debug蛔六。需要注意的是:測試時(shí)荆永,要把dropout關(guān)掉!
(4)歸一化數(shù)據(jù)——提高訓(xùn)練速度
歸一化數(shù)據(jù)可以加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度国章,一般分兩步:零均值屁魏;歸一化方差。
(5)初始化參數(shù)——避免梯度消失和梯度爆炸
直觀理解:梯度消失和梯度爆炸是深層神經(jīng)網(wǎng)絡(luò)與生俱來的問題捉腥,為什么這么說?由于網(wǎng)絡(luò)層數(shù)多你画,基于梯度下降法的原理抵碟,dw[i]會(huì)隨著層數(shù)增加呈指數(shù)式的變化桃漾,導(dǎo)致不同的層學(xué)習(xí)的速度差異很大,有些層學(xué)習(xí)得很快拟逮,有些層幾乎不變撬统。
那如何解決?就需要對權(quán)重值W的初始參數(shù)動(dòng)一下手腳啦敦迄,一般希望z不要太大也不要太小恋追,所以呢,n越大罚屋,W越小才好苦囱。通常的做法就是讓W(xué)的方差等于1/n,如果是relu函數(shù)脾猛,就等于2/n撕彤。
(6)檢驗(yàn)梯度(雙邊梯度逼近)
2.2? 優(yōu)化算法
(1)Mini-batch 梯度下降法
簡單而言,將大的訓(xùn)練集分割成一個(gè)個(gè)小的子集猛拴,每次迭代將這些子集的損失函數(shù)求平均值羹铅,這樣便可以減小每次計(jì)算的向量大小,提高計(jì)算速度愉昆。另外职员,該方法的損失函數(shù)在迭代過程中會(huì)有波動(dòng),但總體是呈下降趨勢跛溉。
(2) 動(dòng)量(Momentum)梯度下降法
動(dòng)量梯度下降的基本思想就是:計(jì)算梯度的指數(shù)加權(quán)平均數(shù)焊切,并利用該梯度來更新權(quán)重。該方法可以減少損失函數(shù)下降時(shí)候的波動(dòng)倒谷,以較快的速度達(dá)到最小值蛛蒙。
動(dòng)量梯度下降法的算法如下圖所示,其中β通常取0.9渤愁∏K睿可以形象地認(rèn)為β給損失函數(shù)下降提供了一個(gè)阻力,在迭代過程中減小損失函數(shù)下降的加速度抖格,從而使其下降地更加“平穩(wěn)”诺苹。
(3) Adam 優(yōu)化算法
Adam 算法就是在動(dòng)量梯度下降法的基礎(chǔ)上作了一點(diǎn)改進(jìn),算法如下圖所示:
2.3? 超參數(shù)調(diào)試 和 Batch Norm
(1)超參數(shù)的調(diào)試
1.超參重要程度:以采用Adam優(yōu)化的深層神經(jīng)網(wǎng)絡(luò)為例雹拄,按照重要程度對超參數(shù)進(jìn)行排序收奔,最重要的是學(xué)習(xí)率,其次是各隱藏層的單元數(shù)和Mini-batch規(guī)模滓玖,然后是隱藏層層數(shù)坪哄,其他的超參數(shù)(如β1、β2、)都取默認(rèn)值翩肌。
2.調(diào)試方法:超參數(shù)較少:網(wǎng)格點(diǎn)的方式來調(diào)試模暗;超參數(shù)較多:隨機(jī)選擇點(diǎn)進(jìn)行調(diào)試。(原因是:不知道哪個(gè)超參數(shù)是更重要的念祭,隨機(jī)的方式去測試超參數(shù)點(diǎn)的性能兑宇,更為合理。)
3.Scale均勻隨機(jī):超參數(shù)調(diào)試時(shí)粱坤,某些超參數(shù)是在一個(gè)范圍內(nèi)進(jìn)行均勻隨機(jī)取值隶糕,如果在 0.001~1 的范圍內(nèi)進(jìn)行均勻隨機(jī)取值,隨機(jī)數(shù)會(huì)有90%的概率落在在0.1~1 之間站玄,這顯然是不合理的枚驻。所以我們需要對隨機(jī)數(shù)作一些處理,即將隨機(jī)值變成指數(shù)蜒什,如學(xué)習(xí)率如果在~
之間的范圍內(nèi)测秸,則隨機(jī)值r∈[a,b]。
在超參數(shù)調(diào)試的實(shí)際操作中灾常,我們需要根據(jù)計(jì)算資源來決定的調(diào)試方式:計(jì)算資源有限霎冯,僅調(diào)試一個(gè)模型,每天不斷優(yōu)化钞瀑;計(jì)算資源充足沈撞,同時(shí)并行調(diào)試多個(gè)模型,選取其中最好的模型雕什。
(2)激活值的歸一化——Batch Norm
在2.1節(jié)提及歸一化可提高訓(xùn)練速度缠俺,對激活函數(shù)前的z[l]進(jìn)行歸一化可加速模型訓(xùn)練過程。
實(shí)現(xiàn)反向傳播更新參數(shù)時(shí)贷岸,需要計(jì)算各個(gè)參數(shù)的梯度:dw[l]壹士、dγ[l]、dβ[l]偿警。這里不需要求db[l]躏救,因?yàn)锽atch Norm將z[l]改成均值為0,標(biāo)準(zhǔn)差為1的分布螟蒸,再由β和γ進(jìn)行重新的分布縮放盒使,那就是意味著,無論b[l]值為多少七嫌,在這個(gè)過程中都會(huì)被減去少办,b不再起作用。所以Batch Norm可以把b掉诵原,或取零值英妓。
Batch Norm的原理:
1.與輸入層歸一化的原理相同挽放,即通過改變損失函數(shù)的形狀,使得每一次梯度下降都可以更快的接近全局最優(yōu)點(diǎn)鞋拟,從而加快訓(xùn)練速度骂维。不同的是,Batch Norm 將各個(gè)隱藏層的激活函數(shù)的激活值進(jìn)行的歸一化贺纲,并調(diào)整到另外的分布。
2.訓(xùn)練過程褪测,w[l]不斷變化猴誊,對于后面的網(wǎng)絡(luò),a[l]的值也在不斷變化侮措,所以就有了Covariate shift的問題(訓(xùn)練集和預(yù)測集樣本分布不一致)懈叹。如果對z[l]使用了Batch Norm,那么即使其值不斷的變化分扎,但是其均值和方差卻會(huì)保持澄成,因此削弱了前層參數(shù)與后層參數(shù)之間的聯(lián)系,使得網(wǎng)絡(luò)的每層都可以自己進(jìn)行學(xué)習(xí)畏吓。
Batch Norm還有輕微的正則化效果墨状。這是因?yàn)樵谑褂肕ini-batch梯度下降的時(shí)候,每次計(jì)算均值和偏差都是在一個(gè)Mini-batch上進(jìn)行計(jì)算菲饼,而不是在整個(gè)數(shù)據(jù)樣集上肾砂。這樣就在均值和偏差上帶來一些比較小的噪聲。因此宏悦,Mini-batch越大镐确,噪聲越小,正則化的效果越少饼煞。
在這里有個(gè)問題源葫,Batch Norm是在Mini-batch中計(jì)算均值和方差的,但我們對單個(gè)測試集進(jìn)行預(yù)測時(shí)砖瞧,就無法計(jì)算均值和方差息堂。一般的做法:對于訓(xùn)練集的Mini-batch,使用指數(shù)加權(quán)平均芭届,當(dāng)訓(xùn)練結(jié)束的時(shí)候储矩,得到指數(shù)加權(quán)平均后的均值和方差,而這些值直接用于Batch Norm公式的計(jì)算褂乍,用以對測試樣本進(jìn)行預(yù)測持隧。
(3)Softmax 回歸
Softmax回歸 將 logistic回歸 從二分類問題推廣到了多分類問題上,兩者的不同點(diǎn)在于最后一層隱藏層的激活函數(shù)和損失函數(shù)逃片。
Softmax回歸的激活函數(shù)是一個(gè)概率計(jì)算函數(shù)屡拨,最后計(jì)算得到各個(gè)分類的概率大小只酥。