
2.1 什么是语言模型
语言模型是一种用于计算一个句子或者一个文本在某种语言中出现的概率的模型,可以帮助读者理解和生成自然语言,在语音识别、机器翻译、信息检索、文本摘要等领域都有应用。语言模型的基本思想是根据概率论中的链式法则,将一个句子的概率分解为每个词出现的条件概率的乘积,即
(2-1)
其中,表示第i个词,n表示句子的长度。为了简化计算,语言模型通常会做一些假设,如马尔可夫假设,即每个词只依赖于前面的有限个词,而不是前面的所有词。根据依赖的词的数量不同,语言模型可以分为一元模型(unigram model)、二元模型(bigram model)、三元模型(trigram model)等不同的类型,这些模型统称为n元模型(n-gram model)。例如,二元模型假设每个词只依赖于前一个词,那么句子的概率可以简化为
(2-2)
n元模型的参数可以通过统计语料库中各种词组出现的频率来估计,但是这样会导致数据稀疏或过拟合,即很多词组可能没有在语料库中出现过,或者只出现过很少次数,导致概率为零或者不准确。为了解决这些问题,研究人员提出了多种平滑技术,如加一平滑(add-one smoothing)、古德-图灵估计(Good-Turing estimation)、Kneser-Ney平滑(Kneser-Ney smoothing)等,来给低频或者未出现过的词组设定一个概率值。
n元模型虽然简单易用,但是也有缺点,例如无法捕捉到词之间的语义关系和长距离依赖,以及参数空间过大等。为了克服这些缺点,约书亚·本吉奥(Yoshua Bengio)在2003年提出了神经网络语言模型(neural network language model,NNLM),该模型利用神经网络强大的表达能力学习语言规律。神经网络语言模型通常包括一个嵌入层(embedding layer)、一个隐藏层(hidden layer)和一个输出层(output layer)。其中,嵌入层负责将输入的词转换为实数向量;隐藏层负责对输入向量进行非线性变换和记忆;输出层负责对下一个词进行预测和概率归一化。神经网络语言模型可以采用不同的神经网络结构来实现,如前馈神经网络、循环神经网络、长短期记忆网络、门控循环单元、Transformer等。神经网络语言模型可以通过反向传播算法(back propagation algorithm)和随机梯度下降法(stochastic gradient descent,SGD)等优化方法来训练参数。接下来介绍传统语言模型。