循環神經網絡(Recurrent Neural Network,簡稱RNN)長用於處理序列數據,例如時間序列、自然語言文本、語音等。
循環神經網路在每個時間點都會有一個隱藏狀態(Hidden State),也就是模型對這個時間點之前過去時間信息的總結。這個隱藏狀態可以看作是一段記憶。
這種神經網路的運作是靠一個遞迴公式,能夠將當前這個時間點的輸入的資料和前一個時間點的記憶結合,產生現在這個時間點的輸出和新的記憶。所以這種網路也稱作遞迴神經網路。
圖片來源: 連結
也就是說RNN可以用於這類的序列預測任務,根據給定的上下文來預測序列中某個位置的值。例如,一個簡單的句子: "我今天很漂_",RNN可以被訓練來預測缺失的詞語,如 "我今天很漂亮"。
在這種情況下,RNN將前面的詞語("我今天很")視為上下文,並使用這些信息來預測下一個詞語("漂_")。模型通過遞迴公式在每個時間點上計算新的Hidden State記憶,並用於生成下一個詞語的預測。
上面舉的例子在自然語言處理中很常會用到,包括語言模型、機器翻譯、文本生成等。例如,當你用手機的鍵盤輸入文字時,建議詞語的功能通常就是基於類似的模型,根據你輸入的文字來預測下一個可能想打的詞語。
RNN不僅能做到序列運算,還有能夠做到一定程度的並行計算(Parallel Computation),模型可以同時處理多個Input。不同的輸入可以在同一時間步上進行處理,可以提高計算效率。
雖然RNN的優勢就是能夠運用記憶去推導時間軸上的其他數據,但其實存在一種問題,也就是訓練過程中,由於多次使用遞歸公式,會產生一些數學問題,使得模型難以學習長程依賴關係,也就是無法做到長期記憶。為了解決這個問題,出現了一些變種模型,如長短期記憶網絡(LSTM)。
長短期記憶網絡(LSTM)的部分,會在之後的篇幅介紹。