王雨嫣,廖柏林,彭 晨,李 軍,印煜民
(1.吉首大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,湖南 吉首 416000;2. 吉首大學(xué)信息科學(xué)與工程學(xué)院,湖南 吉首 416000)
近些年,深度學(xué)習(xí)技術(shù)發(fā)展迅速,被廣泛應(yīng)用于數(shù)據(jù)信息提取中.神經(jīng)網(wǎng)絡(luò)分類有很多種,如深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNN)、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)、遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)等[1].通常CNN和DNN等深度學(xué)習(xí)無法處理時(shí)間序列數(shù)據(jù),因?yàn)樗鼈兌际菃蝹€(gè)輸入并與相應(yīng)輸出對(duì)應(yīng),即上一時(shí)刻的輸入信息無法對(duì)當(dāng)前輸入產(chǎn)生影響.而在包含連續(xù)數(shù)據(jù)的研究領(lǐng)域,如文本、音頻和視頻等都要求模型序列輸入學(xué)習(xí),因此在這種需要處理序列數(shù)據(jù)的情況下,遞歸神經(jīng)網(wǎng)絡(luò)便應(yīng)運(yùn)而生了[2].RNN體系結(jié)構(gòu)的典型特征是循環(huán)連接,它使得RNN能夠根據(jù)歷史輸入和當(dāng)前輸入的數(shù)據(jù)更新當(dāng)前狀態(tài),即所有輸入會(huì)對(duì)未來輸出產(chǎn)生影響.如完全RNN[3,5]和選擇性RNN[6],在一些問題上都取得了令人難以置信的成功.不幸的是,當(dāng)相關(guān)輸入數(shù)據(jù)之間的差距較大時(shí),完全RNN和選擇性RNN無法連接相關(guān)信息.為了處理“長期依賴性”,Hochreiter等[7]提出了長短期記憶(Long Short-Term Memory, LSTM)來解決這一問題.之后,LSTM被應(yīng)用于各種場景,包括語音識(shí)別、聲學(xué)建模和軌跡預(yù)測等.筆者首先簡述了RNN以及LSTM及其幾種變體的基本工作原理和特點(diǎn),然后介紹了RNN和LSTM在自然語言處理、計(jì)算機(jī)視覺及其他研究領(lǐng)域中的應(yīng)用,最后對(duì)RNN未來的發(fā)展方向進(jìn)行了分析總結(jié).
RNN用于處理序列數(shù)據(jù),允許歷史輸入信息存儲(chǔ)在網(wǎng)絡(luò)的內(nèi)部狀態(tài)中,因此能夠?qū)⑺械臍v史輸入數(shù)據(jù)映射到最終輸出.RNN的結(jié)構(gòu)如圖1所示.
圖1 RNN結(jié)構(gòu)示意Fig. 1 Illustration of RNN
由圖1可見,RNN由輸入層、輸出層和隱藏層組成[2].x表示輸入值,h表示隱藏層的值,o表示輸出值,U,W,V分別代表輸入層到隱藏層權(quán)值、隱藏層權(quán)值、隱藏層到輸出層權(quán)值[2].由RNN的展開圖可以看出,在t時(shí)刻,網(wǎng)絡(luò)輸入值、隱藏值、輸出值分別為xt,ht,ot.值得注意的是,當(dāng)前的ht由2個(gè)量決定,即當(dāng)前輸入xt和前一時(shí)刻隱藏值ht-1[2].由此,可得RNN的計(jì)算方法:
其中g(shù)和f均為激勵(lì)函數(shù).(1)式為輸出層計(jì)算公式,(2)式為隱藏層計(jì)算公式.反復(fù)將(2)式代入(1)式,可得
ot=g(Vht)=f(Uxt+Wht-1)=Vf(Uxt+Wf(Uxt-1+Wht-2))=Vf(Uxt+Wf(Uxt-1+
Wf(Uxt-2+Wht-3)))=Vf(Uxt+Wf(Uxt-1+Wf(Uxt-2+Wf(Uxt-3+…)))).
(3)
從(3)式可知,RNN網(wǎng)絡(luò)輸出值ot受當(dāng)前輸入xt和歷史輸入xt-1,xt-2,xt-3,….的影響,因此RNN可以往前看任意個(gè)輸入值.
在某些情況下,輸出值除了受前面歷次輸入值的影響之外,可能還受未來時(shí)刻輸入值的影響.例如:“我的水杯壞了,我打算____一個(gè)新水杯.”若只考慮前面輸入,則可能存在“扔”“買”等情況,但若考慮到橫線后面“新水杯”這一信息,則能準(zhǔn)確判斷出橫線處填“買”.針對(duì)這種情況,由(3)式可以看出,單向RNN只能向前看任意個(gè)輸入值,無法對(duì)此進(jìn)行建模,于是Schuster等[8]提出了雙向遞歸神經(jīng)網(wǎng)絡(luò)(Bidirectional Recurrent Neural Networks,BRNN)來解決這一問題.BRNN的結(jié)構(gòu)如圖2所示.
圖2 BRNN結(jié)構(gòu)示意Fig. 2 Illustration of BRNN
由圖2可見,BRNN有2個(gè)隱藏層,比RNN多了1層網(wǎng)絡(luò),一層參與正向計(jì)算,另一層參與反向計(jì)算,最終輸出值o由A與A′之和來決定[8].考慮輸入x2,BRNN的計(jì)算方法可表示為
A2=f(WA1+Ux2),
(4)
從(4)式可知,理論上,RNN有能力處理序列數(shù)據(jù)這樣的長期依賴關(guān)系,但在實(shí)踐過程中,RNN存在梯度消失和爆炸問題,無法完成這項(xiàng)任務(wù).為了解決梯度消失和爆炸問題,改進(jìn)型的RNN,即LSTM出現(xiàn)了.
RNN在訓(xùn)練過程中會(huì)出現(xiàn)梯度消失和爆炸問題,無法處理很長的輸入序列,即RNN存在短期記憶問題,為了解決這一問題, Hochreiter等[7]引入了LSTM模型.
RNN隱藏層只有1個(gè)h狀態(tài),對(duì)短期輸入更有效.LSTM在RNN的基礎(chǔ)上增添了1個(gè)單元狀態(tài)(cell state)c,用以保存長期狀態(tài)[7],如圖3所示.將圖3按時(shí)間維度展開得到圖4.由圖4可見,在t時(shí)刻,一個(gè)LSTM單元有3個(gè)輸入、2個(gè)輸出,其中xt表示t時(shí)刻輸入,ht-1表示t-1時(shí)刻LSTM輸出,ct-1表示t-1時(shí)刻單元狀態(tài),ht表示t時(shí)刻單元輸出,ct表示時(shí)刻單元輸出.
圖3 LSTM示意Fig. 3 Illustration of LSTM
圖4 LSTM按時(shí)間維度展開Fig. 4 LSTM Expanded by Time Dimension
圖5詳細(xì)展示了LSTM的內(nèi)部連接.由圖5,LSTM單元的數(shù)學(xué)表達(dá)式為
圖5 LSTM單元結(jié)構(gòu)和連接Fig. 5 LSTM Cell Architecture and Connections
LSTM單元的學(xué)習(xí)能力與標(biāo)準(zhǔn)遞歸單元相當(dāng),但額外的參數(shù)無疑增加了計(jì)算負(fù)擔(dān),因此Cho等[8]引入了門控遞歸單元(Gated Recurrent Unit, GRU).GRU單元的結(jié)構(gòu)和連接細(xì)節(jié)如圖6所示.由圖6,GRU單元的數(shù)學(xué)表達(dá)式為
圖6 GRU單元結(jié)構(gòu)和連接Fig. 6 GRU Cell Architecture and Connections
為了進(jìn)一步減少單元參數(shù)的個(gè)數(shù),Zhou等[13]提出了最小門控單元(Minimal Gated Unit,MGU),它只有1個(gè)門,其結(jié)構(gòu)如圖7所示.由圖7,MGU單元的數(shù)學(xué)表達(dá)式為
圖7 MGU單元結(jié)構(gòu)和連接Fig. 7 MGU Cell Architecture and Connections
另外,還存在其他類型的LSTM變體,它們與通過減少門功能來修改LSTM單元參數(shù)的變體不同.如Rahman等[15]在LSTM單元中加入1個(gè)受生物啟發(fā)的變體,提出了生物學(xué)變體LSTM,通過僅改變單元狀態(tài)的更新來提高單元容量.又如Pulver等[16]引入了具有工作記憶的LSTM,用功能層代替遺忘門,功能層輸入由之前的存儲(chǔ)單元值決定.盡管引入了變體和類似的神經(jīng)單元,但是它們只能用于1個(gè)或某些特定的數(shù)據(jù)集.目前,沒有任何一種單元變體能整體勝過LSTM單元,可以說LSTM仍是深度學(xué)習(xí)的重點(diǎn).
自然語言數(shù)據(jù)是一種典型的序列數(shù)據(jù),RNN因具存儲(chǔ)特性,可以處理前后輸入有關(guān)系的序列數(shù)據(jù),因此RNN是解決各種自然語言處理(Natural Language Processing, NPL)問題的重要算法,包括語音識(shí)別、機(jī)器翻譯和文本分類等[17].
3.1.1 語音識(shí)別 語音識(shí)別技術(shù)也稱自動(dòng)語音識(shí)別,其難點(diǎn)在于輸入的語音序列的位置是未知的.RNN與聯(lián)結(jié)主義時(shí)間分類(Connectionist Temporal Classification,CTC)的結(jié)合是語音識(shí)別技術(shù)里最具影響力的深度學(xué)習(xí)技術(shù)之一[18].與CNN和自動(dòng)編碼器相比,RNN具有接收不定長序列數(shù)據(jù)作為輸入的優(yōu)點(diǎn),且具有記憶功能.Graves等[19]研究了深度遞歸神經(jīng)網(wǎng)絡(luò),將深度網(wǎng)絡(luò)中已被證明非常有效的多層次表示與CTC結(jié)合起來,經(jīng)過端到端的訓(xùn)練和適當(dāng)?shù)恼齽t化處理后,發(fā)現(xiàn)深長短時(shí)記憶參數(shù)在時(shí)間音素識(shí)別上有效.之后,Graves等[20]設(shè)計(jì)了一種基于深度雙向LSTM遞歸神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和CTC目標(biāo)函數(shù)相結(jié)合的語音識(shí)別系統(tǒng),它不需要中間的語音表示,直接用文本來轉(zhuǎn)錄音頻數(shù)據(jù).Amodei等[21]用神經(jīng)網(wǎng)絡(luò)取代整個(gè)手工設(shè)計(jì)組件的管道,提出了一種端到端的深度學(xué)習(xí)方法,這種端到端學(xué)習(xí)允許處理各種各樣的語言.
3.1.2 機(jī)器翻譯 區(qū)別于統(tǒng)計(jì)翻譯法的神經(jīng)機(jī)器翻譯方法,RNN也是目前機(jī)器翻譯的主流算法之一.Bahdanau等[22]將卷積n元模型與循環(huán)神經(jīng)網(wǎng)絡(luò)相結(jié)合進(jìn)行機(jī)器翻譯,翻譯模型完全基于單詞、短語和句子的連續(xù)表示,而不依賴對(duì)齊或短語翻譯單元.Cho等[8]設(shè)計(jì)了新的神經(jīng)網(wǎng)絡(luò)模型RNN編解碼器,它由2個(gè)遞歸神經(jīng)網(wǎng)絡(luò)組成,一個(gè)RNN 將符號(hào)序列編碼成固定長度的矢量表示,另一個(gè)RNN將該矢量表示解碼成另一個(gè)符號(hào)序列,該模型的編碼器和解碼器被聯(lián)合訓(xùn)練,使得給定源目標(biāo)序列的條件概率最大化.Zhang等[23]取消了訓(xùn)練中僅使用ground truth單詞的做法,改用概率采樣,以一定的概率從模型預(yù)測結(jié)果Oracle Word和ground truth中選擇其一作為當(dāng)前步的輸入,從而一定程度上消除了機(jī)器翻譯中存在的曝光偏差問題和過度矯正問題帶來的影響.
3.1.3 文本分類 文本分類是許多NPL程序的基礎(chǔ)任務(wù),除了經(jīng)典的CNN、貝葉斯分類器等算法,RNN也成功地應(yīng)用于文本分類.傳統(tǒng)的文本分類器往往依賴于許多人為設(shè)計(jì)的特征,如字典、知識(shí)庫和特殊的樹內(nèi)核.Lai等[24]引入了一種沒有人為特征的遞歸卷積神經(jīng)網(wǎng)絡(luò)(Recurrent Convolutional Neural Network, RCNN)文本分類方法,它可以在時(shí)間復(fù)雜度為O(n2)的前提下,提升文本分類的準(zhǔn)確率.Yang等[25]設(shè)計(jì)了一個(gè)層次注意網(wǎng)絡(luò)來進(jìn)行文檔分類,該模型有2個(gè)顯著的特點(diǎn):(1)采用“詞-句子-文章”的結(jié)構(gòu)反映文檔層次結(jié)構(gòu);(2)在單詞和句子層次上有2個(gè)注意機(jī)制,使模型能夠在構(gòu)建文檔表示時(shí)區(qū)別地注意重要和不重要的內(nèi)容.
RNN與CNN相結(jié)合的系統(tǒng)在計(jì)算機(jī)視覺中也有一定的應(yīng)用.例如,在文本識(shí)別(Text Recognition)中,CNN用于從包含字符的圖像中提取特征,并將這些特征輸入LSTM中進(jìn)行序列標(biāo)注[26];對(duì)基于視頻的計(jì)算機(jī)視覺問題,如行為認(rèn)知中,RNN可以利用CNN逐幀提取的圖像特征進(jìn)行學(xué)習(xí)[27];Karpathy等[28]構(gòu)建了一個(gè)生成圖像及其區(qū)域的自然語言描述的模型,利用圖像數(shù)據(jù)集及句子描述來了解語言與視覺數(shù)據(jù)之間的模態(tài)對(duì)應(yīng)關(guān)系,該對(duì)齊模型基于一個(gè)新組合方式,即“圖像區(qū)域上利用CNN模型+句子上利用雙向RNN模型+通過多模態(tài)嵌入來對(duì)齊2種模式輸入的結(jié)構(gòu)化目的”.
在計(jì)算生物學(xué)領(lǐng)域,深度RNN用于分析包含生物信息的各種序列數(shù)據(jù),如在DNA序列中劃分外顯子和內(nèi)含子的斷裂基因[29],通過RNA序列識(shí)別小分子RNA[30],利用蛋白質(zhì)序列預(yù)測蛋白質(zhì)亞細(xì)胞定位[31]等.
在地球科學(xué)領(lǐng)域,RNN被用于時(shí)間序列的建模.例如,Kordmahalleh等[32]建立了一種具有靈活拓?fù)涞南∈鑂NN,用于大西洋颶風(fēng)的軌跡預(yù)測;Fang等[32]首次將LSTM應(yīng)用于水文學(xué),建立了一種以氣候強(qiáng)迫、模型模擬濕度和靜態(tài)地學(xué)屬性為輸入的土壤水分主動(dòng)/被動(dòng)(Soil Moisture Active Passive, SMAP)三級(jí)土壤水分?jǐn)?shù)據(jù)預(yù)測系統(tǒng),該系統(tǒng)通過模型模擬消除了大部分偏差,同時(shí)改善了濕度氣候?qū)W的預(yù)測精度.
在其他領(lǐng)域,有學(xué)者對(duì)RNN進(jìn)行優(yōu)化,使得神經(jīng)網(wǎng)絡(luò)模型加速收斂、抗噪聲等.如向秋紅等[34]將傳統(tǒng)梯度神經(jīng)網(wǎng)絡(luò)(Gradient Neural Network, GNN)模型與張神經(jīng)網(wǎng)絡(luò)(Zhang Neural Network, ZNN)模型相結(jié)合,構(gòu)建了新型的新型神經(jīng)網(wǎng)絡(luò)(New Neural Network,NNN)模型,并將其用于在不同環(huán)境中求解時(shí)變矩陣 M-P 逆;張永勝等[35]在傳統(tǒng)RNN模型的基礎(chǔ)上引入雙符號(hào)冪激勵(lì)函數(shù),構(gòu)建了有限時(shí)間收斂的RNN模型,并將其用于求解二次最小化問題.
RNN因具存儲(chǔ)特性,可以處理前后輸入有關(guān)系的序列數(shù)據(jù),在自然語言處理等領(lǐng)域有廣泛的應(yīng)用.盡管目前關(guān)于RNN的研究已經(jīng)非常深入,但在很多方面仍有較大的進(jìn)步空間.如機(jī)器翻譯方面,目前機(jī)器翻譯僅僅滿足日?;g,而專業(yè)文獻(xiàn)、人文歷史等專業(yè)化領(lǐng)域的翻譯效果不佳,尚無法取代人工翻譯;又如改進(jìn)現(xiàn)有LSTM方面,可以考慮降低計(jì)算成本和提高預(yù)算精確度等,從而在實(shí)際應(yīng)用中實(shí)現(xiàn)更大的價(jià)值.針對(duì)解決不同的問題,可以通過構(gòu)建新型高效的激勵(lì)函數(shù)、減少RNN參數(shù)等方法來優(yōu)化網(wǎng)絡(luò)模型,促進(jìn)RNN的發(fā)展.