劉 丹,葉 茂
(電子科技大學 計算機科學與工程學院,成都 611731)
自20世紀80年代以來,人工神經網絡(Artificial Neural Network,ANN)已經成為人工智能領域的研究熱點.ANN是一種旨在模擬大腦神經系統(tǒng)對外界復雜信息的處理機制的數學模型,其在模式識別、智能機器人、自動控制等領域表現出了良好的智能特性.傳統(tǒng)的全連接神經網絡(Full Connected Neural Network,FCNN),也稱前饋神經網絡(Feed-forward Neural Network,FNN),如圖1(左)所示.它采用單向多層結構,同一層的神經元之間沒有相互連接,是彼此獨立的.換句話說,對于FNN,一個輸入對應一個輸出,不同的輸入之間是沒有聯(lián)系的.感知機在1957年首次被提出,作為最早的ANN,感知機是一種最簡單的網絡模型.作為深度FNN的經典網絡——卷積神經網絡(Convolutional Neural Network,CNN)[1]依靠其局部連接和共享權值的設計理念,在圖像識別、自然語言處理等領域被廣泛應用,尤其在手寫數字識別任務中取得了良好的識別效果[2,3].但是,FNN無法處理在時間或空間上有前后關聯(lián)的信息輸入問題.所以,傳統(tǒng)神經網絡的應用受到了限制.

圖1 (左)前饋神經網絡和(右)回復式神經網絡Fig.1 (left)FNN and(right)RNN
針對需要處理序列信息的學習任務,如文本翻譯、智能對話、股票行情預測等,它們的輸入是有時間順序的序列數據,回復式神經網絡(Recurrent Neural Network,RNN)作為一類用于處理和預測序列數據的神經網絡模型應運而生.RNN在文本生成、機器翻譯、語音識別、視頻標記等任務中被廣泛地應用研究,并且已經取得豐碩的研究成果[4-6].作為神經網絡的一個重要模型,RNN克服了傳統(tǒng)機器學習方法對輸入輸出數據的許多限制,無論從理論上還是應用層面上,深入分析研究回復式神經網絡(RNN)具有重要的現實意義.圖2是ANN的體系結構圖,它包括前饋神經網絡和反饋神經網絡兩大類型.

圖2 人工神經網絡分類Fig.2 Classification of the ANN
本文將首先闡述RNN的基本原理、計算過程和訓練方法,然后針對傳統(tǒng)RNN在實際應用中存在的缺陷,介紹幾種流行的優(yōu)化結構,包括模型結構特點、組件功能;接著描述RNN的常用應用領域、相關工作以及對RNN的未來研究發(fā)展方向展開探討;最后總結全文內容.
1982年,美國加州理工學院物理學家Hopfield提出Hopfield網絡模型用以解決組合優(yōu)化問題,該網絡擁有很強的計算能力并且具有聯(lián)想記憶功能,這是最早的RNN的雛形.之后Jordan和Elman對其進行改進和簡化,便有了最初的僅包含單個自連接節(jié)點的RNN模型.但是,由于梯度消失和梯度爆炸問題,訓練RNN非常困難,致使RNN的應用受到限制.直到1997年,Hochreiter和Schmidhuber[7]提出長短時記憶(Long Short-Term Memory,LSTM)網絡,該網絡使用門控單元以及記憶狀態(tài)大大緩解了早期RNN訓練問題.LSTM模型的提出改進了RNN結構,拓寬了RNN的應用范圍,為后續(xù)序列建模的發(fā)展奠定了基礎.
與傳統(tǒng)神經網絡相比,RNN相當于加入了人的先驗知識,即將數據信息按照時間順序輸入到對應模型.RNN最大的特點就是隱藏層神經元的狀態(tài)不僅依賴于當前時刻的輸入,也與當前系統(tǒng)前一時刻的隱藏狀態(tài)相關,如圖1(右)所示,RNN在隱藏層單元間添加了橫向連接,這種結構使得神經元歷史信息能夠傳遞到當前神經元中,適合處理時間序列數據,因此RNN可以保持數據之間的依賴關系.
RNN的前向傳播計算公式如公式(1)、公式(2)所示,其中x表示輸入層,h表示隱藏層,y表示輸出層,W和b分別表示權重參數和偏移項,σ為激活函數,t表示時間索引.
ht=σ(Wh[xt,ht-1]+bh)
(1)
yt=σ(Wyht+by)
(2)
由于RNN的循環(huán)連接方式,將公式(1)反復帶入公式(2)中,可以看到RNN可以向前查看任意時刻的輸入,因此,RNN具有記憶功能,尤其適用于注重信息時序性的任務.

