近十幾年,神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模(Language Modeling, LM)一直是人工智能領(lǐng)域的研究熱點(diǎn),多種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)被引入到語(yǔ)言建模中。其中,前向神經(jīng)網(wǎng)絡(luò)是最早被引入到語(yǔ)言建模中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),隨后是循環(huán)神經(jīng)網(wǎng)絡(luò),包括標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)和門限循環(huán)單元神經(jīng)網(wǎng)絡(luò),接著卷積神經(jīng)網(wǎng)絡(luò)也在語(yǔ)言建模中取得了出乎意料的成功。
1. 前言
? ? ? ?語(yǔ)言建模(Language Modeling, LM)作為人工智能領(lǐng)域的基礎(chǔ)任務(wù)之一,在諸如自然語(yǔ)言處理(Natural Language Processing, NLP)、語(yǔ)音識(shí)別(Speech Recognition)、機(jī)器翻譯(Machine Translation, MT)等以自然語(yǔ)言為處理對(duì)象的任務(wù)中起到了關(guān)鍵的作用。雖然語(yǔ)言建模僅在語(yǔ)音識(shí)別中有直接的應(yīng)用,但對(duì)語(yǔ)言建模具有深刻的理解有助于更好地理解上述任務(wù),語(yǔ)言建模的思想即是人工智能領(lǐng)域處理自然語(yǔ)言的基本思想。另外,語(yǔ)言建模的相關(guān)技術(shù)通??梢灾苯踊蛘唛g接地應(yīng)用到其他任務(wù)中。
? ? ? ?在神經(jīng)網(wǎng)絡(luò)(Neural Network, NN)被成功應(yīng)用于語(yǔ)言建模之前,主流的語(yǔ)言模型為N-gram模型,采用計(jì)數(shù)統(tǒng)計(jì)的方式,在離散空間下表示語(yǔ)言的分布。由于缺乏對(duì)詞的相似性的有效表示,N-gram語(yǔ)言模型存在嚴(yán)重的數(shù)據(jù)稀疏問(wèn)題。雖然引入平滑技術(shù),但數(shù)據(jù)稀疏問(wèn)題仍不能得到有效的解決。神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型則采用分布式的方式表示詞,即通常所說(shuō)的詞向量,將詞映射到連續(xù)的空間內(nèi),有效地解決了數(shù)據(jù)稀疏問(wèn)題。并且神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的模式識(shí)別能力,神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的性能遠(yuǎn)優(yōu)于N-gram模型。但由于神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算復(fù)雜度遠(yuǎn)高于N-gram模型,在對(duì)實(shí)時(shí)性有要求的應(yīng)用場(chǎng)合,如語(yǔ)音識(shí)別,仍采用N-gram語(yǔ)言模型。N-gram語(yǔ)言建模方面的研究,推薦閱讀Goodman (2001)的論文,該篇論文對(duì)N-gram語(yǔ)言建模的相關(guān)技術(shù)進(jìn)行了細(xì)致的對(duì)比分析,建模的工具包則可以參考SRILM。本文將只對(duì)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型進(jìn)行詳細(xì)的介紹,并分析不同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在語(yǔ)言建模中的優(yōu)劣。
2. 語(yǔ)言模型
? ? ? ?語(yǔ)言建模的對(duì)象是自然語(yǔ)言,即人類文明發(fā)展過(guò)程中自然演化的語(yǔ)言,不包括編程語(yǔ)言、世界語(yǔ)等。但嚴(yán)格地講,自然語(yǔ)言也并不完全是自然產(chǎn)生的,而是人為創(chuàng)造出來(lái)的。另外,自然語(yǔ)言的表現(xiàn)形式通常分為語(yǔ)音與文字,而語(yǔ)言建模主要針對(duì)某種自然語(yǔ)言對(duì)應(yīng)的文字系統(tǒng),因此將該任務(wù)稱為“文字系統(tǒng)建模 (Writing System Modeling, WSM)”更為嚴(yán)謹(jǐn)。通常獲取某種文字系統(tǒng)下的文本所表達(dá)的信息,需要了解對(duì)應(yīng)文字系統(tǒng)的內(nèi)部結(jié)構(gòu),以及其與相應(yīng)自然語(yǔ)言的對(duì)應(yīng)關(guān)系。而語(yǔ)言模型僅從文本中構(gòu)建,能夠表示的只有文字系統(tǒng)本身的內(nèi)部結(jié)構(gòu)信息。雖然采用“文字系統(tǒng)建?!备鼮閲?yán)謹(jǐn),但為了與主流的研究一致,仍然沿用“語(yǔ)言建?!钡拿?xí)慣。
? ? ? ?假設(shè)為來(lái)源于某種自然語(yǔ)言的詞序列,語(yǔ)言建模的目的就是構(gòu)建該自然語(yǔ)言中詞序列的分布,然后用于評(píng)估某個(gè)詞序列的概率。如果給定的詞序列符合語(yǔ)用習(xí)慣,則給出高概率,否則給出低概率。在語(yǔ)言建模過(guò)程中,采用了鏈?zhǔn)椒▌t,單個(gè)詞序列的概率被分解為序列中各個(gè)詞的條件概率的乘積,而每個(gè)詞的條件概率為給定其上文時(shí)的該詞出現(xiàn)的概率。因此,上述詞序列的概率可表示為:
不難看出,上述模型的成立時(shí)需要前提假設(shè),即在詞序列中,每個(gè)詞只依賴于其上文,而與下文無(wú)關(guān)。不論是依據(jù)語(yǔ)言使用的直觀體驗(yàn),還是人工智能的諸多實(shí)踐,都驗(yàn)證了該假設(shè)是不成立的。在自然語(yǔ)言處理中,如何同時(shí)考慮上下文信息已有許多研究成果,此處不進(jìn)行展開討論。
? ? ? ?語(yǔ)言模型的目標(biāo)是評(píng)估詞序列的概率,模型的訓(xùn)練采用最大似然評(píng)估準(zhǔn)則,最大化模型在訓(xùn)練數(shù)據(jù)上的似然概率。語(yǔ)言模型訓(xùn)練的目標(biāo)函數(shù)就采用似然函數(shù),即:
其中,為語(yǔ)言模型的參數(shù),
為正則項(xiàng)。
? ? ? ?語(yǔ)言模型的性能通常采用困惑度(Perplexity, PPL)來(lái)衡量,困惑度的定義如下:
困惑度,即模型編碼數(shù)據(jù)所需要的平均字節(jié)數(shù)的指數(shù),用于衡量模型預(yù)測(cè)樣本的好壞程度。語(yǔ)言模型的困惑度越小,意味著語(yǔ)言模型的分布更接近測(cè)試數(shù)據(jù)的分布。
3. 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
? ? ? ?神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型引起廣泛關(guān)注是在Bengio et al. (2003)提出前向神經(jīng)網(wǎng)絡(luò)(Feed-forward Neural Network, FNN)語(yǔ)言模型之后,但對(duì)神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模的研究可以追溯到更早之前,如Schmidhuber (1996),Xu and Rudnicky (2000)等。但由于神經(jīng)網(wǎng)絡(luò)訓(xùn)練困難,基于當(dāng)時(shí)的硬件條件模型訓(xùn)練的時(shí)間較長(zhǎng)。直到Bengio et al. (2003)發(fā)布其研究成果,神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型才引起學(xué)術(shù)界以及工業(yè)界的興趣。隨后Mikolov et al. (2010)將循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)引入語(yǔ)言建模,使得語(yǔ)言模型的性能得到較大的提升。接著循環(huán)神經(jīng)網(wǎng)絡(luò)的改進(jìn)版本,長(zhǎng)短期記憶(Long Short Term Memory, LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)以及門限循環(huán)單元(Gated Recurrent Unit, GRU)神經(jīng)網(wǎng)絡(luò),相繼地被用于進(jìn)一步改善語(yǔ)言建模的性能。另外,卷積神經(jīng)網(wǎng)絡(luò)也出乎意料地在語(yǔ)言建模中取得了成功,性能也能夠與循環(huán)神經(jīng)網(wǎng)絡(luò)相比肩。
3.1 前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
? ? ? ?前向神經(jīng)網(wǎng)絡(luò),又被稱為全連接(Fully Connected Neural Network)神經(jīng)網(wǎng)絡(luò),是最早被引入到語(yǔ)言建模中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。前向神經(jīng)網(wǎng)絡(luò)一般可表示為:
其中,,
為權(quán)重矩陣,
為輸入層的節(jié)點(diǎn)數(shù),
為隱層的節(jié)點(diǎn)數(shù),
輸出層的節(jié)點(diǎn)數(shù),在語(yǔ)言模型中等于詞典的大小,
為直接連接輸入層與輸出層的權(quán)重矩陣,
和
分別為隱層和輸出層的偏置項(xiàng),
為輸出向量,
為激活函數(shù)。
? ? ? ?Bengio et al. (2003)提出的前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的結(jié)構(gòu)如圖1所示。由于前向神經(jīng)網(wǎng)絡(luò)不具備學(xué)習(xí)時(shí)序依賴關(guān)系的能力,如果預(yù)測(cè)當(dāng)前詞時(shí),考慮所有上文會(huì)比較困難。一方面,當(dāng)上文較長(zhǎng)時(shí),網(wǎng)絡(luò)的輸入節(jié)點(diǎn)數(shù)會(huì)較大;另一方面,當(dāng)前詞的上文是變長(zhǎng)的,不易處理。因此,前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型采用了與N-gram模型相似的方法處理上文信息,只考慮前個(gè)詞,則當(dāng)前詞的條件概率近似地表示為:
此處,又引入了另一個(gè)假設(shè),即當(dāng)前詞只依賴于前個(gè)詞。

