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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LSTM神经网络和GRU

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LSTM神经网络和GRU 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說到LSTM,無可避免的首先要提到最簡單最原始的RNN。

在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中學(xué)習(xí)了RNN的原理和模型結(jié)構(gòu),這里再簡單回顧一下,引出LSTM模型。

一、RNN

循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。相比一般的神經(jīng)網(wǎng)絡(luò)來說,他能夠處理序列變化的數(shù)據(jù)。比如某個(gè)單詞的意思會(huì)因?yàn)樯衔奶岬降膬?nèi)容不同而有不同的含義,RNN就能夠很好地解決這類問題。

二、LSTM神經(jīng)網(wǎng)絡(luò)

長短時(shí)記憶網(wǎng)絡(luò)(Long Short Term Memory Network, LSTM)是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),它出現(xiàn)的原因是為了解決RNN的一個(gè)致命的缺陷。

原生的RNN會(huì)遇到一個(gè)很大的問題,叫做The vanishing gradient problem for RNNs,也就是后面時(shí)間的節(jié)點(diǎn)會(huì)出現(xiàn)老年癡呆癥,也就是忘事兒,這使得RNN在很長一段時(shí)間內(nèi)都沒有受到關(guān)注,網(wǎng)絡(luò)只要一深就沒法訓(xùn)練。

而LSTM網(wǎng)絡(luò)具有“記憶性”,其原因在于不同“時(shí)間點(diǎn)”之間的網(wǎng)絡(luò)存在連接,而不是單個(gè)時(shí)間點(diǎn)處的網(wǎng)絡(luò)存在前饋或者反饋;并且LSTM擅長于處理多個(gè)變量的問題,該特性使其有助于解決時(shí)間序列預(yù)測問題。

想要了解LSTM的原理可以參考:零基礎(chǔ)入門深度學(xué)習(xí)(6) - 長短時(shí)記憶網(wǎng)絡(luò)(LSTM)

三、LSTM和RNN的區(qū)別

長短時(shí)記憶網(wǎng)絡(luò)(Long Short Term Memory Network, LSTM) 是一種特殊的RNN,主要是為了解決長序列訓(xùn)練過程中的梯度消失和梯度爆炸問題。簡單來說,就是相比普通的RNN,LSTM能夠在更長的序列中有更好的表現(xiàn)。

LSTM結(jié)構(gòu)(圖右)和普通RNN的主要輸入輸出區(qū)別如下所示:

相比RNN只有一個(gè)傳遞狀態(tài)ht,LSTM有兩個(gè)傳輸狀態(tài),一個(gè)ct(cell state)和一個(gè) ht(hidden state)。

注:RNN中的 ht 相當(dāng)于LSTM的 ct

其實(shí)對(duì)于傳遞下去的 ct 改變的很慢,通常輸出的 ct 是上一個(gè)狀態(tài)傳過來的ct?1^{t-1}t?1加上一些數(shù)值。而 ht 則在不同節(jié)點(diǎn)下往往會(huì)有很大的區(qū)別。

四、深入LSTM結(jié)構(gòu)

LSTM和普通RNN如貴族和乞丐,RNN什么信息它都存下來,因?yàn)樗鼪]有挑選的能力,而LSTM不一樣,它會(huì)選擇性的存儲(chǔ)信息,因?yàn)樗芰?qiáng),它有門控裝置,它可以盡情的選擇。

如下圖,普通RNN只有中間的Memory Cell用來存所有的信息,而從下圖我們可以看到,LSTM多了三個(gè)Gate,也就是三個(gè)門,什么意思呢?在現(xiàn)實(shí)生活中,門就是用來控制進(jìn)出的,門關(guān)上了,你就進(jìn)不去房子了,門打開你就能進(jìn)去,同理,這里的門是用來控制每一時(shí)刻信息記憶與遺忘的


