循環神經網路綜述-語音識別與自然語言處理的利器(下篇)

循環神經網路綜述-語音識別與自然語言處理的利器(下篇)

接 循環神經網路綜述-語音識別與自然語言處理的利器(上篇)

機器視覺

對於機器視覺中的某些問題,循環神經網路也取得了很好的效果。在這些問題中,數據都被抽象成一個時間序列,如物體運動的動作,狀態等。

字元識別

如果我們知道每個字元的筆畫信息,即整個字的書寫過程,則可以將手寫字元識別看成是一個軌跡分類問題。每個手寫字元是一個序列數據,每個時刻的坐標連接起來,在平面上構成一個字元的圖像。手寫字元識別屬於序列標記問題中的序列分類問題,即給定一個字元的坐標點序列,預測這個字元的類別。在這裡,循環神經網路的輸入為坐標點序列,輸出值為類別,為了達到這個目的,我們可以將最後一個時刻的循環層輸出值映射為類別概率,這可以通過softmax層實現。

另外,也可以直接以圖像作為輸入,在這裡,將圖像看作是一個序列,序列中的每一個向量是圖像中的一個行的像素。依次將每一行輸入循環神經網路,最後時刻的隱含層狀態輸出作為提取的字元特徵,送入softmax層進行分類。

目標跟蹤

運動跟蹤可以抽象為已知目標在之前時刻的坐標,預測出它在當前時刻的坐標,這同樣是一個序列預測問題。

文獻[42]提出了一種用循環神經網路進行目標跟蹤的方法,稱為RTT。RTT主要目標是解決目標遮擋問題。循環神經網路的作用是得到置信度圖,即每個點處是目標的概率。下面介紹這種方法的處理流程。

在對每一幀進行跟蹤時,給定目標在上一幀中的矩形框,以目標的中心為中心,以目標寬高的2.5倍為寬高,即將目標矩形放大2.5倍,得到一個矩形的候選區域。然後,將這個候選區域劃分成網格。然後對每個矩形框提取特徵,可以使用HOG特徵,也可以使用更複雜的卷積網路提取的特徵。在這裡,劃分網格而不是對整個候選區域計算特徵的原因是這樣做能夠更好的處理遮擋,以及目標外觀的變化。最後我們得到候選區域的特徵。

然後,以這個特徵作為輸入,用多維RNN對特徵進行處理,得到置信度圖。最後根據置信度圖完成對目標位置的預測。

和單個目標跟蹤不同,多目標跟蹤需要解決數據關聯問題,即上一幀的每個目標和下一幀的哪個目標對應,還要解決新目標出現,老目標消失問題。多目標的跟蹤的一般流程為每一時刻進行目標檢測,然後進行數據關聯,為已有目標找到當前時刻的新位置,在這裡,目標可能會消失,也可能會有新目標出現,另外目標檢測結果可能會存在虛警和漏檢測。聯合概率濾波,多假設跟蹤,線性規劃,全局數據關聯,MCMC馬爾可夫鏈蒙特卡洛演算法先後被用於解決數據關聯問題來完成多個目標的跟蹤。

首先我們定義多目標跟蹤的中的基本概念,目標是我們跟蹤的對象,每個目標有自己的狀態,如大小、位置、速度。觀測是指目標檢測演算法在當前幀檢測出的目標,同樣的,它也有大小、位置、速度等狀態值。在這裡,我們要建立目標與觀測之間的對應關係。下圖是數據關聯的示意圖:

在上圖中,第一列圓形為跟蹤的目標,即之前已經存在的目標;第二列圓為觀測值,即當前幀檢測出來的目標。在這裡,第1個目標與第2個觀察值匹配,第3個目標與第1個觀測值匹配,第4個目標與第3個觀測值匹配。第2個和第5個目標沒有觀測值與之匹配,這意味著它們在當前幀可能消失了,或者是當前幀被漏檢,沒有檢測到這兩個目標。類似的,第4個觀測值沒有目標與之匹配,這意味著它是新目標,或者虛警。

