在處理序列問題(如語言識別等)上,使用迴圈神經網路(recurrent neural networks,rnn)是很自然的方式;所謂迴圈神經網路,其實就是把上一時刻的資訊作為當前時刻輸入的一部分,從而實現資訊的傳遞;本文將先介紹基礎版rnn,並說明基礎版的問題,然後介紹改進版的迴圈神經網路lstm、gru。
rnn的基本結構如下圖所示:
結構比較簡單,通過單元狀態s的迴圈來實現資訊的傳遞,其公式如下:
單元狀態s的更新公式就是乙個遞推公式,依賴當前輸入和上一時刻的單元狀態。
rnn的訓練通過bptt(backpropagation through time)來完成,即累加loss對每個時刻的梯度;
clipping gradients),但一般實際應用時還是會傾向於使用lstm或gru。
lstm(long short term memory networks)中引入了門控機制來控制資訊的流入流出,包括有選擇地加入新的資訊,並有選擇地遺忘之前累計的資訊,其結構和公式如下:
lstm有三個門:遺忘門forget gate、輸入門input gate、輸出門output gate,每個門都是由上一時刻的輸出和當前時刻的輸入控制;遺忘門控制上一狀態流入的資訊量,輸入門控制當前輸入流入的資訊量,從而完成狀態的更新;輸出門控制流出;
對當前狀態的更新公式進行展開,有
gru(gated recurrent unit)是對lstm的一種變形,將單元狀態和單元輸出合二為1,也簡化了門控,其結構和公式如下:
RNN 迴圈神經網路or遞迴神經網路?
我 內心os 有嗎,我感覺我看到的都是迴圈神經網路啊?我 這個應該就是翻譯的問題吧 回去以後我查了一下,發現我錯了,迴圈神經網路和遞迴神經網路還是有點區別的。很明顯,它倆名字就是不一樣的,迴圈神經網路是recurrent neural network,遞迴神經網路是recursive neural ...
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對與梯度瀰散現象,考慮...