论文 · arXiv 1301.3781
向量空间中词表示的高效估计 (Efficient Estimation of Word Representations in Vector Space)
Efficient Estimation of Word Representations in Vector Space
三句话总结
- 🎯 以往的神经网络语言模型计算成本过高,难以在数十亿 token 的语料库上训练高维词表示。
- 🔧 提出了两种舍弃非线性隐藏层的对数线性架构:Continuous Bag-of-Words(根据上下文预测中心词)与 Continuous Skip-gram(根据中心词预测上下文),二者均使用 hierarchical softmax 进行优化。
- 📈 基于 DistBelief 在 60 亿 token 上训练出 1000 维词向量,Skip-gram 在包含 19,544 个问题的新语义-句法类比基准上取得了 65.6% 的总准确率,以极小的计算成本超越了复杂的神经模型。
摘要
我们提出了两种新颖的模型架构,用于从超大规模数据集中计算词的连续向量表示。我们在词相似度任务中评估了这些表示的质量,并将结果与此前基于不同类型神经网络的最佳技术进行了比较。我们观察到,在计算成本显著降低的同时,准确率得到了大幅提升:从包含 16 亿词的数据集中学习高质量的词向量只需不到一天的时间。此外,我们证明这些向量在用于衡量句法和语义词相似度的测试集上均取得了最先进的性能。
英文原文摘要
We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The quality of these representations is measured in a word similarity task, and the results are compared to the previously best performing techniques based on different types of neural networks. We observe large improvements in accuracy at much lower computational cost, i.e. it takes less than a day to learn high quality word vectors from a 1.6 billion words data set. Furthermore, we show that these vectors provide state-of-the-art performance on our test set for measuring syntactic and semantic word similarities.
论文解读
问题与动机
传统的 NLP 系统将词表示为离散的原子索引,忽略了词语固有的语义和句法关系。尽管使用神经网络语言模型(NNLM)或循环神经网络语言模型(RNNLM)训练的分布式词表示明显优于 n-gram,但其高昂的计算复杂度阻碍了模型的扩展。以往的架构极少能在超过数亿词的数据上进行训练,且维度通常被限制在 到 之间。
在前馈 NNLM 中,计算瓶颈主要来自稠密的非线性隐藏层()和未归一化的词表输出层()。本文的目标是消除非线性隐藏层这一瓶颈,使模型能够扩展到数十亿个训练 token 和包含数百万词的词汇表,同时保留微妙的线性关系(例如,)。
核心思想
- 去除隐藏层非线性:通过去除隐藏层的非线性激活函数,大幅降低训练复杂度,从而可以大幅增加语料库规模与嵌入维度。
- 连续词袋模型(Continuous Bag-of-Words, CBOW):一种对数线性分类器,根据给定目标中心词周围的上下文词(包含前向和后向)来预测中心词。上下文向量会在一个共享投影层中取平均。
- 连续 Skip-gram 模型(Continuous Skip-gram):一种对数线性分类器,仅根据当前中心词预测滑动窗口内的周围上下文词,距离中心词较远的词被采样的概率较低。
- 结合 Huffman 编码的 Hierarchical Softmax:Softmax 归一化的计算成本从 降低到大约 (或者通过给高频词分配更短编码的 Huffman 树降至 )。
- 类比评测基准:提出了一个包含 19,544 个测试题的新评测集,利用向量运算和余弦距离来评估句法(如比较级、过去式)和语义(如首都-国家、货币)层面的语言规律。
方法(及核心公式)
训练复杂度定义为在 个 epoch、训练集大小为 个词、单样本开销为 条件下的参数访问次数:
前馈 NNLM 基线
设上下文长度为 ,嵌入维度为 ,隐藏层单元数为 ,词表大小为 : 当使用 hierarchical softmax 时,输出层项降低为 ,此时 成为计算瓶颈。
循环神经网络语言模型(RNNLM)基线
隐藏状态维度 等于嵌入维度 : 使用 hierarchical softmax 时,输出层项降低为 ,此时循环转移计算 成为主要的计算开销。
连续词袋模型(CBOW)
CBOW 用针对 个上下文词(通常为前 4 个词和后 4 个词)的平均投影层取代了隐藏层:
连续 Skip-gram 模型
Skip-gram 以中心词为输入,预测最大距离为 (实验中 )范围内的上下文词。对于每个词,均匀抽取偏移量 ,并预测前后各 个词:
类比检索
形式为“ 之于 犹如 之于 ”的问题,通过寻找在词表中最大化以下余弦距离的目标向量 来回答:
实验结果(核心数据)
- 类比基准评测性能(640 维,3.2 亿词):
- RNNLM:语义 9%,句法 36%。
- NNLM:语义 23%,句法 53%。
- CBOW:语义 24%,句法 64%。
- Skip-gram:语义 55%,句法 59%。
- 在 Google News 60 亿 token 上的扩展实验(DistBelief 分布式训练):
- NNLM( 维):语义 34.2%,句法 64.5%,总计 50.8%(耗费 CPU 核心·天)。
- CBOW( 维):语义 57.3%,句法 68.9%,总计 63.7%(耗费 CPU 核心·天)。
- Skip-gram( 维):语义 66.1%,句法 65.1%,总计 65.6%(耗费 CPU 核心·天)。
- 微软句子补全挑战(Microsoft Sentence Completion Challenge):单模型 Skip-gram 准确率达到 48.0%;与 RNNLM 集成后达到了 58.9% 的 SOTA 准确率。
- 训练轮数与数据量的权衡:在两倍数据上训练 1 个 epoch 的效果相当于甚至优于在较少数据上训练 3 个 epoch,同时大幅减少了实际训练耗时。
局限性与开放问题
- 完全匹配评估指标:测试集将同义词判定为错误(例如预测了等价的有效城市名称或复数形式),导致人为设定了低于 100% 的准确率上限。
- 缺乏子词(Subword)形态学:词被当作独立的 token 处理;模型未利用内部字符或词素结构,限制了其在生僻词或屈折变化词上的句法泛化能力。
- 多词短语:模型仅针对单 token 词进行操作,无法原生处理多词短语(如“New York”)。
- 句子补全任务性能:在微软句子补全任务中,Skip-gram 单模型准确率(48.0%)低于平均 LSA 相似度(49.0%),仍需结合 RNNLM 才能取得优异效果。
关键术语
- Continuous Bag-of-Words Model
- 一种对数线性神经架构(CBOW),它在没有隐藏层的情况下,通过对前后上下文词向量求连续平均来预测目标中心词。
- Continuous Skip-gram Model
- 一种对数线性模型,使用目标词向量在动态采样的窗口内预测周围的上下文词。
- Hierarchical Softmax
- 一种输出层近似方法,将词汇表组织成二叉树(如 Huffman 树),将计算复杂度从 降低到大约 。
- Semantic-Syntactic Word Relationship test set
- 包含 19,544 个类比问题(8,869 个语义问题和 10,675 个句法问题)的基准测试集,专门用于使用余弦相似度评估向量偏移关系。
- DistBelief
- Google 开发的分布式计算框架,用于通过异步梯度更新在数百个 CPU 核心上训练神经网络架构。
- Word offset technique
- 一种简单的向量算术方法(如 ),用于通过最近邻余弦搜索识别类比词。
- Huffman binary tree
- 一种基于词频的词表编码二叉树表示,在 hierarchical softmax 中用于为高频词分配更短的路径,从而削减评估计算成本。
常见问题
NNLM 和 CBOW 之间最主要的架构差异是什么?
CBOW 完全去除了非线性隐藏层,并在一个共享投影层中对上下文词的连续表示取平均,从而消除了 的计算瓶颈。
Continuous Skip-gram 如何处理不同距离的上下文词?
Skip-gram 会采样最大距离为 (通常为 10)以内的上下文词,但对于每个训练词,它会随机抽取一个窗口大小 ,从而降低较远距离词的采样频率。
哪种模型在语义任务与句法任务上表现更好?
CBOW 在句法类比任务上准确率更高(640 维时为 64% vs 59%),而 Skip-gram 在语义类比任务上的表现明显更好(640 维时为 55% vs 24%)。
是训练多个 epoch 更好,还是用更少 epoch 训练更多数据更好?
论文发现,在两倍数据上训练单个 epoch 所获得的表示质量,等于或优于在较少数据上迭代训练 3 个 epoch,同时训练速度也更快。
本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。