花書上關(guān)于網(wǎng)絡(luò)優(yōu)化的筆記記錄于http://www.reibang.com/p/06bb6d6a5227
花書上關(guān)于網(wǎng)絡(luò)正則化的筆記記錄于http://www.reibang.com/p/b88df5ccd5c3
雖然神經(jīng)網(wǎng)絡(luò)具有非常強(qiáng)的表達(dá)能力,但是當(dāng)應(yīng)用神經(jīng)網(wǎng)絡(luò)模型到機(jī)器學(xué)習(xí)時(shí)依然存在一些難點(diǎn)扛吞。主要分為兩大類:
優(yōu)化問題:神經(jīng)網(wǎng)絡(luò)模型是一個(gè)非凸函數(shù)麻诀,再加上在深度網(wǎng)絡(luò)中的梯度消失問題比原,很難進(jìn)行優(yōu)化;另外,深層神經(jīng)網(wǎng)絡(luò)模型一般參數(shù)比較多禾乘,訓(xùn)練數(shù)據(jù)也比較大韭邓,會(huì)導(dǎo)致訓(xùn)練的效率比較低措近。
泛化問題:因?yàn)樯窠?jīng)網(wǎng)絡(luò)的擬合能力強(qiáng),反而容易在訓(xùn)練集上產(chǎn)生過擬合女淑。因此瞭郑,在訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時(shí),同時(shí)也需要通過一定的正則化方法來改進(jìn)網(wǎng)絡(luò)的泛化能力鸭你。
1屈张、網(wǎng)絡(luò)優(yōu)化難點(diǎn)
網(wǎng)絡(luò)結(jié)構(gòu)多樣性:神經(jīng)網(wǎng)絡(luò)的種類非常多,比如卷積網(wǎng)絡(luò)袱巨、循環(huán)網(wǎng)絡(luò)等袜茧,其結(jié)構(gòu)也非常不同。有些比較深瓣窄,有些比較寬笛厦。不同參數(shù)在網(wǎng)絡(luò)中的作用也有很大的差異,比如連接權(quán)重和偏置的不同俺夕,以及循環(huán)網(wǎng)絡(luò)中循環(huán)連接上的權(quán)重和其它權(quán)重的不同裳凸。由于網(wǎng)絡(luò)結(jié)構(gòu)的多樣性,我們很難找到一種通用的優(yōu)化方法劝贸。不同的優(yōu)化方法在不同網(wǎng)絡(luò)結(jié)構(gòu)上的差異也都比較大姨谷。此外,網(wǎng)絡(luò)的超參數(shù)一般也比較多映九,這也給優(yōu)化帶來很大的挑戰(zhàn)梦湘。
高維變量的非凸優(yōu)化:低維空間的非凸優(yōu)化問題主要是存在一些局部最優(yōu)點(diǎn)。基于梯度下降的優(yōu)化方法會(huì)陷入局部最優(yōu)點(diǎn)捌议,因此低維空間非凸優(yōu)化的主要難點(diǎn)是如何選擇初始化參數(shù)和逃離局部最優(yōu)點(diǎn)哼拔。深層神經(jīng)網(wǎng)絡(luò)的參數(shù)非常多,其參數(shù)學(xué)習(xí)是在非常高維空間中的非凸優(yōu)化問題瓣颅,其挑戰(zhàn)和在低維空間的非凸優(yōu)化問題有所不同倦逐。
在高維空間中,非凸優(yōu)化的難點(diǎn)并不在于如何逃離局部最優(yōu)點(diǎn)宫补,而是如何逃離鞍點(diǎn)檬姥。因?yàn)樵诟呔S空間中,局部最優(yōu)點(diǎn)要求在每一維度上都是最低點(diǎn)粉怕,這種概率非常低健民。也就是說高維空間中,大部分梯度為0 的點(diǎn)都是鞍點(diǎn)贫贝”蹋基于梯度下降的優(yōu)化方法會(huì)在鞍點(diǎn)附近接近于停滯,同樣很難從這些鞍點(diǎn)中逃離平酿。
此外凤优,深層神經(jīng)網(wǎng)絡(luò)的參數(shù)非常多,并且有一定的冗余性蜈彼,這導(dǎo)致每單個(gè)參數(shù)對(duì)最終損失的影響都比較小筑辨,這導(dǎo)致了損失函數(shù)在局部最優(yōu)點(diǎn)附近是一個(gè)平坦的區(qū)域,稱為平坦最小值(Flat Minima)幸逆。在非常大的神經(jīng)網(wǎng)絡(luò)中棍辕,大部分的局部最小值是相等的。雖然神經(jīng)網(wǎng)絡(luò)有一定概率收斂于比較差的局部最小值还绘,但隨著網(wǎng)絡(luò)規(guī)模增加楚昭,網(wǎng)絡(luò)陷入局部最小值的概率大大降低。
2拍顷、優(yōu)化算法
目前抚太,深層神經(jīng)網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)主要是通過梯度下降方法來尋找一組可以最小化結(jié)構(gòu)風(fēng)險(xiǎn)的參數(shù)。在具體實(shí)現(xiàn)中昔案,梯度下降法可以分為:批量梯度下降尿贫、隨機(jī)梯度下降以及小批量梯度下降三種形式。根據(jù)不同的數(shù)據(jù)量和參數(shù)量踏揣,可以選擇一種具體的實(shí)現(xiàn)形式庆亡。除了在收斂效果和效率上的差異,這三種方法都存在一些共同的問題捞稿,比如1)如何初始化參數(shù)又谋;2)預(yù)處理數(shù)據(jù)拼缝;3)如何選擇合適的學(xué)習(xí)率,避免陷入局部最優(yōu)等彰亥。
2.1咧七、小批量梯度下降
在訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時(shí),訓(xùn)練數(shù)據(jù)的規(guī)模比較大剩愧。如果在梯度下降時(shí)猪叙,每次迭代都要計(jì)算整個(gè)訓(xùn)練數(shù)據(jù)上的梯度需要比較多的計(jì)算資源娇斩。此外仁卷,大規(guī)模訓(xùn)練集中的數(shù)據(jù)通常也會(huì)非常冗余,也沒有必要在整個(gè)訓(xùn)練集上計(jì)算梯度犬第。因此锦积,在訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時(shí),經(jīng)常使用小批量梯度下降算法歉嗓。
令表示一個(gè)深層神經(jīng)網(wǎng)絡(luò)丰介,
為網(wǎng)絡(luò)參數(shù),使用小批量梯度下降進(jìn)行優(yōu)化時(shí)鉴分,每次選取
個(gè)訓(xùn)練樣本
哮幢。第
次迭代(Iteration)時(shí)損失函數(shù)關(guān)于參數(shù)
的偏導(dǎo)數(shù)為:
其中為可微分的損失函數(shù),
稱為批量大兄菊洹(Batch Size)橙垢。
第次更新的梯度
定義為:
使用梯度下降來更新參數(shù):
其中為學(xué)習(xí)率。
每次迭代時(shí)參數(shù)更新的差值定義為:
和梯度
并不需要完全一致伦糯。
為每次迭代時(shí)參數(shù)的實(shí)際更新方向柜某,即
。在標(biāo)準(zhǔn)的小批量梯度下降中敛纲,
喂击。
批量大小對(duì)隨機(jī)梯度下降的影響:在小批量梯度下降中,批量大杏傧琛(Batch Size)對(duì)網(wǎng)絡(luò)優(yōu)化的影響也非常大翰绊。一般而言,批量大小不影響隨機(jī)梯度的期望旁壮,但是會(huì)影響隨機(jī)梯度的方差监嗜。批量大小越大,隨機(jī)梯度的方差越小寡具,引入的噪聲也越小秤茅,訓(xùn)練也越穩(wěn)定,因此可以設(shè)置較大的學(xué)習(xí)率童叠。而批量大小較小時(shí)框喳,需要設(shè)置較小的學(xué)習(xí)率课幕,否則模型會(huì)不收斂。學(xué)習(xí)率通常要隨著批量大小的增大而相應(yīng)地增大五垮。一個(gè)簡(jiǎn)單有效的方法是線性縮放規(guī)則(Linear Scaling Rule):當(dāng)批量大小增加倍時(shí)乍惊,學(xué)習(xí)率也增加
倍。線性縮放規(guī)則往往在批量大小比較小時(shí)適用放仗,當(dāng)批量大小非常大時(shí)润绎,線性縮放會(huì)使得訓(xùn)練不穩(wěn)定。
下圖給出了從Epoch(回合)和Iteration(單次更新)的角度诞挨,批量大小對(duì)損失下降的影響莉撇。每一次小批量更新為一次Iteration,所有訓(xùn)練集的樣本更新一遍為一次Epoch惶傻,兩者的關(guān)系為1個(gè)Epoch 等于( 訓(xùn)練樣本的數(shù)量N)/(批量大小K ) 次Iterations棍郎。
為了更有效地進(jìn)行訓(xùn)練深層神經(jīng)網(wǎng)絡(luò),在標(biāo)準(zhǔn)的小批量梯度下降方法的基礎(chǔ)上银室,也經(jīng)常使用一些改進(jìn)方法以加快優(yōu)化速度涂佃。常見的改進(jìn)方法主要從以下兩個(gè)方面進(jìn)行改進(jìn):學(xué)習(xí)率調(diào)整和梯度方向優(yōu)化。這些改進(jìn)的優(yōu)化方法也同樣可以應(yīng)用在批量或隨機(jī)梯度下降方法上蜈敢。
2.2辜荠、學(xué)習(xí)率調(diào)整
學(xué)習(xí)率是神經(jīng)網(wǎng)絡(luò)優(yōu)化時(shí)的重要超參數(shù)。在梯度下降方法中抓狭,學(xué)習(xí)率的取值非常關(guān)鍵伯病,如果過大就不會(huì)收斂,如果過小則收斂速度太慢辐宾。常用的學(xué)習(xí)率調(diào)整方法包括學(xué)習(xí)率衰減率狱从、學(xué)習(xí)率預(yù)熱、周期學(xué)習(xí)率以及一些自適應(yīng)地調(diào)整學(xué)習(xí)率的方法叠纹。
2.2.1季研、學(xué)習(xí)率衰減
經(jīng)驗(yàn)上看,學(xué)習(xí)率在一開始要保持大些來保證收斂速度誉察,收斂到最優(yōu)點(diǎn)附近時(shí)要小些以避免來回震蕩与涡。比較簡(jiǎn)單的學(xué)習(xí)率調(diào)整可以通過學(xué)習(xí)率衰減(Learning Rate Decay)的方式來實(shí)現(xiàn),也稱為學(xué)習(xí)率退火(Learning Rate Annealing)持偏。
假設(shè)初始化學(xué)習(xí)率為驼卖,在第
次迭代時(shí)的學(xué)習(xí)率
。常用的衰減方式為可以設(shè)置為按迭代次數(shù)進(jìn)行衰減鸿秆。常見的衰減方法有以下幾種:
分段常數(shù)衰減(Piecewise Constant Decay):即每經(jīng)過
次迭代將學(xué)習(xí)率衰減為原來的
倍酌畜,其中
和
為根據(jù)經(jīng)驗(yàn)設(shè)置的超參數(shù)。
逆時(shí)衰減(Inverse Time Decay):
其中為衰減率卿叽。
- 指數(shù)衰減(Exponential Decay):
其中為衰減率桥胞。
- 自然指數(shù)衰減(Natural Exponential Decay):
其中為衰減率恳守。
- 余弦衰減(Cosine Decay):
其中為總的迭代次數(shù)。
2.2.2贩虾、學(xué)習(xí)率預(yù)熱
在小批量梯度下降方法中催烘,當(dāng)批量大小的設(shè)置比較大時(shí),通常需要比較大的學(xué)習(xí)率缎罢。但在剛開始訓(xùn)練時(shí)伊群,由于參數(shù)是隨機(jī)初始化的,梯度往往也比較大策精,再加上比較大的初始學(xué)習(xí)率舰始,會(huì)使得訓(xùn)練不穩(wěn)定。
為提高訓(xùn)練穩(wěn)定性蛮寂,我們可以在最初幾輪迭代時(shí)采用較小的學(xué)習(xí)率蔽午,等梯度下降到一定程度后再恢復(fù)到初始學(xué)習(xí)率易茬,這種方法稱為學(xué)習(xí)率預(yù)熱(Learning Rate Warmup)酬蹋。
一個(gè)常用的學(xué)習(xí)率預(yù)熱方法是逐漸預(yù)熱(Gradual Warmup)。假設(shè)預(yù)熱的迭代次數(shù)為抽莱,初始學(xué)習(xí)率為
范抓,在預(yù)熱過程中,每次更新的學(xué)習(xí)率為:
當(dāng)預(yù)熱過程結(jié)束食铐,再選擇一種學(xué)習(xí)率衰減方法來逐漸降低學(xué)習(xí)率匕垫。
2.2.3、周期性學(xué)習(xí)率調(diào)整
為了使得梯度下降方法能夠逃離局部最小值或鞍點(diǎn)虐呻,一種經(jīng)驗(yàn)性的方式是在訓(xùn)練過程中周期性地增大學(xué)習(xí)率象泵。雖然增加學(xué)習(xí)率可能短期內(nèi)有損網(wǎng)絡(luò)的收斂穩(wěn)定性,但從長(zhǎng)期來看有助于找到更好的局部最優(yōu)解斟叼。一般而言偶惠,當(dāng)一個(gè)模型收斂一個(gè)平坦(Flat)的局部最小值時(shí)践美,其魯棒性會(huì)更好献宫,即微小的參數(shù)變動(dòng)不會(huì)劇烈影響模型能力;而當(dāng)模型收斂到一個(gè)尖銳(Sharp)的局部最小值時(shí)盯另,其魯棒性也會(huì)比較差谢床。具備良好泛化能力的模型通常應(yīng)該是魯棒的兄一,因此理想的局部最小值應(yīng)該是平坦的。兩種常用的周期性調(diào)整學(xué)習(xí)的方法為:循環(huán)學(xué)習(xí)率和帶熱重啟的隨機(jī)梯度下降识腿。
-
循環(huán)學(xué)習(xí)率:讓學(xué)習(xí)率在一個(gè)區(qū)間內(nèi)周期性地增大和縮小出革。通常可以使用線性縮放來調(diào)整學(xué)習(xí)率渡讼,稱為三角循環(huán)學(xué)習(xí)率(Triangular Cyclic Learning Rate)骂束。假設(shè)每個(gè)循環(huán)周期的長(zhǎng)度相等都為
费薄,其中前
步為學(xué)習(xí)率線性增大階段,后
步為學(xué)習(xí)率線性縮小階段栖雾。在第
次迭代時(shí)楞抡,其所在的循環(huán)周期數(shù)
為:
第次迭代的學(xué)習(xí)率為:
其中分別為第
個(gè)周期中學(xué)習(xí)率的上界和下界,可以隨著
的增大而逐漸降低析藕;
的計(jì)算為:
- 帶熱重啟的隨機(jī)梯度下降:用熱重啟方式來替代學(xué)習(xí)率衰減的方法召廷。學(xué)習(xí)率每間隔一定周期后重新初始化為某個(gè)預(yù)先設(shè)定值,然后逐漸衰減账胧。每次重啟后模型參數(shù)不是從頭開始優(yōu)化竞慢,而是從重啟前的參數(shù)基礎(chǔ)上繼續(xù)優(yōu)化。
假設(shè)在梯度下降過程中重啟次治泥,第
次重啟在上次重啟開始第
個(gè)回合后進(jìn)行筹煮,
稱為重啟周期。在第
次重啟之前居夹,采用余弦衰減來降低學(xué)習(xí)率败潦。第
次迭代的學(xué)習(xí)率為:
其中分別為第
個(gè)周期中學(xué)習(xí)率的上界和下界,可以隨著
的增大而逐漸降低准脂;
為從上次重啟之后的回合(Epoch)數(shù)劫扒。
可以取小數(shù),這樣可以在一個(gè)回合內(nèi)部進(jìn)行學(xué)習(xí)率衰減狸膏。
2.2.4沟饥、AdaGrad算法
在標(biāo)準(zhǔn)的梯度下降方法中,每個(gè)參數(shù)在每次迭代時(shí)都使用相同的學(xué)習(xí)率湾戳。由于每個(gè)參數(shù)的維度上收斂速度都不相同贤旷,因此根據(jù)不同參數(shù)的收斂情況分別設(shè)置學(xué)習(xí)率。
AdaGrad(Adaptive Gradient)算法是借鑒正則化的思想砾脑,每次迭代時(shí)自適應(yīng)地調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率幼驶。在第
迭代時(shí),先計(jì)算每個(gè)參數(shù)梯度平方的累計(jì)值:
其中為按元素乘積拦止,
是第
次迭代時(shí)的梯度县遣。
AdaGrad算法的參數(shù)更新差值為:
其中是初始的學(xué)習(xí)率,
是為了保持?jǐn)?shù)值穩(wěn)定性而設(shè)置的非常小的常數(shù)汹族,一般取值范圍為
到
萧求。此外,這里的開平方顶瞒、除夸政、加運(yùn)算都是按元素進(jìn)行的操作。
在Adagrad算法中榴徐,如果某個(gè)參數(shù)的偏導(dǎo)數(shù)累積比較大守问,其學(xué)習(xí)率相對(duì)較性裙椤;相反耗帕,如果其偏導(dǎo)數(shù)累積較小穆端,其學(xué)習(xí)率相對(duì)較大。但整體是隨著迭代次數(shù)的增加仿便,學(xué)習(xí)率逐漸縮小体啰。
Adagrad算法的缺點(diǎn)是在經(jīng)過一定次數(shù)的迭代依然沒有找到最優(yōu)點(diǎn)時(shí),由于這時(shí)的學(xué)習(xí)率已經(jīng)非常小嗽仪,很難再繼續(xù)找到最優(yōu)點(diǎn)荒勇。
2.2.5、RMSprop算法
RMSprop算法是Geoff Hinton提出的一種自適應(yīng)學(xué)習(xí)率的方法闻坚,可以在有些情況下避免AdaGrad算法中學(xué)習(xí)率不斷單調(diào)下降以至于過早衰減的缺點(diǎn)沽翔。
RMSprop算法首先計(jì)算每次迭代梯度平方的指數(shù)衰減移動(dòng)平均:
其中為衰減率,一般取值為0.9窿凤。
RMSprop算法的參數(shù)更新差值為:
其中是初始的學(xué)習(xí)率仅偎。
從上式可以看出,RMSProp 算法和Adagrad算法的區(qū)別在于的計(jì)算由累積方式變成了指數(shù)衰減移動(dòng)平均卷玉。在迭代過程中哨颂,每個(gè)參數(shù)的學(xué)習(xí)率并不是呈衰減趨勢(shì),既可以變小也可以變大相种。
2.2.6、AdaDelta 算法
和RMSprop算法類似品姓,AdaDelta算法通過梯度平方的指數(shù)衰減移動(dòng)平均來調(diào)整學(xué)習(xí)率寝并。此外,AdaDelta 算法還引入了每次參數(shù)更新差的平方的指數(shù)衰減權(quán)移動(dòng)平均腹备。
第次迭代時(shí)衬潦,每次參數(shù)更新差
,
的平方的指數(shù)衰減權(quán)移動(dòng)平均為:
其中為衰減率。此時(shí)
還未知植酥,因此只能計(jì)算到
镀岛。
AdaDelta算法的參數(shù)更新差值為:
其中的計(jì)算方式和RMSprop算法一樣,
為參數(shù)更新差
的指數(shù)衰減權(quán)移動(dòng)平均友驮,這在一定程度上平抑了學(xué)習(xí)率的波動(dòng)漂羊。
2.3、梯度方向優(yōu)化
除了調(diào)整學(xué)習(xí)率之外卸留,還可以通過使用最近一段時(shí)間內(nèi)的平均梯度來代替當(dāng)前時(shí)刻的梯度來作為參數(shù)更新的方向走越。在小批量梯度下降中,如果每次選取樣本數(shù)量比較小耻瑟,損失會(huì)呈現(xiàn)震蕩的方式下降旨指。有效地緩解梯度下降中的震蕩的方式是通過用梯度的移動(dòng)平均來代替每次的實(shí)際梯度赏酥,并提高優(yōu)化速度,這就是動(dòng)量法谆构。
2.3.1裸扶、動(dòng)量法
動(dòng)量是模擬物理中的概念。一般而言搬素,一個(gè)物體的動(dòng)量指的是這個(gè)物體在它運(yùn)動(dòng)方向上保持運(yùn)動(dòng)的趨勢(shì)姓言,是物體的質(zhì)量和速度的乘積。
動(dòng)量法(Momentum Method)是用之前積累動(dòng)量來替代真正的梯度蔗蹋。每次迭代的梯度可以看作是加速度何荚。
在第次迭代時(shí),計(jì)算負(fù)梯度的“加權(quán)移動(dòng)平均”作為參數(shù)的更新方向:
其中為動(dòng)量因子猪杭,通常設(shè)為0.9餐塘,
為學(xué)習(xí)率。
一般而言皂吮,在迭代初期戒傻,梯度方法都比較一致,動(dòng)量法會(huì)起到加速作用蜂筹,可以更快地到達(dá)最優(yōu)點(diǎn)需纳。在迭代后期,梯度方法會(huì)取決不一致艺挪,在收斂值附近震蕩不翩,動(dòng)量法會(huì)起到減速作用,增加穩(wěn)定性麻裳。
2.3.2口蝠、Nesterov加速梯度
Nesterov加速梯度(Nesterov Accelerated Gradient,NAG)津坑,也叫Nesterov動(dòng)量法(Nesterov Momentum)是一種對(duì)動(dòng)量法的改進(jìn)妙蔗。
在動(dòng)量法中,實(shí)際的參數(shù)更新方向為上一步的參數(shù)更新方向
和當(dāng)前梯度
的疊加疆瑰,可以被拆分為兩步進(jìn)行:
其中梯度為點(diǎn)
上的梯度眉反,因此在第二步更新中有些不太合理。更合理的更新方向應(yīng)該為
上的梯度:
2.3.3穆役、Adam算法
自適應(yīng)動(dòng)量估計(jì)(Adaptive Moment Estimation寸五,Adam)算法可以看作是動(dòng)量法和RMSprop的結(jié)合,不但使用動(dòng)量作為參數(shù)更新方向孵睬,而且可以自適應(yīng)調(diào)整學(xué)習(xí)率播歼。
Adam算法一方面計(jì)算梯度平方的指數(shù)加權(quán)平均(和RMSprop類似),另一方面計(jì)算梯度
的指數(shù)加權(quán)平均(和動(dòng)量法類似)。
其中和
分別為兩個(gè)移動(dòng)平均的衰減率秘狞,通常取值為
叭莫。
可以看作是梯度的均值(一階矩),
可以看作是梯度的未減去均值的方差(二階矩)烁试。
假設(shè)雇初,那么在迭代初期
和
的值會(huì)比真實(shí)的均值和方差要小。特別是當(dāng)
和
都接近于1時(shí)减响,偏差會(huì)很大靖诗。因此,需要對(duì)偏差進(jìn)行修正支示。
Adam算法的參數(shù)更新差值為:
其中學(xué)習(xí)率通常設(shè)為0.001刊橘,并且也可以進(jìn)行衰減,比如
颂鸿。
Adam算法是RMSProp 與動(dòng)量法的結(jié)合促绵,因此一種自然的Adam的改進(jìn)方法是引入Nesterov加速梯度,稱為Nadam算法嘴纺。
2.3.4败晴、梯度截?cái)?/h3>
在深層神經(jīng)網(wǎng)絡(luò)或循環(huán)神經(jīng)網(wǎng)絡(luò)中,除了梯度消失之外栽渴,梯度爆炸是影響學(xué)習(xí)效率的主要因素尖坤。在基于梯度下降的優(yōu)化過程中,如果梯度突然增大闲擦,用大的梯度進(jìn)行更新參數(shù)慢味,反而會(huì)導(dǎo)致其遠(yuǎn)離最優(yōu)點(diǎn)。為了避免這種情況佛致,當(dāng)梯度的模大于一定閾值時(shí)贮缕,就對(duì)梯度進(jìn)行截?cái)啵Q為梯度截?cái)啵╣radient clipping)俺榆。
一般截?cái)嗟姆绞接幸韵聨追N:
按值截?cái)?/strong>:給定一個(gè)區(qū)間,如果一個(gè)參數(shù)的梯度小于
時(shí)装哆,就將其設(shè)為
罐脊;如果大于
時(shí),就將其設(shè)為
:
按模截?cái)?/strong>:按模截?cái)嗍菍⑻荻鹊哪=財(cái)嗟揭粋€(gè)給定的截?cái)嚅撝?img class="math-inline" src="https://math.jianshu.com/math?formula=b" alt="b" mathimg="1">蜕琴,如果萍桌,保持
不變,否則令:
截?cái)嚅撝?img class="math-inline" src="https://math.jianshu.com/math?formula=b" alt="b" mathimg="1">是一個(gè)超參數(shù)上炎,也可以根據(jù)一段時(shí)間內(nèi)的平均梯度來自動(dòng)調(diào)整。實(shí)驗(yàn)中發(fā)現(xiàn),訓(xùn)練過程對(duì)閾值并不十分敏感藕施,通常一個(gè)小的閾值就可以得到很好的結(jié)果寇损。
2.4、小結(jié)
3矛市、參數(shù)初始化
梯度下降法需要在開始訓(xùn)練時(shí)給每一個(gè)參數(shù)賦一個(gè)初始值。這個(gè)初始值的選取十分關(guān)鍵诲祸。在感知器和logistic 回歸的訓(xùn)練中浊吏,我們一般將參數(shù)全部初始化為0。但是這在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中會(huì)存在一些問題救氯。因?yàn)?strong>如果參數(shù)都為0找田,在第一遍前向計(jì)算時(shí),所有的隱層神經(jīng)元的激活值都相同着憨。這樣會(huì)導(dǎo)致深層神經(jīng)元沒有區(qū)分性墩衙。這種現(xiàn)象也稱為對(duì)稱權(quán)重現(xiàn)象。為了打破這個(gè)平衡享扔,比較好的方式是對(duì)每個(gè)參數(shù)都隨機(jī)初始化底桂,這樣使得不同神經(jīng)元之間的區(qū)分性更好。
隨機(jī)初始化參數(shù)的一個(gè)問題是如何選取隨機(jī)初始化的區(qū)間惧眠。如果參數(shù)太小籽懦,一是會(huì)導(dǎo)致神經(jīng)元的輸入過小,經(jīng)過多層之后信號(hào)就慢慢消失了氛魁;二是還會(huì)使得Sigmoid型激活函數(shù)丟失非線性的能力暮顺。以Logistic函數(shù)為例,在0附近基本上是近似線性的秀存。這樣多層神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)也就不存在了捶码。如果參數(shù)取得太大,會(huì)導(dǎo)致輸入狀態(tài)過大或链。對(duì)于Sigmoid型激活函數(shù)來說惫恼,激活值變得飽和,從而導(dǎo)致梯度接近于0澳盐。
一般而言祈纯,參數(shù)初始化的區(qū)間應(yīng)該根據(jù)神經(jīng)元的性質(zhì)進(jìn)行差異化的設(shè)置。如果一個(gè)神經(jīng)元的輸入連接很多叼耙,它的每個(gè)輸入連接上的權(quán)重就應(yīng)該小一些腕窥,以避免神經(jīng)元的輸出過大(當(dāng)激活函數(shù)為ReLU時(shí))或過飽和(當(dāng)激活函數(shù)為Sigmoid 函數(shù)時(shí))。
經(jīng)常使用的初始化方法有以下兩種:
高斯分布初始化:參數(shù)從一個(gè)固定均值(比如0)和固定方差(比如0.01)的高斯分布進(jìn)行隨機(jī)初始化。
均勻分布初始化:在一個(gè)給定的區(qū)間內(nèi)采用均勻分布來初始化參數(shù)。超參數(shù)
的設(shè)置可以按神經(jīng)元的連接數(shù)量進(jìn)行自適應(yīng)的調(diào)整。
初始化一個(gè)深層網(wǎng)絡(luò)時(shí)嬉荆,一個(gè)比較好的初始化策略是保持每個(gè)神經(jīng)元輸入和輸出的方差一致入蛆。這里介紹兩種參數(shù)初始化的方法响蓉。
3.1、Xavier初始化
當(dāng)網(wǎng)絡(luò)當(dāng)使用Losgistic激活函數(shù)時(shí)安寺,Xavier初始化可以根據(jù)每層的神經(jīng)元數(shù)量來自動(dòng)計(jì)算初始化參數(shù)的方差厕妖。
假設(shè)第層的一個(gè)隱藏層神經(jīng)元
,其接受前一層的
個(gè)神經(jīng)元的輸出
:
為了避免初始化參數(shù)使得激活值變得飽和挑庶,我們需要盡量使得處于激活函數(shù)的線性區(qū)間言秸,也就是其絕對(duì)值比較小的值。這時(shí)該神經(jīng)元的激活值為
迎捺。
假設(shè)和
的均值都為0举畸,并且相互獨(dú)立,則
的均值為:
的方差為:
我們希望盡可能保持每個(gè)神經(jīng)元的輸入和輸出的方差一致凳枝。這樣設(shè)為1 比較合理抄沮,即:
同理,為了使得在反向傳播中岖瑰,誤差信號(hào)也不被放大或縮小叛买,需要將的方差保持為:
作為折中,同時(shí)考慮信號(hào)在前向和反向傳播中都不被放大或縮小蹋订,可以設(shè)置:
在計(jì)算出參數(shù)的理想方差后率挣,可以通過高斯分布或均勻分布來隨機(jī)初始化參數(shù)。
高斯分布初始化:連接權(quán)重
可以按
的高斯分布進(jìn)行初始化露戒。
均勻分布初始化:假設(shè)隨機(jī)變量
在區(qū)間
內(nèi)均勻分布椒功,則其方差為:
若采用區(qū)間為的均分分布初始化
,并滿足
智什,則:
3.2动漾、He初始化
當(dāng)?shù)?img class="math-inline" src="https://math.jianshu.com/math?formula=l" alt="l" mathimg="1">層神經(jīng)元使用ReLU激活函數(shù)時(shí),通常有一半的神經(jīng)元輸出為0荠锭,因此其分布的方差也近似為使用Logistic作為激活函數(shù)時(shí)的一半(一半是指是
的一半)旱眯。這樣,只考慮前向傳播時(shí)证九,參數(shù)
的理想方差為:
此時(shí)可以通過高斯分布或均勻分布來隨機(jī)初始化參數(shù)键思。
高斯分布初始化:連接權(quán)重
可以按
的高斯分布進(jìn)行初始化。
均勻分布初始化:若采用區(qū)間為
的均分分布初始化
甫贯,則:
這種初始化方法稱為He初始化。
4看蚜、數(shù)據(jù)預(yù)處理
一般而言叫搁,樣本的原始特征中的每一維特征由于來源以及度量單位不同,其特征取值的分布范圍往往差異很大。當(dāng)我們計(jì)算不同樣本之間的歐氏距離時(shí)渴逻,取值范圍大的特征會(huì)起到主導(dǎo)作用疾党。這樣,對(duì)于基于相似度比較的機(jī)器學(xué)習(xí)方法(比如最近鄰分類器)惨奕,必須先對(duì)樣本進(jìn)行預(yù)處理雪位,將各個(gè)維度的特征歸一化到同一個(gè)取值區(qū)間,并且消除不同特征之間的相關(guān)性梨撞,才能獲得比較理想的結(jié)果雹洗。雖然神經(jīng)網(wǎng)絡(luò)可以通過參數(shù)的調(diào)整來適應(yīng)不同特征的取值范圍,但是會(huì)導(dǎo)致訓(xùn)練效率比較低卧波。
如上圖所示时肿,取值范圍不同會(huì)造成在大多數(shù)位置上的梯度方向并不是最優(yōu)的搜索方向。當(dāng)使用梯度下降法尋求最優(yōu)解時(shí)港粱,會(huì)導(dǎo)致需要很多次迭代才能收斂螃成。如果我們把數(shù)據(jù)歸一化為取值范圍相同,大部分位置的梯度方向近似于最優(yōu)搜索方向查坪。這樣寸宏,在梯度下降求解時(shí),每一步梯度的方向都基本指向最小值偿曙,訓(xùn)練效率會(huì)大大提高氮凝。
經(jīng)常使用的歸一化方法有如下幾種:
-
縮放歸一化:通過縮放將每一個(gè)特征的取值范圍歸一到
或
之間。假設(shè)有
個(gè)樣本
遥昧,對(duì)于每一維特征
:
其中和
分別是特征
在所有樣本上的最小值和最大值覆醇。
-
標(biāo)準(zhǔn)歸一化:將每一個(gè)維特征都處理為符合標(biāo)準(zhǔn)正態(tài)分布(均值為0方差為1)。假設(shè)有
個(gè)樣本
炭臭,對(duì)于每一維特征
我們先計(jì)算它的均值和標(biāo)準(zhǔn)差:
然后永脓,將特征減去均值,并除以標(biāo)準(zhǔn)差鞋仍,得到新的特征值:
這里不能為0常摧。如果標(biāo)準(zhǔn)差為0,說明這一維特征沒有任務(wù)區(qū)分性威创,可以直接刪掉落午。
- 白化:白化(Whitening)是一種重要的預(yù)處理方法,用來降低輸入數(shù)據(jù)特征之間的冗余性肚豺。輸入數(shù)據(jù)經(jīng)過白化處理后溃斋,特征之間相關(guān)性較低,并且所有特征具有相同的方差吸申。白化的一個(gè)主要實(shí)現(xiàn)方式是使用主成分分析(PCA)方法去除掉各個(gè)成分之間的相關(guān)性梗劫。
標(biāo)準(zhǔn)歸一化和PCA白化的比較如下:
5享甸、逐層歸一化
在深層神經(jīng)網(wǎng)絡(luò)中,中間某一層的輸入是其之前的神經(jīng)層的輸出梳侨。因此蛉威,其之前的神經(jīng)層的參數(shù)變化會(huì)導(dǎo)致其輸入的分布發(fā)生較大的差異。在使用隨機(jī)梯度下降來訓(xùn)練網(wǎng)絡(luò)時(shí)走哺,每次參數(shù)更新都會(huì)導(dǎo)致網(wǎng)絡(luò)中間每一層的輸入的分布發(fā)生改變蚯嫌。越深的層,其輸入的分布會(huì)改變得越明顯丙躏。就像一棟高樓择示,低樓層發(fā)生一個(gè)較小的偏移,都會(huì)導(dǎo)致高樓層較大的偏移彼哼。
從機(jī)器學(xué)習(xí)角度來看对妄,如果某個(gè)神經(jīng)層的輸入分布發(fā)生了改變,那么其參數(shù)需要重新學(xué)習(xí)敢朱,這種現(xiàn)象叫做內(nèi)部協(xié)變量偏移(Internal Covariate Shift)剪菱。
關(guān)于協(xié)變量偏移,https://www.kaggle.com/pavansanagapati/covariate-shift-what-is-it中有一個(gè)很直觀的圖:
在機(jī)器學(xué)習(xí)中拴签,協(xié)變量可以看作是輸入孝常。一般的機(jī)器學(xué)習(xí)算法都要求輸入在訓(xùn)練集和測(cè)試集上的分布是相似的。如果不滿足這個(gè)假設(shè)蚓哩,在訓(xùn)練集上學(xué)習(xí)到的模型在測(cè)試集上的表現(xiàn)會(huì)比較差构灸。
如上所說,如果初始狀態(tài)下的訓(xùn)練集和測(cè)試集的概率分布有一個(gè)小的差異岸梨,經(jīng)過網(wǎng)絡(luò)的層層傳遞也會(huì)得到兩個(gè)差別很大的概率分布喜颁,此時(shí)考慮深層的網(wǎng)絡(luò)的輸入,就可能出現(xiàn)上圖的情況曹阔。這有點(diǎn)類似于蝴蝶效應(yīng)半开。
總之,為了解決內(nèi)部協(xié)變量偏移問題赃份,就要使得每一個(gè)神經(jīng)層的輸入的分布在訓(xùn)練過程中要保持一致寂拆。最簡(jiǎn)單直接的方法就是對(duì)每一個(gè)神經(jīng)層都進(jìn)行歸一化操作,使其分布保持穩(wěn)定抓韩。
5.1纠永、批量歸一化
批量歸一化(Batch Normalization,BN)方法是一種有效的逐層歸一化方法谒拴,可以對(duì)神經(jīng)網(wǎng)絡(luò)中任意的中間層進(jìn)行歸一化操作尝江。
對(duì)于一個(gè)深層神經(jīng)網(wǎng)絡(luò),令第層的凈輸入為
英上,神經(jīng)元的輸出為
茂装,即:
其中是激活函數(shù)怠蹂,
和
是可學(xué)習(xí)的參數(shù)。
為了減少內(nèi)部協(xié)變量偏移問題少态,就要使得凈輸入的分布一致,比如都?xì)w一化到標(biāo)準(zhǔn)正態(tài)分布易遣。
逐層歸一化需要在中間層進(jìn)行操作彼妻,要求效率比較高,為了提高歸一化效率豆茫,一般使用標(biāo)準(zhǔn)歸一化侨歉,將凈輸入的每一維都?xì)w一到標(biāo)準(zhǔn)正態(tài)分布:
其中和
是指當(dāng)前參數(shù)下,
的每一維在整個(gè)訓(xùn)練集上的期望和方差揩魂。因?yàn)槟壳爸饕挠?xùn)練方法是基于小批量的隨機(jī)梯度下降方法幽邓,所以準(zhǔn)確地計(jì)算
的期望和方差是不可行的。因此火脉,
的期望和方差通常用當(dāng)前小批量樣本集的均值和方差近似估計(jì)牵舵。
給定一個(gè)包含個(gè)樣本的小批量樣本集合,第
層神經(jīng)元的凈輸入
的均值和方差為:
對(duì)凈輸入的標(biāo)準(zhǔn)歸一化會(huì)使得其取值集中到0附近倦挂,如果使用sigmoid型激活函數(shù)時(shí)畸颅,這個(gè)取值區(qū)間剛好是接近線性變換的區(qū)間,減弱了神經(jīng)網(wǎng)絡(luò)的非線性性質(zhì)方援。因此没炒,為了使得歸一化不對(duì)網(wǎng)絡(luò)的表示能力造成負(fù)面影響,可以通過一個(gè)附加的縮放和平移變換改變?nèi)≈祬^(qū)間犯戏。
其中和
分別代表縮放和平移的參數(shù)向量送火。從最保守的角度考慮,可以通過標(biāo)準(zhǔn)歸一化的逆變換來使得歸一化后的變量可以被還原為原來的值先匪。
批量歸一化操作可以看作是一個(gè)特殊的神經(jīng)層种吸,加在每一層非線性激活函數(shù)之前,即:
其中因?yàn)榕繗w一化本身具有平移變換胚鸯,因此仿射變換不再需要偏置參數(shù)骨稿。
5.2、層歸一化
批量歸一化是對(duì)一個(gè)中間層的單個(gè)神經(jīng)元進(jìn)行歸一化操作姜钳,因此要求小批量樣本的數(shù)量不能太小坦冠,否則難以計(jì)算單個(gè)神經(jīng)元的統(tǒng)計(jì)信息。此外哥桥,如果一個(gè)神經(jīng)元的凈輸入的分布在神經(jīng)網(wǎng)絡(luò)中是動(dòng)態(tài)變化的辙浑,比如循環(huán)神經(jīng)網(wǎng)絡(luò),那么就無法應(yīng)用批量歸一化操作拟糕。
層歸一化(Layer Normalization)是和批量歸一化非常類似的方法判呕。和批量歸一化不同的是倦踢,層歸一化是對(duì)一個(gè)中間層的所有神經(jīng)元進(jìn)行歸一化。
對(duì)于一個(gè)深層神經(jīng)網(wǎng)絡(luò)中侠草,令第層神經(jīng)的凈輸入為
辱挥,其均值和方差為:
其中為第
層神經(jīng)元的數(shù)量。
層歸一化定義為:
其中和
分別代表縮放和平移的參數(shù)向量边涕,和
維數(shù)相同晤碘。
層歸一化和批量歸一化整體上是十分類似的,差別在于歸一化的方法不同功蜓。對(duì)于個(gè)樣本的一個(gè)小批量集合
园爷,層歸一化是對(duì)矩陣
對(duì)每一列進(jìn)行歸一化,而批量歸一化是對(duì)每一行進(jìn)行歸一化式撼。一般而言童社,批量歸一化是一種更好的選擇。當(dāng)小批量樣本數(shù)量比較小時(shí)著隆,可以選擇層歸一化扰楼。
5.3、權(quán)重歸一化
權(quán)重歸一化(Weight Normalization)是對(duì)神經(jīng)網(wǎng)絡(luò)的連接權(quán)重進(jìn)行歸一化旅东,通過再參數(shù)化(Reparameterization)方法灭抑,將連接權(quán)重分解為長(zhǎng)度和方向兩種參數(shù)。
假設(shè)第層神經(jīng)元
抵代,我們將
再參數(shù)化為:
其中 表示權(quán)重
的第
行腾节,
為神經(jīng)元數(shù)量。新引入的參數(shù)
為標(biāo)量荤牍,
和
維數(shù)相同案腺。
由于在神經(jīng)網(wǎng)絡(luò)中權(quán)重經(jīng)常是共享的,權(quán)重?cái)?shù)量往往比神經(jīng)元數(shù)量要少康吵,因此權(quán)重歸一化的開銷會(huì)比較小劈榨。
6、超參數(shù)優(yōu)化
在神經(jīng)網(wǎng)絡(luò)中晦嵌,除了可學(xué)習(xí)的參數(shù)之外同辣,還存在很多超參數(shù)。這些超參數(shù)對(duì)網(wǎng)絡(luò)性能的影響也很大惭载。不同的機(jī)器學(xué)習(xí)任務(wù)需要往往需要不同的超參數(shù)旱函。常見的超參數(shù)有:
網(wǎng)絡(luò)結(jié)構(gòu):包括神經(jīng)元之間的連接關(guān)系、層數(shù)描滔、每層的神經(jīng)元數(shù)量棒妨、激活函數(shù)的類型等;
優(yōu)化參數(shù):包括優(yōu)化方法含长、學(xué)習(xí)率券腔、小批量的樣本數(shù)量等伏穆;
正則化系數(shù)。
超參數(shù)優(yōu)化(Hyperparameter Optimization)主要存在兩方面的困難:
超參數(shù)優(yōu)化是一個(gè)組合優(yōu)化問題纷纫,無法像一般參數(shù)那樣通過梯度下降方法來優(yōu)化枕扫,也沒有一種通用有效的優(yōu)化方法。
評(píng)估一組超參數(shù)配置(Configuration)的時(shí)間代價(jià)非常高涛酗,從而導(dǎo)致一些優(yōu)化方法(比如演化算法)在超參數(shù)優(yōu)化中難以應(yīng)用铡原。
對(duì)于超參數(shù)的設(shè)置,比較簡(jiǎn)單的方法有人工搜索商叹、網(wǎng)格搜索和隨機(jī)搜索。
6.1只泼、網(wǎng)格搜索
網(wǎng)格搜索(Grid Search)是一種通過嘗試所有超參數(shù)的組合來尋址合適一組超參數(shù)配置的方法剖笙。假設(shè)總共有K 個(gè)超參數(shù),第個(gè)超參數(shù)的可以取
個(gè)值请唱。那么總共的配置組合數(shù)量為
弥咪。如果超參數(shù)是連續(xù)的,可以將超參數(shù)離散化十绑,選擇幾個(gè)“經(jīng)驗(yàn)”值聚至。比如學(xué)習(xí)率
,我們可以設(shè)置:
網(wǎng)格搜索根據(jù)這些超參數(shù)的不同組合分別訓(xùn)練一個(gè)模型本橙,然后測(cè)試這些模型在驗(yàn)證集上的性能扳躬,選取一組性能最好的配置。
6.2甚亭、隨機(jī)搜索
如果不同超參數(shù)對(duì)模型性能的影響有很大差異贷币。有些超參數(shù)(比如正則化系數(shù))對(duì)模型性能的影響有限,而有些超參數(shù)(比如學(xué)習(xí)率)對(duì)模型性能影響比較大亏狰。在這種情況下役纹,采用網(wǎng)格搜索會(huì)在不重要的超參數(shù)上進(jìn)行不必要的嘗試。一種在實(shí)踐中比較有效的改進(jìn)方法是對(duì)超參數(shù)進(jìn)行隨機(jī)組合暇唾,然后選取一個(gè)性能最好的配置促脉,這就是隨機(jī)搜索。
隨機(jī)搜索在實(shí)踐中更容易實(shí)現(xiàn)策州,一般會(huì)比網(wǎng)格搜索更加有效瘸味。
網(wǎng)格搜索和隨機(jī)搜索都沒有利用不同超參數(shù)組合之間的相關(guān)性,即如果模型的超參數(shù)組合比較類似抽活,其模型性能也是比較接近的硫戈。因此這兩種搜索方式一般都比較低效。下面我們介紹兩種自適應(yīng)的超參數(shù)優(yōu)化方法:貝葉斯優(yōu)化和動(dòng)態(tài)資源分配下硕。
6.3丁逝、貝葉斯優(yōu)化
貝葉斯優(yōu)化(Bayesian optimization)是一種自適應(yīng)的超參數(shù)搜索方法汁胆,根據(jù)當(dāng)前已經(jīng)試驗(yàn)的超參數(shù)組合,來預(yù)測(cè)下一個(gè)可能帶來最大收益的組合霜幼。一種比較比較常用的貝葉斯優(yōu)化方法為時(shí)序模型優(yōu)化(Sequential Model-Based Optimization嫩码,SMBO)。
假設(shè)超參數(shù)優(yōu)化的函數(shù)服從高斯過程罪既,則
為一個(gè)正態(tài)分布铸题。貝葉斯優(yōu)化過程是根據(jù)已有的
組試驗(yàn)結(jié)果
(
為
的觀測(cè)值)來建模高斯過程,并計(jì)算
的后驗(yàn)分布
琢感。
為了使得接近其真實(shí)分布丢间,就需要對(duì)樣本空間進(jìn)行足夠多的采樣。但超參數(shù)優(yōu)化中每個(gè)樣本的生成成本很高驹针,需用盡可能少的樣本使得
接近于真實(shí)分布烘挫。因此需要通過定義一個(gè)收益函數(shù)(acquisition function)
來判斷一個(gè)樣本是否能夠給建模
提供更多的收益。收益越大柬甥,其修正的高斯過程會(huì)越接近目標(biāo)函數(shù)的真實(shí)分布饮六。
收益函數(shù)的定義有很多種方式,一個(gè)常用的是期望改善(Expected improvement苛蒲,EI)函數(shù)卤橄。假設(shè)是當(dāng)前已有樣本中的最優(yōu)值,期望改善函數(shù)為:
貝葉斯優(yōu)化的缺點(diǎn)是高斯過程建模要計(jì)算協(xié)方差矩陣的逆臂外,時(shí)間復(fù)雜度是窟扑,因此不能很好地處理高維情況。
6.4寄月、動(dòng)態(tài)資源分配
在超參數(shù)優(yōu)化中锨亏,每組超參數(shù)配置的評(píng)估代價(jià)比較高终议。如果我們可以在較早的階段就可以估計(jì)出一組配置的效果會(huì)比較差,那么我們就可以中止這組配置的評(píng)估,將更多的資源留給其它配置旭等。
這個(gè)問題可以歸結(jié)為多臂賭博機(jī)問題的一個(gè)泛化問題:最優(yōu)臂問題(Best-Arm Problem)诱桂,即在給定有限的機(jī)會(huì)次數(shù)下秸妥,如何玩這些賭博機(jī)并找到收益最大的臂焰宣。和多臂賭博機(jī)類似,最優(yōu)臂問題也是在利用和探索之間找到最佳的平衡谭溉。
由于目前神經(jīng)網(wǎng)絡(luò)的優(yōu)化方法一般都采取隨機(jī)梯度下降墙懂,因此我們可以通過一組超參數(shù)的學(xué)習(xí)曲線來預(yù)估這組超參數(shù)配置是否有希望得到比較好的結(jié)果。如果一組超參數(shù)配置的學(xué)習(xí)曲線不收斂或者收斂比較差扮念,我們可以應(yīng)用早期停止(Early-Stopping)策略來中止當(dāng)前的訓(xùn)練损搬。
動(dòng)態(tài)資源分配的一種有效方法是逐次減半(Successive Halving)方法
假設(shè)要嘗試組超參數(shù)配置,總共可利用的資源預(yù)算(搖臂的次數(shù))為
,我們可以通過
輪逐次減半的方法來選取最優(yōu)的配置巧勤,具體過程如下:
在逐次減半方法中嵌灰,嘗試的超參數(shù)配置數(shù)量十分關(guān)鍵。如果
越大颅悉,得到最佳配置的機(jī)會(huì)也越大沽瞭,但每組配置分到的資源就越少,這樣早期的評(píng)估結(jié)果可能不準(zhǔn)確剩瓶。反之如果
越小驹溃,每組超參數(shù)配置的評(píng)估會(huì)越準(zhǔn)確,但有可能無法得到最優(yōu)的配置延曙。因此如何設(shè)置
是平衡“利用-探索”的一個(gè)關(guān)鍵因素豌鹤。
7、網(wǎng)絡(luò)正則化
正則化(Regularization)是一類通過限制模型復(fù)雜度枝缔,從而避免過擬合傍药,提高泛化能力的方法,包括引入一些約束規(guī)則魂仍,增加先驗(yàn)、提前停止等拣挪。
7.1擦酌、
和
正則化
通過加入和
正則化,優(yōu)化問題可以寫為:
其中為損失函數(shù)菠劝,
為訓(xùn)練樣本數(shù)量赊舶,
為待學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),
為其參數(shù)赶诊,
為范數(shù)函數(shù)笼平,
的取值通常為
代表
和
范數(shù),
為正則化系數(shù)舔痪。
帶正則化的優(yōu)化問題等價(jià)于下面帶約束條件的優(yōu)化問題:
下圖給出了不同范數(shù)約束條件下的最優(yōu)化問題示例:
紅線表示函數(shù)寓调,
為函數(shù)
的等高線(簡(jiǎn)單起見,這里用直線表示)锄码。
可以看出夺英,范數(shù)的約束通常會(huì)使得最優(yōu)解位于坐標(biāo)軸上,從而使得最終的參數(shù)為稀疏性向量滋捶。
一種折中的正則化方法是彈性網(wǎng)絡(luò)正則化(Elastic Net Regularization)痛悯,同時(shí)加入和
正則化:
7.2、權(quán)重衰減
權(quán)重衰減(Weight Decay)也是一種有效的正則化手段重窟,在每次參數(shù)更新時(shí)载萌,引入一個(gè)衰減系數(shù)。
其中為第
次更新的梯度,
為學(xué)習(xí)率扭仁,
為權(quán)重衰減系數(shù)垮衷,一般取值比較小,比如0.0005斋枢。在標(biāo)準(zhǔn)的隨機(jī)梯度下降中帘靡,權(quán)重衰減正則化和
正則化的效果相同。
但是瓤帚,在較為復(fù)雜的優(yōu)化方法(比如Adam)中描姚,權(quán)重衰減和正則化并不等價(jià)。
7.3戈次、提前停止
提前停止(Early Stop)對(duì)于深層神經(jīng)網(wǎng)絡(luò)來說是一種簡(jiǎn)單有效的正則化方法轩勘。
由于深層神經(jīng)網(wǎng)絡(luò)的擬合能力非常強(qiáng),因此比較容易在訓(xùn)練集上過擬合怯邪。在使用梯度下降法進(jìn)行優(yōu)化時(shí)绊寻,我們可以使用一個(gè)和訓(xùn)練集獨(dú)立的樣本集合,稱為驗(yàn)證集悬秉,并用驗(yàn)證集上的錯(cuò)誤來代替期望錯(cuò)誤澄步。當(dāng)驗(yàn)證集上的錯(cuò)誤率不再下降,就停止迭代和泌。
7.4村缸、丟棄法
當(dāng)訓(xùn)練一個(gè)深層神經(jīng)網(wǎng)絡(luò)時(shí),我們可以隨機(jī)丟棄一部分神經(jīng)元(同時(shí)丟棄其對(duì)應(yīng)的連接邊)來避免過擬合武氓,這種方法稱為丟棄法(Dropout Method)梯皿。每次選擇丟棄的神經(jīng)元是隨機(jī)的。最簡(jiǎn)單的方法是設(shè)置一個(gè)固定的概率县恕。對(duì)每一個(gè)神經(jīng)元都一個(gè)概率
來判定要不要保留东羹。對(duì)一個(gè)神經(jīng)層
,我們引入一個(gè)丟棄函數(shù)
使得
忠烛。丟棄函數(shù)
的定義為:
其中是丟棄掩碼(Dropout Mask)属提,通過以概率為
的伯努利分布隨機(jī)生成。在訓(xùn)練時(shí)况木,激活神經(jīng)元的平均數(shù)量為原來的
倍垒拢。而在測(cè)試時(shí),所有的神經(jīng)元都是可以激活的火惊,這會(huì)造成訓(xùn)練和測(cè)試時(shí)網(wǎng)絡(luò)的輸出不一致求类。為了緩解這個(gè)問題,在測(cè)試時(shí)需要將神經(jīng)層的輸入
乘以
屹耐,也相當(dāng)于把不同的神經(jīng)網(wǎng)絡(luò)做了平均尸疆。丟棄率
可通過驗(yàn)證集來選取一個(gè)最優(yōu)的值椿猎。一般來講,對(duì)于隱藏層的神經(jīng)元寿弱,其丟棄率
時(shí)效果最好犯眠,這對(duì)大部分的網(wǎng)絡(luò)和任務(wù)都比較有效。當(dāng)
時(shí)症革,在訓(xùn)練時(shí)有一半的神經(jīng)元被丟棄筐咧,只剩一半的神經(jīng)元是可以激活的,隨機(jī)生成的網(wǎng)絡(luò)結(jié)構(gòu)最具多樣性噪矛。對(duì)于輸入層的神經(jīng)元量蕊,其丟棄率通常設(shè)為更接近1的數(shù),使得輸入變化不會(huì)太大艇挨。對(duì)輸入層神經(jīng)元進(jìn)行丟棄時(shí)残炮,相當(dāng)于給數(shù)據(jù)增加噪聲,以此來提高網(wǎng)絡(luò)的魯棒性缩滨。
丟棄法一般是針對(duì)神經(jīng)元進(jìn)行隨機(jī)丟棄势就,但是也可以擴(kuò)展到對(duì)神經(jīng)元之間的連接進(jìn)行隨機(jī)丟棄或每一層進(jìn)行隨機(jī)丟棄。下圖給出了一個(gè)網(wǎng)絡(luò)應(yīng)用Dropout方法后的示例:
對(duì)于丟棄法的有效性有兩個(gè)角度的解釋:
集成學(xué)習(xí)的解釋:每做一次丟棄脉漏,相當(dāng)于從原始的網(wǎng)絡(luò)中采樣得到一個(gè)子網(wǎng)絡(luò)苞冯。如果一個(gè)神經(jīng)網(wǎng)絡(luò)有
個(gè)神經(jīng)元,那么總共可以采樣出
個(gè)子網(wǎng)絡(luò)侧巨。每次迭代都相當(dāng)于訓(xùn)練一個(gè)不同的子網(wǎng)絡(luò)抱完,這些子網(wǎng)絡(luò)都共享原始網(wǎng)絡(luò)的參數(shù)。那么刃泡,最終的網(wǎng)絡(luò)可以近似看作是集成了指數(shù)級(jí)個(gè)不同網(wǎng)絡(luò)的組合模型。
貝葉斯學(xué)習(xí)的解釋:丟棄法也可以解釋為一種貝葉斯學(xué)習(xí)的近似碉怔。用
來表示要學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)烘贴,貝葉斯學(xué)習(xí)是假設(shè)參數(shù)
為隨機(jī)向量,并且先驗(yàn)分布為
撮胧,貝葉斯方法的預(yù)測(cè)為:
其中為第
次應(yīng)用丟棄方法后的網(wǎng)絡(luò)桨踪,其參數(shù)
為對(duì)全部參數(shù)
的一次采樣。
當(dāng)在循環(huán)神經(jīng)網(wǎng)絡(luò)上應(yīng)用丟棄法芹啥,不能直接對(duì)每個(gè)時(shí)刻的隱狀態(tài)進(jìn)行隨機(jī)丟棄锻离,這樣會(huì)損害循環(huán)網(wǎng)絡(luò)在時(shí)間維度上記憶能力。一種簡(jiǎn)單的方法是對(duì)非時(shí)間維度的連接(即非循環(huán)連接)進(jìn)行隨機(jī)丟失墓怀。
如圖所示汽纠,虛線邊表示進(jìn)行隨機(jī)丟棄,不同的顏色表示不同的丟棄掩碼傀履。
7.5虱朵、數(shù)據(jù)增強(qiáng)
深層神經(jīng)網(wǎng)絡(luò)一般都需要大量的訓(xùn)練數(shù)據(jù)才能獲得比較理想的效果。在數(shù)據(jù)量有限的情況下,可以通過數(shù)據(jù)增強(qiáng)(Data Augmentation)來增加數(shù)據(jù)量碴犬,提高模型魯棒性絮宁,避免過擬合。目前服协,數(shù)據(jù)增強(qiáng)還主要應(yīng)用在圖像數(shù)據(jù)上绍昂,在文本等其它類型的數(shù)據(jù)還沒有太好的方法。
圖像數(shù)據(jù)的增強(qiáng)主要是通過算法對(duì)圖像進(jìn)行轉(zhuǎn)變偿荷,引入噪聲等方法來增加數(shù)據(jù)的多樣性窘游。增強(qiáng)的方法主要有幾種:
- 旋轉(zhuǎn)(Rotation):將圖像按順時(shí)針或逆時(shí)針方向隨機(jī)旋轉(zhuǎn)一定角度;
- 翻轉(zhuǎn)(Flip):將圖像沿水平或垂直方法隨機(jī)翻轉(zhuǎn)一定角度遭顶;
- 縮放(Zoom In/Out):將圖像放大或縮小一定比例张峰;
- 平移(Shift):將圖像沿水平或垂直方法平移一定步長(zhǎng);
- 加噪聲(Noise):加入隨機(jī)噪聲棒旗。
7.6喘批、標(biāo)簽平滑
在數(shù)據(jù)增強(qiáng)中,我們可以給樣本特征加入隨機(jī)噪聲來避免過擬合铣揉。同樣饶深,我們也可以給樣本的標(biāo)簽引入一定的噪聲。假設(shè)訓(xùn)練數(shù)據(jù)集中逛拱,有一些樣本的標(biāo)簽是被錯(cuò)誤標(biāo)注的敌厘,那么最小化這些樣本上的損失函數(shù)會(huì)導(dǎo)致過擬合。一種改善的正則化方法是標(biāo)簽平滑(Label Smoothing)朽合,即在輸出標(biāo)簽中添加噪聲來避免模型過擬合俱两。
一個(gè)樣本的標(biāo)簽一般用onehot向量表示:
這種標(biāo)簽可以看作是硬目標(biāo)(Hard Targets)。如果使用softmax分類器并使用交叉熵?fù)p失函數(shù)曹步,最小化損失函數(shù)會(huì)使得正確類和其它類的權(quán)重差異變得很大宪彩。根據(jù)softmax函數(shù)的性質(zhì)可知,如果要使得某一類的輸出概率接近于1讲婚,其未歸一化的得分需要遠(yuǎn)大于其它類的得分尿孔,可能會(huì)導(dǎo)致其權(quán)重越來越大,并導(dǎo)致過擬合筹麸。此外活合,如果樣本標(biāo)簽是錯(cuò)誤的,會(huì)導(dǎo)致更嚴(yán)重的過擬合現(xiàn)象物赶。
為了改善這種情況白指,我們可以引入一個(gè)噪聲對(duì)標(biāo)簽進(jìn)行平滑,即假設(shè)樣本以的概率為其它類酵紫。平滑后的標(biāo)簽為:
其中為標(biāo)簽數(shù)量侵续,這種標(biāo)簽可以看作是軟目標(biāo)(Soft Targets)倔丈。標(biāo)簽平滑可以避免模型的輸出過擬合到硬目標(biāo)上,并且通常不會(huì)損害其分類能力状蜗。
上面的標(biāo)簽平滑方法是給其它個(gè)標(biāo)簽相同的概率
需五,沒有考慮標(biāo)簽之間的相關(guān)性。一種更好的做法是按照類別相關(guān)性來賦予其它標(biāo)簽不同的概率轧坎。