(3)
對于RNN,因為要處理時序數據,所以它采用基于時間的反向傳播(Back-Propagation Through Time,BPTT)算法.BPTT算法的基本原理和BP算法相同[8].RNN每一時刻t都會產生一個損失值losst,因此網絡的總損失可以表示為L=∑tlosst.在RNN訓練過程中,梯度一方面會按照空間結構傳播(輸出層,隱藏層,輸入層),即yt→ht→xt,這種情況與BP算法一致;另一方面,梯度要沿著時間通道傳播,即ht→ht-1→…→h1,此時,基于公式(1)循環(huán)迭代地計算各層梯度,這也是BPTT算法名稱的由來.表1總結了BP算法和BPTT算法的特點和訓練過程.

表1 BP算法和BPTT算法比較Table 1 Comparison of BP and BPTT algorithms

RNN受限于短期記憶問題,根據其隱藏層單元狀態(tài)的計算方式,越晚的時間步輸入對后續(xù)影響越大,越早的輸入對后續(xù)影響越小.如果一個輸入序列足夠長,RNN可能會遺漏該序列的前期重要信息,這就是RNN存在的短期記憶問題.另外,在使用BPTT算法訓練RNN時,梯度會在反向傳播的過程中快速消失,也就是所謂的梯度消失問題.當前已經存在大量的研究工作用于解決RNN存在的這些問題[7,10-12],其中最具代表性的優(yōu)化結構算法是LSTM網絡和GRU網絡,它們都使用跳躍連接(SC)的技巧讓梯度跨過一些時間步,從而只保留重要的信息.
RNN隱藏層只有一個狀態(tài)h,不能處理長期依賴問題,LSTM網絡通過在隱藏層添加一個細胞狀態(tài)c來保存長期依賴關系,然后利用門控單元來控制外部信息向長期狀態(tài)c的流入和流出.如果將網絡看作一個黑匣子,圖3則簡單明了的說明了RNN與LSTM的根本區(qū)別,即LSTM添加了門控單元和存儲長期記憶的細胞狀態(tài)c.

圖3 RNN和LSTM的內部機制示意圖Fig.3 Internal mechanism diagram of the RNN and LSTM
LSTM設計三個門控開關來控制外部信息向長期狀態(tài)c的流入和流出.圖4展示了LSTM單元結構.其中,輸入門it控制當前網絡輸入xt有多少信息可以保存到記憶單元,遺忘門ft決定上一時刻的單元狀態(tài)ct-1有多少信息可以保留到當前狀態(tài)ct,而輸出門ot則用來控制單元狀態(tài)ct有多少信息可以輸出到LSTM的當前的輸出值ht.三個門的計算公式如下:

