語言模型和循環(huán)神經(jīng)網(wǎng)絡(luò)
一侵浸、語言模型
1宁仔、簡介
簡單來講玩敏,語言模型就是通過對預測接下來會出現(xiàn)什么詞這個任務(wù)建模得到的一個模型鸭叙。
下圖就是一個簡單的語言建模的示例:
同時還可以將語言模型視為將概率分配給一段文本的系統(tǒng)霹娄,例如如果我們有部分文本,...,
,那么根據(jù)語言模型能犯,下一段文本的概率為:
2、n-gram語言模型
在深度學習應用于NLP之前犬耻,n-gram語言模型是是使用的最為廣泛的模型踩晶。n-gram是由多個連續(xù)的單詞組成的塊。
n-gram語言模型的核心思想在于:收集有關(guān)不同n-gram的頻率的統(tǒng)計數(shù)據(jù)枕磁,并使用這些來預測下一個單詞渡蜻。
n-gram模型做了一個簡單的假設(shè):第n個詞出現(xiàn)的概率只與前n-1個詞相關(guān)。
為了方便計算n-gram和(n-1)-gram的概率,一般通過在大型的語料中得到它們近似統(tǒng)計數(shù)據(jù)來作為它們概率的近似值。
假設(shè)現(xiàn)在我們擁有一個4-gram語言模型茸苇,那么下面這個句子的概率計算公式為:
現(xiàn)在假設(shè)排苍,stdudents opened their出現(xiàn)了1000次。
stdudents opened their books出現(xiàn)了400次学密,那么P(books|students opened their) = 0.4淘衙。
stdudents opened their exams出現(xiàn)了400次,那么P(exams|students opened their) = 0.1腻暮。
3幔翰、n-gram語言模型的稀疏性問題
若分子中的句子沒有在語料中出現(xiàn)過,那么P(w|students opened their)就會為零西壮,為了避免這個問題遗增,一般用一個很小的值來代替值為0的P,這被稱之為平滑款青。
若分母中的句子沒有在語料中出現(xiàn)過做修,那么整個式子就變得無意義了,為了避免這個問題抡草,一般會盡可能地用最高階組合計算概率饰及,當高階組合不存在時,退而求其次找次低階康震,直到找到非零組合為止燎含。這被稱之為回溯法。
一般來說腿短,n-gram中n值的增加會使稀疏性問題變的更加嚴重屏箍,因此在實際使用的過程中n的值一般不超過5。除此之外橘忱,n-gram的另一個問題就是需要大量的存儲空間赴魁,它需要存儲您在語料庫中看到的所有n-gram的計數(shù)。因此當增加n或者語料庫的大小時钝诚,模型的大小也會隨之增加颖御。
二、循環(huán)神經(jīng)網(wǎng)絡(luò)
1凝颇、基于固定窗口的語言模型
在介紹循環(huán)神經(jīng)網(wǎng)絡(luò)之前潘拱,我們首先介紹基于固定窗口的語言模型拧略。其結(jié)構(gòu)圖如下:
這種模型的優(yōu)點如下:
1.解決了n-gram模型存在的稀疏性問題
2.無需存儲所有被觀察到的n-gram值
但是它還存在這一些問題:
1.固定窗口太小,擴大窗口將會使W增大盔腔,且對于該模型來說窗口永遠不夠大杠茬。
2.在W中弛随,和
乘以完全不同的權(quán)重。在輸入的處理方式上沒有對稱性舀透。
因此我們需要一個能夠處理任意長度輸入的模型,也就是我們所熟知的RNN愕够。
2、RNN模型
RNN模型的結(jié)構(gòu)示意圖如下:
總的來說RNN模型有如下的優(yōu)點:
1.能處理任意長度的輸入
2.計算時間步t時佛猛,可以(理論上)利用來自許多先前時間步的信息
3.當模型輸入比較長時惑芭,模型的大小也不會改變
4.每個時間步都應用相同的權(quán)重,因此輸入的處理方式是對稱的继找。
雖然RNN模型很優(yōu)秀遂跟,但其依然存在一些不足,
1.循環(huán)計算速度太慢
2.在實際應用中婴渡,很難獲取到許多先前時間步的信息
3幻锁、訓練RNN語言模型
當我們自己需要訓練一個RNN的語言模型時,其一般步驟如下:
1.獲取一個比較大的文本語料
2.將語料輸入到模型中边臼,計算每個時間步的輸出分布
3.計算時間步t的損失函數(shù),其中
為預測概率分布哄尔,
為下一個真實單詞
損失函數(shù)
4.計算整個訓練集總體損失的平均值
計算整個訓練集總體損失的平均值
整個過程的計算流程如下圖所示:
計算整個語料庫每個詞的損失和梯度代價太大!因此柠并,在實踐中岭接,通常考慮計算句子(或文檔)的損失和梯度臼予。隨機梯度下降在此處是一種比較合適的方法亿傅,它允許我們計算小塊數(shù)據(jù)的損失和梯度,并進行更新瘟栖。
4葵擎、RNN中的反向傳播
RNN方向傳播計算公式的證明草圖如下:
三、評估語言模型
PPL(Perplexity)是用在自然語言處理領(lǐng)域(NLP)中半哟,衡量語言模型好壞的指標酬滤。它主要是根據(jù)每個詞來估計一句話出現(xiàn)的概率,并用句子長度作normalize寓涨,公式為:
Perplexity的值越低盯串,代表語言模型的效果越好。
語言建模是一項基準任務(wù)戒良,可幫助我們衡量我們理解語言的進度体捏。因此做好這一步對于我們做好其他下游任務(wù)(如文本生成、語音識別等)至關(guān)重要。
四几缭、總結(jié)
1.語言模型是預測下一個詞的系統(tǒng)
2.RNN:1河泳、能夠接受任意長度的序列輸入,2年栓、每個時間步共享權(quán)重W拆挥,3、可以選擇在每一步產(chǎn)生輸出
3.循環(huán)神經(jīng)網(wǎng)絡(luò) 某抓!= 語言模型
4.RNN是一種構(gòu)建語言模型的好方法