第六章 循環神經網絡
在前饋神經網絡中,信息的傳遞是單向的,這種限制雖然使得網絡變得更容易學習,但在一定程度上也減弱了神經網絡模型的能力.在生物神經網絡中,神經元之間的連接關係要複雜得多.前饋神經網絡可以看作一個複雜的函數,每次輸入都是獨立的,即網絡的輸出只依賴於當前的輸入.但是在很多現實任務中,網絡的輸出不僅和當前時刻的輸入相關,也和其過去一段時間的輸出相關。比如一個有限狀態自動機,其下一個時刻的狀態(輸出)不僅僅和當前輸入相關,也和當前狀態(上一個時刻的輸出)相關.此外,前饋網絡難以處理時序數據,比如視頻、語音、文本等。時序數據的長度一般是不固定的,而前饋神經網絡要求輸入和輸出的維數都是固定的,不能任意改變.因此,當處理這一類和時序數據相關的問題時,就需要一種能力更強的模型。
循環神經網絡(Recurrent Neural Network,RNN)是一類具有短期記憶能力的神經網絡.在循環神經網絡中,神經元不但可以接受其他神經元的信息,也可以接受自身的信息,形成具有環路的網絡結構.和前饋神經網絡相比,循環神經網絡更加符合生物神經網絡的結構.循環神經網絡已經被廣泛應用在語音識別、語言模型以及自然語言生成等任務上。循環神經網絡的參數學習可以通過隨時間反向傳播算法來學習.隨時間反向傳播算法即按照時間的逆序將錯誤信息一步步地往前傳遞.當輸入序列比較長時,會存在梯度爆炸和消失問題,也稱爲長程依賴問題。爲了解決這個問題,人們對循環神經網絡進行了很多的改進,其中最有效的改進方式引入門控機制(Gating Mechanism)。
此外,循環神經網絡可以很容易地擴展到兩種更廣義的記憶網絡模型:遞歸神經網絡和圖網絡
RNN特點:
- 具有短期記憶能力的神經網絡;
- 神經元不僅可以接受其他神經元的信息,還可以接受自身的信息,形成具有環路的網絡結構。
- 較於前饋神經網絡,RNN更加符合生物神經網絡的結構;
- 應用:語音識別、語言模型以及自然語言生成等任務上。
- 參數學習:隨時間反向傳播算法;但會存在長程依賴問題(當輸入序列比較長時,會存在梯度爆炸和消失問題),解決辦法是引入門控機制。
- 擴展網絡:遞歸神經網絡和圖網絡
6.1 給網絡增加記憶能力
- 前饋神經網絡是一種靜態網絡,不具有短期記憶功能;
- 有以下三種方法給網絡增加短期記憶能力;
6.1.1延時神經網絡
-
建立額外的延時單元,用來存儲網絡的歷史信息(可以包括輸入、輸出、隱狀態等);
-
代表模型:延時神經網絡(Time Delay Neural Network,TDNN);
-
結構:在前饋神經網絡中的非輸出層都添加一個延時器,記錄神經元的最近幾次活性值,如在第t個時刻,第l層神經元的活性值依賴於第l-1層神經元的最近K個時刻的活性值,即 表示第l層神經元的數量;
6.1.2 有外部輸入的非線性自迴歸模型
- 自迴歸模型(AR):是統計學上常用的一類時間序列模型; 爲可學習參數, \(\epsilon_t\)!服從 \(\mathcal{N}(0,\sigma^2)\)分佈。
- 有外部輸入的非線性自迴歸模型(NARX):在每一個時間t都有一個外部輸入 \(x_t\),產生一個輸出 \(y_t\) ,通過延時器記錄最近 \(K_x\)次的外部輸入和最近 \(K_y\)次的輸出,第t個時刻的輸出 \(y_t\) 爲 ,其中\(f(\cdot)\) 表示非線性函數,可以是一個前饋網絡, \(K_x\)和\(K_y\)爲超參數。
6.1.3 RNN
- 更新帶反饋邊的隱藏層的活性值\(h_t:h_t=f(h_{t-1},x_t),h_0=0,f(\cdot)\) 爲一個非線性函數,可以是一個前饋神經網絡;此公式可視爲動力系統, \(h_t\) 也稱爲狀態或隱狀態;
- 理論上RNN可以近似任意的非線性動力系統。
6.2 簡單循環網絡
- 結構:只有一個隱藏層的神經網絡,隱藏層之間的結點是無連接的,但是增加了隱藏層之間的反饋連接。
- 更新公式:\(z_t = Uh_{t-1}+Wx_{t}+b,h_t = f(z_t)\),\(x_t \in R^{M}\)表示在時刻t時網絡的輸入,\(h_t\in R^D\) 表示隱藏層狀態(即隱藏層神經元活性值), \(U\in R^{D\times D}\)爲轉態-狀態權重矩陣, \(W\in R^{D\times M}\)爲轉態-輸入權重矩陣, \(b \in R^D\)爲偏置向量,\(f(\cdot)\) 是非線性激活函數,常爲Logistic函數或Tanh函數.
- 在時間維度上視爲權值共享的神經網絡;
6.2.1 RNN的計算能力
- 前饋神經網絡可以模擬任何連續函數,RNN可以模擬任何程序。
- 定義一個完全連接的RNN,輸入爲 \(x_t\) ,輸出爲 其中h爲隱狀態.
- RNN的通用近似定理;
- 一個完全連接的RNN是任何非線性動力系統的近似器;
-
圖靈完備
一種數據操作規則;(目前主流的編程語言都是圖靈完備的)
一個完全連接的循環神經網絡可以近似解決所有的可計算問題。
6.3 應用到機器學習
RNN可以應用到幾種模式的機器學習任務:
- 序列到類別模式、同步的序列到序列模式、異步的序列到序列模式。
6.3.1 序列到類別模式
- 用於序列數據的分類問題:輸入序列,輸出爲類別。如文本分類,輸入數據爲單詞的序列,輸出爲該文本的類別.
- 由輸入序列得到不同時刻的隱狀態,而最後一個隱狀態或者所有狀態的平均可以視爲整個序列的最終表示。然後輸入給分類器 \(g(\cdot)\) 進行分類。 \(\hat{y}=g(h_T)\)
- 除了將最後時刻的狀態作爲整個序列的表示之外,我們還可以對整個序列的所有狀態進行平均,並用這個平均狀態來作爲整個序列的表示
情感分類:
6.3.2 同步的序列到序列模式
- 用於序列標註任務;如詞性標註。即每一時刻都有輸入和輸出,輸入序列和輸出序列的長度相同。
- 每個時刻的隱狀態 \(h_t\) 代表了當前時刻和歷史信息,並輸入給分類器 \(g(\cdot)\) 。
信息抽取
(Information Extraction,IE) 從無結構的文本中抽取結構化的信息,形成知識。
語音識別
Connectionist Temporal Classification (CTC) [Alex Graves, ICML’06][Alex Graves, ICML’14][Haşim Sak, Interspeech’15][Jie Li, Interspeech’15][Andrew Senior, ASRU’15]
6.3.3 異步的序列到序列模式
- 也稱爲編碼器-解碼器(Encoder-Decoder);
- 輸入序列和輸出序列不需要有嚴格的對應關係,也不需要保持相同的長度。如機器翻譯。
- 過程:將樣本x按不同時刻輸入到一個RNN(編碼器)中,得到其編碼 \(h_T\) ,然後再使用另一個RNN(解碼器)得到輸出序列 .爲了建立輸出序列之間的依賴關係,在解碼器中通常使用非線性的自迴歸模型。
機器翻譯
6.4 參數學習
循環神經網絡的參數可以通過梯度下降方法來進行學習。
循環神經網絡中存在一個遞歸調用的函數 𝑓(⋅),因此其計算參數梯度的方式和前饋神經網絡不太相同.在循環神經網絡中主要有兩種計算梯度的方式:隨時間反向傳播(BPTT)算法和實時循環學習(RTRL)算法.
6.4.1 隨時反向傳播算法(BPTT)
- 思想:類似於前饋神經網絡的錯誤反向傳播算法來計算梯度;將RNN視爲一個展開的多層前饋神經網絡,所有層的參數是共享的,參數的真實梯度是展開層的參數梯度之和。
- 計算複雜度:參數的梯度需要在一個完整的前向計算和反向計算後才能得到並進行更新。計算量小,但因需要保存所有時刻的中間梯度,空間複雜度高。
6.4.2 實時循環學習算法(RTRL)
- 思想:通過前向傳播的方式來計算梯度;
- 計算複雜度:不需要梯度回傳,適合在線學習或無限序列的任務重。
兩種算法比較
RTRL算法和BPTT算法都是基於梯度下降的算法,分別通過前向模式和反向模式應用鏈式法則來計算梯度.在循環神經網絡中,一般網絡輸出維度遠低於輸入維度,因此 BPTT 算法的計算量會更小,但是 BPTT 算法需要保存所有時刻的中間梯度,空間複雜度較高.RTRL算法不需要梯度回傳,因此非常適合用於需要在線學習或無限序列的任務中。
6.5 長程依賴問題
RNN的常見問題:梯度消失和梯度爆炸;因此RNN不能完全解決長時依賴問題;
6.5.1 改進方案
- 梯度爆炸
- 權重衰減:給參數增加 \(l_1,l_2\)範數的正則化項來限制參數的取值範圍,使得\(\gamma\leq 1\) 。
- 梯度截斷;當梯度的模大於一定閾值時,就截斷成爲一個較小的數。
- 梯度消失
- 改變模型;
- 門控機制;
6.6 基於門控的循環神經網絡
- 在\(h_t = h_{t-1}+g(x_t,h_{t-1};\theta)\) 的基礎上引入門控機制(有選擇的加入信息,遺忘之間累積的信息)來控制信息的累積速度。
6.6.1 長短時記憶網絡(LSTM)
- 三個門:
- 遺忘門 \(f_t\in [0,1]^D\) : 控制上一個時刻的內部狀態\(c_{t-1}\) 需要遺忘多少信息;
- 輸入門\(i_t\in [0,1]^D\) : 控制當前時刻的候選狀態 \(\tilde{c_t}\)有多少信息需要保存;
- 輸出門 \(o_t\in [0,1]^D\) : 控制當前時刻的內部狀態 \(c_t\)有多少信息需要輸出給外部狀態 \(h_t\) 。
-
其他: \(c_t\) :內部狀態, \(h_t\):外部狀態(隱藏層);
-
下圖給出了 LSTM 網絡的循環單元結構,其計算過程爲:
1)首先利用上一時刻的外部狀態\(h_{t-1}\)和當前時刻的輸入\(x_t\),計算出三個門,以及候選狀態 \(\tilde{c_t}\)
2)結合遺忘門\(f_t\) 和輸入門 \(i_t\)來更新記憶單元 \(c_t\)
3)結合輸出門 \(O_t\),將內部狀態的信息傳遞給外部狀態\(h_t\).
通過 LSTM 循環單元,整個網絡可以建立較長距離的時序依賴關係
6.6.2 LSTM的變體
無遺忘門的LSTM網絡
- 1997,Hochreiter;
- 缺點:記憶單元c會不斷增大,其容量會達到飽和,從而大大降低LSTM模型的性能;
peephole連接
- 三個門不但依賴於輸入和上一時刻的隱藏狀態,還依賴於上一時刻的記憶單元。
其中 爲對角矩陣。
- 耦合輸入門和遺忘門
- 將輸入門和遺忘門合併,令\(f_t = 1-i_t\)
- 更新方式:
6.6.3 門控循環單元(GRU)
- 2014,Cho;
- 一個更新門: \(z_t\)(平衡輸入和遺忘);一個重置門: \(r_t\) (控制候選狀態 \(\tilde{h_t}\) 的計算是否依賴於上一時刻 \(h_{t-1}\) 的計算)
- \(g(x_t,h_{t-1};\theta)\) 定義爲
6.7 深層RNN
- 將RNN按照時間展開則是一個深的網絡,但如果從同一時刻網絡輸入到輸出之間的路徑 \(x_t \xrightarrow{} y_t\) 來看,網絡是淺的;
6.7.1 堆疊循環神經網絡(SRNN)
一種常見的增加循環神經網絡深度的做法是將多個循環網絡堆疊起來,稱 爲堆疊循環神經網絡(Stacked Recurrent Neural Network,SRNN)。
一個堆疊的簡單循環網絡(Stacked SRN)也稱爲循環多層感知器(Recurrent MultiLayer Perceptron,RMLP)
6.7.2 雙向循環神經網絡(Bi-RNN)
在有些任務中,一個時刻的輸出不但和過去時刻的信息有關,也和後續時刻的信息有關.比如給定一個句子,其中一個詞的詞性由它的上下文決定,即包含左右兩邊的信息.因此,在這些任務中,我們可以增加一個按照時間的逆序來傳遞信息的網絡層,來增強網絡的能力.
雙向循環神經網絡(Bidirectional Recurrent Neural Network,Bi-RNN)由兩層循環神經網絡組成,它們的輸入相同,只是信息傳遞的方向不同。
6.8 擴展到圖結構
如果將循環神經網絡按時間展開,每個時刻的隱狀態 \(h_t\)看作一個節點,那麼這些節點構成一個鏈式結構,每個節點 𝑡 都收到其父節點的消息(Message),更新自己的狀態,並傳遞給其子節點。而鏈式結構是一種特殊的圖結構,我們可以比較容易地將這種消息傳遞(Message Passing)的思想擴展到任意的圖結構上
6.8.1 遞歸神經網絡(RecRNN)
遞歸神經網絡(Recursive Neural Network,RecNN)是循環神經網絡在有向無循環圖上的擴展 [Pollack, 1990].遞歸神經網絡的一般結構爲樹狀的層次結構。
-
思想:源於有向無循環圖
-
用途:建模自然語言句子的語義;(2011,2013)給定一個句子的語法結構(常爲樹狀結構),使用RecRNN按照句法的組合關係合成一個句子的語義
-
拓展:樹結構的長短時記憶模型(2015);
2. 圖神經網絡(GNN)
-
知識圖譜、社交網絡、分子網絡等;
-
每個節點\(v\)都用一組神經元來表示其狀態\(h^{(\nu)},\mathcal{N}(\nu)\) 表示節點\(v\)的鄰居,\(m_t^{(\nu)}\) 表示在第t時刻節點\(v\)收到的信息;
-
(6.79)(6.80)是一種同步更新方式,所有的結構同時接受信息並更新自己的狀態。對於有向圖,使用異步的更新方式會更有效,如RNN或RecRNN。
6.9 參考資料
- 延時神經網絡:Lang K J, Waibel A H, Hinton G E. A time-delay neural network architecture for isolated word recognition[J]. Neural networks, 1990, 3(1):23-43.
- 延時神經網絡:Waibel A, Hanazawa T, Hinton G, et al. Phoneme recognition using time-delay neural networks[J]. IEEE transactions on acoustics, speech, and signal processing, 1989, 37(3):328-339.
- BPTT算法:Werbos P J. Backpropagation through time: what it does and how to do it[J]. Proceedings of the IEEE, 1990, 78(10):1550-1560.
- 帶截斷的BPTT算法:Williams R J, Peng J. An efficient gradient-based algorithm for on-line training of recurrent network trajectories[J]. Neural computation, 1990, 2(4):490-501.
- 長期依賴問題:Bengio Y, Simard P, Frasconi P. Learning long-term dependencies with gradient descent is difficult[J]. Neural Networks, IEEE Transactions on, 1994, 5(2):157-166.
- 長期依賴問題:Hochreiter S, Bengio Y, Frasconi P, et al. Gradient flow in recurrent nets: The difficulty of learning longterm dependencies[M/OL]//Kolen J F, Kremer S C. A Field Guide to Dynamical Recurrent Networks. IEEE, 2001: 237-243.
- LSTM:Gers F A, Schmidhuber J, Cummins F. Learning to forget: Continual prediction with lstm[J]. Neural Computation, 2000.
- LSTM:Hochreiter S, Schmidhuber J. Long short-term memory[J]. Neural computation, 1997, 9(8):1735-1780.
- GRU:Chung J, Gulcehre C, Cho K, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling[J]. arXiv preprint arXiv:1412.3555, 2014.
- LSTM在機器翻譯上的應用:Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in Neural Information Processing Systems. 2014: 3104-3112.
- LSTM網絡的分析:Greff K, Srivastava R K, Koutník J, et al. Lstm: A search space odyssey[J]. IEEE transactions on neural networks and learning systems, 2017.
- LSTM網絡的分析:Jozefowicz R, Zaremba W, Sutskever I. An empirical exploration of recurrent network architectures[C]//Proceedings of the 32nd International Conference on Machine Learning. 2015: 2342-2350.
- LSTM網絡的分析:Karpathy A, Johnson J, Fei-Fei L. Visualizing and understanding recurrent networks[J]. arXiv preprint arXiv:1506.02078, 2015.
- 殘差網絡:He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778
- 高速網絡:Srivastava R K, Greff K, Schmidhuber J. Highway networks[J]. arXiv preprint arXiv:1505.00387,2015.
- 圖網絡:Scarselli F, Gori M, Tsoi A C, et al. The graph neural network model[J]. IEEE Transactions on Neural Networks, 2009, 20(1):61-80.
- 圖卷積網絡:Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.
- 圖注意力網絡:Veličković P, Cucurull G, Casanova A, et al. Graph attention networks[J]. arXiv preprint arXiv:1710.10903, 2017.
- 消息傳遞神經網絡:Gilmer J, Schoenholz S S, Riley P F, et al. Neural message passing for quantum chemistry[J]. arXiv preprint arXiv:1704.01212, 2017.
- 圖網絡綜述:Battaglia P W, Hamrick J B, Bapst V, et al. Relational inductive biases, deep learning, and graph networks[J]. arXiv preprint arXiv:1806.01261, 2018.