NLP系列 8 迴圈神經網路(RNN)

2021-09-23 15:21:21 字數 2855 閱讀 7436

人的記憶原理也是與當前輸入和之前的輸入有關的。每個**的結果都會放到下乙個輸入裡進行運算,與下一次的輸入一起來生成下一次的結果。

聽到一句話「我來找你」,是在沒聽到乙個字或詞的時候大腦都會結合之前聽到的和現在聽到的組合起來,形成語句的理解。下面這種網路與我們的大腦對語句的理解過程很相似。

迴圈神經網路,recurrent neural network。神經網路是一種節點定向連線成環的人工神經網路。這種網路的內部狀態可以展示動態時序行為。不同於前饋神經網路的是,rnn可以利用它內部的記憶來處理任意時序的輸入序列。

迴圈神經網路卻能很好地處理文字資料變長並且有序的輸入序列。

但是,rnn卻存在梯度消失或者梯度**的問題。

傳統的rnn的梯度可以表示為連乘的形式∂ne

tt∂n

et1=

∂net

t∂ne

tt−1

∂net

t−1∂

nett

−2..

.∂ne

t2∂n

et1\frac=\frac}\frac}}...\frac

∂net1​

∂net

t​​=

∂net

t−1​

∂net

t​​∂

nett

−2​∂

nett

−1​​

...∂

net1

​∂ne

t2​​

其中,net

上述矩陣為∂ne

tt∂n

ett−

1\frac}

∂nett−

1​∂n

ett​

​對應的矩陣,被稱為雅各比矩陣。

由於**的誤差是沿著神經網路的每一層反向傳播的,因此當雅各比矩陣的最大特徵值》1時,隨著離輸出越來越遠,每層的梯度會呈指數增長,導致梯度**,反之,若雅各比矩陣的最大特徵值<1,梯度的大小會隨離輸出的距離增加而縮小,產生梯度消失。

梯度**可以通過梯度裁剪來緩解,即當梯度的正規化大於某個給定值時,對梯度進行等比收縮。但是,梯度消失的問題相對更為棘手,模型本身必須得到改進。

一種方式是通過何凱明提出的深度殘差網路(參考 解決。

一種是通過新增門控迴圈單元解決。

鑑於rnn梯度消失的問題,lstm使用門控迴圈單元來解決這個問題。

lstm的結構圖如下:

lstm對門結構進行了精心的設計,加入了輸入門、遺忘門和輸出門三個門,以及乙個內部記憶單元。輸入門控制當前計算的新狀態以多大程度更新到記憶單元中;遺忘門控制前一步記憶單元中的資訊有多大程度被遺忘掉;輸出門控制當前的輸出有多大程度上取決於當前的記憶單元。

當前狀態的轉移同時取決於啟用函式和輸入門、遺忘門這兩個門。lstm的遺忘門的

值接近於1,輸入門的值接近於0,此時過去的記憶會被儲存,從而實現了長期記

憶功能;當輸入的序列**現了重要的資訊時,lstm應當把其存入記憶中,此時

其輸入門的值會接近於1;當輸入的序列**現了重要資訊,且該資訊意味著之前的記憶不再重要時,輸入門的值接近1,而遺忘門的值接近於0,這樣舊的記憶被遺忘,新的重要資訊被記憶。經過這樣的設計,整個網路更容易學習到序列之間的長期依賴。

gru與俄羅斯情報組織有著同樣的縮寫,gru是lstm的一種變體,並且比lstm更加簡單。

與lstm的三個門不同,gru只有兩個門:更新門和重置門。

**於:

更新門用於控制前一時刻的狀態資訊被帶入到當前狀態中的程度,更新門的值越大說明前一時刻的狀態資訊帶入越多。重置門控制前一狀態有多少資訊被寫入到當前的候選集上,重置門越小,前一狀態的資訊被寫入的越少。

上述的rnn都是單向的,但是語言文字中也會存在乙個詞不僅與之前的詞有關,還與之後的詞有關的情況,所以雙向rnn就是來解決這個問題的。

本質上雙向rnn就是兩個單項rnn的疊加,如下圖所示:

也可以將上述rnn換成lstm和gru。

結構:降維—>雙向lstm —> concat輸出—>平均 -----> softmax

參考:rcnn 整體的模型構建流程如下:

1)利用bi-lstm獲得上下文的資訊,類似於語言模型。

2)將bi-lstm獲得的隱層輸出和詞向量拼接[fwoutput, wordembedding, bwoutput]。

3)將拼接後的向量非線性對映到低維。

4)向量中的每乙個位置的值都取所有時序上的最大值,得到最終的特徵向量,該過程類似於max-pool。

5)softmax分類。

rcnn使用tensorflow實現imdb文字分類參考:

RNN迴圈神經網路

評測乙個句子出現的可能性 文字自動生成 rnn迴圈處理相同的任務,就是 句子接下來的單詞是什麼。rnn迴圈記錄前面所有文字的資訊 也叫做記憶 作為 當前詞的乙個輸入 1.語言模型和文字生成 語言模型中,輸入是經過編碼的詞向量序列,輸出是一系列 的詞 2.機器翻譯 機器翻譯必須等待所有輸入結束後才能輸...

迴圈神經網路 RNN

from torchnlp.word to vector import glove vectors glove vectors hello torch.nn.utils.clip grad norm p,10 10就是最大梯度的模閾值,即保留原來梯度的方向,但梯度大小縮放至10對與梯度瀰散現象,考慮...

RNN迴圈神經網路

神經網路基礎 神經網路可以當做是擬合任意函式的黑盒子,給定特定的輸入x,就能夠的得到希望的輸出y。神經網路結構如下圖 將神經網路模型訓練好之後,輸入層輸入乙個x,通過網路之後就能夠在輸出層輸出特定的y.有了這麼強大的模型,為什麼會出現rnn 迴圈神經網 它們單獨的乙個個的輸入,前乙個輸入和後乙個輸入...