圖4 LSTM單元結構Fig.4 Structure of LSTM cell
it=σ(Wi[ht-1,xt]+bi)
(4)
ft=σ(Wf[ht-1,xt]+bf)
(5)
ot=σ(Wo[ht-1,xt]+bo)
(6)
其中[ht-1,xt]表示t-1時刻的隱藏層狀態(tài)向量ht-1和t時刻的輸入狀態(tài)向量xt的拼接.LSTM隱藏層的最終輸出ht的計算方式為:
ct=ft⊙ct-1+it⊙tanh(Wc·[ht-1,xt]+bc)
(7)
ht=ot⊙tanh(ct)
(8)
其中⊙代表對應元素相乘.Gers等人[13]在LSTM的基礎上提出窺視孔連接(Peephole Connection,PC),其主要思想是增加三個門控單元和記憶單元的連接,門控單元也可以觀察到記憶單元的內容.但是,研究者們發(fā)現[14]在語言模型任務中,LSTM和帶PC的LSTM網絡性能基本相當,但是后者需要更多的網絡參數,所以現在大多數研究工作都不使用帶PC的LSTM網絡結構.另外,實驗證明輸入門、輸出門和輸入激活函數對LSTM網絡結構的性能影響很大.
綜上所述,LSTM網絡通過引入門控單元(輸入門、輸出門、遺忘門)和長期記憶細胞狀態(tài),有效克服了RNN中存在的梯度消失問題,尤其在長距離依賴的序列學習任務中表現優(yōu)異.
GRU是RNN的另一種流行變體,它與LSTM單元非常相似,它將LSTM中的遺忘門和輸入門合成了一個門,并且只使用隱藏狀態(tài)來傳輸信息.由于同等規(guī)模下,GRU網絡比LSTM網絡的訓練參數少,所有能夠有效避免訓練過程中的過擬合問題.
在GRU中,更新門zt代替了LSTM中的遺忘門和輸入門,它決定了要丟棄哪些信息和添加哪些信息;另一個門是重置門rt,用于決定丟棄之前信息的程度.圖5展示了GRU的內部結構,更新門zt和重置門rt的計算過程如下所示:
zt=σ(Wz[ht-1,xt]+bz)
(9)
rt=σ(Wr[ht-1,xt]+br)
(10)

圖5 GRU單元結構Fig.5 Structure of GRU cell
在更新門zt,重置門rt的作用下,當前時刻隱藏層的候選輸入狀態(tài)h′t,當前時刻的隱藏層輸出狀態(tài)ht可由公式(11)、公式(12)計算所得.
h′t=tanh(Wh′[rt⊙ht-1,xt]+bh′)
(11)
ht=(1-zt)⊙ht-1+zt⊙h′t
(12)
綜上所述,GRU網絡可以看作是LSTM的變體,由于GRU網絡中的變量參數少,因此可以用更少的時間來訓練它.在手寫句子識別、復調音樂識別等任務中[14],GRU和LSTM單元所表現出來的網絡性能基本相同,但是在訓練大數據集的情況下,LSTM表達性更優(yōu).
在經典的RNN中,神經元狀態(tài)是從前向后單向傳播的,然而,有些任務當前時刻的輸出不僅與之前狀態(tài)有關,也與后續(xù)狀態(tài)相關.比如,要預測一個句子中缺失的詞語,我們必須考慮上下文才能做出正確預測,這時就需要雙向的RNN(Bi-directional RNN,BiRNN)來綜合前后文信息.
(13)
(14)
(15)
圖6表示BiRNN信息流向示意圖.通俗地講,BiRNN的隱藏層由兩層神經元組成,一層處理按時間正向排序的輸入序列,另一層處理反向排序的輸入序列,而輸出則由這兩者綜合計算得來.將傳統(tǒng)的RNN單元替換為LSTM單元或者GRU結構,則BiRNN就變成了雙向LSTM(Bi-directional LSTM,BiLSTM)網絡或者雙向GRU(Bi-directional GRU,BiGRU)網絡.

