神經(jīng)網(wǎng)絡(luò)語(yǔ)言建模系列之一:基礎(chǔ)模型


近十幾年,神經(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è)w_0,w_1,w_2,\cdots,w_T為來(lái)源于某種自然語(yǔ)言的詞序列,語(yǔ)言建模的目的就是構(gòu)建該自然語(yǔ)言中詞序列的分布,然后用于評(píng)估某個(gè)詞序列的概率。如果給定的詞序列符合語(yǔ)用習(xí)慣,則給出高概率,否則給出低概率。在語(yǔ)言建模過(guò)程中,采用了鏈?zhǔn)椒▌t,單個(gè)詞序列的概率被分解為序列中各個(gè)詞的條件概率的乘積,而每個(gè)詞的條件概率為給定其上文時(shí)的該詞出現(xiàn)的概率。因此,上述詞序列的概率可表示為:

p(w_0^{T}) = \sum_{t=0}^{T}p(w_t|w_0^{t-1})

不難看出,上述模型的成立時(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ù),即:

L =\frac{1}{T}\sum_{t=0}^{T}\log(p(w_t|w_0^{t-1}, \theta)) + R(\theta)

其中,\theta為語(yǔ)言模型的參數(shù),R(\theta)為正則項(xiàng)。

? ? ? ?語(yǔ)言模型的性能通常采用困惑度(Perplexity, PPL)來(lái)衡量,困惑度的定義如下:

PPL = \sqrt[T]{\prod^{T}_{i=0}\frac{1}{P(w_{i}{\mid}w_{0}^{i-1})}}=2^{-\frac{1}{T}\sum^{T}_{i=0}log_2P(w_{i}{\mid}w_{0}^{i-1})}

困惑度,即模型編碼數(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ò)一般可表示為:

y =V\cdot{f(U{\cdot}x + b)} + M{\cdot}x + d

其中,U\in\mathbb{R}^{n_h\times{n_i}}V\in\mathbb{R}^{n_o\times{n_h}}為權(quán)重矩陣,n_i為輸入層的節(jié)點(diǎn)數(shù), n_h為隱層的節(jié)點(diǎn)數(shù),n_o輸出層的節(jié)點(diǎn)數(shù),在語(yǔ)言模型中等于詞典的大小,M\in\mathbb{R}^{n_o\times{n_i}}為直接連接輸入層與輸出層的權(quán)重矩陣,b\in\mathbb{R}^{n_h}d\in\mathbb{R}^{n_o}分別為隱層和輸出層的偏置項(xiàng),y為輸出向量,f(\cdot)為激活函數(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模型相似的方法處理上文信息,只考慮前n-1個(gè)詞,則當(dāng)前詞的條件概率近似地表示為:

p(w_t|w_0^{t-1}) \approx p(w_t|w_{t-n+1}^{t-1})

此處,又引入了另一個(gè)假設(shè),即當(dāng)前詞只依賴于前n-1個(gè)詞。

圖1 前向神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型

? ? ? ?建立語(yǔ)言模型的首要工作是從訓(xùn)練數(shù)據(jù)集中構(gòu)建詞典\mathcal{V},并為每個(gè)詞賦予唯一的索引,然后構(gòu)建特征矩陣\mathcal{C}\in\mathbb{R}^{k{\times}m},其中k為詞典的大小,m為特征向量的大小。特征矩陣\mathcal{C}的每行為對(duì)應(yīng)詞的特性向量,即詞向量,通過(guò)詞的索引進(jìn)行查找。當(dāng)對(duì)當(dāng)前詞w_t進(jìn)行預(yù)測(cè)時(shí),取其前n-1個(gè)詞的詞向量,并按照序列順序進(jìn)行拼接,形成模型的輸入向量x_{t-1}\in\mathbb{R}^{n_i},其中n_i = (n-1){\times}m。模型的輸出y\in\mathbb{R}^{k}為當(dāng)前上文信息下,詞典中各個(gè)詞的非歸一化的條件概率,需要采用Softmax函數(shù)對(duì)輸出概率進(jìn)行歸一化,即:

p(v_i|w_{t-n+1}^{t-1}) = \frac{e^{y(v_{i},w_{t-n+1}^{t-1})}}{\sum_{j=1}^{k}e^{y(v_{j},w_{t-n+1}^{t-1})}}, i = 1, 2, ..., k

? ? ? ?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)可以表示為:

