深度學習與神經網絡(十)—— LSTM

LSTM——long short-term memory

LSTM能夠解決梯度彌散的情況。LSTM還解決了記憶長度的問題

 

以前RNN只能記住比較短的時間序列,LSTM就把短的short-term給你延長了,所以才叫long short-term memory

我們之前學的RNN就是最基本的RNN版本,它也就是short-term memory

我們換一種畫法

Wxh也叫Wih

這就是原始的RNN的表達結構

 

LSTM的原理

LSTM在原始RNN的基礎上設計了三道閘門:輸入門、輸出門、遺忘門

有目的性的,有選擇性得過濾輸入得信息

每道門由一個sigmoid函數和逐點相乘操作實現的

三道門輸入的都是ht-1和xt,ht-1和xt控制所有三道門的開度

 

LSTM可以抽象成

 

LSTM的一個核心概念:Cell State

我們以細胞狀態向量的形式,來存儲神經元對過往序列的宏觀理解和記憶——然後把上一個時間步的細胞狀態、當前時間步的輸入、上一時步的隱藏狀態綜合起來,構造出神經元的歷史長期記憶

說到底還是在仿照神經元/神經細胞結構在構建網絡

原始 RNN 的隱藏層只有一個狀態,即h,它對於短期的輸入非常敏感。
再增加一個狀態,即c,讓它來保存長期的狀態,稱爲單元狀態(cell state)

LSTM只是在RNN的基礎上多了一記憶細胞層,可以把過去的信息和當下的信息隔離開來,過去的信息直接在Cell運行,當下的決策在Hidden State裏面運行
 

 

LSTM的三道門

①遺忘門 forget gate

其實應該叫remember gate更加合理一點

因爲門是控制開閉的,0代表完全拋棄,全部忘記,1代表完全保留,全部記住,0-1代表部分保留,而sigmoid函數的值域爲0-1,因此選取sigmoid函數。

ft就是forget門的開度,就是t時刻的forget的量

遺忘門的作用:決定上一時刻中哪些信息從單元狀態中拋棄,即將前一個細胞狀態中的信息選擇性遺忘

根據當前的輸入xt和上一時刻輸出ht-1計算出一個向量

它在每一維度上的值都在(0,1)範圍內,再將上一時刻的ct-1與ft向量按位相乘,那麼ft取值接近於0的維度上信息就會被忘記,而ft取值接近於1的維度上的信息會被保留。

例如:我喜歡籃球,他喜歡足球,當第二個主語出現,選擇性的拋棄我這個主語。
 

②輸入門

作用是決定有多少新的信息將要存儲到當前細胞中,將新的信息選擇性的記錄到當前細胞狀態中 

it是輸入門的開度,it與~Ct相乘就會控制有多少~Ct信息能流進去

~Ct就是新進來的信息,注意新的信息不是隻有xt的

tanh()中是短期記憶的原始數據

 

遺忘門與輸入門的綜合

最後的memory就是Ct

 

③輸出門

在LSTM中,我們把Ct看作原始RNN的ht,即傳給下一個cell的,用於循環更新的值

把ht看作是輸出值

作用:決定輸出什麼。

ot是輸出門的開度,決定有多少Ct要被輸出

ht代表輸出

 

 

再換一種畫圖方式表示LSTM

 

此時我們來看

輸入門爲0,遺忘門爲1:Ct=Ct-1, 沒有新的輸入了,Ct會直接得到Ct-1,將全部用過去的信息,把新的信息全部忽略掉

輸入門爲1,遺忘門爲1:Ct=Ct-1+~C, 將新的信息添加到過去的信息上面去共同組成現在的memory

輸入門爲0,遺忘門爲0:Ct=0,清楚掉當前的memory,有點像寄存器置零

輸入門爲1,遺忘門爲0:Ct=~Ct,沒有過去的記憶了,新的信息將“統治”當前memoey,或者說叫overwrite或叫覆蓋

 

 

公式表示

ft表示遺忘門

it表示輸入門

ot表示輸出門

 

ct是memory

ht是輸出

 

 

 

爲什麼LSTM能解決梯度彌散

原始RNN的ht-1到ht沒有一個直通的通道,都必須經過Whh,才造成了Whh^k的情形

而LSTM有了一個memory直通的通道,有點類似於Resnet

 

另外LSTM之中採用了sigmoid作激活函數

當LSTM網絡很深時且使用tanh作爲激活函數,可能會引起梯度消失的問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章