◆劉 辰 郭邵忠 殷 樂
(信息工程大學(xué)四院 河南 450001)
隨著人工智能技術(shù)的發(fā)展,RNN模型被廣泛應(yīng)用在語音識(shí)別,機(jī)器翻譯和文本生成等領(lǐng)域,并取得了舉世矚目的效果。Recurrent Neural Network (RNN)是一種能學(xué)習(xí)向量到向量之間映射關(guān)系的強(qiáng)力模型,它適用于時(shí)序數(shù)據(jù)集上。但由梯度爆炸和梯度消失的問題的存在,使得RNN結(jié)構(gòu)難于訓(xùn)練。在學(xué)者們的努力下,提出了Long Short-Term Memory (LSTM)模型,解決了梯度消失的問題。梯度爆炸問題相對(duì)梯度消失復(fù)雜的多,Mikolov與Pascanu通過強(qiáng)制約束梯度范數(shù)解決了該問題。Cho 等人提出名為lstm的一種新的改進(jìn)型Gated Recurrent Unit (GRU),在語言模型的實(shí)際應(yīng)用背景中,兩種實(shí)現(xiàn)方法效果不分伯仲。
在natural language processing (NLP)任務(wù)中,語言模型是一項(xiàng)基礎(chǔ)工作。語言模型是一個(gè)單純的、統(tǒng)一的、抽象的形式系統(tǒng),語言客觀事實(shí)經(jīng)過語言模型的描述,比較適合于電子計(jì)算機(jī)進(jìn)行自動(dòng)處理,因而語言模型對(duì)于自然語言的信息處理具有重大的意義。
神經(jīng)語言模型Neural Language Models (NLM)通過將詞的參數(shù)化作為向量,并將其用作神經(jīng)網(wǎng)絡(luò)的輸入,取得了很好的效果。
雖然NLM比以往的基于統(tǒng)計(jì)的語言模型性能表現(xiàn)出色,但是該模型不能分辨出詞根,詞綴或者分詞等信息,例如 like和unlike兩詞應(yīng)在embedding時(shí)候空間位置距離比較接近,這個(gè)功能上述模型無法實(shí)現(xiàn)。因此,訓(xùn)練集中沒有或者出現(xiàn)幾率特別小的詞,模型無法理解。實(shí)際應(yīng)用中,尤其在俄文語境下,詞態(tài)變化繁復(fù),使得模型訓(xùn)練成本增大,性能下滑。為了克服上述不足,本文設(shè)計(jì)了一種char-level語言模型,該模型的輸入是一個(gè)個(gè)字符。同Botha and Blunsom 2014; Lu-ong,Socher,andManning2013相比下,我們的模型不需要詞素標(biāo)注,將字母一個(gè)個(gè)輸入模型就可以。同 Dos SantosandZadrozny 2014比較,我們的模型不需要word-embedding,只需要 char-embedding。我們的模型適用于多種語言,中文的漢字也可以視為char,此時(shí)在softmax函數(shù)中加入分層功能,運(yùn)行速度會(huì)明顯提高。
若V是所有word的集合,w是V中的任意一個(gè)元素(1個(gè)word),語言模型可以描述如下:若wi∶t= [w1,…,wt]是歷史出現(xiàn)的word序列,那么語言模型就是描述wt+1出現(xiàn)可能和各個(gè)可能的概率情況的工具。
數(shù)據(jù)首先經(jīng)過向量化操作(char-embedding),而后經(jīng)過Highway層,再經(jīng)過RNN層后會(huì)通過一個(gè)softmax函數(shù),它將計(jì)算輸出端的各個(gè)可能性大小,并通過評(píng)價(jià)函數(shù)和同訓(xùn)練數(shù)據(jù)相匹配的正確結(jié)果來復(fù)核評(píng)估網(wǎng)絡(luò)輸出,最后通過bp算法來校正網(wǎng)絡(luò)參數(shù)。如圖1。
圖1 模型各模塊情況
循環(huán)神經(jīng)網(wǎng)絡(luò)是一種節(jié)點(diǎn)定向連接成環(huán)的人工神經(jīng)網(wǎng)絡(luò)。這種網(wǎng)絡(luò)的內(nèi)部狀態(tài)可以展示動(dòng)態(tài)時(shí)序行為。不同于前饋神經(jīng)網(wǎng)絡(luò)的是,RNN可以利用它內(nèi)部的記憶來處理任意時(shí)序的輸入序列,這讓它可以更容易處理如不分段的手寫識(shí)別、語音識(shí)別等。神經(jīng)網(wǎng)絡(luò)專家如 Jordan,Pineda.Williams,Elman等于上世紀(jì) 80年代末提出的一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型。即循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)。這種網(wǎng)絡(luò)的本質(zhì)特征是在處理單元之間既有內(nèi)部的反饋連接又有前饋連接。從系統(tǒng)觀點(diǎn)看,它是一個(gè)反饋動(dòng)力系統(tǒng),在計(jì)算過程中體現(xiàn)過程動(dòng)態(tài)特性,比前饋神經(jīng)網(wǎng)絡(luò)具有更強(qiáng)的動(dòng)態(tài)行為和計(jì)算能力。在每個(gè)時(shí)間脈沖 t,需要輸入一個(gè)向量Xt,并結(jié)合上一時(shí)間脈沖t-1的隱藏狀態(tài)向量ht-1,計(jì)算出當(dāng)前時(shí)間脈沖下的輸出向量ht。
nn.Linear(inputDimension, outputDimension, [bias = true])
在理論上,RNN可以追溯所有的歷史隱藏狀態(tài)向量ht,并以之計(jì)算當(dāng)前時(shí)間脈沖輸出。在實(shí)際應(yīng)用時(shí)候,使用上述 vanilla RNN模型由于梯度下降和梯度爆炸等問題的存在,難以學(xué)習(xí)到long-range dependencies 。也就是說,這種模型在短句語義理解上較為出色,而且實(shí)現(xiàn)簡(jiǎn)單,計(jì)算量小,但是遇到較長(zhǎng)句,就容易丟失前序信息。Long short-term memory (LSTM)應(yīng)運(yùn)而生。該模型具體思想就是在 vanilla RNN模型內(nèi)加入一個(gè) cell向量,這樣,每一個(gè)時(shí)間脈沖下,LSTM模型就獲得了3個(gè)輸入向量:xt,ht-1,ct-1。簡(jiǎn)明表達(dá)LSTM每個(gè)時(shí)間脈沖計(jì)算公式如下:
這里的Sigmoid運(yùn)算符在torch框架上對(duì)應(yīng)nn.Sigmoid,Tanh運(yùn)算符對(duì)應(yīng)nn.Tanh,‘*’運(yùn)算符對(duì)應(yīng)nn.CMulTable()(),ct等式中運(yùn)算符‘+’對(duì)應(yīng)nn.CAddTable()()。
當(dāng)語言模型輸入端為字符時(shí),在 RNN模型的基礎(chǔ)上使用Highway Network可以很大程度提高精度,當(dāng)語言模型輸入為word時(shí)無明顯效果。在本文中,我們采用1或2層的Highway Network,具體公式如下:
語言模型評(píng)價(jià)函數(shù)如下:
NNL是在網(wǎng)絡(luò)訓(xùn)練過程產(chǎn)生的評(píng)價(jià)數(shù)據(jù),T為訓(xùn)練時(shí)間。English Penn Treebank (PTB),是一個(gè)標(biāo)準(zhǔn)的英語語言模型測(cè)試集,我們將在這個(gè)測(cè)試級(jí)上評(píng)估實(shí)驗(yàn)結(jié)果。
表1 PTB測(cè)試集情況
實(shí)驗(yàn)數(shù)據(jù)集如表 1所示,其中|V|是語料中的總詞匯量,|C|是字符數(shù)目,T是訓(xùn)練集中的token數(shù)量。Data-s是Peen Treebank庫,Data-L是News-Commentary庫,該庫中有一些非英語符號(hào),所以字符種類較多。
表2 各個(gè)網(wǎng)絡(luò)層參數(shù)配置
表2所示為實(shí)驗(yàn)?zāi)P透鲗哟尉W(wǎng)絡(luò)參數(shù)設(shè)置。Small模型采用1層的Highway激活函數(shù)是Relu(),而后通過LSTM模塊(2層,每層300單元)。Large模型Highway模塊設(shè)為2層,激活函數(shù)不變,LSTM模塊也是2層,每層設(shè)為600單元。
只有2G顯卡情況下,large數(shù)據(jù)集上lstm個(gè)數(shù)每層最大不能超過600,實(shí)驗(yàn)結(jié)果也證實(shí)了每層600個(gè)lstm單元已經(jīng)能夠滿足實(shí)驗(yàn)需要,盲目加大數(shù)目對(duì)結(jié)果的影響不明顯。
本文考慮實(shí)驗(yàn)的靈活性,將輸入模塊設(shè)計(jì)為兩種輸入模式:字符模式和單詞模式。該模型可以轉(zhuǎn)換為word-level 語言模型,只需更新參數(shù)轉(zhuǎn)換輸入,而后進(jìn)行單詞級(jí)別的語言模型訓(xùn)練。
實(shí)驗(yàn)優(yōu)化。在試驗(yàn)中,遍歷25epochs訓(xùn)練集,在Data-S訓(xùn)練集中使用batch-size = 20,在Data-L中使用batch-size = 100,這兩組數(shù)字都是其他論文中使用該數(shù)據(jù)集的經(jīng)驗(yàn)數(shù)字,在本次試驗(yàn)中效果良好。
在參數(shù)初始化階段,采取了隨機(jī)初始化,并且控制參數(shù)初始化的范圍在[-0.05,0.05]這樣可以避免產(chǎn)生的模型‘偏激’,難以訓(xùn) 練 。 在 LSTM 的 input-to-hidden(highway之 后)和hidden-to-output(softmax()之前)使用了dropout規(guī)則,設(shè)定參數(shù)為 0.5,這樣提高了訓(xùn)練精度。我們限定梯度更新的速率,避免訓(xùn)練結(jié)果偏激,若梯度更新的L2范數(shù)大于5那么更新時(shí)最大可用更新幅度設(shè)為5.0。
圖2是訓(xùn)練loss與測(cè)試loss對(duì)比圖(LSTM-Char in Data-S),圖中可見訓(xùn)練過程中參數(shù)收斂正常,測(cè)試收斂正常,訓(xùn)練效果顯著,在最后的全集測(cè)試中,取得(PPL=92.418545711755)的評(píng)價(jià)結(jié)果。
圖2 訓(xùn)練以及測(cè)試曲線
表3 訓(xùn)練結(jié)果
表3所示為最終實(shí)驗(yàn)結(jié)果(PPL數(shù)值越小越好)。其中前四行為本文所做工作,最后兩行為現(xiàn)階段經(jīng)典模型實(shí)驗(yàn)結(jié)果。從模型的評(píng)價(jià)來看,我們實(shí)現(xiàn)的 LSTM-Word-Large模型稍遜色于LSTM-2 (Zaremba 2014)但我們使用的lstm單元個(gè)數(shù)少于他們。整體結(jié)果來看,我們模型實(shí)現(xiàn)已經(jīng)達(dá)到了上游水平。
本文實(shí)現(xiàn)了一種char-level的語言模型,語言模型是自然語言處理的一個(gè)基礎(chǔ)工作,是學(xué)習(xí)深度學(xué)習(xí)框架入門的良好課題。一些trciks在提高結(jié)果精度顯得特別重要,可以說有些操作直接影響到了結(jié)論。想要做一個(gè)好用的語言模型比較困難,具體應(yīng)用的語境下必須取得好的數(shù)據(jù),再結(jié)合結(jié)構(gòu)的研究和一些技巧才能達(dá)到可用的要求,而好用的要求更需要深入的研究和探索。本實(shí)驗(yàn)更換輸入數(shù)據(jù)也會(huì)輸出一些有意思的東西,例如輸入唐詩300首,也可以自動(dòng)做唐詩,其結(jié)果也是剛剛達(dá)到了‘說人話’的水平。下一步的改進(jìn)目標(biāo)是嘗試在模型中加入更多網(wǎng)絡(luò)信息,類似于Net Embedding的做法。Word Embedding與Net Embedding相互借鑒是一個(gè)趨勢(shì)。
[1] Bengio Y, Simard P, Frasconi P. Learning long-term dependencies with gradient descent is difficult.[J]. IEEE Transactions on Neural Networks,1994.
[2]Surhone L M, Tennoe M T, Henssonow S F. Long Short Term Memory[J]. Betascript Publishing,2010.
[3]Pascanu R, Mikolov T, Bengio Y. On the difficulty of training recurrent neural networks[C]// International Conference on International Conference on Machine Learning. JMLR.org,2013.
[4] Chung J, Gulcehre C, Cho K H, et al. Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling[J]. EprintArxiv,2014.
[5]Bengio Y, Schwenk H, Senécal J S, et al. Neural Probabilistic Language Models[J]. Journal of Machine Learning Research,2003.
[6] Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]// INTERSPEECH 2010,Conference of the International Speech Communication Association, Makuhari, Chiba, Japan, September. DBLP,2010.
[7] Botha J A, Blunsom P. Compositional Morphology for Word Representations and Language Modelling[J]. Computer Science,2014.
[8]Luong T, Socher R, Manning C D. Better Word Representations with Recursive Neural Networks for Morphology[C]// Conference,2013.
[9] Santos C N D, Guimar?es V. Boosting Named Entity Recognition with Neural Character Embeddings[J]. Computer Science,2015.
[10] Bengio Y, Simard P, Frasconi P. Learning long-term dependencies with gradient descent is difficult.[J]. IEEE Transactions on Neural Networks,1994.
[11] Srivastava R K, Greff K, Schmidhuber J. Training very deep networks[J]. Computer Science,2015.
[12]Marcus M P, Marcinkiewicz M A, Santorini B. Building a large annotated corpus of English: the penntreebank[M]. MIT Press,1993.
[13] Hinton G E, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. Computer Science,2012.
[14]Zaremba W, Sutskever I, Vinyals O. Recurrent Neural Network Regularization[J]. EprintArxiv,2014.
[15]駱小所.語言的接緣性及其分支學(xué)科[J].云南師范大學(xué)學(xué)報(bào)(哲學(xué)社會(huì)科學(xué)版),1998.
[16]雷鐵安, 吳作偉, 楊周妮.Elman遞歸神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)分析中的應(yīng)用[J].電力機(jī)車與城軌車輛,2004.