Recurrent Neural Network[survey]



0.引言

我們發現傳統的(如前向網絡等)非循環的NN都是假設樣本之間無依賴關系(至少時間和順序上是無依賴關系),而許多學習任務卻都涉及到處理序列數據,如image captioning,speech synthesis,music generation是基於模型輸出序列數據;如time series prediction,video analysis,musical information retrieval是基於模型輸入需要序列數據;而如translating natural language,engaging in dialogue,controlling a robot是輸入和輸出都需要序列數據,所以非循環NN是無法直接處理這些任務的。假如說基於傳統的非循環NN采用滑框的形式來處理先后關系,可是因為是滑框大小是必須固定的,對於序列數據是可變長度情況下,還是沒法解決。而且對於對話系統或者說自動駕駛等任務來說,也沒法基於所謂的分類器和回歸器去組合成一個新模型從而解決問題。所以還是需要一些能夠顯示的處理時序依賴關系的方法。

那么問題來了,為什么不能用HMM呢?
因為HMM必須基於離散的適度數量的狀態集合\(S\)中去狀態轉換,即使使用了viterbi算法,算法時間復雜度也是O(\(|S|^2\)),所以一旦狀態增多,那么HMM的復雜度就急速上升了,而且如果采用滑框形式來融合多個狀態,一旦窗口變大,計算復雜度也指數上升了,所以HMM對於長時依賴問題也是很麻煩的。

所以RNN系列應運而生了。一方面基於非線性激活函數的固定size的RNN幾乎可以擬合任意的數學計算,並且RNN是基於NN的,不但可以用SGD方式訓練,而且還可以增加正則項等來緩解過擬合問題;另一方面,RNN的圖靈完備特性使得其一旦結構定義了,就不太可能生成任何其他隨意的模式(固定性)。

即此刻的狀態包含上一刻的歷史,又是下一刻變化的依據。 這其實包含了可編程神經網絡的核心概念,即, 當你有一個未知的過程,但你可以測量到輸入和輸出, 你假設當這個過程通過RNN的時候,它是可以自己學會這樣的輸入輸出規律的, 而且因此具有預測能力。 在這點上說, RNN是圖靈完備的.轉自知乎

RNN的研究可以追溯到19世紀80年代。

圖0.1 RNN結構圖
而這種模型雖然能夠處理時間依賴或者順序依賴關系,可是內部隱藏層的輸出會循環的連接到下一個時間步的隱藏層,如果\(W_{hh}\)小於1(大於1),那么時間長了,就會導致梯度消失(爆炸)。

0.1 RNN的展開

對於RNN本身的結構,其還算是清晰的。不過介於目前的訓練方式都是梯度下降的。如何訓練也是個問題。如下圖


圖0.1.1 RNN的隨時間展開
如圖0.1.1所示,RNN的隨時間展開,就是將隱含神經元復制t次,並將它們的連接從一個副本跨連到相鄰的另一個副本。這樣便可將那些循環連接移除,而不更改計算的語義。經過上述處理,便形成了一個前饋網絡,且相鄰時間步之間的權值都擁有相同的強度。如假設RNN公式如下:

圖0.1.2 RNN公式

  • 前向:那么對於圖0.1.1中任意兩個相鄰的副本,假設前一個是時間步t-1,后一個是時間步t,則從時間步t-1的隱藏層輸出\(h_{t-1}\),連接到時間步t的隱藏層輸入,與\(x_t\)一起送入當前隱藏層,即展開的形狀和不展開是完全對等的。故而展開的\(W_{t,t-1}\)就等於不展開時候\(W_{t,t-1}\),同時\(W_{t,t-1}\)也等於\(W_{t+1,t}\),即展開就是復制而已。
  • 后向:在一個序列中,RNN的權重都是固定的。即如圖0.1.1的下面的圖,在一個序列中,輸入,輸出,循環這三個權重都是固定的(那么就類似CNN中卷積層那種感覺:在一個feature map中,每個濾波器的權重都是相同的)。也就是:先如博客1中介紹的一樣,按照正常的展開進行BP計算每個連接的梯度;然后如博客2或者《Deep Learning》花書中10.2.2介紹的一樣,是按照時間將梯度相加,作為當前連接所需要更新的梯度,即如\(W_o\),先計算展開時候每個時間步對應的梯度,然后在進行\(W_o\)的梯度更新的時候,$ \triangledown W_o=\sum_t^TW_o^t$。

    圖0.1.3 2層RNN及對應的展開

1. 現代RNN結構

