1. 程式人生 > >NLP:NLM-神經語言模型

NLP:NLM-神經語言模型

文章:自然語言處理模型;經過幾天對nlp的理解,接下來我們說說語言模型,下面還是以PPT方式給出。

一、統計語言模型  

1、什麼是統計語言模型?
一個語言模型通常構建為字串s的概率分佈p(s),這裡的p(s)實際上反映的是s作為一個句子出現的概率。

這裡的概率指的是組成字串的這個組合,在訓練語料中出現的似然,與句子是否合乎語法無關。假設訓練語料來自於人類的語言,那麼可以認為這個概率是的是一句話是否是人話的概率。

2、怎麼建立統計語言模型?
對於一個由T個詞按順序構成的句子,p(s)實際上求解的是字串的聯合概率,利用貝葉斯公式,鏈式分解如下:

從上面可以看到,一個統計語言模型可以表示成,給定前面的的詞,求後面一個詞出現的條件概率。

我們在求p(s)時實際上就已經建立了一個模型,這裡的p(*)就是模型的引數,如果這些引數已經求解得到,那麼很容易就能夠得到字串s的概率。

3、求解的問題
假定字串s為“i want to drink some water”,那麼根據上面所建立的模型:

問題歸結為如何求解上面的每一個概率,比如,一種比較直觀的方法就是分別計算出“I want to”和“I want to drink”在語料中出現的頻數,然後再用除法:

看起來好像很美好,實際上這裡存在兩個問題:

(1)自由引數數目:
假定字串中字元全部來自與大小為V的詞典,上述例子中我們需要計算所有的條件概率,對於所有的條件概率,這裡的w都有V種取值,那麼實際上這個模型的自由引數數目量級是V^6,6為字串的長度。

從上面可以看出,模型的自由引數是隨著字串長度的增加而指數級暴增的,這使我們幾乎不可能正確的估計出這些引數。

(2)資料稀疏性:
從上面可以看到,每一個w都具有V種取值,這樣構造出了非常多的詞對,但實際中訓練語料是不會出現這麼多種組合的,那麼依據最大似然估計,最終得到的概率實際是很可能是0。

4、怎麼解決?
上面提出了傳統統計語言模型的兩個問題,後面分別介紹兩種方法進行求解:N-gram語言模型神經概率語言模型

二、N-gram語言模型

1、什麼是N-gram語言模型?
        為了解決自由引數數目過多的問題,引入了馬爾科夫假設:隨意一個詞出現的概率只與它前面出現的有限的n個詞有關。基於上述假設的統計語言模型被稱為N-gram語言模型。

2、如何確定N的取值?
       通常情況下,n的取值不能夠太大,否則自由引數過多的問題依舊存在:

(1)當n=1時,即一個詞的出現與它周圍的詞是獨立,這種我們稱為unigram,也就是一元語言模型,此時自由引數量級是詞典大小V。

(2)當n=2時,即一個詞的出現僅與它前面的一個詞有關時,這種我們稱為bigram,叫二元語言模型,也叫一階馬爾科夫鏈,此時自由引數數量級是V^2。

(3)當n=3時,即一個詞的出現僅與它前面的兩個詞有關,稱為trigram,叫三元語言模型,也叫二階馬爾科夫鏈,此時自由引數數量級是V^3。

一般情況下只使用上述取值,因為從上面可以看出,自由引數的數量級是n取值的指數倍。

從模型的效果來看,理論上n的取值越大,效果越好。但隨著n取值的增加,效果提升的幅度是在下降的。同時還涉及到一個可靠性和可區別性的問題,引數越多,可區別性越好,但同時單個引數的例項變少從而降低了可靠性。

3、建模與求解
N-gram語言模型的求解跟傳統統計語言模型一致,都是求解每一個條件概率的值,簡單計算N元語法在語料中出現的頻率,然後歸一化。

4、平滑化
我們在傳統統計語言模型提出了兩個問題:自由引數數目和資料稀疏,上述N-gram只是解決了第一個問題,而平滑化就是為了解決第二個問題。

假設有一個片語在訓練語料中沒有出現過,那麼它的頻次就為0,但實際上能不能認為它出現的概率為0呢?顯然不可以,我們無法保證訓練語料的完備性。那麼,解決的方法是什麼?如果我們預設每一個片語都出現1次呢,無論片語出現的頻次是多少,都往上加1,這就能夠解決概率為0的問題了。