文獻[43]提出了一種用循環神經網路在線跟蹤多個目標的演算法。這種方法實現了完全端到端的訓練。在這裡,用LSTM循環神經網路同時解決數據關聯、新目標出現、老目標消失問題。

首先定義狀態向量 X_{t} ,這是一個NxD維向量,表示t時刻所有目標的狀態值,其中,D為每個目標的狀態個數,在這裡值為4,分別為目標的位置和寬高。定義N為某一幀中能夠同時跟蹤的最大目標個數。 X_{t}^{i} 為第i個目標的狀態。

類似的定義觀測向量 Z_{t} ,這是一個MxD維向量,表示t時刻所有觀測值。其中M為每一幀中最大檢測目標個數。需要注意的是,我們對模型能夠處理的最大目標個數並沒有限制。

接下來定義分配概率矩陣A,這是一個Nx(M+1)的矩陣,元素取值0和1之間的實數。矩陣的每一行為一個目標的分配概率向量,即元素 A_{i j} 表示將第i個目標分配給第j個觀測的概率。分配概率矩陣滿足約束條件:

在這裡矩陣的列數不是M而是M+1,這是因為一個目標可能不和任何一個觀測向匹配。

最後定義指示向量 varepsilon ,這是一個N維向量,每個元素表示一個目標存在的概率值。

跟蹤問題被分成兩個部分來解決:狀態預測與更新,以及跟蹤管理;數據關聯。前一部分負責單個目標的狀態跟蹤;後一部分解決目標之間的對應關係。

對於第一個問題,用一個時序循環神經網路來學習N個目標的運動模型,以及目標的指示變數,指示變數用於處理目標的出現與消失。在時刻t,循環神經網路輸出四種值:

1.包括所有目標的狀態預測值 X_{t+1}^{*} ,前面已經介紹過。

2.所有目標狀態的更新值 X_{t+1}

3.指示向量 varepsilon_{t+1} ,其每個元素的值位於(0,1)之間,表示目標是一個真實軌跡的概率。

4. varepsilon_{t+1}^{*} ,這是與 varepsilon_{t} 的差值。

神經網路的輸入為前一個時刻的狀態值 X_{t} ,前一個時刻的指示向量值 varepsilon_{t} ,當前時刻的觀測值 Z_{t+1} ,以及當前時刻的數據關聯矩陣 A_{t+1} ,數據關聯矩陣的計算方法將在後面介紹。

這個功能模塊有三個目標:

1.預測。為指定數量的目標學習一個複雜的運動模型,這個模型包含了每個目標的運動參數,包括速度,加速度信息等。

2.更新。根據當前的觀測數據,對預測值進行校正,修正物體的狀態值,包括運動狀態值。

3.目標的出現與消失。學習到如何根據目標的狀態值、當前時刻的觀測值,以及數據關聯信息來處理新目標的出現,已有目標的消失問題。

預測值 X_{t+1}^{*} 只取決於狀態值 X_{t} 和循環神經網路隱含層的狀態值 h_{t} 。一旦數據關聯矩陣 A_{t+1} 已經確定,即已經知道了目標和觀測之間的對應關係,我們就可以根據觀測值來更新狀態值,完成校正。接下來,將觀測值和預測的狀態值拼接在一起:

然後乘以矩陣 A_{t+1} 。同時 varepsilon_{t+1} 也被計算出來。在確定了網路的輸出和輸出之後,我們需要定義訓練時的損失函數。損失函數定義為:

其中 X^{*},X,varepsilon 為預測值, 	ilde{X},	ilde{varepsilon} 為真實值。上面損失函數的第一部分為預測誤差,第二部分為更新誤差,第三和第四部分為目標消失、出現以及回歸值誤差。這裡只是定義了某一個時刻的誤差值,訓練時需要將每一幀的誤差值累加起來,然後計算平均值。第一部分誤差的意義是在沒有觀察值的情況下,預測值要和目標的真實運動軌跡儘可能接近。第二部分的意義是得到觀測值之後,要將預測值校正到和觀測值儘可能接近。