因為圖0.1這種RNN基本有着訓練困難等問題,所以現在關於RNN的都不是最原始的RNN結構。在之前,就有很多關於如何解決訓練難的問題,如:

  • 梯度消失:換結構,LSTM;使用二階優化算法《Deep learning via hessian-free optimization》,《Learning recurrent neural networks with hessian-free optimization 》;RNN權重增加正則《On the difficulty of training recurrent neural networks》;不要一起學習循環權重《The echo state approach to analysing and training recurrent neural networks-with an erratum note》,《Harnessing nonlinearity:Predicting chaotic systems and saving energy in wireless communication》 ;小心的初始化《On the importance of initialization and momentum in deep learning》;
  • 梯度爆炸:處理梯度爆炸的問題相對梯度消失來說,就暴力了一些了,就是簡單的對梯度的范式做個硬性限制 《Statistical Language Models based on Neural Networks》,《 On the difficulty of training recurrent neural networks》

近些年,最成功的RNN變種結構來自於1997年的2篇論文:

  • 《long short-term memory》就是LSTM模型,通過引入一個記憶單元,用來代替傳統RNN中的隱藏層節點,因為有這些記憶單元,網絡可以克服之前訓練RNN遇到的問題;
  • 《bidirectional recurrent neural networks》就是BiRNN,通過引入一種需要同時考慮下一個時間步和上一個時間步的信息來做當前時間步決定的結構,從而成功的應用在NLP的序列標簽任務中。

值得慶幸的是,這兩種結構並不是互斥的,所以可以融合在一起,比如用它解決了音素的分類(Framewise phoneme classi cation with bidirectional LSTM and other neural network architectures,2005)和手寫識別(A novel connectionist system for unconstrained handwriting recognition,2009)。當然后續的《neural turing machine》。

1.1 LSTM

LSTM最開始主要是為了解決梯度消失問題的,該模型通過對標准的RNN增加一層隱藏層,而該隱藏層是以記憶單元的形式表示的。該記憶單元包含了一個自循環連接,而且其中表示的權重是恆等於1(resnet中也是為1的恆等連接),如圖1.1.1左邊,從而確保梯度無論傳遞多少次都可以防止消失或者爆炸。該模型之所以叫long-short term memory,主要來自以下解釋:

  • long-term memory:這是基於權重來解釋的,在很長時間的訓練step中,其權重變化都不是很大,從而能夠編碼數據的通用知識(general knowledge),;
  • short-term memory:這是基於激勵值來解釋的,即每個節點短暫的激活值都會直接傳遞到下一個節點;
  • memory:該網絡結構引入一個記憶單元來作為中間的信息存儲介質。一個記憶單元是一個復合單元,其中由更簡單的節點以特定連接模式構成,其中的\(c_t\)就表示為長期的記憶,而\(h_t\)就表示為短期的記憶。相對來說,長期記憶的梯度較小,短期記憶的梯度較大。


圖1.1.1 最初的LSTM和最常用的LSTM模型結構
如圖1.1.1,在200年《Learning to forget: Continual prediction with LSTM》中,在基於最初LSTM模型基礎上,增加了一個遺忘門,即中間的記憶單元的輸出不是以恆等映射的形式輸入到下一個時間步的記憶單元,而是增加了一個遺忘門來選擇性的增加其中一部分到下一個時間步。
上述都是基於單個記憶單元基礎上的LSTM,而當隱藏層中有多個記憶單元時,如圖1.1.2所示。

圖1.1.2 包含2個記憶單元的LSTM模型結構
圖1.1.2中因為粉紅色線和黑色線畫的還是有些模糊的,所以有些理不清。不過基於當前時間步來說,其中的2個記憶單元的輸出都會互相輸出到下一個時間步,即一個記憶單元的輸出會到下一個時間步的自身記憶單元和另一個記憶單元

1.2 BRNN

和LSTM相比,另一個用的最成功的RNN就是BRNN了,該結構中,有2層隱藏層,其中每個隱藏層都連接到輸出和輸入。這2個隱藏層可以微分,且都有自循環連接,不過一個是朝着下一個時間步連接的,另一個是朝着上一個時間步連接的。

圖1.2.1 BRNN示意圖
給定一個輸入序列和一個目標序列,BRNN可以先基於時間維度展開,然后采用傳統的BP方法來訓練。圖1.2.1中,\(h^{t}\),\(z^{t}\)就是前向和后向的連接。
這里接着給出《Bidirectional Recurrent Neural Networks》上有關訓練部分的文章截圖,可以看出BRNN的訓練相對RNN稍微有點計算量,大致是2倍。

