人工智能AI面試題-4.4 如何緩解梯度消失和梯度膨脹(微調(diào)、梯度截?cái)?、改良激?/h1>
**4.4 如何緩解梯度消失和梯度膨脹(微調(diào)、梯度截?cái)?、改良激活函?shù)等)** 簡(jiǎn)?之,引起梯度消失和梯度爆炸的原因分別是: **梯度消失**:根據(jù)鏈?zhǔn)椒▌t,如果每?層神經(jīng)元對(duì)上?層的輸出的偏導(dǎo)乘上權(quán)重結(jié)果都?于1的話, 那么即使這個(gè)結(jié)果是0.99,在經(jīng)過(guò)?夠多層傳播之后,誤差對(duì)輸?層的偏導(dǎo)會(huì)趨于0??梢圆?ReLU 激活函數(shù)有效的解決梯度消失的情況,也可以?Batch Normalization解決這個(gè)問(wèn)題。 **梯度膨脹**:根據(jù)鏈?zhǔn)椒▌t,如果每?層神經(jīng)元對(duì)上?層的輸出的偏導(dǎo)乘上權(quán)重結(jié)果都?于1的話,在經(jīng)過(guò)?夠多層傳播之后,誤差對(duì)輸?層的偏導(dǎo)會(huì)趨于?窮?。可以通過(guò)激活函數(shù)來(lái)解決,或?Batch Normalization解決這個(gè)問(wèn)題。 具體??,梯度消失爆炸的解決?案主要包括以下?個(gè)部分: (1)預(yù)訓(xùn)練加微調(diào) (2)梯度剪切、權(quán)重正則(針對(duì)梯度爆炸) (3)使?不同的激活函數(shù) (4)使?BatchNorm (5)使?殘差結(jié)構(gòu) (6)使?LSTM?絡(luò) 第?部分:為什么要使?梯度更新規(guī)則 在介紹梯度消失以及爆炸之前,先簡(jiǎn)單說(shuō)?說(shuō)梯度消失的根源—深度神經(jīng)?絡(luò)和反向傳播。?前深度學(xué)習(xí)?法中,深度神經(jīng)?絡(luò)的發(fā)展造就了我們可以構(gòu)建更深層的?絡(luò)完成更復(fù)雜的任務(wù), 深層?絡(luò)?如深度卷積?絡(luò)、LSTM等等,?且最終結(jié)果表明,在處理復(fù)雜任務(wù)上,深度?絡(luò)?淺層的 ?絡(luò)具有更好的效果。但是,?前優(yōu)化神經(jīng)?絡(luò)的?法都是基于反向傳播的思想,即根據(jù)損失函數(shù)計(jì)算的誤差通過(guò)梯度反向傳播的?式,指導(dǎo)深度?絡(luò)權(quán)值的更新優(yōu)化。 這樣做是有?定原因的。?先,深層?絡(luò)由許多?線性層堆疊?來(lái),每?層?絡(luò)都可以視為是?個(gè)?線性多元函數(shù)。我們最終的?的是希望這個(gè)多元函數(shù)可以很好的完成輸?到輸出之間的映射,假設(shè)不同的輸?, 輸出的最優(yōu)解是??,那么,優(yōu)化深度?絡(luò)就是為了尋找到合適的權(quán)值,滿???, 取得極?值點(diǎn),?如最簡(jiǎn)單的損失函數(shù)。假設(shè)損失函數(shù)的數(shù)據(jù)空間是下圖這樣的,我們最優(yōu)的權(quán)值就是為了尋找下圖中的最?值點(diǎn),對(duì)于這種數(shù)學(xué)尋找最?值問(wèn)題,采?梯 度下降法或者梯度提升法是?種很?泛的?法。 (這?的??塊就代表?yè)p失函數(shù)的?個(gè)極?值點(diǎn),??如X代表的是深度?絡(luò)的權(quán)值,不同的權(quán)值可以求得不同的極?值點(diǎn))。 然后,如何?梯度下降法來(lái)優(yōu)化深度?絡(luò)呢??先,如果知道了某個(gè)點(diǎn)的梯度,?且當(dāng)前位置是?于0的,那么根據(jù)梯度的方向,我們就可以知道下?步朝著梯度的?向?,?多遠(yuǎn)呢? 這取決于深度?絡(luò)的步?,梯度下降法和梯度提升法中的步?的選擇?般有兩種?法,?種是固定的步??如0.1,這種?法?般不常?,因?yàn)?旦步??較?的話容易在搜索的時(shí)候錯(cuò)過(guò)最?值點(diǎn),另外?種?法是動(dòng)態(tài)的步?,即根據(jù)當(dāng)前的位置和?標(biāo)?向計(jì)算出合適的步?,這個(gè)步??般由學(xué)習(xí)率來(lái)控制,對(duì)于梯度下降法,學(xué)習(xí)率?般取??點(diǎn)?如0.01。 然后,?前的深度學(xué)習(xí)?法中的?部分都采?了?種變種,即帶動(dòng)量的隨機(jī)梯度下降法。所謂的帶動(dòng)量的隨機(jī)梯度下降法可以看成是加速梯度下降法的?種?法,具體??,它?了動(dòng)量的概念,即根據(jù)之前的梯度更新的?向和步?來(lái)計(jì)算當(dāng)前的梯度下降的?向和步?,這樣做的?的是為了提?搜索的效率,可以跳出局部極?值點(diǎn)。這?不詳細(xì)展開,但是這?簡(jiǎn)單說(shuō)?下它的數(shù)學(xué)表達(dá)式: `$\Delta w_{t}=\beta \Delta w_{t-1}-(1-\beta )\alpha \nabla f_{t}$` `$w_{t}=w_{t-1}+\Delta w_{t}$` 其中,$\Delta w_{t}$表示當(dāng)前的步?和?向,$w_{t}$表示當(dāng)前的權(quán)值,$w_{t-1}$表示上?步的權(quán)值,$\nabla f_{t}$表示當(dāng)前的梯度,$\alpha$表示學(xué)習(xí)率,$\beta$表示動(dòng)量的?重。從這個(gè)表達(dá)式中可以看出,動(dòng)量的?重?般取??點(diǎn)?如0.9,這個(gè)?般是通過(guò)?工設(shè)置的。 第?部分:如何?梯度下降法來(lái)優(yōu)化深度?絡(luò) 在了解了帶動(dòng)量的隨機(jī)梯度下降法之后,現(xiàn)在可以說(shuō)?說(shuō)?梯度下降法來(lái)優(yōu)化深度?絡(luò)的具體步驟。 ?先,?絡(luò)的輸?,我們假設(shè)輸?為X,其中X是?個(gè)多維數(shù)組,?且輸?的數(shù)據(jù)需要經(jīng)過(guò)預(yù)處理。然后,輸?通過(guò)每?層?絡(luò)的權(quán)值,?絡(luò)的輸出可以表示為?個(gè)?線性的多元函數(shù),如果不考慮偏置的話。然后,通過(guò)激活函數(shù)將輸出傳?到下?層?絡(luò),可以表示為: $$Y=f(WX)$$ 其中,Y表示?絡(luò)的輸出,W表示?絡(luò)的權(quán)值,X表示?絡(luò)的輸?,f表示激活函數(shù)。 然后,我們將?絡(luò)的輸?X和輸出Y通過(guò)損失函數(shù)聯(lián)系在?起,損失函數(shù)表示?絡(luò)的輸出Y和?標(biāo)?向之間的差異,損失函數(shù)的定義?般是根據(jù)具體的問(wèn)題來(lái)的。損失函數(shù)的定義?般通過(guò)?工設(shè)定,?如在分類問(wèn)題中,可以選擇?種交叉熵?fù)p失函數(shù),?在回歸問(wèn)題中,可以選擇均?誤差損失函數(shù),具體?家可以去查看?絡(luò)優(yōu)化的論?。 然后,損失函數(shù)表示?絡(luò)的輸出Y和?標(biāo)?向之間的差異,損失函數(shù)的定義?般是根據(jù)具體的問(wèn)題來(lái)的。損失函數(shù)的定義?般通過(guò)?工設(shè)定,?如在分類問(wèn)題中,可以選擇?種交叉熵?fù)p失函數(shù),?在回歸問(wèn)題中,可以選擇均?誤差損失函數(shù),具體?家可以去查看?絡(luò)優(yōu)化的論?。 然后,我們?梯度下降法來(lái)最?化損失函數(shù)。具體??,我們通過(guò)損失函數(shù)計(jì)算的誤差反 向傳播到?絡(luò)的每?層,然后根據(jù)梯度下降法來(lái)更新?絡(luò)的權(quán)值,這樣?步步地迭代下去,直到損失函數(shù)的值收斂或者?幅度減?。這個(gè)過(guò)程可以表示為: $$W_{t+1} = W_t - \alpha \nabla L(W_t)$$ 其中,$W_{t+1}$表示下?步的權(quán)值,$W_t$表示當(dāng)前的權(quán)值,$\alpha$表示學(xué)習(xí)率,$\nabla L(W_t)$表示損失函數(shù)對(duì)權(quán)值的梯度。 這個(gè)過(guò)程會(huì)?直迭代下去,直到損失函數(shù)的值收斂或者?幅度減?。這個(gè)過(guò)程中,需要注意的是學(xué)習(xí)率的選擇,?般來(lái)說(shuō),學(xué)習(xí)率不能太?,否則容易錯(cuò)過(guò)最?值點(diǎn),?且也不能太?,否則收斂速度會(huì)很慢。學(xué)習(xí)率的選擇?般需要通過(guò)試驗(yàn)來(lái)確定。 總結(jié)?下,深度學(xué)習(xí)的優(yōu)化?法主要包括梯度下降法和梯度提升法,其中梯度下降法包括了梯度下降法和帶動(dòng)量的隨機(jī)梯度下降法,?梯度提升法主要包括了?些集成學(xué)習(xí)?法。深度學(xué)習(xí)的優(yōu)化?法是深度學(xué)習(xí)的重要組成部分,?個(gè)好的優(yōu)化?法可以提??絡(luò)的性能,??個(gè)不好的優(yōu)化?法則可能導(dǎo)致?絡(luò)難以訓(xùn)練。希望通過(guò)這??的介紹,?家能對(duì)深度學(xué)習(xí)的優(yōu)化?法有?個(gè)初步的了解。