语言模型(language model)是自然语言处理的重要技术。
在自然语言处理中,最常见的数据是文本数据。
可以把一段自然语言文本,看作一段离散的时间序列。
假设一段长度为 T T T的文本中的词依次为 w 1 , w 2 , … , w T w_1, w_2, \ldots, w_T w1,w2,…,wT,
那么,在离散的时间序列中, w t w_t wt( 1 ≤ t ≤ T 1 \leq t \leq T 1≤t≤T)可看作在时间步(time step) t t t的输出或标签。
给定一个长度为 T T T的词的序列 w 1 , w 2 , … , w T w_1, w_2, \ldots, w_T w1,w2,…,wT,语言模型将计算该序列的概率:
P ( w 1 , w 2 , … , w T ) . P(w_1, w_2, \ldots, w_T). P(w1,w2,…,wT).
语言模型的应用场景:
(1) 提升语音识别的性能
例如,给定一段“厨房里食油用完了”的语音,可能输出“厨房里食油用完了”和“厨房里石油用完了”两个读音完全一样的文本序列。
若语言模型判断前者的概率大于后者,那么,可以输出“厨房里食油用完了”的文本序列。
(2) 提升机器翻译的性能
例如,将英文“you go first”逐词翻译成中文,可能得到“你走先”和“你先走”等排列方式的文本序列。
若语言模型判断“你先走”的概率大于其他排列方式的文本序列,那么,可以把“you go first”译为“你先走”。
为了计算语言模型,需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。
设训练数据集为一个大型文本语料库(如维基百科的所有条目),词的概率可以通过该词在训练数据集中的相对词频来计算。
假设序列 w 1 , w 2 , … , w T w_1, w_2, \ldots, w_T w1,w2,…,wT中的每个词是依次生成的,有:
P ( w 1 , w 2 , … , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , … , w t − 1 ) P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^T P(w_t \mid w_1, \ldots, w_{t-1}) P(w1,w2,…,wT)=t=1∏TP(wt∣w1,…,wt−1)
例如,一段含有4个词的文本序列的概率:
P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P ( w 4 ∣ w 1 , w 2 , w 3 ) P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3) P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3)
其中, P ( w 1 ) P(w_1) P(w1)可以计算为 w 1 w_1 w1在训练数据集中的词频(词出现的次数)与训练数据集的总词数之比。
根据条件概率定义,一个词在给定前几个词的情况下的条件概率,可以通过训练数据集中的相对词频计算。
例如, P ( w 2 ∣ w 1 ) P(w_2 \mid w_1) P(w2∣w1)可以计算为 w 1 , w 2 w_1, w_2 w1,w2两词相邻的频率与 w 1 w_1 w1词频的比值,即, P ( w 1 , w 2 ) P(w_1, w_2) P(w1,w2)/ P ( w 1 ) P(w_1) P(w1);
同理, P ( w 3 ∣ w 1 , w 2 ) P(w_3 \mid w_1, w_2) P(w3∣w1,w2)可以计算为 w 1 w_1 w1、 w 2 w_2 w2、 w 3 w_3 w3三词相邻的频率与 w 1 w_1 w1和 w 2 w_2 w2两词相邻的频率的比值。
当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。
n n n元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。
这里的马尔可夫假设是指一个词的出现只与前面 n n n个词相关,即 n n n阶马尔可夫链(Markov chain of order n n n)。
若 n = 1 n=1 n=1,有: P ( w 3 ∣ w 1 , w 2 ) = P ( w 3 ∣ w 2 ) P(w_3 \mid w_1, w_2) = P(w_3 \mid w_2) P(w3∣w1,w2)=P(w3∣w2)。
基于 n − 1 n-1 n−1阶马尔可夫链,可将语言模型改写为:
P ( w 1 , w 2 , … , w T ) ≈ ∏ t = 1 T P ( w t ∣ w t − ( n − 1 ) , … , w t − 1 ) P(w_1, w_2, \ldots, w_T) \approx \prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1}) P(w1,w2,…,wT)≈t=1∏TP(wt∣wt−(n−1),…,wt−1)
称作 n n n元语法( n n n-grams),即基于 n − 1 n - 1 n−1阶马尔可夫链的概率语言模型。
当 n n n分别为1、2和3时,分别称作一元语法(unigram)、二元语法(bigram)和三元语法(trigram)。例如,长度为4的序列 w 1 , w 2 , w 3 , w 4 w_1, w_2, w_3, w_4 w1,w2,w3,w4在一元语法、二元语法和三元语法中的概率分别为:
P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ) P ( w 3 ) P ( w 4 ) , P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) P ( w 4 ∣ w 3 ) , P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P ( w 4 ∣ w 2 , w 3 ) P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2) P(w_3) P(w_4) ,\\ P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_2) P(w_4 \mid w_3) ,\\ P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_2, w_3) P(w1,w2,w3,w4)=P(w1)P(w2)P(w3)P(w4),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w2,w3)
当 n n n较小时, n n n元语法往往并不准确(如一元语法中,由三个词组成的句子“你走先”和“你先走”的概率相同)。
当 n n n较大时, n n n元语法需要计算并存储大量的词频和多词相邻频率。
如何在语言模型中更好地平衡以上两点,将在本章的后续内容进行探究。
《动手学深度学习》(TF2.0版)