LSTM簡介

轉載自:


http://blog.csdn.net/peaceinmind/article/details/50848128

導語

LSTM[1]作爲RNN的經典模型,已經應用在了很多領域,如語音識別[2],OCR[3,4,16],圖像描述[5],手寫字識別[6],翻譯[7],自然語言處理等等。

在線手寫字識別[11]


圖像內容描述[5]


 

 

1爲什麼需要LSTM

 

1.1時序問題

如果接到一個時序問題時,比如語音識別,我首先會想着先切割,然後每一段每一段地去識別,但是由於語音是有上下文關係的,比如中文發一個平聲的"zhong",那麼有可能是中文或者鐘錶的"zhong",因此需要上下文關係。然後我又有些瞭解普通的前饋神經網絡,這樣我就會設計出下圖中的網絡,把時序的輸入全部輸入到全連接前饋網絡中

 

 


 

這是一個很自然的選擇。但是個人認爲這裏面至少存在三個問題,第一個就是很難確定這個時序的窗口,是用t-5->t+5還是t-10->t+0,時序依賴的間隔很難確定;第二個不管這個窗口設的多大,它也只能對這些固定長度的信息進行建模,而很難對整個歷史信息建模(因爲目前的機器學習算法需要特徵維度固定);第三個就是這裏面有很多冗餘的信息在裏面,因爲對每一個發音的識別的網絡應該是比較類似的(按照CNN的理解,我們也可以把隱藏層認爲是特徵提取,直覺上對一個發音的識別的特徵提取應該是相同的),因此在上圖中xt-1h1,h2xth1,h2的權重應該類似,但是按照上圖設計的話權重的維度就很大,複雜度就增加了很多。不要小看這個複雜度,CNN的卷積層不就是在全連接的基礎上做了很強的人爲限制麼?

 

1.2遞歸神經網絡

這樣理解之後呢就很自然理解普通的遞歸神經網絡RNN的出現,如下圖

 

 


跟最開始的版本相比,輸入到隱藏層的權重、隱藏層到輸出層的權重在每個時間點上保持不變,而隱藏層比以前多了一個輸入,也就是說除了接收輸入層x外,還接收相應的上一個時刻隱藏層的輸出ht-1(跟隱藏層到輸出層yt-1的東西不一樣),靠這個解決上下文的問題

 

1.3 RNN難以訓練

但是在實際中,RNN比較難訓練,這個小節主要參考[9,10,11].大家都知道爲了增加模型的複雜度,神經網絡裏面會引入非線性的激活函數,所以前饋的時候是非線性,但是請注意反饋的時候是線性的,如果你把誤差放大兩倍,那麼所有反饋的誤差也會放大兩倍,同理縮小也一樣。

另外反饋的誤差還跟權重有關係,這裏利用UFLDL裏面的公式[12]


W是權重,delta是誤差,f代表激活函數,l代表隱藏層,輸入層是最低層,可以看到底層的反饋誤差是上一層的誤差乘以權重,如果權重過小,那麼越往底層傳遞反饋的誤差就越來越小,那麼你用這個誤差去調整網絡權值基本也就沒什麼用。梯度爆炸也類似。但是誤差也是權重算出來的,因此控制網絡權重非常重要,例如需要很小心的初始化權值,圖像中用CNN做轉移學習時,一般都用ImageNet的訓練結果作爲初始化,有些也用RBMs的訓練結果初始化。

文獻[10]部分工作是從工程角度去分析激活函數,從上面的公式上看,激活函數的導數會影響反饋誤差


比如sigmoid激活函數的值處在左邊和右邊的飽和區,但是因爲在那些區域的導數是非常小的(曲線比較平),因此也不利於誤差傳播。


上圖是文獻[10]中前饋網絡採用sigmod激活函數後各個層節點激活值的均值和標準差示意圖,可以看到第4層前期長期處於飽和區,雖然後面又很神奇地跳了一點出來。頂層反饋誤差很小,那底層的基本就更小了。

由於這些原因,研究者就提出了本文要講的LSTM.

 

2 LSTM基本概念

 

LSTM的發明是爲了解決梯度消失的問題從而解決時序問題中上下文長依賴的問題。比如預測單詞任務中需要根據前面的單詞去預測下一個輸出的單詞。"我的家在東北,松花江上……..,我能說一口流利的(東北話)",東北和東北話是有依賴關係的,但是中間呢隔了很多其他的單詞,按照普通的RNN,這兩者間有很多的層,因此依賴關係需要經過多次鏈式法則求偏導,所以存在梯度消失的問題,導致最後很難訓練到位。