第三部分損失反應了目標的出現與消失。如果 varepsilon =1 ,表示一個目標存在,如果 varepsilon =0

,表示這個目標不存在。為此我們定義交叉熵損失函數:

最後一個問題是數據關聯。數據關聯的目標是為每個目標分配一個唯一的觀測值,這是一個組合優化問題,直接求解的話是NP完全問題。在這裡,採用LSTM網路通過學習來解決此問題。在這裡,網路的輸入是成對距離矩陣C,這是一個NxM的矩陣,矩陣元素定義為:

即第i個目標的預測狀態與第j個觀察值之間的歐氏距離。當然,我們也可以使用更多的信息,如目標的外觀或其他相似度。網路的輸出值為概率向量 A^{i} ,表示第i個目標與所有觀測值之間的分配概率,這可以通過softmax層輸出。這裡的A^{i}是數據關聯矩陣的第i行。最後,我們定義網路訓練時的損失函數為:

其中 alpha 是一個標量,是目標i的真實分配值,即將目標i分配給觀測

視頻分析

視頻動作識別是機器視覺領域的一個重要問題,它的目標是對運動物體的動作進行分類,如人的站立,坐下等動作。動作識別在諸多領域有實際的應用,如視頻監控、人機交互、遊戲控制等。這個問題可以抽象成一個時間序列分類問題。以人的動作識別為例,它的輸入是目標關鍵點坐標序列,如人體一些關鍵點的2D或3D坐標,輸出值為動作類別,即序列的標籤值。

文獻[45]提出了一種整合了卷積神經網路和循環神經網路的框架進行人體動作分類的方法。整個系統包括一個3D卷積神經網路和一個循環神經網路。其中,3D卷積神經網路的輸入為多張圖像,用於提取一段視頻的時空特徵。然後將提取的特徵序列送入循環神經網路中進行分類。

在這裡,卷積神經網路的輸入為3D圖像。整個視頻被分成一系列的固定長度片段,每個片段包括相同數量的幀,被處理成固定大小的輸入圖像。第三個卷積層後面是兩個全連接層,最後一個全連接層有6個神經元,即卷積網路的輸出向量為6維。

接下來將卷積得到的固定長度的特徵向量序列送入LSTM循環神經網路。用循環神經網路的輸出完成對視頻的分類。

文獻[46]提出了一種用雙向LSTM循環神經網路進行3D手勢分類的方法。在這裡,每個時刻用加速度計和陀螺儀測量出手在3D空間的加速度和角速度,形成一個6D的向量,作為循環神經網路的輸入,這是一個序列數據。循環神經網路採用雙向LSTM網路。循環神經網路的輸出向量維數和要分類的手勢類型數相同,最後通過softmax層產生概率輸出用於分類。這些都是標準的做法,不再詳細講述。

文獻[47]提出了一種用分層循環神經網路進行人體動作識別的方法,在這裡,利用了人體骨架的關鍵點信息,對骨架關鍵點的運動軌跡進行分析。

整個人體被分成5個部分進行建模,分別為四肢和軀幹。整個處理流程為:

1.將5個部分分別送入5個子網路中進行處理

2.將四肢和軀幹在第一步中的處理結果分別進行融合,送入4個子網路中進行處理

3.將兩隻胳膊,兩條腿,軀幹在第二步中的處理結果進行融合,送入2個子網路中進行處理

4.將上一步中的兩個結果融合,送入第4層子網路中進行處理

5.將上一步的結果送入全連接層中進行處理

6.最後用softmax層進行計算,得到分類概率

在這裡,所有循環層都使用雙向循環結構,前面3個循環層都採用tanh激活函數,最後一個循環層採用LSTM單元。循環層和全連接層的計算方式和前面介紹的標準結構相同,在這裡不詳細講述。

