概率模型
- 统计语言模型实际上是一个概率模型,所以常见的概率模型都可以用于求解这些参数
- 常见的概率模型有:N-gram 模型、决策树、最大熵模型、隐马尔可夫模型、条件随机场、神经网络等
- 目前常用于语言模型的是 N-gram 模型和神经语言模型(下面介绍)
N-gram 语言模型
- 马尔可夫(Markov)假设——未来的事件,只取决于有限的历史
-
基于马尔可夫假设,N-gram 语言模型认为一个词出现的概率只与它前面的 n-1 个词相关
- 根据条件概率公式与大树定律,当语料的规模足够大时,有
- 以
n=2
即 bi-gram 为例,有
- 假设词表的规模
N=200000
(汉语的词汇量),模型参数与 `n· 的关系表
可靠性与可区别性
- 假设没有计算和存储限制,n 是不是越大越好?
- 早期因为计算性能的限制,一般最大取到 n=4;如今,即使 n>10 也没有问题,
- 但是,随着 n 的增大,模型的性能增大却不显著,这里涉及了可靠性与可区别性的问题
- 参数越多,模型的可区别性越好,但是可靠性却在下降——因为语料的规模是有限的,导致 count(W) 的实例数量不够,从而降低了可靠性
OOV 问题
- OOV 即 Out Of Vocabulary,也就是序列中出现了词表外词,或称为未登录词
- 或者说在测试集和验证集上出现了训练集中没有过的词
- 一般解决方案:
**设置一个词频阈值,只有高于该阈值的词才会加入词表
**所有低于阈值的词替换为 UNK(一个特殊符号) - 无论是统计语言模型还是神经语言模型都是类似的处理方式
平滑处理 TODO
- count(W) = 0 是怎么办?
- 平滑方法(层层递进):
1 Add-one Smoothing (Laplace)
2 Add-k Smoothing (k<1)
3 Back-off (回退)
4 Interpolation (插值法)
5 Absolute Discounting (绝对折扣法)
6 Kneser-Ney Smoothing (KN)
7 Modified Kneser-Ney
神经概率语言模型 (NPLM)
- 神经概率语言模型依然是一个概率语言模型,它通过神经网络来计算概率语言模型中每个参数
1 其中g
表示神经网络,i_w
为w
在词表中的序号,context(w)
为w
的上下文,V_context
为上下文构成的特征向量。
2V_context
由上下文的词向量进一步组合而成
N-gram 神经语言模型
A Neural Probabilistic Language Model (Bengio, et al., 2003)
- 这是一个经典的神经概率语言模型,它沿用了 N-gram 模型中的思路,将
w
的前n-1
个词作为w
的上下文context(w)
,而V_context
由这n-1
个词的词向量拼接而成,即
- 其中
c(w)
表示w
的词向量 - 不同的神经语言模型中
context(w)
可能不同,比如 Word2Vec 中的 CBOW 模型
-
每个训练样本是形如
(context(w), w)
的二元对,其中context(w)
取 w 的前n-1
个词;当不足n-1
,用特殊符号填充- 同一个网络只能训练特定的
n
,不同的n
需要训练不同的神经网络
- 同一个网络只能训练特定的
N-gram 神经语言模型的网络结构
【输入层】首先,将 context(w) 中的每个词映射为一个长为 m 的词向量,词向量在训练开始时是随机的,并参与训练;
【投影层】将所有上下文词向量拼接为一个长向量,作为 w 的特征向量,该向量的维度为 m(n-1)
【隐藏层】拼接后的向量会经过一个规模为 h 隐藏层,该隐层使用的激活函数为 tanh
【输出层】最后会经过一个规模为 N 的 Softmax 输出层,从而得到词表中每个词作为下一个词的概率分布
其中 m, n, h 为超参数,N 为词表大小,视训练集规模而定,也可以人为设置阈值
训练时,使用交叉熵作为损失函数
当训练完成时,就得到了 N-gram 神经语言模型,以及副产品词向量
-
整个模型可以概括为如下公式:
原文的模型还考虑了投影层与输出层有有边相连的情形,因而会多一个权重矩阵,但本质上是一致的:
模型参数的规模与运算量
- 模型的超参数:m, n, h, N
- m 为词向量的维度,通常在 10^1 ~ 10^2
- n 为 n-gram 的规模,一般小于 5
- h 为隐藏的单元数,一般在 10^2
- N 位词表的数量,一般在 10^4 ~ 10^5,甚至 10^6
- 网络参数包括两部分
- 词向量 C: 一个 N * m 的矩阵——其中 N 为词表大小,m 为词向量的维度
- 网络参数 W, U, p, q:
- W: h * m(n-1) 的矩阵
- p: h * 1 的矩阵
- U: N * h 的矩阵
- q: N * 1 的矩阵
- 模型的运算量
- 主要集中在隐藏层和输出层的矩阵运算以及 SoftMax 的归一化计算
- 此后的相关研究中,主要是针对这一部分进行优化,其中就包括 Word2Vec 的工作
相比 N-gram 模型,NPLM 的优势
-
单词之间的相似性可以通过词向量来体现
相比神经语言模型本身,作为其副产品的词向量反而是更大的惊喜
自带平滑处理