反向傳播算法仍然是當(dāng)前深度神經(jīng)網(wǎng)絡(luò)最受歡迎的模型最優(yōu)化方法与纽。
反向傳播
反向傳播有前向和后向兩個(gè)操作構(gòu)成,前向操作利用當(dāng)前的權(quán)重參數(shù)和輸入數(shù)據(jù)易桃,從下往上(即從輸入層到輸出層),求取預(yù)測結(jié)果,并利用預(yù)測結(jié)果與真實(shí)值求解出損失函數(shù)的值赴恨。反向操作則利用前向操作求解得到的損失函數(shù),從上往下(從輸出層到輸入層)伴栓,反向求取每一層對應(yīng)的參數(shù)梯度伦连,利用梯度下降法更新參數(shù),求解網(wǎng)絡(luò)的參數(shù)梯度钳垮。經(jīng)過前向和反向兩個(gè)操作后惑淳。完成了一次迭代過程。
損失函數(shù)
損失函數(shù)是機(jī)器學(xué)習(xí)中用于衡量模型一次預(yù)測結(jié)果好壞的函數(shù)饺窿,它是一個(gè)非負(fù)實(shí)數(shù)值函數(shù)歧焦,用L(Y,f(x))來表示,常用的損失函數(shù)包括4種肚医。
(1)0-1損失函數(shù)绢馍。0-1損失函數(shù)比較的事預(yù)測值與真實(shí)值是否相同向瓷,0-1損失函數(shù)是一個(gè)非凸函數(shù),在求解的過程中舰涌,存在很多的不足猖任,而且它只關(guān)心預(yù)測值和真實(shí)值是否相同,沒有考慮到預(yù)測值和真實(shí)值之間的距離舵稠,因此在實(shí)際應(yīng)用中超升,它通常是作為一個(gè)衡量指標(biāo),而不是最優(yōu)化的目標(biāo)函數(shù)哺徊。
(2)平方損失函數(shù)室琢。平方損失函數(shù)是線性回歸模型最常用的最優(yōu)化目標(biāo)函數(shù)。
(3)對數(shù)損失函數(shù)落追。常用于分類模型的最優(yōu)化目標(biāo)函數(shù)盈滴。
(4)Hinge損失函數(shù):有時(shí)也稱為最大間隔目標(biāo)函數(shù)。
深度學(xué)習(xí)訓(xùn)練的難點(diǎn)主要為欠擬合和過擬合:
欠擬合-梯度消失
梯度消失也稱為梯度彌撒轿钠,仍然是深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中所面臨的最大挑戰(zhàn)之一巢钓。梯度消失產(chǎn)生的源頭就在于激活函數(shù)。對預(yù)激活輸出求導(dǎo)都牽扯到激活函數(shù)的導(dǎo)數(shù)疗垛,傳統(tǒng)的激活函數(shù)及其導(dǎo)數(shù)症汹,rusigmoid和tanh函數(shù),它們的導(dǎo)數(shù)取值范圍都小于1贷腕。以sigmoid函數(shù)為例背镇,它的取值范圍為[0,1/4],泽裳,也就是當(dāng)激活函數(shù)求導(dǎo)后瞒斩,它的取值都要比上一層減少1/4,梯度的計(jì)算是隨著層數(shù)的增加而呈現(xiàn)出指數(shù)級的遞減趨勢涮总,離輸出層越遠(yuǎn)胸囱,梯度減少越明顯。
目前幾種常用防止深度神經(jīng)網(wǎng)絡(luò)梯度消失的技巧:
(1) 采用更合理的激活函數(shù)瀑梗。
(2)Batch Normalization:有ZCA標(biāo)準(zhǔn)化層和重參數(shù)化層構(gòu)成烹笔。ZCA標(biāo)準(zhǔn)化層是標(biāo)準(zhǔn)化預(yù)激活輸出,是的輸出的每一個(gè)維度都服從標(biāo)準(zhǔn)正態(tài)分布的形式抛丽,即均值為0箕宙,方差為1。重參數(shù)化層主要是對標(biāo)準(zhǔn)化后的預(yù)激活輸出結(jié)果執(zhí)行scale和shift操作铺纽,使得新的輸出值有任意的均值和方差柬帕,這樣梯度消失和非線性激活不再是一組矛盾關(guān)系,模型能夠?qū)崟r(shí)根據(jù)訓(xùn)練數(shù)據(jù)來動(dòng)態(tài)決定激活層的非線性表達(dá)能力。
(3)深度殘差網(wǎng)絡(luò)陷寝。將深度殘差網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò)模型也簡稱為ResNet锅很。
過擬合
過擬合一般是指在模型選擇中,選擇的模型參數(shù)過多凤跑,導(dǎo)致對訓(xùn)練數(shù)據(jù)的預(yù)測很好爆安,但對位置數(shù)據(jù)的預(yù)測很差的現(xiàn)象。神經(jīng)網(wǎng)絡(luò)仔引,尤其是在深度神經(jīng)網(wǎng)絡(luò)領(lǐng)域扔仓,網(wǎng)絡(luò)的層數(shù)更深,結(jié)構(gòu)也更復(fù)雜咖耘,一般能達(dá)到數(shù)十層甚至上百層翘簇,而訓(xùn)練樣本往往相對較少,過擬合問題會更加嚴(yán)重儿倒。
正則化是目前機(jī)器學(xué)習(xí)中常用來解決過擬合的技巧版保,較為常見的正則化方法包括:對單模型,比如當(dāng)驗(yàn)證集的效果變化不明顯的時(shí)候可以提前終止迭代夫否,或者采用L1正則化和L2正則化等彻犁。對多模型,可以利用boosting來集成提升凰慈,但在深度學(xué)習(xí)中汞幢,這種方法是不現(xiàn)實(shí)的,因?yàn)閱蝹€(gè)模型的訓(xùn)練已經(jīng)非常復(fù)雜耗時(shí)微谓,并且即使訓(xùn)練處多個(gè)網(wǎng)絡(luò)模型急鳄,也難以在實(shí)際環(huán)境中做到快速集成。
Dropout結(jié)合了單模型和多模型的有點(diǎn)堰酿,它是當(dāng)前深度學(xué)習(xí)領(lǐng)域解決過擬合的強(qiáng)有力的武器。如果不考慮時(shí)間復(fù)雜度张足,可以通過訓(xùn)練多個(gè)不同的網(wǎng)絡(luò)模型來集成提升效果触创,網(wǎng)絡(luò)結(jié)構(gòu)之間差別越大,提升效果也會越明顯为牍。Dropout的思想是每一迭代的過程中哼绑,會隨機(jī)讓網(wǎng)絡(luò)某些節(jié)點(diǎn)(神經(jīng)元)不參與訓(xùn)練,同時(shí)把與這些暫時(shí)丟棄的神經(jīng)元相關(guān)的所有邊全部去掉碉咆,相應(yīng)的權(quán)重不會在這一次迭代中更新抖韩,每一次迭代訓(xùn)練都重復(fù)這個(gè)操作,這些丟棄的神經(jīng)元只是暫時(shí)不做更新疫铜,下一次還是會重新參與隨機(jī)化的Dropout茂浮。