上述的方法就是加1平滑,也稱為拉普拉斯平滑。參考:理解樸素貝葉斯中的拉普拉斯平滑

平滑化還有許多方法,這裡就不展開介紹了:(1)加法平滑;(2)古德-圖靈平滑;(3)K平滑

三、神經概率語言模型

(    不同於基於類的n-gram模型,神經語言模型在識別兩個相似的詞的基礎上,而不喪失將每個詞編碼為彼此不同的能力。神經語言模型共享一個詞(及其上下文)和其他類似詞(和上下文之間)的統計強度。模型為每個詞學習的分散式表示,允許模型處理具有類似共同特徵的詞來實現這種共享。例如,如果詞dog 和詞cat 對映到具有許多屬性的表示,則包含詞cat 的句子可以告知模型對包含詞dog 的句子做出預測,反之亦然。因為這樣的屬性很多,所以存在許多泛化的方式,可以將資訊從每個訓練語句傳遞到指數數量的語義相關語句。維數災難需要模型泛化到相對句子長度是指數多的句子。該模型通過將每個訓練句子與指數數量的類似句子相關聯克服這個問題。
       我們有時將這些詞表示稱為詞嵌入(word embedding),《DeepLearning》中文版 p.390 )

1、前置知識
在N-gram語言模型中,計算條件概率的方法是簡單的用詞頻做除法然後歸一化。

在機器學習的領域中,通用的做法是:對所考慮的問題建模後先為其構造一個目標函式,然後對這個目標函式進行優化,從而求得一組最優的引數,最後再利用這組引數對應的模型來進行預測。

那麼在上述的語言模型中,利用最大化對數似然,將目標函式設為:

Context代表詞w的上下文,對應N-gram就是詞w的前N-1個詞。之後對目標函式進行最大化,由上可見,概率實際上是w和的函式:

其中θ為待定引數集,這樣將計算所有的條件概率轉化為了最優化目標函式,求解得到θ的過程。通過選取合適模型可以使得θ引數的個數遠小於N-gram模型中引數的個數。

2、什麼是神經概率語言模型?
Begio等人在2003年發表的A Neural Probabilistic Language Model,裡面詳解了這個方法。

基本的思想其實與上述的前置知識有所聯絡,既然是神經概率語言模型,那麼實現的時候自然有一個神經網路,結構圖如下:

它包括了四個層:輸入層、投影層、隱藏層和輸出層。

2、計算流程
(1)輸入層
         這裡就是詞w的上下文,如果用N-gram的方法就是詞w的前n-1個詞了。每一個詞都作為一個長度為V的one-hot向量傳入神經網路中。

(2)投影層
         在投影層中,存在一個look-up表C,C被表示成一個V*m的自由引數矩陣,其中V是詞典的大小,而m作為自定義的引數,一般是10^2的倍數。

        表C中每一行都作為一個詞向量存在,這個詞向量可以理解為每一個詞的另一種分散式表示。每一個one-hot向量都經過表C的轉化變成一個詞向量。

n-1個詞向量首尾相接的拼起來,轉化為(n-1)m的列向量輸入到下一層。

(3)隱藏層、輸出層
 之後再對列向量進行計算,大致如下:

其中tanh是啟用函式,是為歸一化的log概率,之後再用softmax進行歸一化,就得到最終的概率輸出了。

在前置知識中我們提到了引數θ,那麼在神經網路中,實際的引數如下:

        詞向量:v(w),w以及填充向量

        神經網路引數:W,p,U,q

3、最後
在傳統統計語言模型中,我們提出兩個問題:自由引數數目和資料稀疏。

這裡在實際上使用引數θ代替了自由引數指數級的求解,而資料稀疏問題,我們在最後使用softmax進行歸一化,求解出來的概率是平滑的,所以也解決了這個問題。

