NNLM 神经概率语言模型详解:分布式词表示的开山之作

讲解 Bengio 等人提出的神经概率语言模型:通过学习单词的分布式表示与词序列概率函数缓解维度灾难,用神经网络改进 n-gram 模型以利用更长的上下文,是后续 word2vec 等词向量工作的起点。

A Neural Probabilistic Language Model

摘要

本文提出通过学习单词的分布式表示来解决维度问题。模型通过训练语句对指数级语义相关的句子进行建模。同时学习(1)每个单词的分布式表示(2)单词序列的概率函数。泛化(Generalization)是指从未出现的单词序列,可以通过类似的词的组成的已经出现的句子来获得较高的概率。本文介绍了使用神经网络的概率函数的实验,改进了n-gram模型,可以利用更长的上下文,并在两个文本预料上都显示了很好的效果。

• 利用神经网络对高维离散的分布进行建模,对于学习$Z_{1} \ldots Z_{n}$的联合概率分布有很大用处 (Bengio and Bengio, 2000a,b)。在该模型 中,联合概率分布被分解为条件概率的乘积:

$$
\hat{P}\left(Z_{t}=z_{1}, \ldots, Z_{n}=z_{n}\right)=\prod_{i} \hat{P}\left(Z_{i}=z_{i} \mid g_{i}\left(Z_{i-1}=z_{i-1}, Z_{i-2}=z_{i-2}, \ldots, Z_{1}=z_{1}\right)\right)
$$

  • 使用神经网络进行语言建模: Miikkulainen and Dyer, 1991;基于字符的文本压缩,利用神经网络预测下一个字符的概率 (Schmidhuber, 1996);模型由于没有隐藏单元和单个输入词而被限制为捕获单数据和二元数据统计 (Xu and Rudnicky, 2000)
  • 发现单词相似关系获得新序列的泛化: 基于学习词汇聚类的方法(Brown et al., 1992, Pereira et al., 1993, Niesler et al., 1998, Baker and McCallum, 1998)
  • 向量空间表示方法在文本中的使用:信息检索(Schutze, 1993)

    模型结构

模型:$f\left(w_{t}, \ldots, w_{t-n+1}\right)=\hat{P}\left(w_{t} \mid w_{1}^{t-1}\right)$

其中,训练集由 $w_{1} \ldots w_{t}$ 序列组成,$w_{t} \in V$,单词 $V$ 是有限的集合。将模型分解为两个部分:

● 将词汇表 $V$ 中的元素 $i$ 映射到实向量 $C(i) \in \mathbb{R}$ 中,该向量表示词汇表中每个词的分布式特征向量。 $C(i)$ 是一个大小为 $|V| \times m$ 的自 由参数矩阵。
● 函数 $g$ 将上下文单词的特征向量 $\left(C\left(w_{t-n+1}\right), \ldots, C\left(w_{t-1}\right)\right)$作为输入序列,将它们映射为 $V$ 中下一个单词 $w_{t}$ 的条件概率分布。 $g$ 的输出是第 $i$ 个单词的估计概率向量 $\hat{P}\left(w_{t}=i \mid w_{1}^{t-1}\right)$ 。如下图所示

$$
f\left(i, w_{t-1}, \ldots, w_{t-n+1}\right)=g\left(i, C\left(w_{t-1}\right), \ldots, C\left(w_{t-n+1}\right)\right)
$$

函数 $f$ 是映射 $C$ 和 $g$ 的组合,$C$ 在上下文所有单词间共享。矩阵 $C$ 的第 $i$ 行对应第 $i$ 个单词的特征向量 $C(i)$ 。函数 $g$ 通过带有参数 $w$ 的前馈或递归神经网络或其他参数化函数来实现。整体参数集 $\theta=(C, w)$。
训练通过最大化训练语料库的惩罚似然估计 $\theta$ 来实现:

$$
L=\frac{1}{T} \sum_{t} \log f\left(w_{t}, w_{t-1}, \ldots, w_{t-n+1} ; \theta\right)+R(\theta)
$$

其中 $R(\theta)$ 是正则项。在模型中自由参数的数量至于单词数量 $V$ 线性相关
在本文的大部分实验中,神经网络具有一个隐藏层,单词特征到输出的直接连接是可选的。因此实际存在两层隐藏层:共享的单词特征层 $C$ ,和普通的双曲正切隐藏层。神经网络使用softmax输出层计算以下函数以保证正概率总和为1:

$$
\hat{P}\left(w_{t} \mid w_{t-1}, \ldots, w_{t-n+1}\right)=\frac{e^{y_{u_{t}}}}{\sum_{i} e^{y_{i}}}
$$

$y_{i}$ 是对于每个输出单词 $i$ 计算的末归一化对数概率:

$$
y=b+W x+\operatorname{Utanh}(d+H x)
$$

$$
\hat{P}\left(w_{t} \mid w_{t-1}, \ldots, w_{t-n+1}\right)=\frac{e^{y_{w_{t}}}}{\sum_{i} e^{y_{i}}}
$$

$y_{i}$ 是对于每个输出单词 $i$ 计算的末归一化对数概率:

$$
y=b+W x+U \tanh (d+H x)
$$

$W=0$ 时 $C$ 与输出层不直接连接, $x$ 是单词特征层激活向量(word features layer activation vector)

$$
x=\left(C\left(w_{t-1}\right), C\left(w_{t-2}\right), \ldots, C\left(w_{t-n+1}\right)\right)
$$

另 $h$ 为隐藏单元的数量, $m$ 是每个单词特征的数量。当单词特征向量与输出之间不直接连接时,$W$ 被设置为 0 。模型的自由参数有: 输出偏差 $b_{|V| \times 1}$ ,隐藏层偏差 $d_{h \times 1}$ ,隐藏层到输出层的权重 $U_{|V| \times h}$ ,单词特征到输出层的权重 $W_{|V| \times(n-1)}$ ,隐藏层权重 $H_{h \times(n-1)}$,和单词特征 $C_{|V| \times m}$:

$$
\theta=(b, d, W, U, H, C)
$$

自由参数的个数是 $|V|(1+n m+h)+h(1+(n-1) m)$ 。注意理论上来说,如果 $W$ 和 $H$ 存在权重衰减而 $C$ 没有,那么 $W$ 和 $H$ 可以向零收敛,而 $C$ 将会爆炸 (blow up) 。在实践中,当使用随机梯度上升来训练时,我们没有观察到这种现象。神经网络中的随机梯度上升执行以下迭代更新:

$$
\theta \leftarrow \theta+\epsilon \frac{\partial \log \hat{P}\left(w_{t} \mid w_{t-1}, \ldots, w_{t-n+1}\right)}{\partial \theta}
$$

其中 $\epsilon$ 是学习效率。
混合模型: 实验发现将神经网络中的概率预测与揷值三元模型相结合可以获得提高的效果。

本文结束 感谢您的阅读