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作爲激活函數,可能會引起梯度消失的問題。