1. 程式人生 > >語言模型

語言模型

splay 進行 mar 長時間 直接 排序 訓練 nbsp egg

一、什麽是語言模型

  假設,對於一個觀測值:“yuyanmoxing”,可能是由“語言模型”、“寓言模型”、“語言魔性” ... 等得到的,但是要想得到究竟是哪一個,通常需要計算它們的概率,譬如:P("語言模型"|"yuyanmoxing") > P("寓言模型"|"yuyanmoxing") > ... ,(P(I|O)),則可以確定為“語言模型”。如何對這個概率進行計算呢?從數學的角度來看:

技術分享圖片

技術分享圖片

  如果我們直接用第一種方法,即為判別式模型,如果用第二種方法,即為生成式模型。當采用生成式模型的話,需要計算這個語句序列出現的概率即為P(I)的概率,如何計算P(I)的概率呢?

  計算一個文本序列w = { w1 ,w2 ... wn}的概率,需要知道他們之間的關系,我們對這個關系的建模即為語言模型。

二、統計語言模型

  1.1 統計語言模型

  要計算一個語言序列的概率,關鍵是看這些詞的排序的關系,我們可以利用馬爾科夫假設,即當前詞只與當前n-1個詞有關。譬如,對於序列種一個詞wi,我們需要知道w1w2 ... wi-1出現時,wi發生的概率。然後根據聯合概率公式即可得到句子的概率。假設句子為S,p(S)=p(w1,w2,w3,w4,w5,…,wn) =p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)。

  在實際操作中,如果文本較長,則p(wn|w1,w2,...,wn-1)的計算是很困難的,假設P個詞,則需要計算的概率有Pn個,作比較得到最大的。因此,推出了n-gram模型。 當n取1、2、3時,n-gram模型分別稱為unigram、bigram和trigram語言模型。

模型的參數估計也稱為模型的訓練,一般采用最大似然估計(Maximum Likelihood Estimation,MLE)的方法對模型的參數進行估計:

技術分享圖片

  C(X)表示X在訓練語料中出現的次數。如給定句子:

  如給定句子集“<s> I am Sam </s>

   <s> Sam I am </s>

   <s> I do not like green eggs and ham </s>”

技術分享圖片

  1.2 bigram與HMM

  HMM就是bigram語言模型,可以利用HMM的學習問題、概率計算問題、預測問題來解決相關的問題。當然也可以通過上面利用MLE進行估計等進行計算。參考:https://www.cnblogs.com/pinking/p/8531405.html

三、神將網絡語言模型

  n-gram模型將詞看作符號,不能很好的計算詞與詞之間的內在聯系,泛化能力較差,後得到神將網絡模型(Neural n-gram),通過對樣本進行訓練獲得計算概率的模型,而不是通過統計的方法求概率,如圖:

技術分享圖片

  神經網絡模型的架構如圖,輸入為n-1個詞的one-hot向量,包含一個隱層,神經網絡的輸出為softmax後每個詞出現的概率,然後根據真實語料庫種真實的下一個詞的one-hot向量通過最小化交叉熵訓練模型。

  neural n-gram模型可以捕獲詞之間的關系,但是利用的詞有限,只能利用前n-1個詞,無法捕獲長期依賴,模型效果與n的選擇有關。

四、循環神經網絡語言模型

  RNN模型可以捕獲更長時間的信息,對於語料庫的單詞進行one-hot編碼,增加句子開始/結束標誌,其主要過程為:

技術分享圖片

  如上神經網絡的輸出w4即為,P(w4|w1,w2,w3),若要得到一個序列的概率,將上面輸出進行連乘即可。

語言模型