LSTM神经网络和GRU
說到LSTM,無可避免的首先要提到最簡單最原始的RNN。
在循環神經網絡(RNN)中學習了RNN的原理和模型結構,這里再簡單回顧一下,引出LSTM模型。
一、RNN
循環神經網絡(Recurrent Neural Network,RNN)是一種用于處理序列數據的神經網絡。相比一般的神經網絡來說,他能夠處理序列變化的數據。比如某個單詞的意思會因為上文提到的內容不同而有不同的含義,RNN就能夠很好地解決這類問題。
二、LSTM神經網絡
長短時記憶網絡(Long Short Term Memory Network, LSTM)是一種時間遞歸神經網絡,它出現的原因是為了解決RNN的一個致命的缺陷。
原生的RNN會遇到一個很大的問題,叫做The vanishing gradient problem for RNNs,也就是后面時間的節點會出現老年癡呆癥,也就是忘事兒,這使得RNN在很長一段時間內都沒有受到關注,網絡只要一深就沒法訓練。
而LSTM網絡具有“記憶性”,其原因在于不同“時間點”之間的網絡存在連接,而不是單個時間點處的網絡存在前饋或者反饋;并且LSTM擅長于處理多個變量的問題,該特性使其有助于解決時間序列預測問題。
想要了解LSTM的原理可以參考:零基礎入門深度學習(6) - 長短時記憶網絡(LSTM)
三、LSTM和RNN的區別
長短時記憶網絡(Long Short Term Memory Network, LSTM) 是一種特殊的RNN,主要是為了解決長序列訓練過程中的梯度消失和梯度爆炸問題。簡單來說,就是相比普通的RNN,LSTM能夠在更長的序列中有更好的表現。
LSTM結構(圖右)和普通RNN的主要輸入輸出區別如下所示:
相比RNN只有一個傳遞狀態ht,LSTM有兩個傳輸狀態,一個ct(cell state)和一個 ht(hidden state)。
注:RNN中的 ht 相當于LSTM的 ct。
其實對于傳遞下去的 ct 改變的很慢,通常輸出的 ct 是上一個狀態傳過來的ct?1^{t-1}t?1加上一些數值。而 ht 則在不同節點下往往會有很大的區別。
四、深入LSTM結構
LSTM和普通RNN如貴族和乞丐,RNN什么信息它都存下來,因為它沒有挑選的能力,而LSTM不一樣,它會選擇性的存儲信息,因為它能力強,它有門控裝置,它可以盡情的選擇。
如下圖,普通RNN只有中間的Memory Cell用來存所有的信息,而從下圖我們可以看到,LSTM多了三個Gate,也就是三個門,什么意思呢?在現實生活中,門就是用來控制進出的,門關上了,你就進不去房子了,門打開你就能進去,同理,這里的門是用來控制每一時刻信息記憶與遺忘的。
依次來解釋一下這三個門:
按照上圖的順序,信息在傳遞的順序,是這樣的:
先經過輸入門,看是否有信息輸入,再判斷遺忘門是否選擇遺忘Memory Cell里的信息,最后再經過輸出門,判斷是否將這一時刻的信息進行輸出。
下面具體對LSTM內部結構剖析:
首先使用LSTM的當前輸入xt 和上一個狀態傳遞下來的ht?1^{t-1}t?1 拼接訓練得到四個狀態。
下面開始進一步介紹這四個狀態在LSTM內部的使用。
LSTM內部主要的三個階段:
以上,就是LSTM的內部結構。通過門控狀態來控制傳輸狀態,記住需要長時間記憶的,忘記不重要的信息;而不像普通的RNN那樣只能夠“呆萌”地僅有一種記憶疊加方式。對很多需要“長期記憶”的任務來說,尤其好用。
但也因為引入了很多內容,導致參數變多,也使得訓練難度加大了很多。因此很多時候我們往往會使用效果和LSTM相當但參數更少的GRU來構建大訓練量的模型。
五、GRU
GRU(Gate Recurrent Unit)是循環神經網絡(Recurrent Neural Network, RNN)的一種。和LSTM(Long-Short Term Memory)一樣,也是為了解決長期記憶和反向傳播中的梯度等問題而提出來的。
相比LSTM,使用GRU能夠達到相當的效果,并且相比之下更容易進行訓練,能夠很大程度上提高訓練效率,因此很多時候會更傾向于使用GRU。
GRU的具體內部結構:
首先,我們先通過上一個傳輸下來的狀態 ht?1^{t-1}t?1 和當前節點的輸入 xt 來獲取兩個門控狀態。其中 r 控制重置的門控(reset gate), z 為控制更新的門控(update gate)。
得到門控信號之后,首先使用重置門控來得到“重置”之后的數據 ht?1′^{t-1'}t?1′ = ht?1^{t-1}t?1 與 r 矩陣對應元素相乘,再將 ht?1′^{t-1'}t?1′ 與輸入 xt 進行拼接,再通過一個tanh激活函數來將數據放縮到**-1~1**的范圍內。
這里的h’ 主要是包含了當前輸入的 xt 數據。有針對性地對h’ 添加到當前的隱藏狀態,相當于”記憶了當前時刻的狀態“。
最后介紹GRU最關鍵的一個步驟,我們可以稱之為”更新記憶“階段。
在這個階段,我們同時進行了遺忘了記憶兩個步驟。我們使用了先前得到的更新門控 z (update gate)。
更新表達式:
首先再次強調一下,門控信號(這里的 z])的范圍為0~1。門控信號越接近1,代表”記憶“下來的數據越多;而越接近0則代表”遺忘“的越多。
GRU很聰明的一點就在于,我們使用了同一個門控 z 就同時可以進行遺忘和選擇記憶(LSTM則要使用多個門控)。
GRU總結:
GRU輸入輸出的結構與普通的RNN相似,其中的內部思想與LSTM相似。
與LSTM相比,GRU內部少了一個”門控“,參數比LSTM少,但是卻也能夠達到與LSTM相當的功能。考慮到硬件的計算能力和時間成本,因而很多時候我們也就會選擇更加”實用“的GRU啦。
參考:
史上最詳細循環神經網絡講解(RNN/LSTM/GRU)
深度學習:人人都能看懂的LSTM
零基礎入門深度學習(6) - 長短時記憶網絡(LSTM)
LSTM梳理,理解,和keras實現 (一)
人人都能看懂的GRU
總結
以上是生活随笔為你收集整理的LSTM神经网络和GRU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量模糊匹配的三种方法
- 下一篇: UG 6.0软件安装教程