圖6 雙向RNN示意圖Fig.6 BiRNN schematic
綜合來說,LSTM和GRU都能通過門控單元將時間序列信息中的重要特征保留,保證在長期的反向傳播中梯度不會消失.在實際應用中,需要根據具體任務選擇具體模型結構,不能籠統(tǒng)地說哪一種網絡結構更優(yōu).
機器翻譯(Machine Translation,MT)是指利用計算機實現將源語言轉換成目標語言的過程,是自然語言處理領域中的一個重要應用方向,具有很高的科學研究價值.傳統(tǒng)的機器翻譯方法需要依靠大量的人力和時間對眾多平行語料進行分析,最終構造翻譯系統(tǒng).基于RNN的機器翻譯模型,往往通過一個RNN將源語言輸入序列(x1,x2,…,xT)轉換成固定長度的特征向量v,然后通過另一個RNN將該固定向量轉換成目標語言輸出序列(y1,y2,…,yT′).根據條件概率公式,可以得到:
(16)
編碼-解碼器(Encoder-Decoder)模型[15,16]就是由兩個RNN構造而成的機器翻譯模型,也可以叫做Seq2Seq模型.該模型最重要的地方在于輸入序列和輸出序列的長度是可變的,可以用于翻譯、聊天機器人、句法分析、文本摘要等任務.
語音識別(Speech Recognition,SR)就是將聲音波形轉換成計算機可讀的語言,進而通過解碼技術轉變?yōu)槿祟惸軌蚶斫獾奈谋镜倪^程.RNN能夠對語音的長時相關性進行建模,從而提高識別準確率[17].2015年,百度公開發(fā)布的采用LSTM+CTC(Connectionist Temporal Classification,CTC)[18]模型大幅度降低了語音識別的錯誤率,采用這種技術在安靜環(huán)境下的標準普通話的識別率接近97%.Arisoy等人[19]提出使用BiRNN來解決語音識別語言建模任務,并證明了BiRNN在處理語音識別任務中優(yōu)于單向的RNN結構.Tian等人[20]建議利用層級訓練和指數移動平均方法來構造一個深層LSTM網絡,它在語音識別任務中取得優(yōu)異成果.
行為識別(Action Recognition,AR)是計算機視覺領域的一個重要研究課題,它分為兩類任務:一類是給定一段視頻,需要定位其中每個行為的起始時間,并為每個行為分配類別標簽;另一類是給定一段已經被預先剪切好地數據,只需要為該數據分配一個行為類別標簽即可.行為視頻中的幀與幀之間的時序關系在識別行為的過程中至關重要,而RNN能夠學習到長期的時間依賴關系,已經被廣泛地應用在該任務地學習中.Donahue等人[21]利用LSTM網絡學習視頻中的時間動力學和長期依賴關系.Liu等人[22]使用RNN來建模行為序列,利用序列預測學習的方法來解決行為識別問題.
情感分析(Sentiment Analysis,SA)就是判斷一段文本所表達的情緒狀態(tài),可以是正面、負面,也可以是開心、悲傷等.該任務屬于典型的文本分類問題,即將一段變長的文本序列映射為文本的類別.為了學習到一個好的情感分析系統(tǒng),算法必須考慮文本中單詞的順序.Can等人[23]提出利用RNN來訓練一個情感分析模型.另外,一些研究者[24]利用多模態(tài)數據(文本、視頻、音頻等)訓練多種RNN變體結構來解決情感分析任務.
RNN作為深度學習算法中極為重要的一種,已經在眾多領域大放異彩,除了上述介紹的幾種應用場景外,RNN在對話(問答)系統(tǒng)、圖像描述、推薦系統(tǒng)、步態(tài)識別、目標檢測等領域也取得了優(yōu)異成果[25-29].換句話說,一切與時序相關的計算機任務都可以嘗試使用RNN來處理學習.
從RNN到LSTM、GRU單元結構,傳統(tǒng)的循環(huán)網絡通過增加一些門控單元在一定程度上解決了RNN訓練梯度消失問題和短期記憶問題.但是,這些復雜的單元內部結構以及循環(huán)網絡本身的時序輸入性,嚴重影響了網絡的訓練速度,如何有效提高循環(huán)網絡訓練效率、簡化單元內部結構,依然是企業(yè)和學術研究者要解決的問題.
Bradbury等人[30]提出類回復式神經網絡(Quasi-Recurrent Neural Network,QRNN),它交替使用跨時間步并行處理的卷積層來進行序列建模,實驗表明QRNN在保持算法性能的基礎上有效提高了網絡訓練和測試的速度.同理,研究者們設計只與當前時刻輸入有關的門控單元來簡化LSTM單元內部結構,提出簡單回復式單元網絡(Simple Recurrent Unit,SRU),SRU的門控單元丟棄時間依賴關系,但記憶單元仍保持時間依賴關系,這種設計能夠在網絡性能和訓練速度之間獲得權衡[31].Bouaziz等人[32]在原始LSTM基礎上,設計并行的LSTM來執(zhí)行多個并行同步輸入序列,預測相應的輸出.上海交通大學的研究者[33]提出切片回復式神經網絡(Sliced Recurrent Neural Network,SRNN),它可以通過將序列分割成多個子序列來實現計算并行化,在不改變循環(huán)單元的情況下,SRNN的訓練速度是標準RNN的136倍.
人腦神經機制的一個重要特征就是選擇性,它表示人類過濾掉無用信息的能力,這就是所謂的注意力機制[34,35].RNN通過添加跨越時間點的自連接對時序數據建模,但是對于時序信息來說,不同時刻的輸入的重要性對于學習任務來說是不一樣的.注意力機制已經被廣泛應用在自然語言處理、圖像識別等各個領域,顯著提升了模型表現能力.
He等人[36]提出一種新型的基于注意力機制的混合神經網絡模型,該模型在BiLSTM網絡的基礎上添加單詞級的注意力模塊來提取文本語義信息.Huang等人[37]將注意力機制應用在情感分析任務中,提出利用多模態(tài)注意力融合模塊探索圖像和文本之間的內部關聯(lián)性,甚至在弱標簽的數據集上也驗證了算法的有效性.除此之外,Sudhakaran等人[38]利用長短時注意力機制(Long Short-Term Attention,LSTA)學習行為視頻的時間和空間特征.Xu等人[39]提出基于注意力機制的Encoder-Decoder模型用于圖像描述任務,實驗證明注意力機制為模型生成過程提供了更多可解釋性,如圖7所示.

