天天看點

LSTM 入門級解讀

記錄學習過程,友善日後查用。本貼包括數學計算過程和模型解讀。

如有錯誤請指出,感謝大家的指導。

圖檔來源 LSTM模型結構的可視化 - 知乎

LSTM 入門級解讀

淡綠色的方塊被稱為cell,是構成LSTM的主要結構。實際上對于RNN類網絡來說,都會有一個這樣的結構塊,在時間上循環這個結構塊就構成了RNN網絡。上圖是最基礎的LSTM網絡。

LSTM的單元輸入總共有3個部分 h是隐藏層,X是資料輸入,C可以看成是網絡的記憶部分。所有紅色的單元是運算符,運算過程就是簡單的套用運算符;所有黃色的單元是網絡層,運算過程類似感覺機,sigma符号代表的激活函數預設為sigmoid函數。

數學運算過程

LSTM的cell内部總共有3個主要的門,第一個被稱為忘記門(forget gate) ,用來決定上一輪的輸入能有多少影響到這一輪的輸入。

忘記門公式

LSTM 入門級解讀
LSTM 入門級解讀

中括号表示concatenate,單純的将兩個向量進行次元上的合并,如x有100維,h有200維,那麼中括号就會傳回一個300維的向量。忘記門會對上一輪的輸入做一個篩選,和輸入門的輸入一起做加法得到本輪的記憶。

輸入門決定了這一輪的主要輸入。

LSTM 入門級解讀
LSTM 入門級解讀
LSTM 入門級解讀

輸出門

LSTM 入門級解讀
LSTM 入門級解讀

至此,我們得到了本輪輸出

LSTM 入門級解讀

模型簡單解讀

LSTM能擁有長時記憶的主要原因就在于變量C,C的運算結構中包含了加法。對比傳統的RNN網絡隻有一個tanh來說,更不容易出現梯度爆炸或者梯度消失的情況。

LSTM的參數個數計算。假設詞向量的次元是m,隐藏層次元為n。

那麼參數總數為((m+n)*n+n)*4。

上文提到LSTM雖然是鍊式結構,但是是在時間上循環同一個單元,是以cell之間所有的參數是共享的,不共享的是每個cell内4個網絡層的參數。4個網絡層都是感覺機的模式,相當于4個全連接配接層。全連接配接層的輸入次元是x和h的concatenate,輸出次元是h,再加上偏置和輸出次元相同,是以參數數量一共是 (m+n)*n+n,見下圖。因為總共有4個這樣的網絡,是以再乘以4。

LSTM 入門級解讀

題外話

一般在使用LSTM做文本資料時,我們關注的不僅僅隻是過去的資訊,可能還會有未來的資訊,即“結合上下文”。是以會用上雙向的LSTM,雙向LSTM可以看成LSTM和他的鏡像結合在一起,最終兩個LSTM的隐層結合一下再輸出。是以參數個數是LSTM的兩倍。

LSTM還有很多的變種,但大體的結構都大差不大。

繼續閱讀