Skip to content

Efficient Estimation of Word Representations in Vector Space

相关链接

0. 摘要

提出了两种新的模型架构,用于从大规模数据集中计算词的连续向量表示。这些向量在词相似性任务中表现优异,且计算成本低,能够在大规模数据上高效训练,最终在句法和语义相似性测试中达到最先进水平。


1. 引言

传统NLP系统将词视为原子单元(如索引),无法捕捉词之间的相似性。虽然简单模型在大数据上表现良好,但在数据有限的任务中效果不佳。近年来,分布式词表示(如神经网络语言模型)显示出优越性。本文目标是提出能在大规模数据上高效学习高质量词向量的技术。

1.1 本文目标

  • 提出能处理数十亿词、百万级词汇的高质量词向量学习技术。
  • 通过代数操作(如“国王”-“男人”+“女人”≈“女王”)来评估词向量的质量。
  • 设计新的测试集,用于衡量词向量的句法和语义规律性。

1.2 相关工作

回顾了神经网络语言模型(NNLM)、循环神经网络(RNN)等早期工作,指出许多模型计算成本高,限制了其扩展性。


2. Model Architectures

2.0 引言:复杂度定义

为了公平比较不同的模型架构,首先定义模型训练的计算复杂度

\[ O = E \times T \times Q \]
  • E (Epochs):训练迭代次数(通常为3-50次)。
  • T (Tokens):训练集中的词数(最多可达十亿级)。
  • Q每个训练样本的计算复杂度。对于不同的架构,\( Q \) 的定义不同。

所有模型均使用随机梯度下降(SGD)反向传播进行训练。


2.1 Feedforward Neural Net Language Model, NNLM

这是 Bengio 等人在2003年提出的经典模型架构。

架构组成:

  • 输入层:将前 \( N \) 个词(历史词)以 1-of-V 编码(one-hot)输入,\( V \) 为词汇表大小。
  • 投影层:通过一个共享的投影矩阵,将输入层映射到一个稠密的投影层 \( P \),维度为 \( N \times D \)\( D \) 为词向量维度。
  • 隐藏层:包含 \( H \) 个非线性单元。
  • 输出层:维度为 \( V \),通过Softmax计算下一个词的概率分布。

计算复杂度 Q:

\[ Q = N \times D + N \times D \times H + H \times V \]
  • 第一项 \( N \times D \):从输入层到投影层的计算。由于只有 \( N \) 个输入是激活的,这部分相对廉价。
  • 第二项 \( N \times D \times H \):从投影层到隐藏层的计算。由于投影层的值是稠密的,这一项计算量非常大,成为主要瓶颈之一。
  • 第三项 \( H \times V \):从隐藏层到输出层的计算。由于 \( V \) 通常很大(几十万到百万),这一项通常是最大的计算负担

优化策略(层次Softmax):

为了解决 \( H \times V \) 过大的问题,作者采用了层次Softmax技术。具体做法是将词汇表表示为霍夫曼二叉树

  • 霍夫曼树会给高频词分配较短的二进制编码。
  • 在评估时,不需要计算所有 \( V \) 个输出单元,只需要计算路径上的节点,复杂度从 \( V \) 降至约 \( \log_2(\text{Unigram Perplexity}(V)) \)
  • 例如,当 \( V = 100 \) 万时,普通Softmax需要计算100万次,而层次Softmax大约只需计算 20-30次,速度提升显著。

关键点:尽管层次Softmax缓解了输出层的压力,但NNLM的主要瓶颈依然在于投影层到隐藏层的 \( N \times D \times H \) 计算。


2.2 Recurrent Neural Net Language Model, RNNLM

RNNLM是为了克服前馈网络需要固定上下文长度 \( N \) 的局限性而提出的。

架构特点:

  • 无投影层:直接由输入层、隐藏层和输出层组成。
  • 循环连接:隐藏层通过延时连接连接到自身的上一时刻状态,形成短期记忆。理论上可以捕捉任意长度的历史信息。
  • 词向量维度 \( D \) 等于隐藏层维度 \( H \)

计算复杂度 Q:

\[ Q = H \times H + H \times V \]
  • 第一项 \( H \times H \):这是隐藏层到自身的循环矩阵计算,代表了状态更新的复杂度。
  • 第二项 \( H \times V \):同NNLM,是隐藏层到输出层的计算。

