LSTM的结构
RNN和LSTM
簡略表示RNN層:長方形節點中包含了矩陣乘積、偏置的和、tanh函數的變換。將下面這個公式表示成一個tanh節點。
LSTM:Long Short-Term Memory(長短期記憶),長時間維持短期記憶。
LSTM與RNN的接口(輸入輸出)如下圖,不同地方在于,LSTM還有路徑c 。c稱為記憶單元。
記憶單元在LSTM層內部結束工作,不向其他層輸出。記憶單元僅在LSTM層內部接收和傳遞數據。
ct存儲了時刻t時LSTM的記憶(保存了從過去到時刻t的所有必要信息)。
LSTM層結構
LSTM層基于記憶單元ct計算隱藏狀態ht。
記憶單元ct基于3個輸入經過某種計算算出。隱藏狀態ht要用更新后的ct計算,對ct的各個元素應用tanh函數,這表明,記憶單元ct和隱藏狀態ht的元素個數相同。
Gate
Gate是門的意思。水管閥門的作用就是阻止或者釋放水流(數據),Gate用于控制數據的流動。
LSTM中的閥門,可以控制閥門打開的程度(開合程度)來控制水的流量。門的開合程度由0.0 ~ 1.0的實數表示(1.0全開)。門的開合程度也是自動從數據中學習到的(有權重參數用于控制門的開合程度,這些權重參數通過學習被更新)。sigmoid函數用于求門的開合程度。
輸出門
之前的隱藏狀態ht對記憶單元ct僅用了tanh函數,如果給tanh(ct)加上門,這個門,管理下個隱藏狀態ht的輸出,稱為輸出門(output gate)。
輸出門的開合程度根據輸入xt和上個狀態ht-1求出,公式如下。在使用的權重參數和偏置的上標上添加了output的首字母o,公式還用了sigmoid函數,公式的結果就是輸出門的輸出o。
ht可由o和tanh(ct)的乘積計算出來。這個乘積是對應元素的乘積,也稱為阿達瑪乘積。也就是說,對tanh(ct)的各個元素,調整它們作為下一時刻的隱藏狀態的重要程度。添加輸出門的LSTM層就像下面這樣。
tanh輸出-1.0 ~ 1.0的實數,數值表示被編碼的信息的強弱程度,sigmoid函數的輸出是0.0 ~ 1.0的實數,表示數據流出的比例。
通常,門使用sigmoid函數作為激活函數;包含實質信息的數據使用tanh函數作為激活函數。
遺忘門
接下來要告訴記憶單元需要忘記什么,也就是在記憶單元ct-1上添加一個遺忘門。
遺忘門開合程度根據輸入xt和上個狀態ht-1求出,公式如下。
添加了遺忘門的如下圖右側。
在記憶單元中添加新的信息
遺忘門從上一時刻的記憶單元中刪除了應該忘記的東西,還需要向記憶單元添加一些應當記住的新信息,也就是要添加新的tanh節點。
tanh節點計算出的結果加到上一時刻的記憶單元上,從而在記憶單元中添加新的信息。
tanh節點作用就是把新信息添加到記憶單元中。tanh節點的計算公式如下,公式的結果g是向記憶單元添加的新信息。將g加到ct-1上,形成新的記憶。
輸入門
給上面的g新添加一個輸入門,輸入門用來判斷新增信息的各個元素的價值有多大。
之前直接加上新信息,沒有對要添加的信息進行取舍。給g加上輸入門,會添加加權后的新信息。
下面的公式結果i表示輸出。sigma符號表示輸入門。i和g對應元素的乘積將被添加到記憶單元中。
記憶單元的反向傳播
通過觀察記憶單元c的反向傳播,可以知道為什么LSTM結構不會引起梯度消失。
僅關注記憶單元,它的反向傳播流過+和×節點。
+節點將上游傳來的梯度原樣流出,所以梯度沒有變化。
×節點是對應元素的乘積(阿達瑪積),這里反向傳播,進行的是對應元素的乘積計算,而不是矩陣乘積運算,所以不會像RNN一樣,由于重復進行多次矩陣乘積運算,導致梯度消失或梯度爆炸。
×節點的計算由遺忘門控制,遺忘門認為應該忘記的記憶單元的元素,梯度會變小,遺忘門認為不該忘記的記憶單元的元素,梯度向過去流動時不會變小。所以,應該長期記住的信息能在不發生梯度消失的情況下傳播。因此,記憶單元能夠保存(學習)長期的依賴關系。
總結
- 上一篇: 实现CBOW模型类
- 下一篇: 二元相图软件_Materials Stu