迴圈神經網路 RNN 模型與前向反向傳播演算法

2021-10-14 08:04:46 字數 1970 閱讀 7917

一:前言

1,出現的原因

傳統的機器學習過於依賴人工引數的提取,普通的神經網路沒辦法記錄時序資訊且引數過多,同一 隱層之間無連線。加上迴圈神經網路在時序資訊語義資訊等方面不斷突破。

2,主要作用神經網路會記憶之前的資訊,並利用之前的資訊來影響後面節點的輸出,也就是說迴圈神經網路的同一隱層之間是有連線的。當前節點的輸入不僅包括輸入層的輸入,還包括上一時刻隱層的輸出。

4,本質:由於在迴圈神經網路模組訓練中,每個模組的運算和變數在不同時刻是相同的,因此,迴圈神經網路理論上可以看作是同一神經網路結構在不同時間位置上被無限複製的結果。正如卷積神經網路在不同的空間位置上共享引數,迴圈神經網路是在不同時間位置上共享引數。從而能夠使用有限的神經網路引數處理任意長度的序列。

二:rnn結構

模型在序列索引號t位置的隱藏狀態h(t),由x(t)和在t−1位置的隱藏狀態h(t−1)共同決定。在任意序列索引號t,我們也有對應的模型**輸出o(t)。通過**輸出o(t)和訓練序列真實輸出y(t),以及損失函式l(t),我們就可以用dnn類似的方法來訓練模型,接著用來**測試序列中的一些位置的輸出。u,w,v這三個矩陣是我們的模型的線性關係引數,它在整個rnn網路中是共享的,這點和dnn很不相同。 也正因為是共享了,它體現了rnn的模型的「迴圈反饋」的思想。

1)x(t)

代表在序列索引號t時訓練樣本的輸入。同樣的,x(t−1)和x(t+1)代表在序列索引號t−1和t+1時訓練樣本的輸入。

2)h(t)

代表在序列索引號t時模型的隱藏狀態。h(t)由x(t)和h(t−1)共同決定。

3)o(t)

代表在序列索引號t時模型的輸出。o(t)只由模型當前的隱藏狀態h(t)決定。

4)l(t)

代表在序列索引號t 時模型的損失函式。

5)y(t)

代表在序列索引號t 時訓練樣本序列的真實輸出。

6)u,w,v

這三個矩陣是我們的模型的線性關係引數,它在整個rnn網路中是共享的,這點和dnn很不相同。 也正因為是共享了,它體現了rnn的模型的「迴圈反饋」的思想。

對於任意乙個時序序列索引號t,我們的隱藏狀態h(t)由h(t-1)和xt組成得到

其中σ為rnn的啟用函式,一般為tanh, b為線性關係的偏倚。序列索引號t時模型的輸出o(t)的表示式比較簡單:

在最終在序列索引號t時我們的**輸出為:

通常由於rnn是識別類的分類模型,所以上面這個啟用函式一般是softmax。

通過損失函式l(t),比如對數似然損失函式,我們可以量化模型在當前位置的損失,即y^(t)和y(t)的差距

rnn的反向傳播和dnn思路是一樣的,通過一輪輪梯度下降來進行迭代,知道得到合適的uwvbc等引數。不同的是,rnn是在時間上的引數共享,所以我們更新的是相同的引數。為了簡化描述,這裡的損失函式我們為對數損失函式,輸出的啟用函式為softmax函式,隱藏層的啟用函式為tanh函式。則有:

因此最終的損失l為:

vc的梯度計算:

定義序列索引t位置的隱藏梯度為:

前向和後向的推導作者基本借鑑於其他文章,但都經過仔細推敲,沒有問題,讀者可自行推導一下過程,很有意思。

rnn雖然理論上可以很漂亮的解決序列資料的訓練,但是它也像dnn一樣有梯度消失時的問題,當序列很長的時候問題尤其嚴重。因此,上面的rnn模型一般不能直接用於應用領域。在語音識別,手寫書別以及機器翻譯等nlp領域實際應用比較廣泛的是基於rnn模型的乙個特例lstm。

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 迴圈神經網 它們單獨的乙個個的輸入,前乙個輸入和後乙個輸入...