LSTM有很多變形,這裏我們參考文獻[13]裏介紹一種常用模型,其中主要概念有Input Gate控制輸入,output Gate控制輸出,cell核心記憶模塊,forget gate控制cell遺忘程度,peephole等,示例圖如下(主要參考[8,14]


上圖初看比較複雜,不要緊我們一步一步分析,我們看圖中的基本符號


前兩個是激活函數,分別是sigmoidtanh,後面一個代表兩個輸入相乘,帶箭頭的連線代表有權重的連接。

 

2.1 Cell


 

Cell是核心記憶模塊,可以看出cell是一個遞歸的節點,它跟它自己的上一個狀態有關,它可以記住或者遺忘自己的上一個狀態,forget gate的輸出ft(0~1.0)來控制這個遺忘程度的,有點像梯度下降法中的衝量。另外它也能接收或者不接收當前的輸入,接收程度由input gate控制。


W是權重,bbias.


另外cell的結果會輸出到隱藏節點ht,但是輸出的程度由output gate控制


 

2.2 Forget Gate


還是以預測下一個單詞爲例子。如果當前的輸入是個句號,直覺上那麼句號之後跟句號之前的上下文依賴性較低,這個時候我們可以適當忘記之前的一些東西,比如說忘記8成,好讓後面更好地學習。


 

2.3 Input Gate

 


Input Gate是用來控制當前的輸入有多少能到cell.一個極端的例子能說明爲什麼LSTM能對時間跨度長的依賴關係建模和input gate的作用。在預測下一個單詞的問題中那麼LSTM可以通過輸入門關閉輸入閥(it值爲0),不讓那些單詞影響Cell的值,從而“東北”和“東北話”的關係用一次偏導就可以描述,而沒有什麼中間狀態,不需要偏導的偏導的偏導,從而解決梯度消失的問題。數學公式如下


 

2.4 Output Gate


Output Gate是控制當前的cell有多少能輸出到隱藏節點


 

2.5全局網絡


上圖中描述了帶有兩個LSTM塊的網絡,請注意有些連接沒有畫出來

 

2.6 Peephole

Peephole[15]的東西其實已經包含在上面了,但是爲了能清楚這個概念,還是再提一下


上面三根鏈接,就是peephole。有了這三個鏈接cell的狀態就可以去影響input gate,output gateforget gate的值。

 

LSTM的訓練就套用BP就可以了,這裏不再繼續討論。

這個小節就講到這裏,後面會繼續討論CTC和MD-LSTM.個人水平有限,錯誤與疏漏請批評指正.

 

3 LSTM的入門閱讀材料

1  Speech Recognition with Neural Networks. http://andrew.gibiansky.com/blog/machine-learning/speech-recognition-neural-networks/

2 Understanding LSTM network http://colah.github.io/posts/2015-08-Understanding-LSTMs/

3 The UnreasonableEffectiveness of Recurrent Neural Networks.http://karpathy.github.io/2015/05/21/rnn-effectiveness/

4統計學習方法第九章EM和第十章HMM

5 [Optional] Learningprecise timing with LSTM recurrent networksAppendix A. Peephole LSTM with Forget Gates inPseudo-code

6 [Optional]paper of CTC:Connectionist temporal classification: labelling unsegmented sequence data withrecurrent neural networks

7 From Recurrent Neural Networkto Long Short Term Memory Architecture

8 Supervised Sequence Labellingwith Recurrent Neural Networks

 

4參考文獻

[1]Greff, Klaus, et al."LSTM: A Search Space Odyssey." arXiv preprintarXiv:1503.04069 (2015).

[2]A. Graves and N. Jaitly.Towards end-to-end speech recognition with recurrent neural networks. In ICML,2014. 2,

[3]Messina R, Louradour J.Segmentation-free handwritten Chinese text recognition withLSTM-RNN[C]//Document Analysis and Recognition (ICDAR), 2015 13th InternationalConference on. IEEE, 2015: 171-175.

[4]Ul-Hasan, Adnan, and ThomasM. Breuel. "Can we build language-independent OCR using LSTMnetworks?." Proceedings of the 4th International Workshop onMultilingual OCR. ACM, 2013.

[5]Donahue J, Hendricks L A,Guadarrama S, et al. Long-term recurrent convolutional networks for visualrecognition and description[J]. arXiv preprint arXiv:1411.4389, 2014.

[6]Doetsch, Patrick, MichalKozielski, and Hermann Ney. "Fast and robust training of recurrent neuralnetworks for offline handwriting recognition."Frontiers in HandwritingRecognition (ICFHR), 2014 14th International Conference on. IEEE, 2014.

[7]Luong, Minh-Thang, et al."Addressing the rare word problem in neural machinetranslation." Proceedings of ACL. 2015.

[8]Understanding LSTM network http://colah.github.io/posts/2015-08-Understanding-LSTMs/

[9]Pascanu, Razvan, TomasMikolov, and Yoshua Bengio. "On the difficulty of training recurrentneural networks." arXiv preprint arXiv:1211.5063 (2012).

[10]Glorot, Xavier, and YoshuaBengio. "Understanding the difficulty of training deep feed forward neuralnetworks." International conference on artificial intelligence andstatistics. 2010.

[11]Geoffery Hinton, NeuralNetworks for Machine Learning.https://class.coursera.org/neuralnets-2012-001/lecture/95

[12]http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm

[13]]Graves A. Supervisedsequence labelling with recurrent neural networks[M]. Heidelberg: Springer,2012.

[14]Speech recognition neuralnetworks http://andrew.gibiansky.com/blog/machine-learning/speech-recognition-neural-networks/

[15]Gers, Felix A., and JürgenSchmidhuber. "Recurrent nets that time and count." Neural Networks,2000. IJCNN 2000, Proceedings of the IEEE-INNS-ENNS International JointConference on. Vol. 3. IEEE, 2000.

[16]He, Pan, et al. "Reading scene text in deep convolutional sequences."arXiv preprint arXiv:1506.04395 (2015).


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章