全連接層在各個時刻的輸出向量被累計起來,然後用softmax層進行概率輸出。整個網路的輸入為人體各個部位關鍵點的3D坐標,送入網路之前,對坐標進行了歸一化處理;要識別的動作類型根據實際應用而定。

文獻[48]提出了一種整合卷積神經網路和循環神經網路的視頻識別方法。在這裡,用卷積網路提取單幀圖像的特徵,多個幀的特徵依次被送入循環神經網路中進行處理。這種結構不僅在空間上具有深度,在時間上也具有深度,稱為Long-term Recurrent Convolutional Networks,簡稱LRCNs。

整個系統的輸入是一系列的視頻幀,對於每一幀,首先經過卷積網路的作用,產生固定長度的輸出向量。經過這一步,我們得到一個固定長度的序列數據:

這個序列數據被送入循環神經網路中進行處理,得到輸出值。最後,經過softmax層,得到概率輸出。這裡的卷積網路和循環神經網路的變換和前面介紹的標準做法一致,不再重複介紹。

假設循環神經網路的學習參數為V和W,訓練時的損失函數定義為:

這一框架可以用於以下三種情況:

1.序列輸入,固定長度輸出。即實現映射 (X_{1},...,X_{T})
ightarrow Y ,典型的是視頻動作識別。在這裡輸入是多個視頻幀,輸出是動作類別。

2.固定長度輸入,序列輸出。即實現映射 X 
ightarrow (Y_{1},...,Y_{T}) ,典型的是生成圖像的描述,如給圖像生成文字說明。

3.序列輸入,序列輸出。即實現映射 (X_{1},...,X_{T})
ightarrow (Y_{1},...,Y_{T}) ,典型的是視頻描述,如為一段視頻生成一段文字解說。

參考文獻

[1] Mikael Boden. A guide to recurrent neural networks and backpropagation. 2001.

[2] Ronald J Williams, David Zipser. A learning algorithm for continually running fully recurrent neural networks. 1989, Neural Computation.

[3] Fernando J Pineda. Generalization of back-propagation to recurrent neural networks. 1987, Physical Review Letters.

[4] Paul J Werbos. Backpropagation through time: what it does and how to do it. 1990, Proceedings of the IEEE.

[5] Xavier Glorot, Yoshua Bengio. On the difficulty of training recurrent neural networks. 2013, international conference on machine learning.

[6] Y. Bengio, P. Simard, P. Frasconi. Learning long-term dependencies with gradient descent is difficult. IEEE Transactions on Neural Networks, 5(2):157-166, 1994.

[7] S. Hochreiter, J. Schmidhuber. Long short-term memory. Neural computation, 9(8): 1735-1780, 1997.

[8] Kyunghyun Cho, Bart Van Merrienboer, Caglar Gulcehre, Dzmitry Bahdanau , Fethi Bougares, Holge. Learning Phrase Representations using RNN Encoder--Decoder for Statistical Machine Translation. 2014, empirical methods in natural language processing.

[9] M. Schuster and K. K. Paliwal. Bidirectional recurrent neural networks. IEEE Transactions on Signal Processing, 45(11):2673-2681, 1997.

[10] Junyoung Chung, Caglar Gulcehre, Kyunghyun Cho, Yoshua Bengio. Gated Feedback Recurrent Neural Networks. 2015, international conference on machine learning.

[11] Razvan Pascanu, Caglar Gulcehre, Kyunghyun Cho, Yoshua Bengio. How to Construct Deep Recurrent Neural Networks. 2014, international conference on learning representations.

[12] Alex Graves. Supervised Sequence Labelling with Recurrent Neural Networks.

[13] Alex Graves, Santiago Fernandez, Faustino J Gomez, Jurgen Schmidhuber. Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks.2006, international conference on machine learning.

[14] Alex Graves, Navdeep Jaitly. Towards End-To-End Speech Recognition with Recurrent Neural Networks. 2014, international conference on machine learning.

[15] Ilya Sutskever, Oriol Vinyals, Quoc V Le. Sequence to Sequence Learning with Neural Networks.2014, neural information processing systems.