\begin{eqnarray} s_t &=& f(U{\cdot}x_t + W{\cdot}s_{t-1} + b) \\ y_t &=& V{\cdot}s_t + M{\cdot}x_t + d \end{eqnarray}

其中,W\in\mathbb{R}^{n_h{\times}n_h}為權(quán)重矩陣,s_t\in\mathbb{R}^{n_h}t時(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所示。

圖2 循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型

? ? ? ?循環(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)可表示為:

\begin{eqnarray} i_t &=& \sigma(U_i{\cdot}x_t + W_i{\cdot}s_{t-1} + V_i{\cdot}c_{t-1} + b_i) \\ f_t &=& \sigma(U_f{\cdot}x_t + W_f{\cdot}s_{t-1} + V_f{\cdot}c_{t-1} + b_f) \\ g_t &=& f(U{\cdot}x_t + W{\cdot}s_{t-1} + V{\cdot}c_{t-1} + b) \\ c_t &=& f_t * c_{t-1} + i_t * g_t \\ o_t &=& \sigma(U_o{\cdot}x_t + W_o{\cdot}s_{t-1} + V_o{\cdot}c_{t} + b_o) \\ s_t &=& o_t * f(c_t) \\ y_t &=& V{\cdot}s_t +M{\cdot}x_t + d \end{eqnarray}
其中,i_t,f_t,o_t\in\mathbb{R}^{n_h}分別為輸入門、遺忘門和輸出門,c_t\in\mathbb{R}^{n_h}為內(nèi)部記憶單元,U_iU_f,U_i, U\in\mathbb{R}^{n_h\times{n_i}},W_i,W_f,W_o,W\in\mathbb{R}^{n_h\times{n_h}},V_i,V_f,V_o,V\in\mathbb{R}^{n_h\times{n_h}},M\in\mathbb{R}^{n_o\times{n_i}}均是權(quán)重矩陣,b_ib_f,b_o,b\in\mathbb{R}^{n_h}d\in\mathbb{R}^{n_o}為偏置項(xiàng),f(\cdot)為隱層的激活函數(shù),\sigma(\cdot)門限單元的激活函數(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)可以表示為:
\begin{eqnarray} r_t &=& \sigma(U_r{\cdot}x_t + W_r{\cdot}s_{t-1} + b_r) \\ z_t &=& \sigma(U_z{\cdot}x_t + W_z{\cdot}s_{t-1} + b_z) \\ g_t &=& f(U{\cdot}x_t + W{\cdot}(r_t * s_{t-1}) + b) \\ s_t &=& z_t * s_{t-1} + (1 - z_t) * g_t \\ y_t &=& V{\cdot}s_t +M{\cdot}x_t + d \end{eqnarray}
其中,r_t\in\mathbb{R}^{n_h}為重置門,z_t\in\mathbb{R}^{n_h}為更新門,U_r,U_z,U\in\mathbb{R}^{n_h\times{n_i}}W_r,W_z,W\in\mathbb{R}^{n_h\times{n_h}},V\in\mathbb{R}^{n_h\times{n_h}},M\in\mathbb{R}^{n_o\times{n_i}}均為權(quán)重矩陣,b_r,b_z,b\in\mathbb{R}^{n_h}d\in\mathbb{R}^{n_o}為偏置項(xiàng),f(\cdot)為隱層的激活函數(shù),\sigma(\cdot)門限單元的激活函數(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所示。

圖3 卷積神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型

? ? ? ?與上述的神經(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)前詞w_t進(jìn)行預(yù)測(cè)時(shí),將上文詞序列的詞向量按順序進(jìn)行拼接,形成特征矩陣\mathcal{F}\in\mathbb{R}^{m{\times}t}。卷積核的高度與向量的大小一致,需要設(shè)計(jì)多種寬度的卷積核,并且相同尺寸的卷積核可以有多個(gè),然后在特征矩陣\mathcal{F}上進(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))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容