<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          統(tǒng)計語言模型淺談

          共 14006字,需瀏覽 29分鐘

           ·

          2017-06-07 23:29

          統(tǒng)計語言模型淺談從屬于筆者的程序猿的數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)實(shí)戰(zhàn)手冊,其他相關(guān)閱讀Python語法速覽與機(jī)器學(xué)習(xí)開發(fā)環(huán)境搭建,Scikit-Learn 備忘錄,基于 Gensim 的 Word2Vec 實(shí)踐。

          統(tǒng)計語言模型
          統(tǒng)計語言模型(Statistical Language Model)即是用來描述詞、語句乃至于整個文檔這些不同的語法單元的概率分布的模型,能夠用于衡量某句話或者詞序列是否符合所處語言環(huán)境下人們?nèi)粘5男形恼f話方式。統(tǒng)計語言模型對于復(fù)雜的大規(guī)模自然語言處理應(yīng)用有著非常重要的價值,它能夠有助于提取出自然語言中的內(nèi)在規(guī)律從而提高語音識別、機(jī)器翻譯、文檔分類、光學(xué)字符識別等自然語言應(yīng)用的表現(xiàn)。好的統(tǒng)計語言模型需要依賴大量的訓(xùn)練數(shù)據(jù),在上世紀(jì)七八十年代,基本上模型的表現(xiàn)優(yōu)劣往往會取決于該領(lǐng)域數(shù)據(jù)的豐富程度。IBM 曾進(jìn)行過一次信息檢索評測,發(fā)現(xiàn)二元語法模型(Bi-gram)需要數(shù)以億計的詞匯才能達(dá)到最優(yōu)表現(xiàn),而三元語法模型(TriGram)則需要數(shù)十億級別的詞匯才能達(dá)成飽和。本世紀(jì)初,最流行的統(tǒng)計語言模型當(dāng)屬 N-gram,其屬于典型的基于稀疏表示(Sparse Representation)的語言模型;近年來隨著深度學(xué)習(xí)的爆發(fā)與崛起,以詞向量(WordEmbedding)為代表的分布式表示(Distributed Representation)的語言模型取得了更好的效果,并且深刻地影響了自然語言處理領(lǐng)域的其他模型與應(yīng)用的變革。除此之外,Ronald Rosenfeld[7] 還提到了基于決策樹的語言模型(Decision Tree Models)、最大熵模型以及自適應(yīng)語言模型(Adaptive Models)等。
          統(tǒng)計語言模型可以用來表述詞匯序列的統(tǒng)計特性,譬如學(xué)習(xí)序列中單詞的聯(lián)合分布概率函數(shù)。如果我們用w1 到 wt 依次表示這句話中的各個詞,那么該句式的出現(xiàn)概率可以簡單表示為:
          beginequationbeginsplitP(w1,...,wt)=prodti=1P(wi|w1,...,wi?1)=prodti=1P(wi|Context) P(w1,w2,…,wt)=P(w1)timesP(w2|w1)timesP(w3|w1,w2)times…timesP(wt|w1,w2,…,wt?1)endsplitendequation

          統(tǒng)計語言模型訓(xùn)練目標(biāo)也可以是采用極大似然估計來求取最大化的對數(shù)似然,公式為frac1TsumTt=1sum?clejlec,jne0logp(wt+j|wt)。其中c是訓(xùn)練上下文的大小。譬如c取值為 5 的情況下,一次就拿 5 個連續(xù)的詞語進(jìn)行訓(xùn)練。一般來說c越大,效果越好,但是花費(fèi)的時間也會越多。p(wt+j|wt)表示wt條件下出現(xiàn)wt+j的概率。常見的對于某個語言模型度量的標(biāo)準(zhǔn)即是其困惑度(Perplexity),需要注意的是這里的困惑度與信息論中的困惑度并不是相同的含義。這里的困惑度定義公式參考Stolcke[11],為exp(?logP(wt)/|vecw|),即是1/P(wt|wt?11)的幾何平均數(shù)。最小化困惑度的值即是最大化每個單詞的概率,不過困惑度的值嚴(yán)重依賴于詞表以及具體使用的單詞,因此其常常被用作評判其他因素相同的兩個系統(tǒng)而不是通用的絕對性的度量參考。

          N-gram 語言模型
          參照上文的描述,在統(tǒng)計學(xué)語言模型中我們致力于計算某個詞序列E=wT1的出現(xiàn)概率,可以形式化表示為:
          beginequationP(E)=P(|E|=T,wT1)endequation

          上式中我們求取概率的目標(biāo)詞序列E的長度為T,序列中第一個詞為w1,第二個詞為w2,等等,直到最后一個詞為wT。上式非常直觀易懂,不過在真實(shí)環(huán)境下卻是不可行的,因?yàn)樾蛄械拈L度T是未知的,并且詞表中詞的組合方式也是非常龐大的數(shù)目,無法直接求得。為了尋找實(shí)際可行的簡化模型,我們可以將整個詞序列的聯(lián)合概率復(fù)寫為單個詞或者單個詞對的概率連乘。即上述公式可以復(fù)寫為P(w1,w2,w3)=P(w1)P(w2|w1)P(w3|w1,w2),推導(dǎo)到通用詞序列,我們可以得到如下形式化表示:
          beginequationP(E)=prodT+1t=1P(wt|wt?11)endequation

          此時我們已經(jīng)將整個詞序列的聯(lián)合概率分解為近似地求 P(wt|w1,w2,…,wt?1)。而這里要討論的 N-gram 模型就是用 P(wt|wt?n+1,…,wt?1) 近似表示前者。根據(jù)N的取值不同我們又可以分為一元語言模型(Uni-gram)、二元語言模型(Bi-gram)、三元語言模型(Tri-gram)等等類推。該模型在中文中被稱為漢語語言模型(CLM, Chinese Language Model),即在需要把代表字母或筆畫的數(shù)字,或連續(xù)無空格的拼音、筆畫,轉(zhuǎn)換成漢字串(即句子)時,利用上下文中相鄰詞間的搭配信息,計算出最大概率的句子;而不需要用戶手動選擇,避開了許多漢字對應(yīng)一個相同的拼音(或筆畫串、數(shù)字串)的重碼問題。
          一元語言模型又稱為上下文無關(guān)語言模型,是一種簡單易實(shí)現(xiàn)但實(shí)際應(yīng)用價值有限的統(tǒng)計語言模型。該模型不考慮該詞所對應(yīng)的上下文環(huán)境,僅考慮當(dāng)前詞本身的概率,即是 N-gram 模型中當(dāng)N=1的特殊情形。
          beginequationp(wt|Context)=p(wt)=fracNwtNendequation
          N-gram 語言模型也存在一些問題,這種模型無法建模出詞之間的相似度,有時候兩個具有某種相似性的詞,如果一個詞經(jīng)常出現(xiàn)在某段詞之后,那么也許另一個詞出現(xiàn)在這段詞后面的概率也比較大。比如“白色的汽車”經(jīng)常出現(xiàn),那完全可以認(rèn)為“白色的轎車”也可能經(jīng)常出現(xiàn)。N-gram 語言模型無法建模更遠(yuǎn)的關(guān)系,語料的不足使得無法訓(xùn)練更高階的語言模型。大部分研究或工作都是使用 Tri-gram,就算使用高階的模型,其統(tǒng)計 到的概率可信度就大打折扣,還有一些比較小的問題采用 Bi-gram。訓(xùn)練語料里面有些 n 元組沒有出現(xiàn)過,其對應(yīng)的條件概率就是 0,導(dǎo)致計算一整句話的概率為 0。最簡單的計算詞出現(xiàn)概率的方法就是在準(zhǔn)備好的訓(xùn)練集中計算固定長度的詞序列的出現(xiàn)次數(shù),然后除以其所在上下文的次數(shù);譬如以 Bi-gram 為例,我們有下面三條訓(xùn)練數(shù)據(jù):

          i am from jiangsu.
          i study at nanjing university.
          my mother is from yancheng.
          我們可以推導(dǎo)出詞 am, study 分別相對于 i 的后驗(yàn)概率:
          beginequationbeginsplitp(w2=am|w1=i)=fracw1=i,w2=amc(w1=1)=frac12=0.5 p(w2=study|w1=i)=fracw1=i,w2=studyc(w1=1)=frac12=0.5endsplitendequation

          上述的計算過程可以推導(dǎo)為如下的泛化公式:
          beginequationPML(wt|wt?11)=fraccprefix(wt1)cprefix(wt?11)endequation

          這里cprefix(cdot)表示指定字符串在訓(xùn)練集中出現(xiàn)的次數(shù),這種方法也就是所謂的最大似然估計(Maximum Likelihood Estimation);該方法十分簡單易用,同時還能保證較好地利用訓(xùn)練集中的統(tǒng)計特性。根據(jù)這個方法我們同樣可以得出 Tri-gram 模型似然計算公式如下:
          beginequationP(wt|wt?2,wt?1)=fraccount(wt?2wt?1wt)count(wt?2wt?1)endequation

          我們將 N-gram 模型中的參數(shù)記作theta,其包含了給定前n?1個詞時第n個詞出現(xiàn)的概率,形式化表示為:
          beginequationbeginsplitthetawtt?n+1=PML(wt|wt?1t?n+1)=fracc(wtt?n+1)c(wt?1t?n+1)endsplitendequation

          樸素的 N-gram 模型中對于訓(xùn)練集中尚未出現(xiàn)過的詞序列會默認(rèn)其概率為零 ,因?yàn)槲覀兊哪P褪嵌鄠€詞概率的連乘,最終會導(dǎo)致整個句式的概率為零。我們可以通過所謂的平滑技巧來解決這個問題,即組合對于不同的N取值來計算平均概率。譬如我們可以組合 Uni-gram 模型與 Bi-gram 模型:
          beginequationbeginsplitP(wt|wt?1)=(1?alpha)PML(wt|wt?1)+alphaPML(wt)endsplitendequation

          其中alpha表示分配給 Uni-gram 求得的概率的比重,如果我們設(shè)置了alpha>0,那么詞表中的任何詞都會被賦予一定的概率。這種方法即是所謂的插入平滑(Interpolation),被應(yīng)用在了很多低頻稀疏的模型中以保證其魯棒性。當(dāng)然,我們也可以引入更多的N的不同的取值,整個組合概率遞歸定義如下:
          beginequationbeginsplitP(wt|wt?1t?m+1)=(1?alpham)PML(wt|wt?1t?m+1)+alphamP(wt|wt?1t?m+2)endsplitendequation

          [Stanley et al., 1996] 中還介紹了很多其他復(fù)雜但精致的平滑方法,譬如基于上下文的平滑因子計算(Context-dependent Smoothing Coefficients),其并沒有設(shè)置固定的alpha值,而是動態(tài)地設(shè)置為alphawt?1t?m+1。這就保證了模型能夠在有較多的訓(xùn)練樣例時將更多的比重分配給高階的 N-gram 模型,而在訓(xùn)練樣例較少時將更多的比重分配給低階的 N-gram 模型。目前公認(rèn)的使用最為廣泛也最有效的平滑方式也是 [Stanley et al., 1996] 中提出的 Modified Kneser-Ney smoothing( MKN ) 模型,其綜合使用了上下文平滑因子計算、打折以及低階分布修正等手段來保證較準(zhǔn)確地概率估計。

          神經(jīng)網(wǎng)絡(luò)語言模型
          顧名思義,神經(jīng)網(wǎng)絡(luò)語言模型(Neural Network Language Model)即是基于神經(jīng)網(wǎng)絡(luò)的語言模型,其能夠利用神經(jīng)網(wǎng)絡(luò)在非線性擬合方面的能力推導(dǎo)出詞匯或者文本的分布式表示。在神經(jīng)網(wǎng)絡(luò)語言模型中某個單詞的分布式表示會被看做激活神經(jīng)元的向量空間,其區(qū)別于所謂的局部表示,即每次僅有一個神經(jīng)元被激活。標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)語言模型架構(gòu)如下圖所示:

          神經(jīng)網(wǎng)絡(luò)語言模型中最著名的當(dāng)屬 Bengio[10] 中提出的概率前饋神經(jīng)網(wǎng)絡(luò)語言模型(Probabilistic Feedforward Neural Network Language Model),它包含了輸入(Input)、投影(Projection)、隱藏(Hidden)以及輸出(Output)這四層。在輸入層中,會從V個單詞中挑選出N個單詞以下標(biāo)進(jìn)行編碼,其中V是整個詞表的大小。然后輸入層會通過NtimesD這個共享的投影矩陣投射到投影層P;由于同一時刻僅有N個輸入值處于激活狀態(tài),因此這個計算壓力還不是很大。NNLM 模型真正的計算壓力在于投影層與隱層之間的轉(zhuǎn)換,譬如我們選定N=10,那么投影層P的維度在 500 到 2000 之間,而隱層H的維度在于500到1000之間。同時,隱層H還負(fù)責(zé)計算詞表中所有單詞的概率分布,因此輸出層的維度也是V。綜上所述,整個模型的訓(xùn)練復(fù)雜度為:
          Q=NtimesD+NtimesDtimesH+HtimesV
          其訓(xùn)練集為某個巨大但固定的詞匯集合V 中的單詞序列w1...wt;其目標(biāo)函數(shù)為學(xué)習(xí)到一個好的模型f(wt,wt?1,dots,wt?n+2,wt?n+1)=p(wt|wt?11),約束為f(wt,wt?1,dots,wt?n+2,wt?n+1)>0并且Sigma|V|i=1f(i,wt?1,dots,wt?n+2,wt?n+1)=1。每個輸入詞都被映射為一個向量,該映射用C表示,所以C(wt?1)即為wt?1的詞向量。定義g為一個前饋或者遞歸神經(jīng)網(wǎng)絡(luò),其輸出是一個向量,向量中的第i個元素表示概率p(wt=i|wt?11)。訓(xùn)練的目標(biāo)依然是最大似然加正則項(xiàng),即:
          MaxLikelihood=maxfrac1Tsumtlogf(wt,wt?1,dots,wt?n+2,wt?n+1;theta)+R(theta)
          其中theta為參數(shù),R(theta)為正則項(xiàng),輸出層采用sofamax函數(shù):
          p(wt|wt?1,dots,wt?n+2,wt?n+1)=fraceywtsumieyi
          其中yi是每個輸出詞i的未歸一化log概率,計算公式為y=b+Wx+Utanh(d+Hx)。其中b,W,U,d,H都是參數(shù),x為輸入,需要注意的是,一般的神經(jīng)網(wǎng)絡(luò)輸入是不需要優(yōu)化,而在這里,x=(C(wt?1),C(wt?2),dots,C(wt?n+1)),也是需要優(yōu)化的參數(shù)。在圖中,如果下層原始輸入x不直接連到輸出的話,可以令b=0,W=0。如果采用隨機(jī)梯度算法的話,梯度的更新規(guī)則為:
          theta+epsilonfracpartiallogp(wt|wt?1,dots,wt?n+2,wt?n+1)partialthetatotheta

          其中epsilon為學(xué)習(xí)速率,需要注意的是,一般神經(jīng)網(wǎng)絡(luò)的輸入層只是一個輸入值,而在這里,輸入層x也是參數(shù)(存在C中),也是需要優(yōu)化的。優(yōu)化結(jié)束之后,詞向量有了,語言模型也有了。這個 Softmax 模型使得概率取值為(0,1),因此不會出現(xiàn)概率為0的情況,也就是自帶平滑,無需傳統(tǒng) N-gram 模型中那些復(fù)雜的平滑算法。Bengio 在 APNews 數(shù)據(jù)集上做的對比實(shí)驗(yàn)也表明他的模型效果比精心設(shè)計平滑算法的普通 N-gram 算法要好10%到20%。

          循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型
          好的語言模型應(yīng)當(dāng)至少捕獲自然語言的兩個特征:語法特性與語義特性。為了保證語法的正確性,我們往往只需要考慮生成詞的前置上下文;這也就意味著語法特性往往是屬于局部特性。而語義的一致性則復(fù)雜了許多,我們需要考慮大量的乃至于整個文檔語料集的上下文信息來獲取正確的全局語義。神經(jīng)網(wǎng)絡(luò)語言模型相較于經(jīng)典的 N-gram 模型具有更強(qiáng)大的表現(xiàn)力與更好的泛化能力,不過傳統(tǒng)的 N-gram 語言模型與 [Bengio et al., 2003] 中提出的神經(jīng)網(wǎng)絡(luò)語言模型都不能有效地捕獲全局語義信息。為了解決這個問題,[Mikolov et al., 2010; 2011] 中提出的基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的語言模型使用了隱狀態(tài)來記錄詞序的歷史信息,其能夠捕獲語言中的長程依賴。在自然語言中,往往在句式中相隔較遠(yuǎn)的兩個詞卻具備一定的語法與語義關(guān)聯(lián),譬如He doesn't have very much confidence in himself 與 She doesn't have very much confidence in herself 這兩句話中的這兩個詞對,盡管句子中間的詞可能會發(fā)生變化,但是這兩種詞對中兩個詞之間的關(guān)聯(lián)卻是固定的。這種依賴也不僅僅出現(xiàn)在英語中,在漢語、俄羅斯語中也都存在有大量此類型的詞對組合。而另一種長期依賴(Long-term Dependencies)的典型就是所謂的選擇限制(Selectional Preferences);簡而言之,選擇限制主要基于已知的某人會去做某事這樣的信息。譬如我要用叉子吃沙拉與我要和我的朋友一起吃沙拉這兩句話中,叉子指代的是某種工具,而我的朋友則是伴侶的意思。如果有人說我要用雙肩背包來吃沙拉就覺得很奇怪了,雙肩背包并不是工具也不是伴侶;如果我們破壞了這種選擇限制就會生成大量的無意義句子。最后,某個句式或者文檔往往都會歸屬于某個主題下,如果我們在某個技術(shù)主題的文檔中突然發(fā)現(xiàn)了某個關(guān)于體育的句子,肯定會覺得很奇怪,這也就是所謂的破壞了主題一致性。

          [Eriguchi et al., 2016] 中介紹的循環(huán)神經(jīng)網(wǎng)絡(luò)在機(jī)器翻譯上的應(yīng)用就很值得借鑒,它能夠有效地處理這種所謂長期依賴的問題。它的思想精髓在于計算新的隱狀態(tài)vech時引入某個之前的隱狀態(tài)vecht?1,形式化表述如下:
          Misplaced &

          我們可以看出,在tgeq1時其與標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中隱層計算公式的區(qū)別在于多了一個連接Whhvecht?1,該連接源于前一個時間點(diǎn)的隱狀態(tài)。在對于 RNN 有了基本的了解之后,我們就可以將其直接引入語言模型的構(gòu)建中,即對于上文討論的神經(jīng)網(wǎng)絡(luò)語言模型添加新的循環(huán)連接:
          Misplaced &

          注意,與上文介紹的前饋神經(jīng)網(wǎng)絡(luò)語言模型相對,循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型中只是將前一個詞而不是前兩個詞作為輸入;這是因?yàn)槲覀兗僭O(shè)wt?2的信息已經(jīng)包含在了隱狀態(tài)vecht?1中,因此不需要重復(fù)代入。統(tǒng)計語言模型淺談從屬于筆者的程序猿的數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)實(shí)戰(zhàn)手冊,其他相關(guān)閱讀Python語法速覽與機(jī)器學(xué)習(xí)開發(fā)環(huán)境搭建,Scikit-Learn 備忘錄,基于 Gensim 的 Word2Vec 實(shí)踐。

          統(tǒng)計語言模型
          統(tǒng)計語言模型(Statistical Language Model)即是用來描述詞、語句乃至于整個文檔這些不同的語法單元的概率分布的模型,能夠用于衡量某句話或者詞序列是否符合所處語言環(huán)境下人們?nèi)粘5男形恼f話方式。統(tǒng)計語言模型對于復(fù)雜的大規(guī)模自然語言處理應(yīng)用有著非常重要的價值,它能夠有助于提取出自然語言中的內(nèi)在規(guī)律從而提高語音識別、機(jī)器翻譯、文檔分類、光學(xué)字符識別等自然語言應(yīng)用的表現(xiàn)。好的統(tǒng)計語言模型需要依賴大量的訓(xùn)練數(shù)據(jù),在上世紀(jì)七八十年代,基本上模型的表現(xiàn)優(yōu)劣往往會取決于該領(lǐng)域數(shù)據(jù)的豐富程度。IBM 曾進(jìn)行過一次信息檢索評測,發(fā)現(xiàn)二元語法模型(Bi-gram)需要數(shù)以億計的詞匯才能達(dá)到最優(yōu)表現(xiàn),而三元語法模型(TriGram)則需要數(shù)十億級別的詞匯才能達(dá)成飽和。本世紀(jì)初,最流行的統(tǒng)計語言模型當(dāng)屬 N-gram,其屬于典型的基于稀疏表示(Sparse Representation)的語言模型;近年來隨著深度學(xué)習(xí)的爆發(fā)與崛起,以詞向量(WordEmbedding)為代表的分布式表示(Distributed Representation)的語言模型取得了更好的效果,并且深刻地影響了自然語言處理領(lǐng)域的其他模型與應(yīng)用的變革。除此之外,Ronald Rosenfeld[7] 還提到了基于決策樹的語言模型(Decision Tree Models)、最大熵模型以及自適應(yīng)語言模型(Adaptive Models)等。
          統(tǒng)計語言模型可以用來表述詞匯序列的統(tǒng)計特性,譬如學(xué)習(xí)序列中單詞的聯(lián)合分布概率函數(shù)。如果我們用w1 到 wt 依次表示這句話中的各個詞,那么該句式的出現(xiàn)概率可以簡單表示為:
          beginequationbeginsplitP(w1,...,wt)=prodti=1P(wi|w1,...,wi?1)=prodti=1P(wi|Context) P(w1,w2,…,wt)=P(w1)timesP(w2|w1)timesP(w3|w1,w2)times…timesP(wt|w1,w2,…,wt?1)endsplitendequation

          統(tǒng)計語言模型訓(xùn)練目標(biāo)也可以是采用極大似然估計來求取最大化的對數(shù)似然,公式為frac1TsumTt=1sum?clejlec,jne0logp(wt+j|wt)。其中c是訓(xùn)練上下文的大小。譬如c取值為 5 的情況下,一次就拿 5 個連續(xù)的詞語進(jìn)行訓(xùn)練。一般來說c越大,效果越好,但是花費(fèi)的時間也會越多。p(wt+j|wt)表示wt條件下出現(xiàn)wt+j的概率。常見的對于某個語言模型度量的標(biāo)準(zhǔn)即是其困惑度(Perplexity),需要注意的是這里的困惑度與信息論中的困惑度并不是相同的含義。這里的困惑度定義公式參考Stolcke[11],為exp(?logP(wt)/|vecw|),即是1/P(wt|wt?11)的幾何平均數(shù)。最小化困惑度的值即是最大化每個單詞的概率,不過困惑度的值嚴(yán)重依賴于詞表以及具體使用的單詞,因此其常常被用作評判其他因素相同的兩個系統(tǒng)而不是通用的絕對性的度量參考。

          N-gram 語言模型
          參照上文的描述,在統(tǒng)計學(xué)語言模型中我們致力于計算某個詞序列E=wT1的出現(xiàn)概率,可以形式化表示為:
          beginequationP(E)=P(|E|=T,wT1)endequation

          上式中我們求取概率的目標(biāo)詞序列E的長度為T,序列中第一個詞為w1,第二個詞為w2,等等,直到最后一個詞為wT。上式非常直觀易懂,不過在真實(shí)環(huán)境下卻是不可行的,因?yàn)樾蛄械拈L度T是未知的,并且詞表中詞的組合方式也是非常龐大的數(shù)目,無法直接求得。為了尋找實(shí)際可行的簡化模型,我們可以將整個詞序列的聯(lián)合概率復(fù)寫為單個詞或者單個詞對的概率連乘。即上述公式可以復(fù)寫為P(w1,w2,w3)=P(w1)P(w2|w1)P(w3|w1,w2),推導(dǎo)到通用詞序列,我們可以得到如下形式化表示:
          beginequationP(E)=prodT+1t=1P(wt|wt?11)endequation

          此時我們已經(jīng)將整個詞序列的聯(lián)合概率分解為近似地求 P(wt|w1,w2,…,wt?1)。而這里要討論的 N-gram 模型就是用 P(wt|wt?n+1,…,wt?1) 近似表示前者。根據(jù)N的取值不同我們又可以分為一元語言模型(Uni-gram)、二元語言模型(Bi-gram)、三元語言模型(Tri-gram)等等類推。該模型在中文中被稱為漢語語言模型(CLM, Chinese Language Model),即在需要把代表字母或筆畫的數(shù)字,或連續(xù)無空格的拼音、筆畫,轉(zhuǎn)換成漢字串(即句子)時,利用上下文中相鄰詞間的搭配信息,計算出最大概率的句子;而不需要用戶手動選擇,避開了許多漢字對應(yīng)一個相同的拼音(或筆畫串、數(shù)字串)的重碼問題。
          一元語言模型又稱為上下文無關(guān)語言模型,是一種簡單易實(shí)現(xiàn)但實(shí)際應(yīng)用價值有限的統(tǒng)計語言模型。該模型不考慮該詞所對應(yīng)的上下文環(huán)境,僅考慮當(dāng)前詞本身的概率,即是 N-gram 模型中當(dāng)N=1的特殊情形。
          beginequationp(wt|Context)=p(wt)=fracNwtNendequation
          N-gram 語言模型也存在一些問題,這種模型無法建模出詞之間的相似度,有時候兩個具有某種相似性的詞,如果一個詞經(jīng)常出現(xiàn)在某段詞之后,那么也許另一個詞出現(xiàn)在這段詞后面的概率也比較大。比如“白色的汽車”經(jīng)常出現(xiàn),那完全可以認(rèn)為“白色的轎車”也可能經(jīng)常出現(xiàn)。N-gram 語言模型無法建模更遠(yuǎn)的關(guān)系,語料的不足使得無法訓(xùn)練更高階的語言模型。大部分研究或工作都是使用 Tri-gram,就算使用高階的模型,其統(tǒng)計 到的概率可信度就大打折扣,還有一些比較小的問題采用 Bi-gram。訓(xùn)練語料里面有些 n 元組沒有出現(xiàn)過,其對應(yīng)的條件概率就是 0,導(dǎo)致計算一整句話的概率為 0。最簡單的計算詞出現(xiàn)概率的方法就是在準(zhǔn)備好的訓(xùn)練集中計算固定長度的詞序列的出現(xiàn)次數(shù),然后除以其所在上下文的次數(shù);譬如以 Bi-gram 為例,我們有下面三條訓(xùn)練數(shù)據(jù):

          i am from jiangsu.
          i study at nanjing university.
          my mother is from yancheng.
          我們可以推導(dǎo)出詞 am, study 分別相對于 i 的后驗(yàn)概率:
          beginequationbeginsplitp(w2=am|w1=i)=fracw1=i,w2=amc(w1=1)=frac12=0.5 p(w2=study|w1=i)=fracw1=i,w2=studyc(w1=1)=frac12=0.5endsplitendequation

          上述的計算過程可以推導(dǎo)為如下的泛化公式:
          beginequationPML(wt|wt?11)=fraccprefix(wt1)cprefix(wt?11)endequation

          這里cprefix(cdot)表示指定字符串在訓(xùn)練集中出現(xiàn)的次數(shù),這種方法也就是所謂的最大似然估計(Maximum Likelihood Estimation);該方法十分簡單易用,同時還能保證較好地利用訓(xùn)練集中的統(tǒng)計特性。根據(jù)這個方法我們同樣可以得出 Tri-gram 模型似然計算公式如下:
          beginequationP(wt|wt?2,wt?1)=fraccount(wt?2wt?1wt)count(wt?2wt?1)endequation

          我們將 N-gram 模型中的參數(shù)記作theta,其包含了給定前n?1個詞時第n個詞出現(xiàn)的概率,形式化表示為:
          beginequationbeginsplitthetawtt?n+1=PML(wt|wt?1t?n+1)=fracc(wtt?n+1)c(wt?1t?n+1)endsplitendequation

          樸素的 N-gram 模型中對于訓(xùn)練集中尚未出現(xiàn)過的詞序列會默認(rèn)其概率為零 ,因?yàn)槲覀兊哪P褪嵌鄠€詞概率的連乘,最終會導(dǎo)致整個句式的概率為零。我們可以通過所謂的平滑技巧來解決這個問題,即組合對于不同的N取值來計算平均概率。譬如我們可以組合 Uni-gram 模型與 Bi-gram 模型:
          beginequationbeginsplitP(wt|wt?1)=(1?alpha)PML(wt|wt?1)+alphaPML(wt)endsplitendequation

          其中alpha表示分配給 Uni-gram 求得的概率的比重,如果我們設(shè)置了alpha>0,那么詞表中的任何詞都會被賦予一定的概率。這種方法即是所謂的插入平滑(Interpolation),被應(yīng)用在了很多低頻稀疏的模型中以保證其魯棒性。當(dāng)然,我們也可以引入更多的N的不同的取值,整個組合概率遞歸定義如下:
          beginequationbeginsplitP(wt|wt?1t?m+1)=(1?alpham)PML(wt|wt?1t?m+1)+alphamP(wt|wt?1t?m+2)endsplitendequation

          [Stanley et al., 1996] 中還介紹了很多其他復(fù)雜但精致的平滑方法,譬如基于上下文的平滑因子計算(Context-dependent Smoothing Coefficients),其并沒有設(shè)置固定的alpha值,而是動態(tài)地設(shè)置為alphawt?1t?m+1。這就保證了模型能夠在有較多的訓(xùn)練樣例時將更多的比重分配給高階的 N-gram 模型,而在訓(xùn)練樣例較少時將更多的比重分配給低階的 N-gram 模型。目前公認(rèn)的使用最為廣泛也最有效的平滑方式也是 [Stanley et al., 1996] 中提出的 Modified Kneser-Ney smoothing( MKN ) 模型,其綜合使用了上下文平滑因子計算、打折以及低階分布修正等手段來保證較準(zhǔn)確地概率估計。

          神經(jīng)網(wǎng)絡(luò)語言模型
          顧名思義,神經(jīng)網(wǎng)絡(luò)語言模型(Neural Network Language Model)即是基于神經(jīng)網(wǎng)絡(luò)的語言模型,其能夠利用神經(jīng)網(wǎng)絡(luò)在非線性擬合方面的能力推導(dǎo)出詞匯或者文本的分布式表示。在神經(jīng)網(wǎng)絡(luò)語言模型中某個單詞的分布式表示會被看做激活神經(jīng)元的向量空間,其區(qū)別于所謂的局部表示,即每次僅有一個神經(jīng)元被激活。標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)語言模型架構(gòu)如下圖所示:

          神經(jīng)網(wǎng)絡(luò)語言模型中最著名的當(dāng)屬 Bengio[10] 中提出的概率前饋神經(jīng)網(wǎng)絡(luò)語言模型(Probabilistic Feedforward Neural Network Language Model),它包含了輸入(Input)、投影(Projection)、隱藏(Hidden)以及輸出(Output)這四層。在輸入層中,會從V個單詞中挑選出N個單詞以下標(biāo)進(jìn)行編碼,其中V是整個詞表的大小。然后輸入層會通過NtimesD這個共享的投影矩陣投射到投影層P;由于同一時刻僅有N個輸入值處于激活狀態(tài),因此這個計算壓力還不是很大。NNLM 模型真正的計算壓力在于投影層與隱層之間的轉(zhuǎn)換,譬如我們選定N=10,那么投影層P的維度在 500 到 2000 之間,而隱層H的維度在于500到1000之間。同時,隱層H還負(fù)責(zé)計算詞表中所有單詞的概率分布,因此輸出層的維度也是V。綜上所述,整個模型的訓(xùn)練復(fù)雜度為:
          Q=NtimesD+NtimesDtimesH+HtimesV
          其訓(xùn)練集為某個巨大但固定的詞匯集合V 中的單詞序列w1...wt;其目標(biāo)函數(shù)為學(xué)習(xí)到一個好的模型f(wt,wt?1,dots,wt?n+2,wt?n+1)=p(wt|wt?11),約束為f(wt,wt?1,dots,wt?n+2,wt?n+1)>0并且Sigma|V|i=1f(i,wt?1,dots,wt?n+2,wt?n+1)=1。每個輸入詞都被映射為一個向量,該映射用C表示,所以C(wt?1)即為wt?1的詞向量。定義g為一個前饋或者遞歸神經(jīng)網(wǎng)絡(luò),其輸出是一個向量,向量中的第i個元素表示概率p(wt=i|wt?11)。訓(xùn)練的目標(biāo)依然是最大似然加正則項(xiàng),即:
          MaxLikelihood=maxfrac1Tsumtlogf(wt,wt?1,dots,wt?n+2,wt?n+1;theta)+R(theta)
          其中theta為參數(shù),R(theta)為正則項(xiàng),輸出層采用sofamax函數(shù):
          p(wt|wt?1,dots,wt?n+2,wt?n+1)=fraceywtsumieyi
          其中yi是每個輸出詞i的未歸一化log概率,計算公式為y=b+Wx+Utanh(d+Hx)。其中b,W,U,d,H都是參數(shù),x為輸入,需要注意的是,一般的神經(jīng)網(wǎng)絡(luò)輸入是不需要優(yōu)化,而在這里,x=(C(wt?1),C(wt?2),dots,C(wt?n+1)),也是需要優(yōu)化的參數(shù)。在圖中,如果下層原始輸入x不直接連到輸出的話,可以令b=0,W=0。如果采用隨機(jī)梯度算法的話,梯度的更新規(guī)則為:
          theta+epsilonfracpartiallogp(wt|wt?1,dots,wt?n+2,wt?n+1)partialthetatotheta

          其中epsilon為學(xué)習(xí)速率,需要注意的是,一般神經(jīng)網(wǎng)絡(luò)的輸入層只是一個輸入值,而在這里,輸入層x也是參數(shù)(存在C中),也是需要優(yōu)化的。優(yōu)化結(jié)束之后,詞向量有了,語言模型也有了。這個 Softmax 模型使得概率取值為(0,1),因此不會出現(xiàn)概率為0的情況,也就是自帶平滑,無需傳統(tǒng) N-gram 模型中那些復(fù)雜的平滑算法。Bengio 在 APNews 數(shù)據(jù)集上做的對比實(shí)驗(yàn)也表明他的模型效果比精心設(shè)計平滑算法的普通 N-gram 算法要好10%到20%。

          循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型
          好的語言模型應(yīng)當(dāng)至少捕獲自然語言的兩個特征:語法特性與語義特性。為了保證語法的正確性,我們往往只需要考慮生成詞的前置上下文;這也就意味著語法特性往往是屬于局部特性。而語義的一致性則復(fù)雜了許多,我們需要考慮大量的乃至于整個文檔語料集的上下文信息來獲取正確的全局語義。神經(jīng)網(wǎng)絡(luò)語言模型相較于經(jīng)典的 N-gram 模型具有更強(qiáng)大的表現(xiàn)力與更好的泛化能力,不過傳統(tǒng)的 N-gram 語言模型與 [Bengio et al., 2003] 中提出的神經(jīng)網(wǎng)絡(luò)語言模型都不能有效地捕獲全局語義信息。為了解決這個問題,[Mikolov et al., 2010; 2011] 中提出的基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的語言模型使用了隱狀態(tài)來記錄詞序的歷史信息,其能夠捕獲語言中的長程依賴。在自然語言中,往往在句式中相隔較遠(yuǎn)的兩個詞卻具備一定的語法與語義關(guān)聯(lián),譬如He doesn't have very much confidence in himself 與 She doesn't have very much confidence in herself 這兩句話中的這兩個詞對,盡管句子中間的詞可能會發(fā)生變化,但是這兩種詞對中兩個詞之間的關(guān)聯(lián)卻是固定的。這種依賴也不僅僅出現(xiàn)在英語中,在漢語、俄羅斯語中也都存在有大量此類型的詞對組合。而另一種長期依賴(Long-term Dependencies)的典型就是所謂的選擇限制(Selectional Preferences);簡而言之,選擇限制主要基于已知的某人會去做某事這樣的信息。譬如我要用叉子吃沙拉與我要和我的朋友一起吃沙拉這兩句話中,叉子指代的是某種工具,而我的朋友則是伴侶的意思。如果有人說我要用雙肩背包來吃沙拉就覺得很奇怪了,雙肩背包并不是工具也不是伴侶;如果我們破壞了這種選擇限制就會生成大量的無意義句子。最后,某個句式或者文檔往往都會歸屬于某個主題下,如果我們在某個技術(shù)主題的文檔中突然發(fā)現(xiàn)了某個關(guān)于體育的句子,肯定會覺得很奇怪,這也就是所謂的破壞了主題一致性。

          [Eriguchi et al., 2016] 中介紹的循環(huán)神經(jīng)網(wǎng)絡(luò)在機(jī)器翻譯上的應(yīng)用就很值得借鑒,它能夠有效地處理這種所謂長期依賴的問題。它的思想精髓在于計算新的隱狀態(tài)vech時引入某個之前的隱狀態(tài)vecht?1,形式化表述如下:
          Misplaced &

          我們可以看出,在tgeq1時其與標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中隱層計算公式的區(qū)別在于多了一個連接Whhvecht?1,該連接源于前一個時間點(diǎn)的隱狀態(tài)。在對于 RNN 有了基本的了解之后,我們就可以將其直接引入語言模型的構(gòu)建中,即對于上文討論的神經(jīng)網(wǎng)絡(luò)語言模型添加新的循環(huán)連接:
          Misplaced &

          注意,與上文介紹的前饋神經(jīng)網(wǎng)絡(luò)語言模型相對,循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型中只是將前一個詞而不是前兩個詞作為輸入;這是因?yàn)槲覀兗僭O(shè)wt?2的信息已經(jīng)包含在了隱狀態(tài)vecht?1中,因此不需要重復(fù)代入。

          瀏覽 52
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区欧美精品 | 色三区| 黄色视频在线观看日本极品尤物 | 黄片草壁视频 | 国产精品福利视频在线 |