[16] Oriol Vinyals, Suman Ravuri, and Daniel Povey. Revisiting Recurrent Neural Networks for Robust ASR. ICASSP, 2012.

[17] A. Graves, A.Mohamed, G. Hinton, Speech Recognition with Deep Recurrent Neural Networks, ICASSP 2013.

[18] Alex Graves, Santiago Fernandez, Juergen Schmidhuber. Multi-dimensional recurrent neural networks. 2007, international conference on artificial neural networks.

[19] Dario Amodei, Sundaram Ananthanarayanan, Rishita Anubhai, Jingliang Bai, Eric Battenberg. Deep speech 2: end-to-end speech recognition in English and mandarin. 2016, international conference on machine learning.

[20] Hasim Sak, Andrew W Senior, Kanishka Rao, Francoise Beaufays. Fast and Accurate Recurrent Neural Network Acoustic Models for Speech Recognition. 2015, conference of the international speech communication association

[21] Miao, Yajie, Mohammad Gowayyed, and Florian Metze. EESEN: End-to-end speech recognition using deep RNN models and WFST-based decoding. 2015 IEEE Workshop on Automatic Speech Recognition and Understanding (ASRU). IEEE, 2015.

[22] Bahdanau, Dzmitry, et al. End-to-end attention-based large vocabulary speech recognition. 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2016.

[23] Chan, William, et al. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2016.

[24] H. Sak, Hasim, Senior, Andrew, and Beaufays, Francoise. Long short-term memory recurrent neural network architectures for large scale acoustic modeling. In Inter speech, 2014.

[25] Sainath, Tara, Vinyals, Oriol, Senior, Andrew, and Sak, Hasim. Convolutional, long short-term memory, fully connected deep neural networks. In ICASSP, 2015.

[26] Chorowski, Jan, Bahdanau, Dzmitry, Cho, Kyunghyun, and Bengio, Yoshua. End-to-End continuous speech recognition using attention-based recurrent nn: First results. abs/1412.1602, 2015. arxiv.org/1412.1602

[27] Hannun, Awni, Case, Carl, Casper, Jared, Catanzaro, Bryan, Diamos, Greg, Elsen, Erich, Prenger, Ryan, Satheesh, Sanjeev, Sengupta, Shubho, Coates, Adam, and Ng, Andrew Y. Deep speech: Scaling up end-to-end speech recognition. 1412.5567, 2014a. arxiv.org/abs/1412.5567.

[28] A.Graves. Sequence transduction with recurrent neural networks. ICML Representation Learning Workshop, 2012.

[29] Bahdanau, Dzmitry, Chorowski, Jan, Serdyuk, Dmitriy, Brakel, Philemon, and Bengio, Yoshua. End-to-end attention-based large vocabulary speech recognition. abs/1508.04395, 2015. arxiv.org/abs.1508.0439.

[30] Tomas Mikolov, Martin Karafiat, Lukas Burget, Jan Cernocky, Sanjeev Khudanpur. Recurrent neural network based language model. 2010, conference of the international speech communication association.

[31] Guillaume Lample, Miguel Ballesteros, Sandeep Subramanian, Kazuya Kawakami, Chris Dyer. Neural architectures for named entity recognition. 2016, north american chapter of the association for computational linguistics.

[32] Peilu Wang, Yao Qian, Frank K Soong, Lei He, Hai Zhao. Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network. 2015, Computation and Language.

[33] Siwei Lai, Liheng Xu, Kang Liu, Jun Zhao. Recurrent convolutional neural networks for text classification. 2015, national conference on artificial intelligence.

[34] Zichao Yang, Diyi Yang, Chris Dyer, Xiaodong He, Alexander J Smola, Eduard H Hovy. Hierarchical Attention Networks for Document Classification. 2016, north american chapter of the association for computational linguistics.

[35] Konstantin Lopyrev. Generating News Headlines with Recurrent Neural Networks. 2015, arXiv: Computation and Language.

