分類目錄:《自然語言處理從入門到應(yīng)用》總目錄
語言模型(Language Model,LM)(也稱統(tǒng)計(jì)語言模型)是描述自然語言概率分布的模型,是一個(gè)非常基礎(chǔ)和重要的自然語言處理任務(wù)。利用語言模型,可以計(jì)算一個(gè)詞序列或一句話的概率,也可以在給定上文的條件下對(duì)接下來可能出現(xiàn)的詞進(jìn)行概率分布的估計(jì)。同時(shí),語言模型是一項(xiàng)天然的預(yù)訓(xùn)練任務(wù),在基于預(yù)訓(xùn)練模型的自然語言處理方法中起到非常重要的作用,因此這種預(yù)訓(xùn)練模型有時(shí)也被稱為預(yù)訓(xùn)練語言模型。本文將主要介紹經(jīng)典的N元語言模型(N-gram Language Model)。
N元語言模型
語言模型的基本任務(wù)是在給定詞序列
w
1
,
w
2
,
?
?
,
w
t
?
1
w_1, w_2, \cdots, w_{t-1}
w1?,w2?,?,wt?1?的條件下,對(duì)下一時(shí)刻
t
t
t可能出現(xiàn)的詞
w
t
w_t
wt?的條件概率
P
(
w
t
∣
w
1
w
2
?
w
t
?
1
)
P(w_t|w_1w_2\cdots w_{t-1})
P(wt?∣w1?w2??wt?1?)進(jìn)行估計(jì)。一般地,把
w
1
,
w
2
,
?
?
,
w
t
?
1
w_1, w_2, \cdots, w_{t-1}
w1?,w2?,?,wt?1?稱為
w
t
w_t
wt?的歷史。例如,對(duì)于歷史“我喜歡”,希望得到下一個(gè)詞為“讀書”的概率,即:
P
(
讀書
∣
我喜歡
)
P(\text{讀書}|\text{我喜歡})
P(讀書∣我喜歡))。在給定一個(gè)語料庫時(shí),該條件概率可以理解為當(dāng)語料中出現(xiàn)“我喜歡”時(shí),有多少次下一個(gè)詞為“讀書”,然后通過最大似然估計(jì)進(jìn)行計(jì)算:
P
(
讀書
∣
我喜歡
)
=
C
(
我喜歡讀書
)
C
(
我喜歡
)
P(\text{讀書}|\text{我喜歡}) = \frac{C(我喜歡讀書)}{C(我喜歡)}
P(讀書∣我喜歡)=C(我喜歡)C(我喜歡讀書)?
式中,
C
(
?
)
C(·)
C(?)表示相應(yīng)詞序列在語料庫中出現(xiàn)的次數(shù)(也稱為頻次)。通過以上的條件概率,可以進(jìn)一步計(jì)算一個(gè)句子出現(xiàn)的概率,即相應(yīng)單詞序列的聯(lián)合概率
P
(
w
1
,
w
2
,
?
?
,
w
l
)
P(w_1, w_2, \cdots, w_l)
P(w1?,w2?,?,wl?),式中
l
l
l為序列的長(zhǎng)度??梢岳面?zhǔn)椒▌t對(duì)該式進(jìn)行分解,從而將其轉(zhuǎn)化為條件概率的計(jì)算問題,即:
P
(
w
1
,
w
2
,
?
?
,
w
l
)
=
∏
i
=
1
l
P
(
w
i
∣
w
1
w
2
?
w
i
?
1
)
P(w_1, w_2, \cdots, w_l)=\prod_{i=1}^l{P(w_i|w_1w_2\cdots w_{i-1})}
P(w1?,w2?,?,wl?)=i=1∏l?P(wi?∣w1?w2??wi?1?)
然而,隨著句子長(zhǎng)度的增加,
w
i
∣
w
1
w
2
?
w
i
?
1
w_i|w_1w_2\cdots w_{i-1}
wi?∣w1?w2??wi?1?出現(xiàn)的次數(shù)會(huì)越來越少,甚至從未出現(xiàn)過,那么
P
(
w
i
∣
w
1
w
2
?
w
i
?
1
)
P(w_i|w_1w_2\cdots w_{i-1})
P(wi?∣w1?w2??wi?1?)則很可能為0,此時(shí)對(duì)于概率估計(jì)就沒有意義了。為了解決該問題,可以假設(shè)“下一個(gè)詞出現(xiàn)的概率只依賴于它前面
n
?
1
n?1
n?1個(gè)詞”,即:
P
(
w
t
∣
w
1
w
2
?
w
t
?
1
)
≈
P
(
w
t
∣
w
t
?
n
+
1
w
t
?
n
+
2
?
w
t
?
1
)
P(w_t|w_1w_2\cdots w_{t-1})\approx P(w_t|w_{t-n+1}w_{t-n+2}\cdots w_{t-1})
P(wt?∣w1?w2??wt?1?)≈P(wt?∣wt?n+1?wt?n+2??wt?1?)
該假設(shè)被稱為馬爾可夫假設(shè)(Markov Assumption)。滿足這種假設(shè)的模型,被稱為N元語法或N元文法(N-gram)模型。特別地,當(dāng)
N
=
1
N=1
N=1時(shí),下一個(gè)詞的出現(xiàn)獨(dú)立于其歷史,相應(yīng)的一元語法通常記作unigram。當(dāng)
N
=
2
N=2
N=2時(shí),下一個(gè)詞只依賴于前1個(gè)詞,對(duì)應(yīng)的二元語法記作bigram。二元語法模型也被稱為一階馬爾可夫鏈(Markov Chain)。類似的,三元語法假設(shè)(
N
=
3
N=3
N=3)也被稱為二階馬爾可夫假設(shè),相應(yīng)的三元語法記作trigram。
N
N
N的取值越大,考慮的歷史越完整。在unigram模型中,由于詞與詞之間相互獨(dú)立,因此它是與語序無關(guān)的。以bigram模型為例,上式可轉(zhuǎn)換為:
P
(
w
1
,
w
2
,
?
?
,
w
l
)
=
∏
i
=
1
l
P
(
w
i
∣
w
i
?
1
)
P(w_1, w_2, \cdots, w_l)=\prod_{i=1}^l{P(w_i|w_{i-1})}
P(w1?,w2?,?,wl?)=i=1∏l?P(wi?∣wi?1?)
為了使 P ( w i ∣ w i ? 1 ) P(w_i|w_{i-1}) P(wi?∣wi?1?)對(duì)于 i = 1 i=1 i=1有意義,可在句子的開頭增加一個(gè)句首標(biāo)記“<BOS>”(Begin Of Sentence),并設(shè) w 0 = <BOS> w_0=\text{<BOS>} w0?=<BOS>。同時(shí),也可以在句子的結(jié)尾增加一個(gè)句尾標(biāo)記“<EOS>”(End Of Sentence),設(shè) w l + 1 = <EOS> w_{l+1}=\text{<EOS>} wl+1?=<EOS>。
平滑
雖然馬爾可夫假設(shè)(下一個(gè)詞出現(xiàn)的概率只依賴于它前面 n ? 1 n?1 n?1個(gè)詞)降低了句子概率為0的可能性,但是當(dāng) n n n比較大或者測(cè)試句子中含有未登錄詞(Out-Of-Vocabulary,OOV)時(shí),仍然會(huì)出現(xiàn)“零概率”問題。由于數(shù)據(jù)的稀疏性,訓(xùn)練數(shù)據(jù)很難覆蓋測(cè)試數(shù)據(jù)中所有可能出現(xiàn)的N-gram,但這并不意味著這些N-gram出現(xiàn)的概率為0。為了避免該問題,需要使用平滑(Smoothing)技術(shù)調(diào)整概率估計(jì)的結(jié)果。本文將介紹一種最基本,也最簡(jiǎn)單的平滑算法——折扣法。折扣法(Discounting)平滑的基本思想是“損有余而補(bǔ)不足”,即從頻繁出現(xiàn)的N-gram中勻出一部分概率并分配給低頻次(含零頻次)的N-gram,從而使得整體概率分布趨于均勻。
加一平滑(Add-one Discounting)是一種典型的折扣法,也被稱為拉普拉斯平滑(Laplace Smoothing),它假設(shè)所有N-gram的頻次比實(shí)際出現(xiàn)的頻次多一次。例如,對(duì)于unigram模型來說,平滑之后的概率可由以下公式計(jì)算:
P
(
w
l
)
=
C
(
w
i
)
+
1
∑
w
(
C
(
w
)
+
1
)
=
C
(
w
i
)
+
1
N
+
∣
V
∣
P(w_l)=\frac{C(w_i) + 1}{\sum_w(C(w) + 1)}=\frac{C(w_i) + 1}{N + |V|}
P(wl?)=∑w?(C(w)+1)C(wi?)+1?=N+∣V∣C(wi?)+1?
在實(shí)際應(yīng)用中,尤其當(dāng)訓(xùn)練數(shù)據(jù)較小時(shí),加一平滑將對(duì)低頻次或零頻次事件給出過高的概率估計(jì)。一種自然的擴(kuò)展是加
δ
\delta
δ平滑。在加
δ
\delta
δ平滑中,假設(shè)所有事件的頻次比實(shí)際出現(xiàn)的頻次多
δ
\delta
δ次,其中
0
≤
δ
≤
1
0\leq\delta\leq1
0≤δ≤1。以bigram語言模型為例,使用加
δ
\delta
δ平滑之后的條件概率為:
P
(
w
i
∣
w
i
?
1
)
=
C
(
w
i
?
1
w
i
)
+
δ
∑
w
(
C
(
w
i
?
1
w
i
)
+
δ
)
=
C
(
w
i
?
1
w
i
)
+
δ
C
(
w
i
?
1
)
+
δ
∣
V
∣
P(w_i|w_{i-1})=\frac{C(w_{i-1}w_i)+\delta}{\sum_w(C(w_{i-1}w_i)+\delta)}=\frac{C(w_{i-1}w_i)+\delta}{C(w_{i-1})+\delta|V|}
P(wi?∣wi?1?)=∑w?(C(wi?1?wi?)+δ)C(wi?1?wi?)+δ?=C(wi?1?)+δ∣V∣C(wi?1?wi?)+δ?
關(guān)于超參數(shù) δ \delta δ的取值,需要用到開發(fā)集數(shù)據(jù)。根據(jù)開發(fā)集上的困惑度對(duì)不同 δ \delta δ取值下的語言模型進(jìn)行評(píng)價(jià),最終將最優(yōu)的δ用于測(cè)試集。由于引入了馬爾可夫假設(shè),導(dǎo)致N元語言模型無法對(duì)長(zhǎng)度超過N 的長(zhǎng)距離詞語依賴關(guān)系進(jìn)行建模,如果將 N 擴(kuò)大,又會(huì)帶來更嚴(yán)重的數(shù)據(jù)稀疏問題,同時(shí)還會(huì)急劇增加模型的參數(shù)量(N-gram數(shù)目),為存儲(chǔ)和計(jì)算都帶來極大的挑戰(zhàn)。5.1節(jié)將要介紹的神經(jīng)網(wǎng)絡(luò)語言模型可以較好地解決N元語言模型的這些缺陷。
語言模型性能評(píng)價(jià)
衡量一個(gè)語言模型好壞的一種方法是將其應(yīng)用于具體的外部任務(wù)(如:機(jī)器翻譯),并根據(jù)該任務(wù)上指標(biāo)的高低對(duì)語言模型進(jìn)行評(píng)價(jià)。這種方法也被稱為“外部任務(wù)評(píng)價(jià)”,是最接近實(shí)際應(yīng)用需求的一種評(píng)價(jià)方法。但是,這種方式的計(jì)算代價(jià)較高,實(shí)現(xiàn)的難度也較大。因此,目前最為常用的是基于困惑度(Perplexity,PPL)的“內(nèi)部評(píng)價(jià)”方式。為了進(jìn)行內(nèi)部評(píng)價(jià),首先將數(shù)據(jù)劃分為不相交的兩個(gè)集合,分別稱為訓(xùn)練集
D
train
D^{\text{train}}
Dtrain和測(cè)試集
D
test
D^{\text{test}}
Dtest,其中
D
train
D^{\text{train}}
Dtrain用于估計(jì)語言模型的參數(shù)。由該模型計(jì)算出的測(cè)試集的概率
P
(
D
test
)
P(D^{\text{test}})
P(Dtest)則反映了模型在測(cè)試集上的泛化能力。假設(shè)測(cè)試集
D
test
=
w
1
w
2
?
w
N
D^{\text{test}}=w_1w_2\cdots w_N
Dtest=w1?w2??wN?(每個(gè)句子的開始和結(jié)束分布增加<BOS>與<EOS>標(biāo)記),那么測(cè)試集的概率為:
P
(
D
test
)
=
P
(
w
1
w
2
?
w
N
)
=
∏
i
=
1
N
P
(
w
i
∣
w
1
w
2
?
w
i
?
1
)
\begin{aligned} P(D^{\text{test}}) &= P(w_1w_2\cdots w_N) \\ &= \prod_{i=1}^N P(w_i|w_1w_2\cdots w_{i-1}) \end{aligned}
P(Dtest)?=P(w1?w2??wN?)=i=1∏N?P(wi?∣w1?w2??wi?1?)?
困惑度則為模型分配給測(cè)試集中每一個(gè)詞的概率的幾何平均值的倒數(shù):
PPL
(
D
test
)
=
(
∏
i
=
1
N
P
(
w
i
∣
w
1
w
2
?
w
i
?
1
)
?
1
N
\text{PPL}(D^{\text{test}})=(\prod_{i=1}^NP(w_i|w_1w_2\cdots w_{i-1})^{-\frac{1}{N}}
PPL(Dtest)=(i=1∏N?P(wi?∣w1?w2??wi?1?)?N1?
對(duì)于bigram模型而言:
PPL
(
D
test
)
=
(
∏
i
=
1
N
P
(
w
i
∣
w
i
?
1
)
?
1
N
\text{PPL}(D^{\text{test}})=(\prod_{i=1}^NP(w_i|w_{i-1})^{-\frac{1}{N}}
PPL(Dtest)=(i=1∏N?P(wi?∣wi?1?)?N1?
在實(shí)際計(jì)算過程中,考慮到多個(gè)概率的連乘可能帶來浮點(diǎn)數(shù)下溢的問題,通常需要將上式轉(zhuǎn)化為對(duì)數(shù)和的形式:
PPL
(
D
test
)
=
2
?
1
N
∑
i
=
1
N
log
?
2
P
(
w
i
∣
w
i
?
1
)
\text{PPL}(D^{\text{test}})=2^{-\frac{1}{N}\sum_{i=1}^N\log_2P(w_i|w_{i-1})}
PPL(Dtest)=2?N1?∑i=1N?log2?P(wi?∣wi?1?)
困惑度越小,意味著單詞序列的概率越大,也意味著模型能夠更好地解釋測(cè)試集中的數(shù)據(jù)。需要注意的是,困惑度越低的語言模型并不總是能在外部任務(wù)上取得更好的性能指標(biāo),但是兩者之間通常呈現(xiàn)出一定的正相關(guān)性。因此,困惑度可以作為一種快速評(píng)價(jià)語言模型性能的指標(biāo),而在將其應(yīng)用于下游任務(wù)時(shí),仍然需要根據(jù)其在具體任務(wù)上的表現(xiàn)進(jìn)行評(píng)價(jià)。文章來源:http://www.zghlxwxcb.cn/news/detail-469800.html
參考文獻(xiàn):
[1] 車萬翔, 崔一鳴, 郭江. 自然語言處理:基于預(yù)訓(xùn)練模型的方法[M]. 電子工業(yè)出版社, 2021.
[2] 邵浩, 劉一烽. 預(yù)訓(xùn)練語言模型[M]. 電子工業(yè)出版社, 2021.
[3] 何晗. 自然語言處理入門[M]. 人民郵電出版社, 2019
[4] Sudharsan Ravichandiran. BERT基礎(chǔ)教程:Transformer大模型實(shí)戰(zhàn)[M]. 人民郵電出版社, 2023
[5] 吳茂貴, 王紅星. 深入淺出Embedding:原理解析與應(yīng)用實(shí)戰(zhàn)[M]. 機(jī)械工業(yè)出版社, 2021.文章來源地址http://www.zghlxwxcb.cn/news/detail-469800.html
到了這里,關(guān)于自然語言處理從入門到應(yīng)用——自然語言處理的常見任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!