? ? ? ?建立語(yǔ)言模型的首要工作是從訓(xùn)練數(shù)據(jù)集中構(gòu)建詞典,并為每個(gè)詞賦予唯一的索引,然后構(gòu)建特征矩陣
,其中
為詞典的大小,
為特征向量的大小。特征矩陣
的每行為對(duì)應(yīng)詞的特性向量,即詞向量,通過(guò)詞的索引進(jìn)行查找。當(dāng)對(duì)當(dāng)前詞
進(jìn)行預(yù)測(cè)時(shí),取其前
個(gè)詞的詞向量,并按照序列順序進(jìn)行拼接,形成模型的輸入向量
,其中
。模型的輸出
為當(dāng)前上文信息下,詞典中各個(gè)詞的非歸一化的條件概率,需要采用Softmax函數(shù)對(duì)輸出概率進(jìn)行歸一化,即:
? ? ? ?Bengio et al. (2003)在其2001年版本的論文中提出了兩種模型結(jié)構(gòu)。除了上述被稱為直連結(jié)構(gòu)(Direct Architecture)的模型,還有一種稱為循環(huán)結(jié)構(gòu)(Cycling Architecture)的模型。在循環(huán)模型中,針對(duì)詞典中的每個(gè)詞都訓(xùn)練了一個(gè)預(yù)測(cè)模型,每個(gè)模型只輸出對(duì)應(yīng)詞的未歸一化的條件概率,然后采用Softmax對(duì)所有輸出進(jìn)行歸一化處理。兩種模型在布朗語(yǔ)料庫(kù)上的測(cè)試結(jié)果如下表所示:
| 序號(hào) | 模型 | PPL | 備注 |
|---|---|---|---|
| 01 | 3-gram模型語(yǔ)言模型 | 348 | - |
| 02 | 直連前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 265 | - |
| 03 | 循環(huán)前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 270 | - |
? ? ? ?實(shí)驗(yàn)結(jié)果顯示,直連結(jié)構(gòu)的模型性能與循環(huán)結(jié)構(gòu)模型的PPL幾乎相當(dāng)。目前循環(huán)結(jié)構(gòu)的模型已不再被關(guān)注,因?yàn)橹边B結(jié)構(gòu)的模型的PPL略高,并且結(jié)構(gòu)更緊湊。另外,實(shí)驗(yàn)數(shù)據(jù)顯示前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的PPL遠(yuǎn)低于3-gram語(yǔ)言模型,體現(xiàn)了神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的優(yōu)越性。在Bengio et al. (2003)的論文中,輸入層與輸出層之間的直接連接層以及隱層的偏置項(xiàng)對(duì)模型性能的影響得到了分析。引入直接連接層,能夠幫助模型快速學(xué)習(xí)數(shù)據(jù)中的線性關(guān)系,但會(huì)使模型的泛化能力降低,從而使得模型的PPL值略有上升,但訓(xùn)練速度加快。而添加或者去除隱層的偏置項(xiàng)并不會(huì)對(duì)模型性能造成明顯的影響。
3.2 循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
? ? ? ?前向神經(jīng)網(wǎng)絡(luò)缺乏學(xué)習(xí)時(shí)序依賴的能力,而循環(huán)神經(jīng)網(wǎng)絡(luò)則是被設(shè)計(jì)用來(lái)處理時(shí)序問(wèn)題的。Bengio et al. (2003)指出采用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言建模會(huì)獲得更好的性能,而后Mikolov et al. (2010)對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模進(jìn)行了研究,并取得了更好的效果。Mikolov et al. (2010)所采用的是標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò),其一般結(jié)構(gòu)可以表示為:
其中,為權(quán)重矩陣,
為
時(shí)刻隱層的狀態(tài)。
? ? ? ?循環(huán)神經(jīng)網(wǎng)絡(luò)引入了中間隱層狀態(tài),從而將信息沿著時(shí)序向后傳播。在循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型中,對(duì)當(dāng)前詞進(jìn)行預(yù)測(cè)時(shí),只需要將其上一個(gè)詞的詞向量作為輸入,其余上文的信息通過(guò)隱層狀態(tài)輸入。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的結(jié)構(gòu)與前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型有所不同,其具體結(jié)構(gòu)如圖2所示。