[36] Kyunghyun Cho,Bart Van Merrienboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares. Learning Phrase Representations using RNN Encoder--Decoder for Statistical Machine Translation. 2014, empirical methods in natural language processing.

[37] Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. Neural Machine Translation by Jointly Learning to Align and Translate. 2015, international conference on learning representations.

[38] Yonghui Wu, et al. Google』s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. Technical Report, 2016.

[39] Graves, Alex. Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850 (2013).

[40] Shujie Liu, Nan Yang, Mu Li, Ming Zhou. A Recursive Recurrent Neural Network for Statistical Machine Translation. 2014, meeting of the association for computational linguistics.

[41] Junyoung Chung, Caglar Gulcehre, Kyunghyun Cho, Yoshua Bengio. Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling. 2014, arXiv: Neural and Evolutionary Computing.

[42] Zhen Cui, Shengtao Xiao, Jiashi Feng, Shuicheng Yan. Recurrently Target-Attending Tracking. 2016, computer vision and pattern recognition.

[43] Anton Milan, Seyed Hamid Rezatofighi, Anthony R Dick, Ian D Reid, Konrad Schindler. Online Multi-target Tracking using Recurrent Neural Networks. 2016, national conference on artificial intelligence.

[44] Peter Ondruska, Ingmar Posner. Deep tracking: seeing beyond seeing using recurrent neural networks. 2016, national conference on artificial intelligence.

[45] M. Baccouche, F. Mamalet, C. Wolf, C. Garcia, and A. Baskurt. Sequential deep learning for human action recognition. In Human Behavior Understanding, pages 29-39. Springer, 2011.

[46] G. Lefebvre, S.Berlemont, F.Mamalet, and C.Garcia. Blstm-rnn based 3d gesture classification. In Artificial Neural Networks and Machine Learning, pages 381-388. Springer, 2013.

[47] Y.Du, W.Wang and L.Wang. Hierarchical recurrent neural network for skeleton based action recognition. CVPR 2015.

[48] J.Donahue, L.A.Hendricks, S.Guadarrama, M.Rohrbach, S.Venugopalan, K.Saenko, and T.Darrell. Long-term recurrent convolutional networks for visual recognition and description. arXiv preprint arXiv:1411.4389, 2014.

[49] A.Grushin, D.D.Monner, J.A.Reggia, and A.Mishra. Robust human action recognition via long short-term memory. In International Joint Conference on Neural Networks, pages 1-8, IEEE, 2013.

[50] Antoine Miech, Ivan Laptev, Josef Sivic. Learnable pooling with Context Gating for video classification. 2017, Computer Vision and Pattern Recognition.

推薦閱讀

[1] 機器學習-波瀾壯闊40年 SIGAI 2018.4.13.

[2] 學好機器學習需要哪些數學知識?SIGAI 2018.4.17.

[3] 人臉識別演算法演化史 SIGAI 2018.4.20.

[4] 基於深度學習的目標檢測演算法綜述 SIGAI 2018.4.24.

[5] 卷積神經網路為什麼能夠稱霸計算機視覺領域? SIGAI 2018.4.26.

[6] 用一張圖理解SVM的脈絡 SIGAI 2018.4.28.

[7] 人臉檢測演算法綜述 SIGAI 2018.5.3.

[8] 理解神經網路的激活函數 SIGAI 2018.5.5.

[9] 深度卷積神經網路演化歷史及結構改進脈絡-40頁長文全面解讀 SIGAI 2018.5.8.

[10] 理解梯度下降法 SIGAI 2018.5.11

原創聲明

本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的

更多乾貨請關注V X公眾號:SIGAI


推薦閱讀:

台大林軒田機器學習課第二十講筆記:軟間隔支持向量機
學Python,這10道題你一定得會
線性支持向量機(soft-margin SVM)
優秀的機器學習模型,可以用一輩子
Relation Classification名詞解釋(持續更新,歡迎補充)

TAG:深度學習DeepLearning | 語音識別 | 機器學習 |