Remove ads
一類人工神經網絡,其中單元之間的連接形成有向循環 来自维基百科,自由的百科全书
循環神經網路(Recurrent neural network:RNN)是神經網路的一種。單純的RNN因為無法處理隨著遞歸,權重指數級爆炸或梯度消失問題,難以捕捉長期時間關聯;而結合不同的LSTM可以很好解決這個問題。[1][2]
時間循環神經網路可以描述動態時間行為,因為和前饋神經網路(feedforward neural network)接受較特定結構的輸入不同,RNN將狀態在自身網路中循環傳遞,因此可以接受更廣泛的時間序列結構輸入。手寫識別是最早成功利用RNN的研究結果。[3]
遞歸神經網路是基於大衛·魯梅爾哈特1986年的工作[4]。1982年,約翰·霍普菲爾德發現了Hopfield神經網路——一種特殊的RNN。1993年,一個神經歷史壓縮器系統解決了一個「非常深度學習」的任務,這個任務在RNN展開之後有1000多個後續層[5]。
Hochreiter和Schmidhuber於1997年提出了長短期記憶(LSTM)網路,並在多個應用領域創造了精確度記錄[6]。
大約在2007年,LSTM開始革新語音識別領域,在某些語音應用中勝過傳統模型[7]。2009年,一個由 CTC 訓練的LSTM網路贏得了多項連筆手寫識別競賽,成為第一個贏得模式識別競賽的RNN。[8][9]2014年,百度在不使用任何傳統語音處理方法的情況下,使用經過CTC訓練的RNNs打破了Switchboard Hub5'00 語音識別基準。[10]
LSTM還改進了大詞彙量語音識別[11][12]和文本到語音合成[13]並在谷歌安卓系統中使用[8][14]。據報道,2015年,谷歌語音識別通過接受過CTC訓練的LSTM(谷歌語音搜索使用的)實現了49%的引用量的大幅提升。[15]
LSTM打破了改進機器翻譯[16]、語言建模[17]和多語言處理的記錄[18]。 LSTM 結合卷積神經網路改進了圖像自動標註 。[19]
循環神經網路將輸入序列編碼為一個固定長度的隱藏狀態,這裡有(用自然語言處理作為例子):
其中,計算隱藏狀態的方程是一個非線性方程,可以是簡單的Logistic方程(tanh),也可以是複雜的LSTM單元(Long Short-Term Memory)。[20] [21] 而有了隱藏狀態序列,就可以對下一個出現的詞語進行預測:
這裡的非線性方程可以是一個複雜的前饋神經網路,也可以是簡單的非線性方程(但有可能因此無法適應複雜的條件而得不到任何有用結果)。給出的概率可以用監督學習的方法優化內部參數來給出翻譯,也可以訓練後用來給可能的備選詞語,用計算其第j個備選詞出現在下一位置的概率,給它們排序。排序後用於其它翻譯系統,可以提升翻譯質量。
更複雜的情況下循環神經網路還可以結合編碼器作為解碼器(Decoder),用於將編碼後(Encoded)的信息解碼為人類可識別的信息。也就是上述例子中的過程,當中非線性模型就是作為輸出的循環神經網路。只是在解碼過程中,隱藏狀態因為是解碼器的參數,所以為了發揮時間序列的特性,需要對繼續進行迭代:
用兩個循環神經網路雙向讀取一個序列可以使人工智慧獲得「注意力」。簡單的做法是將一個句子分別從兩個方向編碼為兩個隱藏狀態,然後將兩個拼接在一起作為隱藏狀態。[22] [23]這種方法能提高模型表現的原因之一可能是因為不同方向的讀取在輸入和輸出之間創造了更多短期依賴關係,從而被RNN中的LSTM單元(及其變體)捕捉,例如在實驗中發現顛倒輸入序列的順序(但不改變輸出的順序)可以意外達到提高表現的效果。[24]
RNN 有很多不同的變種
基本的 RNN 是由人工神經元組織成的連續的層的網路。給定層中的每個節點都通過有向(單向)連接連接到下一個連續層中的每個其他節點。每個節點(神經元)都有一個時變的實值激活。每個連接(突觸)都有一個可修改的實值權重。節點要麼是輸入節點(從網路外部接收數據),要麼是輸出節點(產生結果),要麼是隱藏節點(在從輸入到輸出的過程中修改數據)。
對於離散時間設置中的監督學習,實值輸入向量序列到達輸入節點,一次一個向量。在任何給定的時間步長,每個非輸入單元將其當前激活(結果)計算為與其連接的所有單元的激活的加權和的非線性函數。可以在特定的時間步長為某些輸出單元提供主管給定的目標激活。例如,如果輸入序列是對應於口語數字的語音信號,則在序列末尾的最終目標輸出可以是對該數字進行分類的標籤。
在強化學習環境中,沒有教師提供目標信號。相反,適應度函數或獎勵函數偶爾用於評估RNN的性能,它通過影響輸出單元來影響其輸入流,輸出單元和一個可以影響環境的執行器相連。這可以被用來玩一個遊戲,在這個遊戲中,進度是用贏得的點數來衡量的。
每個序列產生一個誤差,作為所有目標信號與網路計算的相應激活的偏差之和。對於大量序列的訓練集,總誤差是所有單個序列誤差的總和。
Elman網路是一個三層網路(在圖中水平排列為x、y和z),添加了一組上下文單元(在圖中為u)。中間(隱藏)層連接到這些權重為1的上下文單元[25]。在每個時間步,輸入被向前反饋,並且學習規則被應用。固定的反向連接在上下文單元中保存隱藏單元的先前值的副本(因為它們在應用學習規則之前在連接上傳播)。因此,網路可以保持某種狀態,允許它執行諸如序列預測之類的任務,這些任務超出了標準多層感知器的能力。
Jordan網路類似於Elman網路。上下文單元是從輸出層而不是隱藏層饋送的。Jordan網路中的上下文單元也稱為狀態層。他們與自己有著經常性的聯繫。[26]
Elman和Jordan網路也被稱為「簡單循環網路」。
變量和函數
雙向循環神經網路(Bi-directional RNN,BRNN)基於元素的前向和後向的上下文,使用有限序列來預測或標記序列的每個元素。該方法是通過連接兩個 RNN 的輸出來完成的:一個從左到右處理序列,另一個從右到左處理序列。BRNN的輸出是對目標信號的預測。該技術已被證明在與 LSTM RNN 結合使用時特別有用。[29][30]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.