1.為什么使用梯度下降來優(yōu)化神經(jīng)網(wǎng)絡(luò)參數(shù)空猜?
反向傳播(用于優(yōu)化神網(wǎng)參數(shù)):根據(jù)損失函數(shù)計算的誤差通過反向傳播的方式绽慈,指導(dǎo)深度網(wǎng)絡(luò)參數(shù)的更新優(yōu)化。
采取反向傳播的原因:首先辈毯,深層網(wǎng)絡(luò)由許多線性層和非線性層堆疊而來坝疼,每一層非線性層都可以視為是一個非線性函數(shù)(非線性來自于非線性激活函數(shù)),因此整個深度網(wǎng)絡(luò)可以視為是一個復(fù)合的非線性多元函數(shù)谆沃。
我們最終的目的是希望這個非線性函數(shù)很好的完成輸入到輸出之間的映射钝凶,也就是找到讓損失函數(shù)取得極小值。所以最終的問題就變成了一個尋找函數(shù)最小值的問題唁影,在數(shù)學(xué)上耕陷,很自然的就會想到使用梯度下降來解決。
2.梯度消失据沈、爆炸會帶來哪些影響
舉個例子哟沫,對于一個含有三層隱藏層的簡單神經(jīng)網(wǎng)絡(luò)來說,當(dāng)梯度消失發(fā)生時锌介,接近于輸出層的隱藏層由于其梯度相對正常嗜诀,所以權(quán)值更新時也就相對正常,但是當(dāng)越靠近輸入層時孔祸,由于梯度消失現(xiàn)象隆敢,會導(dǎo)致靠近輸入層的隱藏層權(quán)值更新緩慢或者更新停滯。這就導(dǎo)致在訓(xùn)練時崔慧,只等價于后面幾層的淺層網(wǎng)絡(luò)的學(xué)習(xí)拂蝎。
3.產(chǎn)生的原因
以最簡單的網(wǎng)絡(luò)結(jié)構(gòu)為例,加入有三個隱藏層惶室,每層的神經(jīng)元個數(shù)都是1匣屡,且對應(yīng)的非線性函數(shù)為(其中
為某個激活函數(shù))如下圖:
現(xiàn)在假設(shè)我們需要更新參數(shù) ,那么我們就要求出損失函數(shù)對參數(shù)
的導(dǎo)數(shù)拇涤,根據(jù)鏈?zhǔn)椒▌t,可以寫成下面這樣:
而對于激活函數(shù)誉结,之前一直使用Sigmoid函數(shù)鹅士,其函數(shù)圖像成一個S型,如下所示惩坑,它會將正無窮到負(fù)無窮的數(shù)映射到0~1之間:
當(dāng)我們對Sigmoid函數(shù)求導(dǎo)時掉盅,得到其結(jié)果如下:
由此可以得到它Sigmoid函數(shù)圖像也拜,呈現(xiàn)一個駝峰狀(很像高斯函數(shù)),從求導(dǎo)結(jié)果可以看出趾痘,Sigmoid導(dǎo)數(shù)的取值范圍在0~0.25之間慢哈,而我們初始化的網(wǎng)絡(luò)權(quán)值通常都小于1,因此永票,當(dāng)層數(shù)增多時卵贱,小于0的值不斷相乘,最后就導(dǎo)致梯度消失的情況出現(xiàn)侣集。同理键俱,梯度爆炸的問題也就很明顯了,就是當(dāng)權(quán)值
過大時世分,導(dǎo)致
编振,最后大于1的值不斷相乘,就會產(chǎn)生梯度爆炸臭埋。
Sigmoid函數(shù)求導(dǎo)圖像
4.解決辦法
梯度消失和梯度爆炸本質(zhì)上是一樣的踪央,都是因為網(wǎng)絡(luò)層數(shù)太深而引發(fā)的梯度反向傳播中的連乘效應(yīng)。
解決梯度消失瓢阴、爆炸主要有以下幾種方案:
4.1 換用Relu畅蹂、LeakyRelu、Elu等激活函數(shù)
ReLu:讓激活函數(shù)的導(dǎo)數(shù)為1
LeakyReLu:包含了ReLu的幾乎所有有點(diǎn)炫掐,同時解決了ReLu中0區(qū)間帶來的影響
ELU:和LeakyReLu一樣魁莉,都是為了解決0區(qū)間問題,相對于來募胃,elu計算更耗時一些(為什么)
具體可以看關(guān)于各種激活函數(shù)的解析與討論
4.2 BatchNormalization
BN本質(zhì)上是解決傳播過程中的梯度問題旗唁,具體待補(bǔ)充完善,查看BN
4.3 ResNet殘差結(jié)構(gòu)
具體待補(bǔ)充完善痹束,查看ResNet
4.4 LSTM結(jié)構(gòu)
LSTM不太容易發(fā)生梯度消失检疫,主要原因在于LSTM內(nèi)部復(fù)雜的“門(gates)”,具體看LSTM基本原理解析
4.4 預(yù)訓(xùn)練加finetunning
此方法來自Hinton在06年發(fā)表的論文上祷嘶,其基本思想是每次訓(xùn)練一層隱藏層節(jié)點(diǎn)屎媳,將上一層隱藏層的輸出作為輸入,而本層的輸出作為下一層的輸入论巍,這就是逐層預(yù)訓(xùn)練烛谊。
訓(xùn)練完成后,再對整個網(wǎng)絡(luò)進(jìn)行“微調(diào)(fine-tunning)”嘉汰。
此方法相當(dāng)于是找全局最優(yōu)丹禀,然后整合起來尋找全局最優(yōu),但是現(xiàn)在基本都是直接拿imagenet的預(yù)訓(xùn)練模型直接進(jìn)行finetunning。
4.5 梯度剪切双泪、正則
這個方案主要是針對梯度爆炸提出的持搜,其思想是設(shè)值一個剪切閾值,如果更新梯度時焙矛,梯度超過了這個閾值葫盼,那么就將其強(qiáng)制限制在這個范圍之內(nèi)。這樣可以防止梯度爆炸村斟。
另一種防止梯度爆炸的手段是采用權(quán)重正則化贫导,正則化主要是通過對網(wǎng)絡(luò)權(quán)重做正則來限制過擬合,但是根據(jù)正則項在損失函數(shù)中的形式:
可以看出邓梅,如果發(fā)生梯度爆炸脱盲,那么權(quán)值的范數(shù)就會變的非常大,反過來日缨,通過限制正則化項的大小钱反,也可以在一定程度上限制梯度爆炸的發(fā)生。