依次來解釋一下這三個(gè)門:

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

    先經(jīng)過輸入門,看是否有信息輸入,再判斷遺忘門是否選擇遺忘Memory Cell里的信息,最后再經(jīng)過輸出門,判斷是否將這一時(shí)刻的信息進(jìn)行輸出

    下面具體對(duì)LSTM內(nèi)部結(jié)構(gòu)剖析:

    首先使用LSTM的當(dāng)前輸入xt 和上一個(gè)狀態(tài)傳遞下來的ht?1^{t-1}t?1 拼接訓(xùn)練得到四個(gè)狀態(tài)。



    下面開始進(jìn)一步介紹這四個(gè)狀態(tài)在LSTM內(nèi)部的使用。

    LSTM內(nèi)部主要的三個(gè)階段:

  • 忘記階段。這個(gè)階段主要是對(duì)上一個(gè)節(jié)點(diǎn)傳進(jìn)來的輸入進(jìn)行選擇性忘記,簡單的說就是會(huì)“忘記不重要的,記住重要的”。具體來說是通過計(jì)算得到的zf (f表示forget) 來作為忘記控門,來控制上一個(gè)狀態(tài) ct?1^{t-1}t?1 哪些需要留哪些需要忘。
  • 選擇記憶階段。這個(gè)階段的輸入有選擇性的進(jìn)行“記憶”,主要是會(huì)對(duì)輸入 xt 進(jìn)行選擇記憶。哪些重要?jiǎng)t著重記錄下來,不重要,則少記一些。當(dāng)前的輸入內(nèi)容由前面計(jì)算得到的 z 表示。而選擇的門控信號(hào)由 zi (i代表information)來進(jìn)行控制。
  • 輸出階段。這個(gè)階段將決定哪些將會(huì)被當(dāng)成當(dāng)前狀態(tài)的輸出。主要是通過 zo 來進(jìn)行控制的。并且還對(duì)上一個(gè)階段得到的 co 進(jìn)行了放縮(通過一個(gè)tanh激活函數(shù)進(jìn)行變化)。
  • 以上,就是LSTM的內(nèi)部結(jié)構(gòu)。通過門控狀態(tài)來控制傳輸狀態(tài),記住需要長時(shí)間記憶的,忘記不重要的信息;而不像普通的RNN那樣只能夠“呆萌”地僅有一種記憶疊加方式。對(duì)很多需要“長期記憶”的任務(wù)來說,尤其好用。

    但也因?yàn)橐肓撕芏鄡?nèi)容,導(dǎo)致參數(shù)變多,也使得訓(xùn)練難度加大了很多。因此很多時(shí)候我們往往會(huì)使用效果和LSTM相當(dāng)?shù)珔?shù)更少的GRU來構(gòu)建大訓(xùn)練量的模型。

    五、GRU

    GRU(Gate Recurrent Unit)是循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的一種。和LSTM(Long-Short Term Memory)一樣,也是為了解決長期記憶和反向傳播中的梯度等問題而提出來的。

    相比LSTM,使用GRU能夠達(dá)到相當(dāng)?shù)男Ч?#xff0c;并且相比之下更容易進(jìn)行訓(xùn)練,能夠很大程度上提高訓(xùn)練效率,因此很多時(shí)候會(huì)更傾向于使用GRU。

    GRU的具體內(nèi)部結(jié)構(gòu):


    首先,我們先通過上一個(gè)傳輸下來的狀態(tài) ht?1^{t-1}t?1 和當(dāng)前節(jié)點(diǎn)的輸入 xt 來獲取兩個(gè)門控狀態(tài)。其中 r 控制重置的門控(reset gate), z 為控制更新的門控(update gate)。


    得到門控信號(hào)之后,首先使用重置門控來得到“重置”之后的數(shù)據(jù) ht?1′^{t-1'}t?1 = ht?1^{t-1}t?1 與 r 矩陣對(duì)應(yīng)元素相乘,再將 ht?1′^{t-1'}t?1 與輸入 xt 進(jìn)行拼接,再通過一個(gè)tanh激活函數(shù)來將數(shù)據(jù)放縮到**-1~1**的范圍內(nèi)。


    這里的h 主要是包含了當(dāng)前輸入的 xt 數(shù)據(jù)。有針對(duì)性地對(duì)h 添加到當(dāng)前的隱藏狀態(tài),相當(dāng)于”記憶了當(dāng)前時(shí)刻的狀態(tài)“。

    最后介紹GRU最關(guān)鍵的一個(gè)步驟,我們可以稱之為”更新記憶“階段。

    在這個(gè)階段,我們同時(shí)進(jìn)行了遺忘了記憶兩個(gè)步驟。我們使用了先前得到的更新門控 z (update gate)。

    更新表達(dá)式:


    首先再次強(qiáng)調(diào)一下,門控信號(hào)(這里的 z])的范圍為0~1。門控信號(hào)越接近1,代表”記憶“下來的數(shù)據(jù)越多;而越接近0則代表”遺忘“的越多。

    GRU很聰明的一點(diǎn)就在于,我們使用了同一個(gè)門控 z 就同時(shí)可以進(jìn)行遺忘和選擇記憶(LSTM則要使用多個(gè)門控)。

    GRU總結(jié):

    GRU輸入輸出的結(jié)構(gòu)與普通的RNN相似,其中的內(nèi)部思想與LSTM相似。

    與LSTM相比,GRU內(nèi)部少了一個(gè)”門控“,參數(shù)比LSTM少,但是卻也能夠達(dá)到與LSTM相當(dāng)?shù)墓δ?/strong>。考慮到硬件的計(jì)算能力和時(shí)間成本,因而很多時(shí)候我們也就會(huì)選擇更加”實(shí)用“的GRU啦。

    參考:

    史上最詳細(xì)循環(huán)神經(jīng)網(wǎng)絡(luò)講解(RNN/LSTM/GRU)

    深度學(xué)習(xí):人人都能看懂的LSTM

    零基礎(chǔ)入門深度學(xué)習(xí)(6) - 長短時(shí)記憶網(wǎng)絡(luò)(LSTM)

    LSTM梳理,理解,和keras實(shí)現(xiàn) (一)

    人人都能看懂的GRU

    總結(jié)

    以上是生活随笔為你收集整理的LSTM神经网络和GRU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。