四、結合n-gram和NLM

         n-gram模型相對神經網路的主要優點是n-gram模型具有更高的模型容量(通過儲存非常多的元組的頻率),並且處理樣本只需非常少的計算量(通過查詢只匹配當前上下文的幾個元組)。如果我們使用雜湊表或樹來訪問計數,那麼用於n-gram的計算量幾乎與容量無關。相比之下,將神經網路的引數數目加倍通常也大致加倍計算時間。避免每次計算時使用所有引數的模型是例外。嵌入層每次只索引單個嵌入,所以我們可以增加詞彙量,而不會增加每個樣本的計算時間。一些其他模型,例如平鋪卷積網路,可以在減少引數共享程度的同時新增引數以保持相同的計算量。然而,基於矩陣乘法的典型神經網路層需要與引數數量成比例的計算量。

        因此,增加容量的一種簡單方法是將兩種方法結合,由神經語言模型和n-gram語言模型組成整合(Bengio et al., 2001b, 2003)。
        對於任何整合,如果整合成員產生獨立的錯誤,這種技術可以減少測試誤差。整合的領域提供了許多方法來組合整合成員的預測包括統一加權和在驗證集上選擇權重。Mikolov et al. (2011a) 擴充套件了整合,不是僅包括兩個模型,而是包括大量模型。我們也可以將神經網路與最大熵模型配對並聯合訓練(Mikolov et al., 2011b)。該方法可以被視為訓練具有一組額外輸入的神經網路,額外輸入直接連線到輸出並且不連線到模型的任何其他部分。額外輸入是輸入上下文中特定n-gram是否存在的指示器,因此這些變數是非常高維且非常稀疏的。

        模型容量的增加是巨大的(架構的新部分包含高達jsV jn 個引數),但是處理輸入所需的額外計算量是很小的(因為額外輸入非常稀疏)。

相關推薦

NLPNLM-神經語言模型

文章:自然語言處理模型;經過幾天對nlp的理解,接下來我們說說語言模型,下面還是以PPT方式給出。 一、統計語言模型   1、什麼是統計語言模型? 一個語言模型通常構建為字串s的概率分佈p(s),這裡的p(s)實際上反映的是s作為一個句子出現的概率。 這裡的概率指的是組

stanford nlp第四課“語言模型(Language Modeling)”

一、課程介紹 斯坦福大學於2012年3月在Coursera啟動了線上自然語言處理課程,由NLP領域大牛Dan Jurafsky 和 Chirs Manning教授授課:https://class.coursera.org/nlp/ 以下是本課程的學習筆記,以課程PPT

tensorflow例項實現word2vec語言模型

版本說明 ———-這次我不會忘記要寫版本了分割線~ python:python3.5 tensorflow:tensorflow-0.12.1 numpy+mkl:numpy-1.11.3+mkl matplotlib:matplotlib-2.0

