寒假参加了Datawhale组织的深度学习课程,在语言模型一节里简要提到了统计语言模型和神经网络语言模型两种类型。课后补充查阅了一些资料,在此对这两类语言模型的概念 、特点做些记录。

统计语言模型

统计语言模型是对语句的概率分布的建模:即对于语言序列w1, w2, w3,……,wn, 计算该序列中每个词的联合概率 P(w1, w2, w3,……,wn)。

这类语言模型中最具代表性的是n 元语法(n-gram)。它解决了普通联合概率计算方法带来的自由参数过多问题。为了简化模型,n-gram假设一个词的概率只与前面的n个词有关。例如,当n=2时,可以近似认为一个词的出现只依赖于前一个词,那么一个句子s的概率分布可以表示成:

各语言模型API价格_概率分布


其中 l 为句子长度。

对于n>2的语言模型,其概率分布可表示为:

各语言模型API价格_概率分布_02


n-gram的局限在于:一是参数空间过大,计算和存储的难度大;二是数据稀疏问题,需要用平滑技术进行处理,如古德-图灵估计法;三是泛化能力较差。

神经网络语言模型

神经网络语言模型最早由Bengio等人于2003年提出,包括前馈神经网络语言模型、循环神经网络语言模型等。它通过一个神经网络来学习词的分布式表示,实现连续空间上的语言建模,一方面避免了维度灾难,缓解了数据稀疏问题;另一方面可以学习到丰富的语义特征,从而有效提升了语言模型的性能。

在神经网络语言模型的训练过程中,不仅可以预测整个句子的概率,也能同步学到一个副产品——词嵌入表示(word embedding),而这一副产品正是语言模型预训练的重要目标。一个好的词嵌入能够大大提高语言模型的泛化能力,提升机器翻译、自然语言理解等下游NLP任务的效果。