圖1.2.1 BRNN論文中的截圖

BRNN的一個限制是他不能連續的運行,因為他需要在序列的開始和結束都各有一個固定的占位符,而且該模型也沒法用在ML中的在線環境,因為你沒法得到未來的數據。不過對於如詞性標注任務,或者給定一個句子,用來做其中某個單詞基於其前后單詞基礎上是否合理的評價等任務還是很好的。

1.3 NTM

神經圖靈機是通過增加可以訪問的外置存儲來擴展RNN,這樣使得RNN的能力能夠處理較為復雜的算法,如排序。NTM的2個主要組件是一個控制器和一個記憶矩陣:

  • 控制器:可以是一個循環神經網絡或者就是前向神經網絡,基於輸入然后返回輸出到外部,就如計算機從內存中讀取指令一樣;
  • 記憶矩陣:該記憶矩陣是一個\(N\times M\)的大矩陣,行表示一個記憶向量,列表示該向量維度

NTM可以使用隨機梯度下降等方式去end-to-end的訓練。Graves et al在NTM上測試了幾種不同的任務:copy,priority sort等。實驗測試了是否NTM可以通過有監督學習的方式來訓練從而正確且高效的實現這些算法。有趣的是,即使輸入的樣本長度大於訓練集中的樣本,也能合理的泛化。

2. 最優RNN模型的探索

Rafal Jozefowicz等人在2015年的工作主要目的就是研究是否LSTM結構是最優的,是否有其他更優的結構。他們構建了1w個不同的RNN結構,在此上進行了超過1k個不同結構搜索,並找到一個在大部分情況下都優於LSTM和GRU的結構,並且發現對於LSTM的遺忘門偏置的一個重要結論,即偏置初始值需要大於等於1,這樣可以拉近LSTM與GRU之間的差異。並且作者發現輸入門很重要輸出門不太重要遺忘門在任何情況下都特別重要,除了在語言建模的時候(這也與《Learning longer memory in recurrent neural networks》中的意見一致,那篇論文是在標准RNN上增加一個硬編碼的整合單元,其結構就和沒有遺忘門的LSTM差不多,其在語言建模上效果不錯)。在Rafal Jozefowicz的論文中LSTM的結構和對應公式,如圖2.1。

圖2.1 LSTM的結構和對應公式
LSTM在不同時期不同人論文中總有些小變化,如圖2.1中是與《Generating sequences with recurrent neural networks》中結構很相似,不過是沒有peephole連接的。

圖2.2 GRU的結構和對應公式

2.1 遺忘門

通常大家對神經網絡的初始化都是差不多的策略。如在LSTM中遺忘門偏置的初始化為0.5,這會導致每個時間步上梯度以0.5倍消失,從而導致長時依賴無法完成,作者發現只要將遺忘門的偏置\(b_f\)的值設定大點,如1或者2。這樣遺忘門整個的值就會差不多接近於1(\(1/{1+e^{-0}}=0.5\),\(1/{1+e^{-1}}=0.73\)),從而保證了梯度的信息流傳動。

2.2 結果

作者在對比GRU與LSTM時發現,基於navie的初始化基礎上,基本在所有任務中都好於LSTM,不過的確如果將LSTM的遺忘門偏置初始值設的大一點,LSTM的效果還是接近於GRU的。有個有趣的現象就是,按照作者設定的模型搜索流程,最后得到的三個最好的模型都和GRU差不多,所以如果想要找到一個特別優於LSTM的模型,那么至少不是那么輕松的。

圖2.3.1 搜索到的最好的三個結構的公式

圖2.3.2 在music和PTB任務上的結果
如圖2.3.2,其中LSTM-i、LSTM-f、LSTM-o表示這個LSTM去掉輸入門、遺忘門、輸出門之后的結構;LSTM-b表示這個LSTM遺忘門的偏置是1;Tanh就是標准的Tanh RNN。MUT1、MUT2、MUT3是搜索出來的3個最好的模型。總結結果:

  • GRU除了在語言建模任務上,其他任務上都好於LSTM
  • MUT1在語言建模上的效果和GRU相當,在其他任務上更好;
  • LSTM在PTB語言建模任務上當使用了dropout之后,明顯好於其他結構
  • LSTM中將遺忘門的偏置設定大一點,可以在基本所有任務上都好於其他LSTM和GRU
  • MUT1在兩個music數據集上是最好的結構,而如果使用了dropout,LSTM-i和LSTM-o可以獲得最好的結果。

3. LSTM結構本身的搜索

