1. LSTM原理
由我們所了解的RNN可知,RNN結構之所以出現梯度爆炸或者梯度消失,最本質的原因是因為梯度在傳遞過程中存在極大數量的連乘,為此有人提出了LSTM模型,它可以對有價值的信息進行記憶,放棄冗余記憶,從而減小學習難度。
與RNN相比,LSTM的神經元還是基於輸入X和上一級的隱藏層輸出h來計算,只不過內部結構變了,也就是神經元的運算公式變了,而外部結構並沒有任何變化,因此上面提及的RNN各種結構都能用LSTM來替換。
相對於RNN,LSTM的神經元加入了輸入門i、遺忘門f、輸出門o 和內部記憶單元c。筆者這里先給上一個整體的LSTM結構圖如圖 4.48所示,之后筆者再對它內部結構的運算邏輯進行詳細的解釋。
圖 4.48 LSTM結構圖
遺忘門f:控制輸入X和上一層隱藏層輸出h被遺忘的程度大小,如圖 4.49所示。
圖 4.49 遺忘門(forget gate)
遺忘門公式如式(4.43):
輸入門 i:控制輸入X和當前計算的狀態更新到記憶單元的程度大小,如圖 4.50所示。
圖 4.50 輸入門(input gate)
遺忘門公式如式(4.44):
內部記憶單元 c:
圖 4.51 內部記憶單元
內部記憶單元公式如式(4.45)~(4.46):
輸出門 o:控制輸入X和當前輸出取決於當前記憶單元的程度大小,如圖 4.52所示。
圖 4.52 輸出門(output gate)
輸出門公式如式(4.47)~(4.48):
其中σ一般選擇Sigmoid作為激勵函數,主要是起到門控作用。因為Sigmoid函數的輸出為0~1,當輸出接近0或1時,符合物理意義上的關與開。tanh函數作為生成候選記憶C的選項,因為其輸出為-1~1,符合大多數場景下的0中心的特征分布,且梯度(求導)在接近0處,收斂速度比sigmoid函數要快,這也是選擇它的另外一個原因。不過LSTM的激勵函數也不是一成不變的,大家可以根據自己的需求去更改,只要能更好地解決自己的問題即可。
對於一個訓練好的LSTM模型,我們要知道它的每一個門(遺忘門、輸出門和輸入門)都有各自的(U, W, b),上述公式也有所體現,這是在訓練過程中得到的。而且當輸入的序列不存在有用信息時,遺忘門f的值就會接近1,那么輸入門i的值接近0,這樣過去有用的信息就會被保存。當輸入的序列存在重要信息時,遺忘門f的值就會接近0,那么輸入門i的值接近1,此時LSTM模型遺忘過去的記憶,記錄重要記憶。
因此我們可以看出由遺忘門、輸出門、輸入門和內部記憶單元共同控制LSTM輸出h的設計,使得整個網絡更好地把握序列信息之間的關系。
2 BiLSTM介紹
前向的LSTM與后向的LSTM結合成BiLSTM。比如,我們對“我愛中國”這句話進行編碼,模型如圖6所示。
圖6. 雙向LSTM編碼句子
前向的依次輸入“我”,“愛”,“中國”得到三個向量{
,
,
}。后向的
依次輸入“中國”,“愛”,“我”得到三個向量{
,
,
}。最后將前向和后向的隱向量進行拼接得到{[
,
], [
,
], [
,
]},即{
,
,
}。
對於情感分類任務來說,我們采用的句子的表示往往是[,
]。因為其包含了前向與后向的所有信息,如圖7所示。
圖7. 拼接向量用於情感分類