摘自:https://zybuluo.com/hanbingtao/note/581764 寫得非常好 見原文
長短時記憶網絡的思路比較簡單。原始RNN的隐藏層隻有一個狀态,即h,它對于短期的輸入非常敏感。那麼,假如我們再增加一個狀态,即c,讓它來儲存長期的狀态,那麼問題不就解決了麼?如下圖所示:

新增加的狀态c,稱為單元狀态(cell state)。我們把上圖按照時間次元展開:
上圖僅僅是一個示意圖,我們可以看出,在t時刻,LSTM的輸入有三個:目前時刻網絡的輸入值、上一時刻LSTM的輸出值、以及上一時刻的單元狀态;LSTM的輸出有兩個:目前時刻LSTM輸出值、和目前時刻的單元狀态。注意、、都是向量。
LSTM的關鍵,就是怎樣控制長期狀态c。在這裡,LSTM的思路是使用三個控制開關。第一個開關,負責控制繼續儲存長期狀态c;第二個開關,負責控制把即時狀态輸入到長期狀态c;第三個開關,負責控制是否把長期狀态c作為目前的LSTM的輸出。三個開關的作用如下圖所示:
接下來,我們要描述一下,輸出h和單元狀态c的具體計算方法。
長短時記憶網絡的前向計算
下圖顯示了遺忘門的計算:
接下來看看輸入門,下圖表示了輸入門的計算:
接下來,我們計算用于描述目前輸入的單元狀态,它是根據上一次的輸出和本次輸入來計算的,下圖是計算:
現在,我們計算目前時刻的單元狀态。它是由上一次的單元狀态按元素乘以遺忘門,再用目前輸入的單元狀态按元素乘以輸入門,再将兩個積加和産生的,下圖是計算:
這樣,我們就把LSTM關于目前的記憶和長期的記憶組合在一起,形成了新的單元狀态。由于遺忘門的控制,它可以儲存很久很久之前的資訊,由于輸入門的控制,它又可以避免目前無關緊要的内容進入記憶。下面,我們要看看輸出門,它控制了長期記憶對目前輸出的影響。
下圖表示輸出門的計算:
LSTM最終的輸出,是由輸出門和單元狀态共同确定的。
下圖表示LSTM最終輸出的計算:
式1到式6就是LSTM前向計算的全部公式。至此,我們就把LSTM前向計算講完了。