Klaus Greff着重分析了8個不同的LSTM變種在3個不同任務上的表現:speech recognition《DARPA TIMIT Acoustic-Phonetic
Continuous Speech Corpus CD-ROM》, handwriting recognition《IAM-OnDB-an on-line English sentence database acquired from handwritten text on a whiteboard》,polyphonic music modeling《Harmonising chorales by probabilistic inference》。在所有LSTM變種的每個任務上采用隨機搜索的方式進行獨立優化,他們的重要性通過fANOVA框架進行評估,總的來說,一共5400個實驗,大致需要15個CPU年才能跑完。結果顯示沒有任何一個變種相對標准LSTM結構有明顯的提升。

如上面第2小節所述,不同論文,不同時期對LSTM的結構有些輕微的不同,如Klaus Greff以《Framewise phoneme classification with bidirectional LSTM and other neural network architectures.》中的結構為主要引入觀點的結構,稱之為vanilla LSTM,該LSTM結構定義如下:

圖3.1 有peephole連接的LSTM結構

圖3.2 基於圖3.1中LSTM對應的公式和部分導數
如圖3.1,最開始是Gers and Schmidhuber等人在《Recurrent nets that time and count》中認為,為了學習准確的時間,希望記憶單元也能參與到門的控制中,從而添加了peephole連接,並且去掉了輸出激活函數,因為沒發現這部分有什么作用;然后Graves and Schmidhuber等人在《Framewise phoneme classification with bidirectional LSTM and other neural network architectures》中描述了完整的通過時間維度(backpropagation through time,BPTT)的反向傳播進行訓練LSTM,通過BPTT進行訓練可以使用有限的查分來檢查LSTM的梯度,使得在實際實現中更穩定可靠,此時的模型就是vanilla LSTM。當然其他的LSTM變種見本文最下的參考文獻。
即LSTM經歷了:最原始的LSTM -> 添加遺忘門的LSTM -> 添加了peephole連接的LSTM -> vanilla LSTM

3.1 變種LSTM及對應數據集的設置

Klaus Greff等人的實驗中的設置如下:

  • 結構選取上,在JSB Chorales任務上:使用的是一個單隱層和一個sigmoid輸出層的LSTM;在TIMIT和IAM在線任務上:使用的是BiLSTM,包含2個隱層,大致結構如圖1.2.1;
  • 目標函數選取上,在JSB Chorales和TIMIT上采用的是交叉熵;在IAM在線任務上采用的是CTC(Connectionist Temporal Classification《Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks》)目標函數
  • 模型訓練上,采用了《On the importance of initialization and momentum in deep learning》中的方法,LSTM部分的梯度計算是用的full BPTT

Klaus Greff等人選取的8種LSTM變種如下,下面的幾種變種都是基於圖3.1結構為基礎的:

圖3.1.1 8種基於vanilla LSTM結構的變種
在超參數選取中,Klaus Greff等人用的是隨機搜索,其好處有:

  • 容易實現;
  • 容易並行;
  • 可以均勻的覆蓋搜索空間;
  • 有利於后續分析超參數的重要性。

不過他們發現在TIMIT數據集上對比傳統的動量和Nesterov-style動量兩種方法發現,都沒什么差別;而且發現如果強行將梯度限制在[-1,1],那么結果會較大下降,所以后續兩個數據集上就不clip梯度了。

3.2 實驗結果


圖3.2 基於3個數據集下8種變種的結果
如圖3.2,有意思的是,當移除了其中的遺忘門和輸出激活函數的時候,結果一下子就變的特別差了;而CIFG模型沒有這個問題,這也佐證了GRU模型的有效性;同樣NP模型和CIFG模型一樣,都沒多大准確率下降,這也說明了peephole沒多大貢獻,不過還是略有幫助的,所以這樣的對比實驗是有助於減少LSTM模型的復雜性的;從FGR模型可以看出,該方法也沒多大用處,在TIMIT和IAM在線任務上准確度提升不大,而且還加大了參數量,所以可以考慮以此簡化LSTM;對於NIG,NOG,NIAF等模型上,就可以看出有明顯的准確度下降了,所以對於有監督的連續實數數據上的模型來說,輸入門,輸出門和輸入激活函數還是至關重要的。

在超參數對比上:

圖3.2 基於三個數據集下,vanilla LSTM的結果對比

  • 學習率:從圖3.2中可以看出影響最大的還是學習率,而且對於不同數據集,最優學習率有所不同,不過給我們的提示就是,可以最開始采用較大學習率,如1.0,然后在當准確度停止不動時候降低學習率,如除以10;而且可以在一個較小的網絡上快速的訓練,從而得到一個較好的學習率策略,然后直接用到更大的模型上就行;
  • 隱藏層大小:從中間一列看,隱藏層越大,模型效果越好,當然訓練時間也相對增加;
  • 在使用在線SGD訓練時,動量帶來的收益不大

