?
目錄
?
1.循環神經網絡介紹
2.網絡結構
3.結構分類
4.模型工作原理
5.模型工作示例
6.總結
?
1.循環神經網絡介紹
RNN(Recurrent Neural Network,循環神經網絡)是一種專門用于處理序列數據的神經網絡結構。與傳統的神經網絡不同,RNN具有記憶能力,能夠捕捉序列數據中的時間依賴關系。
也就是說相比其他僅靠輸入單一預測結果的神經網絡,循環神經網絡可以考慮前面輸入的多個因素。比如現在流行的語言模型,他能記住你前面輸入的內容,當你新輸入某一個問題時候,他會去尋找是否和你前面輸入的問題有聯系。
2.網絡結構
RNN的基本結構包括輸入層、隱藏層和輸出層。在每個時間步,RNN都會接收當前的輸入數據(如一個詞的嵌入表示)和前一個時間步的隱藏狀態,然后生成一個新的隱藏狀態和輸出。這個新的隱藏狀態不僅包含了當前時間步的信息,還融合了之前所有時間步的信息,因此RNN能夠捕捉到序列數據中的上下文信息。
具體來說,RNN的隱藏狀態是記憶部分,它在每個時間步都會被更新。隱藏狀態的計算通常包括將當前時間步的輸入數據和前一個時間步的隱藏狀態傳遞給一個激活函數(如tanh或ReLU),從而生成新的隱藏狀態。這個隱藏狀態隨后會被用作下一個時間步的輸入之一,同時也可能用于生成當前時間步的輸出。
3.結構分類
一對一結構:單個神經網絡,即輸入和輸出都是單個值或向量。
一對多結構:單一輸入轉為序列輸出。這類RNN可以處理圖片,然后輸出圖片的描述信息。
多對一結構:序列輸入轉為單個輸出。這種結構多用在電影評價分析等領域。
N對N結構:輸入輸出等長序列。這類限制比較大,常見的應用有作詩機器人等。
多對多結構(Seq2Seq結構):輸入輸出不等長的多對多結構,又叫Encoder-Decoder模型。這種結構的應用范圍非常廣泛,包括語言翻譯、文本摘要、閱讀理解、對話生成等。
4.模型工作原理
初始化狀態:在序列的開始,RNN會有一個初始隱藏狀態,通常是一個零向量或通過某種方式初始化。
序列處理:對于序列中的每個元素,RNN會計算當前時間步的隱藏狀態。這通常通過一個激活函數(如tanh或ReLU)來完成。
信息傳遞:隱藏狀態會傳遞到下一個時間步,與新的輸入一起更新。
輸出生成:在每個時間步,RNN可以生成一個輸出,這通常通過另一個激活函數來完成。
序列結束:當序列結束時,RNN可以輸出最終的隱藏狀態,或者通過一個額外的輸出層來生成最終的預測。
5.模型工作示例
對于一個詞匯表,先將其轉換成向量的形式。
這里那填詞案例來演示,就是說當一段詞語有一個空白需要填詞,一般的神經網絡是考慮前一個詞語來預測這個空白,而循環神經網絡不光是考慮空白前的那個詞,還會考慮前面的已有的詞,進一步預測空白處的詞語,RNN可以捕捉到前面輸入詞語之間的聯系,提高填入的詞語的準確度。
?通過RNN的隱藏層獲取輸入之間的聯系,下一個輸入的同時會聯系到上一個輸入的隱藏狀態,當輸入結束時候輸出最終的結果。
?
6.總結
循環神經網絡可以很好的捕捉到之前的各項輸入之間的聯系,相對于其他傳統的神經網絡更加靈活,應用的場景也更多,結果也更準確。并且RNN中的權重參數是共享的,這有助于減少模型的參數數量并提高計算效率。但是循環神經網絡也存在一些不足,比如梯度消失和梯度爆炸問題:在長序列任務中,RNN容易出現梯度消失或梯度爆炸的問題,導致模型難以訓練。
?