迴圈神經網路（Recurrent neural network：RNN）是神經網路的一種。單純的 RNN 因為無法處理隨著遞迴，權重指數級爆炸或梯度消失問題，難以捕捉長期時間關聯；而結合不同的 LSTM 可以很好解決這個問題。時鐘結構的 RNN ，2014 年 2 月。迴圈網路結構的經驗之談 ，谷歌論文，2015 年。 時間迴圈神經網路可以描述動態時間行為，因為和前饋神經網路（feedforward neural network）接受較特定結構的輸入不同，RNN 將狀態在自身網路中迴圈傳遞，因此可以接受更廣泛的時間序列結構輸入。手寫識別是最早成功利用 RNN 的研究結果。A Graves M Liwicki S Fernandez R Bertolami H Bunke J Schmidhuber A Novel Connectionist System for Improved Unconstrained Handwriting Recognition IEEE Transactions on Pattern Analysis and Machine Intelligence vol 31 no 5 2009 歷史 遞迴神經網路是基於大衛魯梅爾哈特 1986 年的工作。1982 年，約翰霍普菲爾德發現了 Hopfield 神經網路 一種特殊的 RNN。1993 年，一個神經歷史壓縮器系統解決了一個 非常深度學習 的任務，這個任務在 RNN 展開之後有 1000 多個後續層 Page 150 ff demonstrates credit assignment across the equivalent of 1200 layers in an unfolded RNN。 LSTM Hochreiter 和 Schmidhuber 於 1997 年提出了長短期記憶 LSTM 網路，並在多個應用領域創造了精確度記錄。 大約在 2007 年，LSTM 開始革新語音識別領域，在某些語音應用中勝過傳統模型。2009 年，一個由 訓練的 LSTM 網路贏得了多項連筆手寫識別競賽，成為第一個贏得模式識別競賽的 RNN。2014 年，百度在不使用任何傳統語音處理方法的情況下，使用經過 CTC 訓練的 RNNs 打破了 Switchboard Hub500 語音識別基準。 LSTM 還改進了大詞彙量語音識別和文字到語音合成 Fan Bo Wang Lijuan Soong Frank K Xie Lei 2015 PhotoReal Talking Head with Deep Bidirectional LSTM in Proceedings of ICASSP 2015 並在谷歌安卓系統中使用。據報道，2015 年，谷歌語音識別透過接受過 CTC 訓練的 LSTM 谷歌語音搜尋使用的 實現了 49 的引用量的大幅提升。 LSTM 打破了改進機器翻譯、語言建模和多語言處理的記錄。 LSTM 結合卷積神經網路改進了影像自動標註 。 迴圈神經網路 編碼器 迴圈神經網路將輸入序列 vec x 編碼為一個固定長度的隱藏狀態 vec h，這裡有（用自然語言處理作為例子）： vec x x_t x_1 是輸入序列，比如編碼為數字的一系列詞語，整個序列就是完整的句子。 vec h_t f x_t vec h_t1 是隨時間更新的隱藏狀態。當新的詞語輸入到方程中，之前的狀態 vec h_t1 就轉換為和當前輸入 x_t 相關的 vec h_t，距離當前時間越長，越早輸入的序列，在更新後的狀態中所佔權重越小，從而表現出時間相關性。 其中，計算隱藏狀態的方程 f x h 是一個非線性方程，可以是簡單的 Logistic 方程（tanh），也可以是複雜的 LSTM 單元（Long ShortTerm Memory）。 而有了隱藏狀態序列，就可以對下一個出現的詞語進行預測： p y_t p y_t y_t1 y_1 ，其中 y_t 是第 t 個位置上的輸出，它的機率基於之前輸出的所有詞語。 以上機率可以透過隱藏狀態來計算：p y_t g y_t1 vec h_t vec c ，vec c 是所有隱藏狀態的編碼，總含了所有隱藏狀態，比如可以是簡單的最終隱藏狀態 vec h_t，也可以是非線性方程的輸出 f h_t h_1 。因為隱藏狀態 t 就編碼了第 t 個輸入前全部的輸入資訊，y_t 也迭代式地隱含了之前的全部輸出資訊，所以這個機率計算方法是合理的。 這裡的非線性方程 g y h c 可以是一個複雜的前饋神經網路，也可以是簡單的非線性方程（但有可能因此無法適應複雜的條件而得不到任何有用結果）。給出的機率可以用監督學習的方法最佳化內部引數來給出翻譯，也可以訓練後用來給可能的備選詞語，用計算其第 j 個備選詞 y_t j 出現在下一位置的機率，給它們排序。排序後用於其它翻譯系統，可以提升翻譯質量。 解碼器 更復雜的情況下迴圈神經網路還可以結合編碼器作為解碼器（Decoder），用於將編碼後（Encoded）的資訊解碼為人類可識別的資訊。也就是上述例子中的 y_t f y_t1 h_t c 過程，當中非線性模型 f 就是作為輸出的迴圈神經網路。只是在解碼過程中，隱藏狀態因為是解碼器的引數，所以為了發揮時間序列的特性，需要對 h_t 繼續進行迭代： h_t g h_t1 y_t1 c，vec c 是解碼器傳遞給編碼器的引數，是解碼器中狀態的 summary。h_t 是解碼器的隱藏狀態。y_t 是第 t 個輸出。 當輸入仍為 vec x x_t x_1，輸出是 vec y y_t y_1，最大化條件機率 P vec y vec x 後就是最好的翻譯結果。 雙向讀取 用兩個迴圈神經網路雙向讀取一個序列可以使人工智慧獲得 注意力。簡單的做法是將一個句子分別從兩個方向編碼為兩個隱藏狀態，然後將兩個 vec h 拼接在一起作為隱藏狀態。Bidirectional RNN 1997 這種方法能提高模型表現的原因之一可能是因為不同方向的讀取在輸入和輸出之間創造了更多短期依賴關係，從而被 RNN 中的 LSTM 單元（及其變體）捕捉，例如在實驗中發現顛倒輸入序列的順序（但不改變輸出的順序）可以意外達到提高表現的效果。神經網路學習：序列到序列 ，作者 Sutskever，2014 年。 架構 RNN 有很多不同的變種 完全迴圈 基本的 RNN 是由組織成的連續的層的網路。給定層中的每個節點都透過 單向 連線連線到下一個連續層中的每個其他節點。每個節點 神經元 都有一個時變的實值啟用。每個連線 突觸 都有一個可修改的實值。節點要麼是輸入節點 從網路外部接收資料，要麼是輸出節點 產生結果，要麼是隱藏節點 在從輸入到輸出的過程中修改資料。 對於離散時間設定中的監督學習，實值輸入向量序列到達輸入節點，一次一個向量。在任何給定的時間步長，每個非輸入單元將其當前啟用 結果 計算為與其連線的所有單元的啟用的加權和的非線性函式。可以在特定的時間步長為某些輸出單元提供主管給定的目標啟用。例如，如果輸入序列是對應於口語數字的語音訊號，則在序列末尾的最終目標輸出可以是對該數字進行分類的標籤。 在強化學習環境中，沒有教師提供目標訊號。相反，適應度函式或獎勵函式偶爾用於評估 RNN 的效能，它透過影響輸出單元來影響其輸入流，輸出單元和一個可以影響環境的執行器相連。這可以被用來玩一個遊戲，在這個遊戲中，進度是用贏得的點數來衡量的。 每個序列產生一個誤差，作為所有目標訊號與網路計算的相應啟用的偏差之和。對於大量序列的訓練集，總誤差是所有單個序列誤差的總和。 Elman 網路和 Jordan 網路 Elman 網路是一個三層網路 在圖中水平排列為 x、y 和 z，添加了一組上下文單元 在圖中為 u。中間 隱藏 層連線到這些權重為 1 的上下文單元 Cruse Holk Neural Networks as Cybernetic Systems 2nd and revised edition。在每個時間步，輸入被向前反饋，並且學習規則被應用。固定的反向連線在上下文單元中儲存隱藏單元的先前值的副本 因為它們在應用學習規則之前在連線上傳播。因此，網路可以保持某種狀態，允許它執行諸如序列預測之類的任務，這些任務超出了標準多層感知器的能力。 Jordan 網路類似於 Elman 網路。上下文單元是從輸出層而不是隱藏層饋送的。Jordan 網路中的上下文單元也稱為狀態層。他們與自己有著經常性的聯絡。 Elman 和 Jordan 網路也被稱為 簡單迴圈網路。 Elman 網路 begin align h_t sigma_h W_h x_t U_h h_t1 b_h y_t sigma_y W_y h_t b_y end align Jordan 網路 begin align h_t sigma_h W_h x_t U_h y_t1 b_h y_t sigma_y W_y h_t b_y end align 變數和函式 x_t 輸入向量 h_t 隱藏層向量 y_t 輸出向量 W U 和 b 引數矩陣和引數向量 sigma_h 和 sigma_y 啟用函式 雙向迴圈神經網路 雙向迴圈神經網路（Bidirectional RNN，BRNN）基於元素的前向和後向的上下文，使用有限序列來預測或標記序列的每個元素。該方法是透過連線兩個 RNN 的輸出來完成的：一個從左到右處理序列，另一個從右到左處理序列。BRNN 的輸出是對目標訊號的預測。該技術已被證明在與 LSTM RNN 結合使用時特別有用。 參考 外部連結 A Critical Review of Recurrent Neural Networks for Sequence Learning Category 人工智慧 Category 人工神經網路