NLP底層技術之語言模型

  本文結合cs224n:Natural Language Processing with Deep Learning的Lecture 8、Lecture 9內容,從語言模型(Language Model)講到N-Gram LM(N-Gram Language

NLP神經網路語言模型之超級無敵最佳資料

語言模型 Attention Is All You Need(Transformer)原理小結 ELMo解析 OpenAI GPT解析 BERT解析 https://www.cnblogs.com/huangyc/p/9861453.html 從

NLP學習記錄語言模型

學習了cs224n之後,深感這門課更偏深度學習,因此僅學習這門課後NLP基礎不足,NLP領域的知識學習並不系統,基礎概念不清,感覺對於NLP領域的問題直覺不足,因此開始學習Michael Collins的NLP課程,結合此前學習的體悟寫一些綜合性的感想。

NLP(三)_統計語言模型

完全 概念 精度 馬爾科夫 編輯距離 一定的 角度 等於 nsh 概念 統計語言模型:是描述自然語言內在的規律的數學模型。廣泛應用於各種自然語言處理問題,如語音識別、機器翻譯、分詞、詞性標註,等等。簡單地說,語言模型就是用來計算一個句子的概率的模型 即P(W1,W2,W3.

Familia百度NLP開源的中文主題模型應用工具包

ica 用戶 font 文本內容分析 adb 文本相似度 表示 2.0 wiki 參考:Familia的Github項目地址、百度NLP專欄介紹 Familia 開源項目包含文檔主題推斷工具、語義匹配計算工具以及基於工業級語料訓練的三種主題模型:Latent Dir

NLP語言模型

未在 搜索 概率 出現 基本思想 分布 不同 font 語言 語言模型: I. 基本思想 區別於其他大多數檢索模型從查詢到文檔(即給定用戶查詢,如何找出相關的文檔), 語言模型由文檔到查詢,即為每個文檔建立不同的語言模型,判斷由文檔生成用戶查 詢的可能性有多大,然後按照

為什麼使用神經網路訓練得到的語言模型不需要做資料平滑

我們都知道,在自然語言處理的語言模型裡面,最核心的就是計算得到一個句子的概率,為了得到這個概率,我們需要計算得到一系列的條件概率。這些條件概率就是整個語言模型的引數。 為了得到條件概率,我們可以有兩種不同的方法。 第一種就是使用統計概率方法,通過統計的方法得到不同的詞對的條件概率。這種方

NLP漢語自然語言處理原理與實踐》第四章 NLP中的概率圖模型

目前最流行的演算法思想包含如下兩大流派:基於概率論和圖論的概率圖模型;基於人工神經網路的深度學習理論。 4.1概率論迴歸  4.1.1 多元概率論的幾個基本概念  4.1.2  貝葉斯與樸素貝葉斯演算法      

神經網路語言模型在語音識別的應用論文整理

        本人整理了NN語言模型在語音識別領域的應用論文。全部為2015年-2018年的會議論文。相關的期刊論文特別少,而且創新性沒有會議高。論文幾乎全部是語音類的最高級別會議ICASSP(B類)和Interspeech. 如果懶得自己下的話,可以留下郵

NNLM(神經網路語言模型)

簡介 *NNLM是從語言模型出發(即計算概率角度),構建神經網路針對目標函式對模型進行最優化,訓練的起點是使用神經網路去搭建語言模型實現詞的預測任務,並且在優化過程後模型的副產品就是詞向量。 *進行神經網路模型的訓練時,目標是進行詞的概率預測,就是在詞環境下,預測下一個該是什麼詞,目標函式如

NLP語言模型和遷移學習

10.13 Update:最近新出了一個state-of-the-art預訓練模型,傳送門: 李入魔:【NLP】Google BERT詳解​ zhuanlan.zhihu.com 1. 簡介 長期以來,詞向量一直是NLP任務中的主要表徵技術。隨著2017年底以及2018年初的一系列技術突破,研究證實

AutoMl及NAS概述更有效地設計神經網路模型工具

摘要: 還在為自己構建深度模型框架而抓耳饒腮嗎?AutoML及NAS瞭解下,能夠自動生成合適的模型結構,解脫你的雙手,善待你的頭髮。 隨著人工智慧的迅速發展,深度學習工具箱也發生比較大的變化,從之前受歡迎的Caffe到Tensorflow等框架,好的深度學習框架能

神經概率語言模型

統計語言建模的目標是學習語言中單詞序列的聯合概率函式。由於 the curse of dimensionality,這本質上是困難的:測試模型的單詞序列可能與訓練期間看到的所有單詞序列不同。一種基於n-gram的傳統的但非常成功的方法是,通過連線訓練集中看到的非常短的重疊序列來獲得泛化。我們建議通過學習詞的分

Deep Learning in NLP (一)詞向量和語言模型

                這篇部落格是我看了半年的論文後,自己對 Deep Learning 在 NLP 領域中應用的理解和總結,在此分享。其中必然有侷限性,歡迎各種交流,隨便拍。  Deep Learning 演算法已經在影象和音訊領域取得了驚人的成果,但是在 NLP 領域中尚未見到如此激動人心的結果

NLP語言模型預訓練方法

最近,在自然語言處理(NLP)領域中,使用語言模型預訓練方法在多項NLP任務上都獲得了不錯的提升,廣泛受到了各界的關注。就此,我將最近看的一些相關論文進行總結,選取了幾個代表性模型(包括ELMo [1],OpenAI GPT [2]和BERT [3])和大家一起學習分享。

NLP主題模型LDA+SVM進行文字分類

參考:http://www.cnblogs.com/pinard/p/6908150.htmlhttp://blog.csdn.net/TiffanyRabbit/article/details/764

輕量化神經網路模型總結SqueezeNet、Xception、MobileNet、ShuffleNet

總結今年來的幾個輕量化模型:SqueezeNet、Xception、MobileNet、ShuffleNet 下面給出時間軸: 2016.02 伯克利&斯坦福提出 SqueezeNet 2016.10 google提出 Xception 2017