梯度弥散与梯度爆炸
問題描述
先來看看問題描述。
當我們使用sigmoid funciton 作為激活函數時,隨著神經網絡hidden layer層數的增加,訓練誤差反而加大了,如上圖所示。
下面以2層隱藏層神經網絡為例,進行說明。
結點中的柱狀圖表示每個神經元參數的更新速率(梯度)大小,有圖中可以看出,layer2整體速度都要大于layer1.
我們又取每層layer中參數向量的長度來粗略的估計該層的更新速率,得到下圖。
可以看出,layer2的速率都要大于layer1.
然后我們繼續加深神經網絡的層數。
可以得到下面的結論:
靠近輸出層的hidden layer 梯度大,參數更新快,所以很快就會收斂;
而靠近輸入層的hidden layer 梯度小,參數更新慢,幾乎就和初始狀態一樣,隨機分布。
在上面的四層隱藏層網絡結構中,第一層比第四層慢了接近100倍!!
這種現象就是梯度彌散(vanishing gradient problem)。而在另一種情況中,前面layer的梯度通過訓練變大,而后面layer的梯度指數級增大,這種現象又叫做梯度爆炸(exploding gradient problem)。
總的來說,就是在這個深度網絡中,梯度相當不穩定(unstable)。
直觀說明
那么為何會出現這種情況呢?
現在我們來直觀的說明一下。
在上面的升級網絡中,我們隨意更新一個參數,加上一個Δw,(我們知道可以使用參數變化量來估計偏導數的大小)這個參數的更新會隨著網絡向前傳播。
而根據sigmoid的特點,它會將負無窮到正無窮之間的輸入壓縮到0~1之間。當input的值更新時,output會有很小的更新。
又因為上一層的輸出將作為后一層的輸入,而輸出經過sigmoid后更新速率會逐步衰減,直到輸出層只會有微乎其微的更新。
數學說明
為了弄清楚為何會出現消失的梯度,來看看一個極簡單的深度神經網絡:每一層都只有一個單一的神經元。下面就是有三層隱藏層的神經網絡:
我們把梯度的整個表達式寫出來:
為了理解每個項的行為,先看下sigmoid函數導數的曲線:
該導數在 σ′(0)=14σ′(0)=14時達到最高。現在,如果我們使用標準方法來初始化網絡中的權重,那么會使用 一個均值為0標準差為1的高斯分布(也就是正態分布)。因此所有的權重通常會滿足 |wj|<1|wj|<1。有了這些信息,我們發現會有 wjσ′(zj)<14wjσ′(zj)<14,并且在進行所有這些項的乘積時,最終結果肯定會指數級下降:項越多,乘積的下降也就越快。
下面我們從公式上比較一下第三層和第一層神經元的學習速率:
比較一下?C?b1?C?b1和?C?b3?C?b3可知,?C?b1?C?b1要遠遠小于?C?b3?C?b3。因此,梯度消失的本質原因是:wjσ′(zj)<14wjσ′(zj)<14的約束。
梯度激增問題
舉個例子說明下:
首先,我們將網絡的權重設置得很大,比如w1=w2=w3=w4=100w1=w2=w3=w4=100,然后,我們選擇偏置使得σ′(zj)σ′(zj)項不會太小。這是很容易實現的:方法就是選擇偏置來保證每個神經元的帶權輸入是zj=0zj=0(這樣wjσ′(zj)=14wjσ′(zj)=14)。比如說,我們希望z1=w1?a0+b1z1=w1?a0+b1,我們只需要把b1=?100?a0b1=?100?a0即可。我們使用相同的方法來獲取其他的偏置。這樣我們可以發現所有的項wj?σ′(zj)wj?σ′(zj),都等于100?1/4=25100?1/4=25。最終,我們獲得了激增的梯度。
梯度爆炸的原因:在train的時候如果參數w變得足夠大,就可能使|w|>1|w|>1,那樣wjσ′(zj)<14wjσ′(zj)<14就不滿足了,的確這樣不會有梯度彌散問題,根據我們之前的分析,當|w|>1|w|>1時,會使后面的layer參數指數級增加,從而引發梯度爆炸。
不穩定的梯度問題:根本的問題其實并非是消失的梯度問題或者激增的梯度問題,而是在前面的層上的梯度是來自后面的層上項的乘積。當存在過多的層次時,就出現了內在本質上的不穩定場景。唯一讓所有層都接近相同的學習速度的方式是所有這些項的乘積都能得到一種平衡。如果沒有某種機制或者更加本質的保證來達成平衡,那網絡就很容易不穩定了。簡而言之,真實的問題就是神經網絡受限于不穩定梯度的問題。所以,如果我們使用標準的基于梯度的學習算法,在網絡中的不同層會出現按照不同學習速度學習的情況。
解決方法
梯度不穩定的方法就是,使用其他激活函數替代sigmoid,比如Relu等等,這里就不細說了。
參考文獻:
[1] Why are deep neural networks hard to train?
[2] 梯度彌散與梯度爆炸
[3] 深度學習中消失的梯度
總結
- 上一篇: java廖雪峰_廖雪峰Java教程学习笔
- 下一篇: 网上计算机能力提升研修心得,信息技术应用