? ? ? ?循環(huán)神經(jīng)網(wǎng)絡(luò)的詳細(xì)研究成果推薦參閱Mikolov (2012)的博士論文。除了循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型本身的研究,論文還介紹了其他傳統(tǒng)的語(yǔ)言建模技術(shù),并與神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模進(jìn)行對(duì)比。另外,還提出了神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模的優(yōu)化方法,如通過(guò)模型組合降低PP L,基于詞類加速模型計(jì)算等。模型的研究實(shí)驗(yàn)在賓州樹庫(kù)(Penn Tree Bank, PTB)上進(jìn)行,部分測(cè)試結(jié)果如下表所示:
| 序號(hào) | 模型 | PPL | 備注 |
|---|---|---|---|
| 01 | 3-gram語(yǔ)言模型 | 148.3 | - |
| 02 | 5-gram語(yǔ)言模型 | 141.2 | - |
| 03 | 前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 140.2 | - |
| 03 | 循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 124.7 | - |
從上表中的數(shù)據(jù)可以看出,循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型具有顯著的優(yōu)勢(shì),而前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型與5-gram語(yǔ)言模型相比,已不具備明顯的優(yōu)勢(shì)了。
? ? ? ?雖然標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)被設(shè)計(jì)用于解決時(shí)序問(wèn)題,但研究過(guò)程中發(fā)現(xiàn),標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)存在梯度縮減(Vanishing Gradient)或者梯度爆炸(Exploding Gradient)的問(wèn)題,導(dǎo)致其無(wú)法學(xué)習(xí)時(shí)序上的長(zhǎng)期依賴關(guān)系。針對(duì)這個(gè)問(wèn)題,長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)引入了門限機(jī)制,使得循環(huán)神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)到更長(zhǎng)期的時(shí)序依賴關(guān)系。長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)由Hochreiter and Schmidhuber (1997)提出,而后被Gers and J. Schmidhuber (2000),Cho et al. (2014)等進(jìn)一步改進(jìn)優(yōu)化,其一般結(jié)構(gòu)可表示為:
其中,,
,
分別為輸入門、遺忘門和輸出門,
為內(nèi)部記憶單元,
,
,
,
,
,
,
,
,
,
,
,
,
均是權(quán)重矩陣,
,
,
,
和
為偏置項(xiàng),
為隱層的激活函數(shù),
門限單元的激活函數(shù),一般采用Sigmoid函數(shù)。
? ? ? ?長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)在語(yǔ)言建模中的最初研究來(lái)源于論文Sundermeyer et al. (2012),其語(yǔ)言模型的結(jié)構(gòu)與圖2所示的結(jié)構(gòu)類似,只是將標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)更換為長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)。在賓州樹庫(kù)上進(jìn)行試驗(yàn),結(jié)果顯示與標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型相比,長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的PPL減少了8%。
? ? ? ?門限循環(huán)單元神經(jīng)網(wǎng)絡(luò)作為與長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)同等受歡迎的循環(huán)網(wǎng)絡(luò)結(jié)構(gòu),同樣受到語(yǔ)言建模研究者的青睞。門限循環(huán)單元網(wǎng)絡(luò)也引入了門限機(jī)制來(lái)解決循環(huán)網(wǎng)絡(luò)中梯度傳遞的問(wèn)題,但其只引入了兩個(gè)門機(jī)制,因此計(jì)算量會(huì)比相同規(guī)模的長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)要少,其一般結(jié)構(gòu)可以表示為:
其中,為重置門,
為更新門,
,
,
,
,
,
,
,
均為權(quán)重矩陣,
,
,
和
為偏置項(xiàng),
為隱層的激活函數(shù),
門限單元的激活函數(shù),一般也采用Sigmoid函數(shù)。
? ? ? ?Jozefowicz et al. (2015)研究了不同循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在多種人工智能任務(wù)中表現(xiàn),其中包括語(yǔ)言建模任務(wù)。針對(duì)語(yǔ)言建模任務(wù)的研究,同樣是在賓州樹庫(kù)上進(jìn)行的,試驗(yàn)結(jié)果如下表所示:
| 序號(hào) | 模型 | PPL | 備注 |
|---|---|---|---|
| 01 | 標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 124.7 | - |
| 02 | 長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 81.4 | - |
| 03 | 長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 79.83 | 遺忘門的偏置項(xiàng)設(shè)為1.0 |
| 04 | 門限循環(huán)單元神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 91.7 | - |
在語(yǔ)言建模中,長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)在諸多循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中顯現(xiàn)出顯著的優(yōu)勢(shì),并且當(dāng)將遺忘門的偏置項(xiàng)設(shè)為1.0時(shí),模型的性能能夠進(jìn)一步提高。在這項(xiàng)研究成果發(fā)表之后,長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)的遺忘門的偏置項(xiàng)通常默認(rèn)設(shè)置為1.0。另外,此處值得一提,Jozefowicz et al. (2015)指出,除了語(yǔ)言建模任務(wù),在其他任務(wù)中門限循環(huán)單元神經(jīng)網(wǎng)絡(luò)的性能均優(yōu)于長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)。但是實(shí)際情況卻比較奇怪,目前在其他人工智能任務(wù)中,依然是長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)出現(xiàn)的頻率較高。
3.3 卷積神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
? ? ? ?卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的優(yōu)勢(shì)在于特征提取,并在計(jì)算機(jī)視覺(jué)(Computer Vision, CV)領(lǐng)域取得了巨大的成功。而對(duì)于語(yǔ)言建模這類序列問(wèn)題,一直認(rèn)為循環(huán)神經(jīng)網(wǎng)絡(luò)的性能會(huì)優(yōu)于卷積神經(jīng)網(wǎng)絡(luò)。然而,Dauphin et al. (2016)嘗試采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言建模,并引入了門限單元來(lái)降低深層卷積網(wǎng)絡(luò)的訓(xùn)練難度,取得了出乎意料的成功,其模型的結(jié)構(gòu)如圖3所示。

