统计语言模型:给定一个词汇集合 ,对于一个由
中的词构成的序列
,统计语言模型赋予这个序列一个概率
,来衡量
符合自然语言的语法和语义规则的置信度。
给定一个长度为 的句子
,其概率可以看出是
个词的联合概率。
应该是和句子的长度相关的。假设句子长度的概率分布为
,那么完整的分布函数为:
以句子为基本单位来讨论概率时,其样本空间非常大,很难去估计每个句子的概率。通过概率的乘法公式:
为了形式简洁,引进一个虚拟词 ,并且假定
。
N-gram 语言模型
假设一个词的概率只依赖于其前面的 个词(
阶马尔可夫性质),即
当 时,称为一元(unigram)语言模型;
当 时,成为二元(bigram)语言模型。
求 的值有两种方法:
- 假设语言服从多项分布,用最大似然估计来计算多项分布的参数;
- 用一个函数
来直接估计下一个词是
的概率。
一元模型
当时,相当于假设句子
中每个位置上的词都和其他词是独立的,和它出现的上下文无关。也就是说每个位置上的词都是从多项式分布
独立生成的。这个多项分布
的维数为词汇表的大小
。因此,句子
的概率可以表示为:
其中,为字典中第
个词在句子中出现的次数。
是需要实现估计出来的,需要从一个大量的文档集合进行估计。根据 Bayes 公式:
n 元语言模型
在元语言模型中,条件概率
也可以通过极大似然函数来得到:
平滑技术(Smoothing):增加低频词的频率,降低高频词的频率。加法平滑的计算公式为:
语言模型评价方法
困惑度(Perlexity)
困惑度可以衡量一个分布的不确定性。为每个词条件概率的几何平均数的倒数。句子概率越大,困惑度越小,语言模型越好。
其中, 为测试数据集中所有词的个数。
神经网络语言模型 NNLM
在统计语言模型中,一个关键问题是估计 ,即在时刻
,给定历史信息
条件下,词汇表
中的每个词
出现的概率。这个问题可以转化为一个类别数为
的多分类问题,即:
其中, 为分类函数,估计词汇表中第
个词出现的后验概率,并满足
,
为模型参数。


- 输入层:通过词嵌入矩阵将语言符号序列
转换成稠密的实数值向量。词嵌入矩阵
中,第
列向量表示词汇表中第
个词对应的稠密向量。假设词
对应词汇表中的索引为
,其 one-hot 向量为
,即第
维为 1,其余为 0 的
维向量。其对应的词向量为:
通过直接映射,得到历史信息 每个词对应的向量表示
,
,…,
。
隐藏层:输入词向量
,
,…,
到前馈神经网络和循环神经网络,输出为一个可以表示历史信息的向量
。在神经网络语言模型中,常见的网络类型有以下三种:
(1) 简单平均:
其中,为每个词的权重,与位置相关。位置无关的权重可以设置为
。
(2)前馈神经网络:
假设历史信息只包含前面  个词。首先将这 个词的词向量 拼接为一个维度为  的向量 。<br /><br /> 然后将  输入到由多层前馈神经网络构成的隐藏层,最后一层隐藏层的输出为 。比如,只含一层隐藏层的模型为:<br /><br /> 前馈神经网络也可以包含跳层连接(Skip-Layer Connections):<br />
(3)循环神经网络:
与前馈神经网络不同,循环神经网络可以接受变长的输入序列,依次接受输入 得到  时刻的隐藏状态 :<br /><br /> 其中  = 0。<br />前馈网络语言模型和循环网络语言模型的不同之处:循环神经网络利用隐藏状态来记录以前所有时刻的信息,而前馈神经网络只能接受前 n−1 个时刻的信息。
输出层:
输出层大小为 ,输入为历史信息的向量表示
,输出为每个词的后验概率。一般使用 softmax 分类器:
其中,输出向量 为一个概率分布,其第
维是词汇表中第
个词出现的后验概率;
是最后一层隐藏层到输出层直接的权重,也成为输出词嵌入矩阵,矩阵中每一行可以看作是一个词向量。