优化策略:

同样可以使用层次Softmax\( H \times V \) 优化为 \( H \times \log_2(V) \)

关键点:优化后,RNNLM的主要瓶颈变为 \( H \times H \)。由于隐藏层单元通常在500-1000之间,这一项的计算量仍然很大。


2.3 Parallel Training of Neural Networks

为了在超大规模数据集(如60亿词)上训练模型,作者使用了Google的DistBelief分布式框架。

并行策略:

  • 模型副本:同时运行多个相同的模型副本。
  • 参数服务器:所有副本通过一个中央服务器同步梯度更新,该服务器维护全局参数。
  • 优化算法:采用小批量异步梯度下降,结合Adagrad自适应学习率算法。

规模:

  • 通常使用100个或更多模型副本。
  • 每个副本运行在不同的机器上,利用多核CPU进行计算。

关键点:这种并行架构使得在合理时间内训练超大规模语料成为可能,为后续CBOW和Skip-gram模型在大数据上的成功奠定了基础。


3. New Log-linear Models

alt text

CBOW 架构根据上下文预测当前词,SG则预测给定当前词时周围的词

3.0 设计思想:简化模型,放大数据

  • 传统的NNLM和RNNLM依赖非线性的隐藏层来捕捉复杂的语言模式,但这也带来了极高的计算复杂度(尤其是 \( N \times D \times H \)\( H \times H \))。
  • 作者提出:如果能够用更简单的模型在更多数据上训练,或许可以弥补模型本身表达能力的不足,甚至取得更好的效果。
  • 这就是“简单模型 + 海量数据”的理念,直接催生了CBOW和Skip-gram。

3.1 Continuous Bag-of-Words Model

架构概述

CBOW的架构与NNLM非常相似,但去掉了非线性隐藏层,并将投影层简化为对所有输入词向量的简单平均。其目标是根据上下文词来预测当前词(即中间词)。

具体工作原理

  • 输入:当前词 \( w(t) \) 的上下文,例如前后各 \( k \) 个词(通常取前后4个词,共8个词)。这些上下文词的one-hot向量通过一个共享的输入权重矩阵 \( W \) 映射为各自的词向量。
  • 投影层:将所有上下文词的词向量进行求和或平均,得到一个单一的投影向量。这一操作完全消除了词序信息,因此称为“词袋”模型,但由于词向量是连续的,所以是“连续词袋”。
  • 输出:投影向量直接连接到输出层,通过层次Softmax计算当前词 \( w(t) \) 的概率分布。整个模型本质上是一个对数线性分类器,其训练目标是最大化给定上下文时中间词的正确预测概率。

计算复杂度

CBOW每个训练样本的复杂度为: [ Q = N \times D + D \times \log_2(V) ] - \( N \times D \):从输入层到投影层的计算(即查找并平均 \( N \) 个词的向量)。由于投影层没有非线性变换,这一项非常轻量。 - \( D \times \log_2(V) \):从投影层到输出层的层次Softmax计算。由于去掉了隐藏层,输出层可以直接利用投影向量进行分类。

与NNLM相比,CBOW完全消除了昂贵的 \( N \times D \times H \) 项,因此计算速度极快。例如,对于 \( N=8, D=300, V=10^6 \),NNLM可能需要数十亿次浮点运算,而CBOW只需几百万次。

关键特点

  • 无词序信息:上下文词向量被平均,因此不关心词的顺序。这对于某些任务可能是缺点,但实验证明对于学习高质量词向量影响不大,而且大大简化了模型。
  • 利用未来词:与标准语言模型(只使用历史词)不同,CBOW同时使用前向和后向的上下文,因此能更全面地捕捉词的语义。
  • 训练目标:本质上是一个完形填空任务——根据周围的词猜测中间的词。

3.2 Continuous Skip-gram Model

架构概述

Skip-gram可以看作CBOW的“反转”:给定当前词,预测它周围的上下文词。它同样没有隐藏层,直接利用当前词的向量去预测上下文中各个词的向量。