? ? ? ?與上述的神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型相比,除了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)不同之外,卷積神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的輸入數(shù)據(jù)的形式也有所改變。對(duì)當(dāng)前詞進(jìn)行預(yù)測(cè)時(shí),將上文詞序列的詞向量按順序進(jìn)行拼接,形成特征矩陣
。卷積核的高度與向量的大小一致,需要設(shè)計(jì)多種寬度的卷積核,并且相同尺寸的卷積核可以有多個(gè),然后在特征矩陣
上進(jìn)行一維卷積,采用最大池化(Maxpooling)操作得到最終的特征向量。該特征向量作為網(wǎng)絡(luò)輸出層的輸入,而輸出層與上述神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型一致。Dauphin et al. (2016)使用的實(shí)驗(yàn)語(yǔ)料庫(kù)為百萬(wàn)級(jí)詞語(yǔ)料庫(kù)(One Billion Word Bench, OBWB),實(shí)驗(yàn)結(jié)果如下表所示:
| 序號(hào) | 模型 | PPL | 備注 |
|---|---|---|---|
| 01 | 長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 43.9 | 1層,2048個(gè)節(jié)點(diǎn),1GPU |
| 02 | 長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 39.8 | 2層,2048個(gè)節(jié)點(diǎn) ,1GPU |
| 03 | 長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 30.6 | 2層,分別為8192,1024個(gè)節(jié)點(diǎn),32GPUs |
| 04 | 卷積神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 | 38.1 | 13層,1268個(gè)節(jié)點(diǎn),1GPU |
根據(jù)上表的數(shù)據(jù),取得最好結(jié)果的模型是長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型,但是該模型的規(guī)模巨大,訓(xùn)練成本非常高。在訓(xùn)練成本相當(dāng)?shù)那闆r下,卷積神經(jīng)網(wǎng)絡(luò)由于并行性較高,可以采用較大規(guī)模的網(wǎng)絡(luò)結(jié)構(gòu),得到與長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)相當(dāng)?shù)慕Y(jié)果。可以說(shuō)卷積神經(jīng)網(wǎng)絡(luò)與基于注意力機(jī)制的轉(zhuǎn)換網(wǎng)絡(luò)(Transformer)類似,主要優(yōu)勢(shì)在于高并行性,能夠訓(xùn)練規(guī)模較大的模型。但在語(yǔ)言建模這類時(shí)序問(wèn)題上仍存在明顯的缺陷,首先由于卷積網(wǎng)絡(luò)的平移不變性,無(wú)法區(qū)分詞的順序,針對(duì)這個(gè)問(wèn)題的解決方法是引入了位置向量。另一個(gè)問(wèn)題是卷積網(wǎng)絡(luò)不能學(xué)習(xí)時(shí)序上的長(zhǎng)期依賴關(guān)系,只是從詞序列中提取出豐富的N-gram特征。對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò),哪個(gè)更適合用于語(yǔ)言建模并沒(méi)有確定的結(jié)論,但需要明白各自的優(yōu)劣。循環(huán)神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)時(shí)序上的長(zhǎng)期依賴關(guān)系,但由于計(jì)算量的問(wèn)題限制了模型的規(guī)模;而卷積神經(jīng)網(wǎng)絡(luò)雖然缺乏長(zhǎng)期依賴關(guān)系的表示能力,但由于其高并行性,可以訓(xùn)練較大規(guī)模的網(wǎng)絡(luò),提取豐富的N-gram特征。
4. 概括總結(jié)
? ? ? ?相對(duì)于傳統(tǒng)的語(yǔ)言建模技術(shù),神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模技術(shù)具有顯著的優(yōu)勢(shì)。采用分布式表示方法,將詞映射到連續(xù)空間,有效地解決了數(shù)據(jù)稀疏問(wèn)題,并且獲得的詞向量能夠體現(xiàn)出詞與詞之間的相似性。另外,由于神經(jīng)網(wǎng)絡(luò)的強(qiáng)大的模式學(xué)習(xí)能力,在采用PP L為性能指標(biāo)時(shí),神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模遠(yuǎn)優(yōu)于傳統(tǒng)的語(yǔ)言建模方法。在多種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,循環(huán)神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)均優(yōu)于前向網(wǎng)絡(luò),而兩者不分伯仲,各有優(yōu)劣。其中,循環(huán)神經(jīng)網(wǎng)絡(luò)的諸多變形中,以長(zhǎng)短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)的性能最佳。雖然神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型目前取得最好的結(jié)果,但仍然存在諸多需要進(jìn)行改進(jìn)的問(wèn)題。近十幾年,許多優(yōu)化技術(shù)被提出用于改進(jìn)神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模的性能。針對(duì)神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模的研究基本可以分為兩個(gè)方向,其一是減少神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算量,包括訓(xùn)練階段和預(yù)測(cè)階段;另一個(gè)方向是改變數(shù)據(jù)的輸入形式,從而引入更多的自然語(yǔ)言中的模式,從而提高模型的性能。
? ? ? ?神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模在實(shí)際應(yīng)用中的最大障礙就是其計(jì)算量過(guò)大,導(dǎo)致無(wú)法滿足實(shí)時(shí)性要求,因此在語(yǔ)音識(shí)別的實(shí)際應(yīng)用中,仍然傾向于采用N-gram語(yǔ)言模型。甚至在沒(méi)有實(shí)時(shí)性要求的應(yīng)用場(chǎng)合,其計(jì)算的時(shí)間成本也是不能接受的。神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算量主要集中在模型的輸出層,模型的輸出層的網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)等于詞典的大小,一般能達(dá)到幾十萬(wàn),甚至幾百萬(wàn)。由于需要采用Softmax對(duì)輸出概率進(jìn)行歸一化處理,不可避免的需要對(duì)所有節(jié)點(diǎn)進(jìn)行計(jì)算,導(dǎo)致較大的計(jì)算量。降低神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算量的研究,也就主要是減少輸出層的計(jì)算量。迄今為止,已有許多優(yōu)化技術(shù)被提出,用于加速神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算,包括重要性采樣(Importance Sampling)、層級(jí)Softmax(Hierarchical Softmax)、噪聲對(duì)比評(píng)估(Noise Contrastive Estimation, NCE)等。這些優(yōu)化技術(shù)均能夠有效的改善神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的計(jì)算速度,但其中部分只能夠加速訓(xùn)練階段的計(jì)算,如重要性采樣和噪聲對(duì)比評(píng)估,并且大多數(shù)都是以犧牲模型精度為代價(jià)。這些加速技術(shù)在實(shí)際應(yīng)用中也會(huì)存在諸多問(wèn)題,而且時(shí)間成本仍然相對(duì)較高,因此仍然需要研究出更有效的加速技術(shù)。
? ? ? ?在神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模中,文本數(shù)據(jù)的表示可以分為兩個(gè)層面:句子和詞。針對(duì)這兩個(gè)層面的數(shù)據(jù)表示,都有許多研究成果被提出,尤其是針對(duì)詞的表達(dá),目的均是希望將更多的自然語(yǔ)言中的模式輸入語(yǔ)言模型中。語(yǔ)言建模過(guò)程中,文本的最小表示單位為詞,并采用分布式表示方式,即通常所說(shuō)的詞向量。然而,語(yǔ)言(更準(zhǔn)確地講是文字系統(tǒng))的最小表示單位并不是詞,如英文的詞由多個(gè)字母組成,中文的詞由一個(gè)或多個(gè)字符組成,而單個(gè)字符又可以拆分為偏旁部首,韓文的詞一般也有多個(gè)字符,字符又有多個(gè)音節(jié)字符。豐富詞表示的方法就將字符級(jí)別或者更低級(jí)別的信息引入到詞向量中。目前相關(guān)的研究大多針對(duì)特定的語(yǔ)言進(jìn)行,甚至需要對(duì)應(yīng)語(yǔ)言的專業(yè)知識(shí)。對(duì)于句子層面,研究的目的則是在預(yù)測(cè)當(dāng)前詞時(shí),能夠同時(shí)利用上下文的信息,而不是只利用單向的文本信息。
作者:施孫甲由 (原創(chuàng))