圖7 注意力的可視化Fig.7 Visualization of attentional map
普通RNN主要著重對時序信息進行建模,然而,現實世界中的許多任務不僅僅與時序相關,往往集合多種網絡結構優(yōu)勢才能更好的提升算法性能.比如,FCNN可以將輸入數據映射到更離散的空間,經常在各種網絡的最上層使用.CNN擅長學習局部信息,能夠最大限度地過濾輸入數據.隨著深度學習熱度的延續(xù),更靈活的組合方式、更多的網絡結構將會被開發(fā)出來.
Donahue等人[40]首次將CNN與LSTM進行結合,提出一種新型回復式卷積結構,該模型在視頻識別與視頻描述任務上都取得了很好的效果.Sainath等人[41]同時使用卷積結構、循環(huán)結構與全連接結構(即CNN、RNN、FCNN)構建神經網絡模型,該模型在論文中的語音識別任務上比LSTM性能提升4-6%,充分地利用了幾種網絡結構的互補性.Minaee等人[42]結合CNN和LSTM網絡來解決情感分析任務,CNN網絡學習文本的局部結構特征,而LSTM網絡學習時序關系.Lee等人[43]提出條件隨機場(Conditional Random Field,CRF)和RNN的結合使用,用以解決命名實體識別問題.
目前,回復式神經網絡已經成為深度學習領域中一類非常重要的網絡模型,本文對其進行展開討論.首先介紹了RNN的發(fā)展歷程,并闡述其基本原理、網絡計算方式和網絡訓練方法.其次,面對傳統(tǒng)RNN在實際應用中存在的短期記憶和梯度消失問題,詳細分析了RNN中被廣泛使用的變體結構:LSTM、GRU和其對應的雙向變體結構.接著總結了RNN的熱門研究領域并分析相關研究工作.最后,結合近幾年工業(yè)界和學術圈對RNN的研究進展,對RNN的發(fā)展趨勢進行總結介紹,這也是我們未來研究的方向.