原理

  • 输入:当前词 \( w(t) \) 的one-hot向量通过输入权重矩阵 \( W \) 得到其词向量 \( v_{w(t)} \)
  • 投影层:实际上没有额外的投影层,当前词的向量直接作为输入特征。
  • 输出:将当前词的向量连接到多个输出分类器(每个输出对应一个上下文位置),每个分类器通过层次Softmax预测该位置上的词。实际上,模型会为每个上下文词独立地计算一个概率分布。

复杂度分析

训练复杂度与选择的上下文窗口大小 \( C \) 成正比。对于每个训练样本,模型会从窗口 \( <1, C> \) 中随机选择一个数 \( R \),然后从历史中取 \( R \) 个词,从未来中取 \( R \) 个词,共计 \( 2R \) 个上下文词作为预测目标。因此,每个样本的复杂度为: [ Q = C \times (D + D \times \log_2(V)) ] - \( C \times D \):对于每个上下文词,需要将输入词向量传递到输出层(即 \( D \) 次乘法)。但由于权重共享,实际计算量近似为 \( C \times D \)。 - \( C \times D \times \log_2(V) \):对每个上下文词执行层次Softmax分类。

作者在实验中通常取 \( C=10 \),因此每个输入词要预测约20个上下文词(左右各10个,但实际采样会随距离衰减)。

关键特点

  • 预测上下文:Skip-gram的目标是让当前词的向量能够很好地预测其周围的词,这迫使向量捕捉词的语义和共现关系。
  • 距离衰减:由于距离越远的词相关性越低,模型在训练时会对远距离词进行降采样(即减少训练次数),从而平衡计算效率和语义相关性。这体现在随机选择 \( R \) 的过程中。
  • 更适用于语义任务:实验证明Skip-gram在语义相似性任务上表现优于CBOW,这可能是因为它更关注词的共现模式,而不仅仅是上下文平均。

3.3 与传统模型的对比

特性 NNLM RNNLM CBOW Skip-gram
非线性隐藏层
计算瓶颈 \( N \times D \times H \) \( H \times H \) 几乎无瓶颈 \( C \) 线性增加
上下文利用 固定前 \( N \) 个词 理论上无限历史 前后固定窗口(平均) 前后固定窗口(独立预测)
训练速度 极快 较快(但比CBOW慢)
语义任务表现 较好 一般 最佳

3.4 层次Softmax的应用

CBOW和Skip-gram都依赖层次Softmax来高效计算输出概率。第二章已介绍了层次Softmax的原理(使用霍夫曼树),这里再强调其在简化模型中的重要性:由于没有隐藏层,输出层的计算直接成为主要部分。如果不使用层次Softmax,直接计算 \( D \times V \) 的矩阵乘法(相当于对每个词打分)将极其昂贵,尤其当 \( V \) 达百万时。层次Softmax将复杂度从 \( O(V) \) 降到 \( O(\log V) \),使得在普通单机上训练百万词汇成为可能。

总结

第三章通过引入两种对数线性模型——CBOW和Skip-gram,彻底改变了词向量学习的范式。CBOW通过平均上下文来预测中心词,Skip-gram通过中心词预测上下文。它们去除了非线性隐藏层,将计算复杂度降低到几乎只与输入输出维度相关,从而能够在海量数据上快速训练,同时产生高质量的句法和语义向量。这些模型至今仍是表示学习领域的基石。

演示网站


4. 实验结果

4.1 任务描述

设计了一个包含5类语义问题和9类句法问题的测试集,用于评估词向量的质量。

4.2 精度最大化

实验表明,增加向量维度和训练数据量能提升精度,但需平衡计算成本。

4.3 模型架构对比

  • Skip-gram在语义任务上表现最佳,CBOW在句法任务上略优。
  • 两者均优于传统NNLM和RNNLM。

4.4 大规模并行训练

在Google News的60亿词数据集上训练,使用DistBelief框架,模型在语义和句法任务上均取得显著提升。


5. 示例分析与讨论

通过代数操作(如“巴黎”-“法国”+“意大利”≈“罗马”)展示了词向量的语义规律性。使用多个示例构造关系向量可进一步提升精度。


6. 结论

提出CBOW和Skip-gram两种简单高效的词向量学习模型,计算复杂度低,适合大规模数据训练。这些向量在多项NLP任务中表现优异,未来可应用于知识库扩展、机器翻译等领域。

Comments