摘要:
1.算法概述
2.算法要點與推導
3.算法特性及優缺點
4.注意事項
5.實現和具體例子
6.適用場合
內容:
1.算法概述
長短期記憶網絡(Long Short Term Memory networks) 通常叫做 “LSTM”,由Hochreiter & Schmidhuber (1997)提出,一個LSTM Cell圖示如下:

現在,我們先來定義一下用到的符號:

在網絡結構圖中,每條線都傳遞着一個向量。其中上面一條直線表示LSTM的狀態向量的傳遞;下面一條直線表示由LSTM的上一層輸出和這一層輸入組成的合並向量的傳遞;
粉紅色的圓圈表示逐點操作,這里涉及到1.兩個輸入向量各個元素相加;2.兩個輸入向量各個元素相乘,即矩陣的哈達瑪積(hadamard product)。
黃色的矩形框表示的是一個神經網絡層(就是很多個神經節點);
合並的線表示把兩條線上所攜帶的向量進行合並;
分開的線表示將線上傳遞的向量復制一份,傳給兩個地方。
一個LSTM Cell是由3個門限結構和1個狀態向量傳輸線組成的,門限分別是遺忘門,傳入門,輸出門;
其中狀態向量傳輸線負責長程記憶,因為它只做了一些簡單的線性操作;3個門限負責短期記憶的選擇,因為門限設置可以對輸入向量做刪除或者添加操作;
1.1遺忘門:
遺忘門是通過一個sigmoid 神經層來實現的。 0 表示“不讓任何信息通過”, 1 表示“讓所有信息通過”。它的作用是要決定讓哪些信息繼續通過這個 cell。

1.2傳入門:
傳入門實現需要兩個步驟:首先,一個sigmoid 層決定哪些信息需要更新;一個 tanh 層生成一個備選的用來更新的內容;
再下一步,我們把這兩部分聯合(向量點乘)起來,對 cell 的狀態進行一個更新。它的作用是決定讓多少新的信息加入到 cell 狀態中來。

1.3輸出門
輸出門實現需要兩個步驟:首先通過一個sigmoid層來決定哪部分信息會被輸出;
接着,我們把狀態向量通過一個 tanh 層,然后把 tanh 層的輸出和 sigmoid 層計算出來的權重相乘,這樣就得到了最后輸出的結果。
輸出門的作用是決定輸出什么值。

1.4 LSTM cell狀態更新:
首先我們把舊的狀態和遺忘門的輸出相乘, 把一些不想保留的信息忘掉;然后加上輸入門的輸出,這部分信息就是我們要添加的新內容。

2.算法要點與推導
符號說明:這里的“*”代表矩陣的哈達瑪積(hadamard product)
2.1LSTM前向傳播公式:

其中設計到參數Wf,Wi,Wc,Wo,bf,bi,bc,bo
2.2LSTM后向傳播公式:

(譯)理解 LSTM 網絡 (Understanding LSTM Networks by colah)
3.算法特性及優缺點
優點:可以擬合序列數據,通過遺忘門和輸出門忘記部分信息來解決梯度消失的問題。
缺點:
4.注意事項
5.實現和具體例子
《TensorFlow實戰》實現BiLSTM處理Mnist數據
tensorflow-char-rnn_model處理莎士比亞詩集
6.適用場合
