循環神經網路
機器學習與資料探勘 |
---|
循環神經網絡(Recurrent neural network:RNN)是神經網絡的一種。單純的RNN因為無法處理隨着遞歸,權重指數級爆炸或梯度消失問題,難以捕捉長期時間關聯;而結合不同的LSTM可以很好解決這個問題。[1][2]
時間循環神經網絡可以描述動態時間行為,因為和前饋神經網絡(feedforward neural network)接受較特定結構的輸入不同,RNN將狀態在自身網絡中循環傳遞,因此可以接受更廣泛的時間序列結構輸入。手寫識別是最早成功利用RNN的研究結果。[3]
歷史
遞歸神經網絡是基於大衛·魯梅爾哈特1986年的工作[4]。1982年,約翰·霍普菲爾德發現了Hopfield神經網絡——一種特殊的RNN。1993年,一個神經歷史壓縮器系統解決了一個「非常深度學習」的任務,這個任務在RNN展開之後有1000多個後續層[5]。
LSTM
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]
循環神經網絡
編碼器
循環神經網絡將輸入序列編碼為一個固定長度的隱藏狀態,這裏有(用自然語言處理作為例子):
- 是輸入序列,比如編碼為數字的一系列詞語,整個序列就是完整的句子。
- 是隨時間更新的隱藏狀態。當新的詞語輸入到方程中,之前的狀態就轉換為和當前輸入相關的,距離當前時間越長,越早輸入的序列,在更新後的狀態中所佔權重越小,從而表現出時間相關性。[20]
其中,計算隱藏狀態的方程是一個非線性方程,可以是簡單的Logistic方程(tanh),也可以是複雜的LSTM單元(Long Short-Term Memory)。[20] [21] 而有了隱藏狀態序列,就可以對下一個出現的詞語進行預測:
- ,其中是第t個位置上的輸出,它的概率基於之前輸出的所有詞語。
- 以上概率可以通過隱藏狀態來計算:,是所有隱藏狀態的編碼,總含了所有隱藏狀態,比如可以是簡單的最終隱藏狀態,也可以是非線性方程的輸出。因為隱藏狀態t就編碼了第t個輸入前全部的輸入信息,也迭代式地隱含了之前的全部輸出信息,所以這個概率計算方法是合理的。
這裏的非線性方程可以是一個複雜的前饋神經網絡,也可以是簡單的非線性方程(但有可能因此無法適應複雜的條件而得不到任何有用結果)。給出的概率可以用監督學習的方法優化內部參數來給出翻譯,也可以訓練後用來給可能的備選詞語,用計算其第j個備選詞出現在下一位置的概率,給它們排序。排序後用於其它翻譯系統,可以提升翻譯質量。
解碼器
更複雜的情況下循環神經網絡還可以結合編碼器作為解碼器(Decoder),用於將編碼後(Encoded)的信息解碼為人類可識別的信息。也就是上述例子中的過程,當中非線性模型就是作為輸出的循環神經網絡。只是在解碼過程中,隱藏狀態因為是解碼器的參數,所以為了發揮時間序列的特性,需要對繼續進行迭代:
- ,是解碼器傳遞給編碼器的參數,是解碼器中狀態的summary。是解碼器的隱藏狀態。是第t個輸出。
- 當輸入仍為,輸出是,最大化條件概率後就是最好的翻譯結果。
雙向讀取
用兩個循環神經網絡雙向讀取一個序列可以使人工智能獲得「注意力」。簡單的做法是將一個句子分別從兩個方向編碼為兩個隱藏狀態,然後將兩個拼接在一起作為隱藏狀態。[22] [23]這種方法能提高模型表現的原因之一可能是因為不同方向的讀取在輸入和輸出之間創造了更多短期依賴關係,從而被RNN中的LSTM單元(及其變體)捕捉,例如在實驗中發現顛倒輸入序列的順序(但不改變輸出的順序)可以意外達到提高表現的效果。[24]
架構
RNN 有很多不同的變種
完全循環
基本的 RNN 是由人工神經元組織成的連續的層的網絡。給定層中的每個節點都通過有向(單向)連接連接到下一個連續層中的每個其他節點。每個節點(神經元)都有一個時變的實值激活。每個連接(突觸)都有一個可修改的實值權重。節點要麼是輸入節點(從網絡外部接收數據),要麼是輸出節點(產生結果),要麼是隱藏節點(在從輸入到輸出的過程中修改數據)。
對於離散時間設置中的監督學習,實值輸入向量序列到達輸入節點,一次一個向量。在任何給定的時間步長,每個非輸入單元將其當前激活(結果)計算為與其連接的所有單元的激活的加權和的非線性函數。可以在特定的時間步長為某些輸出單元提供主管給定的目標激活。例如,如果輸入序列是對應於口語數字的語音信號,則在序列末尾的最終目標輸出可以是對該數字進行分類的標籤。
在強化學習環境中,沒有教師提供目標信號。相反,適應度函數或獎勵函數偶爾用於評估RNN的性能,它通過影響輸出單元來影響其輸入流,輸出單元和一個可以影響環境的執行器相連。這可以被用來玩一個遊戲,在這個遊戲中,進度是用贏得的點數來衡量的。
每個序列產生一個誤差,作為所有目標信號與網絡計算的相應激活的偏差之和。對於大量序列的訓練集,總誤差是所有單個序列誤差的總和。
Elman 網絡和 Jordan 網絡
Elman網絡是一個三層網絡(在圖中水平排列為x、y和z),添加了一組上下文單元(在圖中為u)。中間(隱藏)層連接到這些權重為1的上下文單元[25]。在每個時間步,輸入被向前反饋,並且學習規則被應用。固定的反向連接在上下文單元中保存隱藏單元的先前值的副本(因為它們在應用學習規則之前在連接上傳播)。因此,網絡可以保持某種狀態,允許它執行諸如序列預測之類的任務,這些任務超出了標準多層感知器的能力。
Jordan網絡類似於Elman網絡。上下文單元是從輸出層而不是隱藏層饋送的。Jordan網絡中的上下文單元也稱為狀態層。他們與自己有着經常性的聯繫。[26]
Elman和Jordan網絡也被稱為「簡單循環網絡」。
變量和函數
- : 輸入向量
- : 隱藏層向量
- : 輸出向量
- , 和 : 參數矩陣和參數向量
- 和 : 激活函數
雙向循環神經網絡
雙向循環神經網絡(Bi-directional RNN,BRNN)基於元素的前向和後向的上下文,使用有限序列來預測或標記序列的每個元素。該方法是通過連接兩個 RNN 的輸出來完成的:一個從左到右處理序列,另一個從右到左處理序列。BRNN的輸出是對目標信號的預測。該技術已被證明在與 LSTM RNN 結合使用時特別有用。[29][30]
參考
- ^ 時鐘結構的RNN (頁面存檔備份,存於互聯網檔案館),2014年2月。
- ^ 循環網絡結構的經驗之談 (頁面存檔備份,存於互聯網檔案館),谷歌論文,2015年。
- ^ 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.
- ^ Williams, Ronald J.; Hinton, Geoffrey E.; Rumelhart, David E. Learning representations by back-propagating errors. Nature. October 1986, 323 (6088): 533–536. Bibcode:1986Natur.323..533R. ISSN 1476-4687. doi:10.1038/323533a0.
- ^ Schmidhuber, Jürgen. Habilitation thesis: System modeling and optimization (PDF). 1993.[失效連結] Page 150 ff demonstrates credit assignment across the equivalent of 1,200 layers in an unfolded RNN.
- ^ Hochreiter, Sepp; Schmidhuber, Jürgen. Long Short-Term Memory. Neural Computation. 1997-11-01, 9 (8): 1735–1780. PMID 9377276. doi:10.1162/neco.1997.9.8.1735.
- ^ Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen. An Application of Recurrent Neural Networks to Discriminative Keyword Spotting. ICANN'07. Berlin, Heidelberg: Springer-Verlag. 2007: 220–229 [2020-02-27]. ISBN 978-3-540-74693-5. (原始內容存檔於2018-10-06).
|journal=
被忽略 (幫助) - ^ 8.0 8.1 引用錯誤:沒有為名為
schmidhuber2015
的參考文獻提供內容 - ^ Graves, Alex; Schmidhuber, Jürgen. Bengio, Yoshua; Schuurmans, Dale; Lafferty, John; Williams, Chris editor-K. I.; Culotta, Aron , 編. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks. Neural Information Processing Systems (NIPS) Foundation: 545–552. 2009 [2020-02-27]. (原始內容存檔於2020-09-07).
- ^ Hannun, Awni; Case, Carl; Casper, Jared; Catanzaro, Bryan; Diamos, Greg; Elsen, Erich; Prenger, Ryan; Satheesh, Sanjeev; Sengupta, Shubho. Deep Speech: Scaling up end-to-end speech recognition. 2014-12-17. arXiv:1412.5567 [cs.CL].
- ^ Sak, Haşim; Senior, Andrew; Beaufays, Françoise. Long Short-Term Memory recurrent neural network architectures for large scale acoustic modeling (PDF). 2014 [2020-02-28]. (原始內容 (PDF)存檔於2019-09-22).
- ^ Li, Xiangang; Wu, Xihong. Constructing Long Short-Term Memory based Deep Recurrent Neural Networks for Large Vocabulary Speech Recognition. 2014-10-15. arXiv:1410.4281 [cs.CL].
- ^ Fan, Bo; Wang, Lijuan; Soong, Frank K.; Xie, Lei (2015) "Photo-Real Talking Head with Deep Bidirectional LSTM", in Proceedings of ICASSP 2015
- ^ Zen, Heiga; Sak, Haşim. Unidirectional Long Short-Term Memory Recurrent Neural Network with Recurrent Output Layer for Low-Latency Speech Synthesis (PDF). Google.com. ICASSP: 4470–4474. 2015 [2020-02-27]. (原始內容存檔 (PDF)於2021-05-09).
- ^ Sak, Haşim; Senior, Andrew; Rao, Kanishka; Beaufays, Françoise; Schalkwyk, Johan. Google voice search: faster and more accurate. September 2015 [2020-02-27]. (原始內容存檔於2016-03-09).
- ^ Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V. Sequence to Sequence Learning with Neural Networks (PDF). Electronic Proceedings of the Neural Information Processing Systems Conference. 2014, 27: 5346 [2020-02-27]. Bibcode:2014arXiv1409.3215S. arXiv:1409.3215 . (原始內容存檔 (PDF)於2021-05-09).
- ^ Jozefowicz, Rafal; Vinyals, Oriol; Schuster, Mike; Shazeer, Noam; Wu, Yonghui. Exploring the Limits of Language Modeling. 2016-02-07. arXiv:1602.02410 [cs.CL].
- ^ Gillick, Dan; Brunk, Cliff; Vinyals, Oriol; Subramanya, Amarnag. Multilingual Language Processing From Bytes. 2015-11-30. arXiv:1512.00103 [cs.CL].
- ^ Vinyals, Oriol; Toshev, Alexander; Bengio, Samy; Erhan, Dumitru. Show and Tell: A Neural Image Caption Generator. 2014-11-17. arXiv:1411.4555 [cs.CV].
- ^ 20.0 20.1 Cho, K., van et al (2014a). 统计机器翻译方法:使用RNN进行短语编码解码。. [2015-04-23]. (原始內容存檔於2022-02-08).
- ^ 经典模型Long Short-Term Memory的原论文,发表于1997年。. [2015-04-23]. (原始內容存檔於2019-08-09).
- ^ Bidirectional RNN, (1997)
- ^ Cho. k. et al 使用RNN和对齐模型的短语统计机器翻译方法。(2014.a.). [2015-04-23]. (原始內容存檔於2022-06-19).
- ^ 神經網絡學習:序列到序列 (頁面存檔備份,存於互聯網檔案館),作者Sutskever,2014年。
- ^ Cruse, Holk; Neural Networks as Cybernetic Systems (頁面存檔備份,存於互聯網檔案館), 2nd and revised edition
- ^ 引用錯誤:沒有為名為
bmm6152
的參考文獻提供內容 - ^ Elman, Jeffrey L. Finding Structure in Time. Cognitive Science. 1990, 14 (2): 179–211. doi:10.1016/0364-0213(90)90002-E.
- ^ Jordan, Michael I. Serial Order: A Parallel Distributed Processing Approach. Neural-Network Models of Cognition 121. 1997-01-01: 471–495. ISBN 9780444819314. doi:10.1016/s0166-4115(97)80111-2.
|journal=
被忽略 (幫助) - ^ Graves, Alex; Schmidhuber, Jürgen. Framewise phoneme classification with bidirectional LSTM and other neural network architectures. Neural Networks. IJCNN 2005. 2005-07-01, 18 (5): 602–610. CiteSeerX 10.1.1.331.5800 . PMID 16112549. doi:10.1016/j.neunet.2005.06.042.
- ^ Thireou, Trias; Reczko, Martin. Bidirectional Long Short-Term Memory Networks for Predicting the Subcellular Localization of Eukaryotic Proteins. IEEE/ACM Transactions on Computational Biology and Bioinformatics. July 2007, 4 (3): 441–446. PMID 17666763. S2CID 11787259. doi:10.1109/tcbb.2007.1015.