日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LSTM神经网络和GRU

發布時間:2023/12/10 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,也就是三個門,什么意思呢?在現實生活中,門就是用來控制進出的,門關上了,你就進不去房子了,門打開你就能進去,同理,這里的門是用來控制每一時刻信息記憶與遺忘的


依次來解釋一下這三個門:

  • Input Gate:中文是輸入門,在每一時刻從輸入層輸入的信息會首先經過輸入門,輸入門的開關會決定這一時刻是否會有信息輸入到Memory Cell。
  • Output Gate:中文是輸出門,每一時刻是否有信息從Memory Cell輸出取決于這一道門。
  • Forget Gate:中文是遺忘門,每一時刻Memory Cell里的值都會經歷一個是否被遺忘的過程,就是由該門控制的,如果打卡,那么將會把Memory Cell里的值清除,也就是遺忘掉。
  • 按照上圖的順序,信息在傳遞的順序,是這樣的:

    先經過輸入門,看是否有信息輸入,再判斷遺忘門是否選擇遺忘Memory Cell里的信息,最后再經過輸出門,判斷是否將這一時刻的信息進行輸出

    下面具體對LSTM內部結構剖析:

    首先使用LSTM的當前輸入xt 和上一個狀態傳遞下來的ht?1^{t-1}t?1 拼接訓練得到四個狀態。



    下面開始進一步介紹這四個狀態在LSTM內部的使用。

    LSTM內部主要的三個階段:

  • 忘記階段。這個階段主要是對上一個節點傳進來的輸入進行選擇性忘記,簡單的說就是會“忘記不重要的,記住重要的”。具體來說是通過計算得到的zf (f表示forget) 來作為忘記控門,來控制上一個狀態 ct?1^{t-1}t?1 哪些需要留哪些需要忘。
  • 選擇記憶階段。這個階段的輸入有選擇性的進行“記憶”,主要是會對輸入 xt 進行選擇記憶。哪些重要則著重記錄下來,不重要,則少記一些。當前的輸入內容由前面計算得到的 z 表示。而選擇的門控信號由 zi (i代表information)來進行控制。
  • 輸出階段。這個階段將決定哪些將會被當成當前狀態的輸出。主要是通過 zo 來進行控制的。并且還對上一個階段得到的 co 進行了放縮(通過一個tanh激活函數進行變化)。
  • 以上,就是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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。