4. 基於實驗角度可視化和理解RNN

5. RNN等模型的應用

參考文獻:

  1. [survey] - Lipton Z C, Berkowitz J, Elkan C. A critical review of recurrent neural networks for sequence learning[J]. arXiv preprint arXiv:1506.00019, 2015.
    .. [survey] - Jozefowicz R, Zaremba W, Sutskever I. An empirical exploration of recurrent network architectures[C]//Proceedings of the 32nd International Conference on Machine Learning (ICML-15). 2015: 2342-2350.
    .. [survey] - 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.
    .. [survey] - Karpathy A, Johnson J, Fei-Fei L. Visualizing and understanding recurrent networks[J]. arXiv preprint arXiv:1506.02078, 2015.
  2. [Variants] - Felix A. Gers, Juan Antonio P´erez-Ortiz, Douglas Eck, and J¨urgen Schmidhuber. DEFK-LSTM. In ESANN 2002, Proceedings of the 10th Eurorean Symposium on Artificial Neural Networks, 2002.
    .. [Variants] - J Schmidhuber, D Wierstra, M Gagliolo, and F J Gomez.Training Recurrent Networks by EVOLINO. Neural Computation, 19(3):757–779, 2007.
    .. [Variants] - Justin Bayer, Daan Wierstra, Julian Togelius, and J¨urgen Schmidhuber. Evolving memory cell structures for sequence learning. In Artificial Neural Networks–ICANN 2009, pages 755–764. Springer, 2009. URL http://link.springer.com/chapter/10.1007/978-3-642-04277-5 76.
    .. [Variants] - Rafal Jozefowicz, Wojciech Zaremba, and Ilya Sutskever.An empirical exploration of recurrent network architectures.In Proceedings of the 32nd International Conference on Machine Learning (ICML-15), pages 2342–2350, 2015.
    .. [Variants] - Hasim Sak, Andrew Senior, and Franc¸oise Beaufays.Long short-term memory recurrent neural network architectures for large scale acoustic modeling. In Proceedings of the Annual Conference of International Speech Communication Association (INTERSPEECH),2014. URL http://193.6.4.39/~czap/letoltes/IS14/IS2014/PDF/AUTHOR/IS141304.PDF
    .. [Variants] - Patrick Doetsch, Michal Kozielski, and Hermann Ney.Fast and robust training of recurrent neural networks for offline handwriting recognition. In 14th International Conference on Frontiers in Handwriting Recognition,2014. URL http://people.sabanciuniv.edu/berrin/cs581/Papers/icfhr2014/data/4334a279.pdf
    .. [Variants] - Sebastian Otte, Marcus Liwicki, and Andreas Zell. Dynamic Cortex Memory: Enhancing Recurrent Neural Networks for Gradient-Based Sequence Learning. In Artificial Neural Networks and Machine Learning – ICANN 2014,number 8681 in Lecture Notes in Computer Science,pages 1–8. Springer International Publishing, September 2014. ISBN 978-3-319-11178-0, 978-3-319-11179-7. URL http://link.springer.com/chapter/10.1007/978-3-319-11179-7_1
    .. [Variants] - Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre,Fethi Bougares, Holger Schwenk, and Yoshua Bengio.Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. arXiv preprint arXiv:1406.1078, 2014. URL http://arxiv.org/abs/1406.1078
    .. [Variants] - Junyoung Chung, Caglar Gulcehre, KyungHyun Cho,and Yoshua Bengio. Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling.arXiv:1412.3555 [cs], December 2014. URL http://arxiv.org/abs/1412.3555
  3. [blog][wildml] - BPTT; 中文翻譯
  4. [paper] - Boden M. A guide to recurrent neural networks and backpropagation[J]. the Dallas project, 2002.
  5. [blog] - 基於時間的反向傳播算法BPTT,wildml翻譯; 較多總結
  6. [blog] - 一個pdf; BPTT的pdf; Supervised Sequence Labelling with Recurrent Neural Networks
  7. [blog] - BPTT為什么會導致RNN梯度爆炸和消失; 循環神經網絡的BPTT算法步驟整理,梯度消失與梯度爆炸;
  8. [blog] - 反向3; 反向4反向5; 反向6; 反向7; 反向8; bp反向; 反向9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM