當(dāng)前位置:
首頁 >
RNN和LSTM、GRU的简单理解
發(fā)布時間:2025/3/16
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
RNN和LSTM、GRU的简单理解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
RNN循環(huán)神經(jīng)網(wǎng)絡(luò),recurrent neural networks
1,RNNs已經(jīng)在眾多自然語言處理(Natural Language Processing, NLP)中取得了巨大成功以及廣泛應(yīng)用,如語言模型與文本生成,機器翻譯,語音識別,
2,RNNs的目的是用來處理序列數(shù)據(jù),RNN中一個序列當(dāng)前的輸出與前面時刻的輸出也有關(guān)(結(jié)合前面的狀態(tài)、當(dāng)前的記憶與當(dāng)前的輸入)。具體的表現(xiàn)形式為RNN網(wǎng)絡(luò)會對前面的信息進行記憶并應(yīng)用于當(dāng)前輸出的計算中。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節(jié)點是無連接的
3,RNN的訓(xùn)練:
在使用梯度下降算法中,每一步的輸出不僅依賴當(dāng)前步的網(wǎng)絡(luò),并且還依賴前面若干步網(wǎng)絡(luò)的狀態(tài)
該學(xué)習(xí)算法稱為Backpropagation Through Time (BPTT)
BPTT無法解決長時依賴問題(即當(dāng)前的輸出與前面很長的一段序列有關(guān),一般超過十步就無能為力了),因為BPTT會帶來所謂的梯度消失或梯度爆炸問題(the vanishing/exploding gradient problem),,
梯度爆炸相對比較好處理,可以用梯度裁剪(gradientclipping)來解決
vanilla RNN是最簡單循環(huán)神經(jīng)網(wǎng)絡(luò)
4,LSTM Netwoorks
4.1 LSTM目前非常流行。它與一般的RNNs結(jié)構(gòu)本質(zhì)上并沒有什么不同,只是使用了不同的函數(shù)去計算隱藏層的狀態(tài)。
4.2 在LSTMs中,記憶結(jié)構(gòu)被稱為cells,可以把cells看作是黑盒用以保存當(dāng)前輸入之前保存的狀態(tài),結(jié)合前面的狀態(tài)、當(dāng)前的記憶與當(dāng)前的輸入
4.3 LSTM 有通過精心設(shè)計的稱作為“門”的結(jié)構(gòu)來去除或者增加信息到達細胞狀態(tài)的能力。門是一種讓信息選擇式通過的方法。他們包含一個 sigmoid 神經(jīng)網(wǎng)絡(luò)層和一個 pointwise 乘法操作
Sigmoid 層輸出 0 到 1 之間的數(shù)值,描述每個部分有多少量可以通過。0 代表“不許任何量通過”,1 就指“允許任意量通過”
4.4 LSTM 擁有三個門,來保護和控制細胞狀態(tài)
忘記門:將細胞狀態(tài)中的信息選擇性的遺忘 ,回到語言模型的例子中來基于已經(jīng)看到的預(yù)測下一個詞。在這個問題中,細胞狀態(tài)可能包含當(dāng)前主語的類別,因此正確的代詞可以被選擇出來。當(dāng)我們看到新的主語,我們希望忘記舊的主語。?
輸入層門:將新的信息選擇性的記錄到細胞狀態(tài)中 .希望增加新的主語的類別到細胞狀態(tài)中,來替代舊的需要忘記的主語。 他今天有事,所以我。。。。當(dāng)處理到‘’我‘’這個詞的時候,就會把主語我更新到細胞中去。
輸出層門:
從記憶單元ct產(chǎn)生隱層單元ht(下一層),ct可能包含了很多對ht無用的信息,ot的作用就是判斷ct中哪些部分是對ht有用的,哪些部分是無用的
5,Gated Recurrent Unit (GRU)
GRUs就是lstm的一個變體,它將忘記門和輸入門合成了一個單一的 更新門。同樣還混合了細胞狀態(tài)和隱藏狀態(tài),和其他一些改動。最終的模型比標(biāo)準的 LSTM 模型要簡單,也是非常流行的變體。
它也是一般的RNNs的改良版本,主要是從以下兩個方面進行改進。一是,序列中不同的位置處的單詞(已單詞舉例)對當(dāng)前的隱藏層的狀態(tài)的影響不同,越前面的影響越小,即每個前面狀態(tài)對當(dāng)前的影響進行了距離加權(quán),距離越遠,權(quán)值越小。二是,在產(chǎn)生誤差error時,誤差可能是由某一個或者幾個單詞而引發(fā)的,所以應(yīng)當(dāng)僅僅對對應(yīng)的單詞weight進行更新
6,LSTMs與GRUs的區(qū)別
newmemory的計算方法都是根據(jù)之前的state及input進行計算,但是GRUs中有一個reset gate控制之前state的進入量,而在LSTMs里沒有這個gate;
產(chǎn)生新的state的方式不同,LSTMs有兩個不同的gate,分別是forget gate (f gate)和input gate(i gate),而GRUs只有一個update gate(z gate);
LSTMs對新產(chǎn)生的state又一個output gate(o gate)可以調(diào)節(jié)大小,而GRUs直接輸出無任何調(diào)節(jié)。
總結(jié)
以上是生活随笔為你收集整理的RNN和LSTM、GRU的简单理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020 年热门编程语言的发展方向
- 下一篇: 我就想加个索引,怎么就这么难?