LSTM與梯度消失

2021-08-23 12:08:24 字數 1009 閱讀 6109

1. 標準rnn中處理序列資料的方法是將上乙個state的資訊傳到下乙個state中,表示成數學公式為st=f(w*(st-1,xt)+b),其中f為啟用函式。在反向傳播中,根據求導的鏈式法則,這種形式求得的梯度為乙個矩陣w與啟用函式導數的乘積。如果進行n次反向傳播,梯度變化將會變為(w*f」)的n次方累乘。

(1)如果乘積大於1,則梯度會隨著反向傳播層數n的增加而成指數增長,導致梯度**;

(2)如果乘積小於1,經過多層傳播後,小於1的數累乘後結果趨近於0,導致梯度消失。

2. 現在的lstm主要用來緩解梯度消失問題,其中,st主要由兩部分組成,表示過去資訊的st-1和表示現在資訊st(~),數學公式為st = ft*st-1+it*f(st-1)

其中第二input部分與標準rnn類似,在反向傳播中可能會逐漸消失,而第一forget部分經過多次傳播之後,會出現ft*ft-1*ft-2……這樣的累乘,ft的大小是可選的,可以有效減輕梯度消失。

3. 梯度**一般靠裁剪後的優化演算法即可解決,比如gradient clipping(如果梯度的範數大於某個給定值,將梯度同比收縮)。

4. 關於lstm中的forget gate的理解:

(1)原始的lstm是沒有forget gate的,或者說相當於forget gate恒為1,所以不存在梯度消失問題

(2)現在的lstm被引入了forget gate,但是lstm的乙個初始化技巧就是將forget gate的bias置為正數(例如1或5,這點可以檢視各大框架**),這樣模型剛開始訓練時forget gate的值接近於1,不回發生梯度消失

(3)隨著訓練過程的進行,forget gate就不再恒為1了。不過對於乙個已經訓練好的模型,需要選擇性地記住或者遺忘某些資訊,所以forget gate要麼是1,要麼是0,很少有類似0.5這樣的中間值,相當於乙個二元的開關。例如在某個序列裡,forget gate全為1,那麼梯度不會消失;否則,若某乙個forget gate是0,這時候雖然會導致梯度消失,但是體現了模型的選擇性,刻意遺忘某些資訊。

綜上,lstm可以緩解梯度消失問題,但不能徹底避免。

LSTM為什麼可以緩解梯度消失

首先要明確的一點是,lstm並不能完全解決梯度消失的問題,僅僅只是緩解。原始的lstm是沒有遺忘門的,所以c tc t ct 的更新如下 c t ct 1 it c tc t c i t hat c t ct ct 1 it c t 由此可見c tc t ct 對ct 1c ct 1 的偏導為常數1...

梯度消失問題與如何選擇啟用函式

梯度消失,常常發生在用基於梯度的方法訓練神經網路的過程中。當我們在做反向傳播,計算損失函式對權重的梯度時,隨著越向後傳播,梯度變得越來越小,這就意味著在網路的前面一些層的神經元,會比後面的訓練的要慢很多,甚至不會變化。網路的前面的一些層是很重要的,它們負責學習和識別簡單的模式,也是整個網路的基礎,如...

梯度消失問題與如何選擇啟用函式

梯度消失,常常發生在用基於梯度的方法訓練神經網路的過程中。當我們在做反向傳播,計算損失函式對權重的梯度時,隨著越向後傳播,梯度變得越來越小,這就意味著在網路的前面一些層的神經元,會比後面的訓練的要慢很多,甚至不會變化。網路的前面的一些層是很重要的,它們負責學習和識別簡單的模式,也是整個網路的基礎,如...