目錄
1 短時記憶
在處理較長的句子時,循環神經網絡往往只能理解有限長度內的信息,而對於較長範圍內的有用信息往往不能很好的利用起來。那麼,能不能延長短時記憶,提高記憶力呢?——LSTM
2 LSTM與基礎的RNN對比
與基礎的RNN對比,除了有一個狀態向量ht,LSTM新增加了一個狀態向量Ct,同時引入了門控(Gate)機制,通過門控單元來控制信息的遺忘和刷新。
基礎的RNN:
LSTM:
在LSTM中,有兩個狀態向量c和h,其中c作爲LSTM的內部狀態向量,可以理解爲內存狀態向量Memory,而h表示LSTM的輸出向量。同時,利用輸入門、遺忘門和輸出門來控制內部信息的流動。
3 門控
- 遺忘門
(1)遺忘門作用於LSTM狀態向量c上面,用於控制上一個時間戳的記憶對當前時間戳的影響。
(2)遺忘門的控制變量:
(3)爲遺忘門的參數張量,可以通過反向傳播算法自動優化。爲激活函數,一般爲Sigmoid函數。
(4)當門控的時侯,門打開,LSTM接受上一個狀態的所有信息;
當門控的時侯,門關閉,LSTM忽略狀態的所有信息,輸出爲0的向量。
(5)經過遺忘門後,LSTM的狀態向量變爲
- 輸入門
(1)通過對當前時間戳的輸入和上一個時間戳的輸出做非線性變換得到新的輸入向量:其中,爲輸入門的參數,可以通過反向傳播算法自動優化。tanh爲激活函數,將輸入標準化到 [-1,1]。並不會全部刷新進LSTM的Memory,而是通過輸入門控制接受輸入的程度。
(2)輸入門控制變量:
(3)爲輸入門的參數張量,可以通過反向傳播算法自動優化。爲激活函數,一般爲Sigmoid函數。
(4)當門控的時侯,門打開,LSTM全部接受的所有信息;當門控的時侯,門關閉,LSTM不接受。
(5)經過輸入門後,待寫入Memory向量變爲。
- 刷新Memory
在遺忘門和輸入門的控制下,LSTM有選擇地讀取上一個時間戳的記憶和當前時間戳的新輸入,狀態向量的刷新方式爲:
- 輸出門
(1)LSTM的內部狀態向量並不會直接用於輸出。而是在輸出門的控制下有選擇地輸出。
(2)輸出門控制變量:
(3)爲輸出門的參數張量,可以通過反向傳播算法自動優化。爲激活函數,一般爲Sigmoid函數。
(4)當門控的時侯,門打開,LSTM的狀態向量全部輸出;當門控的時侯,門關閉,此時輸出爲0的向量。
(5)LSTM的輸出:
由於,因此LSTM的輸出。
4 輸入門和遺忘門的典型行爲
輸入門控 |
遺忘門控 |
LSTM行爲 |
0 |
1 |
只使用記憶 |
1 |
1 |
輸入和記憶 |
0 |
0 |
清零記憶 |
1 |
0 |
輸入覆蓋記憶 |
5 LSTM層的使用
(1)LSTMCell
LSTM的狀態變量List有兩個,需要分別初始化。調用Cell完成前向運算時,返回兩個元素,第一個元素爲cell的輸出,也就是,第二個元素爲cell的更新後的狀態List:。
(2)layers.LSTM層
layers = layers.LSTM(64)# 創建一層LSTM層,內存向量長度爲64
layers = layers.LSTM(64, return_sequences=True)
參考資料:Tensorflow 深度學習 龍龍老師