n元模型

區(qū)分好 語言建模 和 語言模型。
理解好 直接預(yù)測P(w_1,w_2,w_3,...,w_l)的問題:
(1). 數(shù)據(jù)量需要龐大(為什么?)
(2). 計算量龐大。
如何解決這個問題?
(1). 條件概率鏈?zhǔn)椒▌t
(2). 馬爾可夫假設(shè)
理解n元模型的計算量。
理解n不同的時候的不同情況。
(1). n大的時候:
-有更多的語境信息。
-計算量大,數(shù)據(jù)量要求大,計算出來的概率結(jié)果不可靠。
(2). n小的時候:
-比較少的語境信息。
-計算量小,數(shù)據(jù)量要求小,計算出來的概率結(jié)果可靠。

n-元模型的訓(xùn)練:參數(shù)估計。不是隱馬爾可夫,可以直接估計,可以使用相對頻率估計,這種時候最大似然估計(MLE)和相對頻率估計是一樣的。

那么這里描述一下是怎么訓(xùn)練和跑出結(jié)果的:
考慮語料庫:
<bos> John read Moby Dick <eos>
<bos> Mary read a different book <eos>
<bos> She read a book by Cher <eos>
對于bin-gram,我們會計算
P(John|<bos>) = \frac{c(<bos>John)}{c(<bos>)} = \frac{1}{3}
P(book|a) = \frac{c(a book)}{a}
...
所以這樣我們就訓(xùn)練好了。訓(xùn)練的結(jié)果就是一個一個條件概率庫。
那么對于一個句子。我們來計算句子的概率:
比如John read a book
所以求解如下:
P(John read a book) = P(John|<bos>)*P(read|John)*P(a|read)*P(book|a)*P(<eos>|book)

處理模型中可能碰到的問題:
(1). 計算句子概率的時候使用概率連乘,容易造成數(shù)字很小,應(yīng)該擴張一下,可以使用對數(shù)概率。
(2). 自然語言處理中的數(shù)據(jù)是十分稀疏的,很有可能某個詞是沒有出現(xiàn)的。那么這樣會導(dǎo)致句子概率=0,這個是不符合常理的。

考慮解決辦法:增大數(shù)據(jù)量?
但是根據(jù)Zipf定律,增大數(shù)據(jù)量是解決不了問題的。(增加的仍然是高頻詞)
甚至有數(shù)據(jù)顯示:用150萬詞的訓(xùn)練語料來訓(xùn)練三元模型。同樣來源的測試語料中仍舊有23%的三元組是沒有出現(xiàn)過的。

解決辦法:平滑。

平滑方法:
Add_one平滑:規(guī)定每個n-元組比真實出現(xiàn)的次數(shù)多一次。

但是會出現(xiàn)兩個問題:

  1. 不公平,“富人不公平”。
  2. 假設(shè)不公平。沒有出現(xiàn)的元組都給了他相同的概率。

因為NLP中 很容易產(chǎn)生數(shù)據(jù)稀疏問題,所以平滑至關(guān)重要。之后另開一篇,講各種平滑方法。

語言模型的評價-交叉熵。
針對X這個隨機變量。(在n-gram當(dāng)中就是n-元組的概率分布)那么會存在一個理想中的分布p(x).我們通過訓(xùn)練數(shù)據(jù)訓(xùn)練出來的是q(x)。那么怎么衡量,不同q(x)對p(x)更加接近呢?使用交叉熵。
H(X,q) = -\sum_{x\epsilon X}p(x)log q(x)
具體的操作:
比如說一元組模型。我們通過訓(xùn)練數(shù)據(jù)訓(xùn)練出模型,對于每個詞w我們有對應(yīng)的概率輸出。
那么使用測試數(shù)據(jù)對模型進行評估。
設(shè)測試數(shù)據(jù)為T = w_1w_2w_3...w_{N^T}
那么我們可以計算出p(x)也就是
各種p(w)(注意了。w_1,w_2...,w_n有可能是相同的。)所以引入V_T來表示測試數(shù)據(jù)中出現(xiàn)w的種類數(shù)目。
從而交叉熵有以下:
p(w) = \frac{c(w)}{N^T}
\begin{equation} \begin{aligned} H(T,q)& = -\sum_{w\epsilon V_T} p(w)log q(w)\\ &=-\frac{1}{N^T}\sum_{w\epsilon V_T}c(w)*log q(w)\\ &=-\frac{1}{N^T}\sum_{w\epsilon T} log q(w)\\ &=-\frac{1}{N^T}log\prod_{w\epsilon T} q(w)\\ &=-\frac{1}{N^T}log q(T)\\ \end{aligned} \end{equation}
值得注意的是w是一個一元組。V_T是T這個測試數(shù)據(jù)中w的不同種類數(shù)目。而上述的T中一共有N^T個w。

那么接下來讓我們考慮n-gram時候的模型評估。
引用上面的符號。T = w_1w_2w_3...w_{N^T}、Type:V_T。
考慮我們應(yīng)該評估什么,因為通過訓(xùn)練,我們獲得的是條件概率p(w_i|w_{i-n+1}...w_{i-2}w_{i-1})。因此理論上我們應(yīng)該是對條件概率分布求交叉熵。也就是求
p(w_n|w_1w_2...w_{n-1}) = \frac{c(w_1w_2...w_n)}{c(w_1w_2...w_{n-1})}
H(X,q) = \sum_{w_1w_2w_3...w_n\epsilon V_T}p(w_n|w_1w_2...w_{n-1})*logq(w_n|w_1w_2...w_{n-1})
但是實際中求的時候使用的是
p(w_1w_2...w_{n-1}w_{n}) = \frac{c(w_1w_2...w_n)}{N^T}
\begin{equation} \begin{aligned} H(X,q) &= -\sum_{w_1w_2w_3...w_n\epsilon V_T}p(w_1w_2...w_{n-1}w_{n})*logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}\sum_{w_1w_2w_3...w_n\epsilon V_T}c(w_1w_2...w_{n-1}w_{n})*logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}\sum_{w_1w_2w_3...w_n\epsilon T}logq(w_n|w_1w_2...w_{n-1})\\ &=-\frac{1}{N^T}logq(T)\\ \end{aligned} \end{equation}
個人認(rèn)為可以的原因是對于每個項都只差一個常數(shù)級別。

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

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

  • 本系列第三篇,承接前面的《淺談機器學(xué)習(xí)基礎(chǔ)》和《淺談深度學(xué)習(xí)基礎(chǔ)》。 自然語言處理緒論 什么是自然語言處理? 自然...
    我偏笑_NSNirvana閱讀 18,456評論 2 68
  • 算法技術(shù)解構(gòu) 1、Python基礎(chǔ)知識 (1)IPythonIPython的開發(fā)者吸收了標(biāo)準(zhǔn)解釋器的基本概念,在此...
    shenciyou閱讀 5,872評論 0 10
  • 雙贏思維其實跟同理心很相似,兩者可結(jié)合運用,在人與人的合作關(guān)系切不可為了眼前的利益讓別人的利益受損,從而失去長遠的...
    hollow_6b31閱讀 177評論 0 0
  • 孩子在成長過程中犯點錯誤非常正常,這是每個人成長過程中必不可少的內(nèi)容。問題的關(guān)鍵是我們作為父母怎么去正確地批評、幫...
    得一說閱讀 713評論 0 1
  • 大聲的唱著歌 大踏步的向前去 去愛,去恨,去享受,去生活 去擁抱生活的荊棘 去享受生活的憂傷 帶著傷痕 帶著成長 ...
    jscfc閱讀 109評論 0 0

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