Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
《Distributed Representations of Words and Phrases and their Compositionality》:Word2Vec 如何把上下文变成词向量
2026-08-14

《Distributed Representations of Words and Phrases and their Compositionality》:Word2Vec 如何把上下文变成词向量

从 Skip-gram 的局部预测出发,读懂负采样、子采样和短语 token 如何把词的共现关系变成可计算的向量结构,并学会把训练速度、类比准确率与方法边界放在一起判断。

AI经典论文精读
AI经典论文精读@xinrui.zhao
一个词的含义,能不能不靠词典定义,而是从它经常和谁一起出现中学出来?如果模型总在「France」附近看到「Paris」,总在「quick」附近看到「quickly」,那么它是否会把这些关系压进一组可以计算的数字里?
2013 年的 Distributed Representations of Words and Phrases and their Compositionality 给出的答案,不是先给每个词标注语义,而是让一个中心词去预测窗口里的上下文词。预测得越准,词向量就越需要保留这个词在语料中留下的分布痕迹。论文在此前 Skip-gram 的基础上加入高频词子采样和 Negative Sampling,又把训练单位扩展到短语。1
这篇论文最值得带走的问题是:一个看似很弱的局部预测任务,为什么能形成可做语义和句法类比的向量空间?答案要沿着训练目标、计算近似和实验设置一起读。只看 word2vec 这个名字,会错过它真正做的三次取舍。

词向量先学会预测邻居

论文的训练单位不是「词的定义」,而是一段文本里的中心词和邻近词。设句子中的词序列为 w₁, w₂, ..., w_T,以 w_t 为中心、窗口半径为 c,Skip-gram 要最大化:
(1/T) Σ_t Σ_{-c≤j≤c, j≠0} log p(w_{t+j} | w_t)
这行公式在算什么?对每个中心词,模型把窗口中的每个上下文词都当成一个预测目标。例如窗口半径为 2 时,中心词 w_t 要分别预测 w_{t-2}、w_{t-1}、w_{t+1} 和 w_{t+2}。一个中心词因此产生多个训练约束,而不是只产生一个标签。2
Skip-gram 中心词经过 projection,同时预测窗口内四个上下文词
原论文 Figure 1:中心词 w(t) 经过 projection 后,分别预测 w(t-2)、w(t-1)、w(t+1) 和 w(t+2)。图中展示的是训练目标的数据流,不是模型在推理时生成一句话。3
每个词有一个输入向量 v_w,也有一个输出向量 v'_w。给定中心词 w_I 和目标上下文词 w_O,标准 softmax 用两个向量的点积计算分数,再对整个词表归一化:
p(w_O | w_I) = exp(v'_{w_O}ᵀ v_{w_I}) / Σ_{w=1}^W exp(v'_wᵀ v_{w_I})
点积越大,模型就越倾向于认为这两个词应该一起出现。训练许多句子之后,经常出现在相似上下文中的词会收到相似的更新,向量也就可能靠近。这个「靠近」不是人为写入的词义,而是预测相似邻居带来的结果。论文用 vec(Madrid) - vec(Spain) + vec(France) 找到接近 vec(Paris) 的向量,说明某些关系可以表现为向量空间中的方向。4

全词表 softmax 太贵,负采样改了什么

标准 softmax 的问题在分母:每处理一个中心词—上下文词对,都要给词表中的 W 个词计算分数。论文指出,词表常有 10⁵ 到 10⁷ 个词,因此一次梯度计算的成本会随 W 增长。2
论文先介绍了层次 softmax(Hierarchical Softmax)。它把词放在二叉树的叶子上,预测一个目标词时,只需沿着根节点到该词的路径做若干次二分类。使用 Huffman 树后,常见词拥有较短路径,单个目标词的计算量从遍历 W 个输出节点降到大约 log₂(W) 个节点。5
Negative Sampling 采取的是另一种近似。它不再试图给整个词表分配一组严格归一化的概率,而是把一个真实上下文词和 k 个随机抽来的噪声词放在一起做二分类:真实词的点积要高,噪声词的点积要低。
论文的目标函数是:
log σ(v'_{w_O}ᵀ v_{w_I}) + Σ_{i=1}^k E_{w_i∼P_n(w)}[log σ(-v'_{w_i}ᵀ v_{w_I})]
逐项读这条式子:
  1. log σ(v'_{w_O}ᵀ v_{w_I}) 奖励真实中心词—上下文词对。两个向量点积越大,第一项越接近 0,损失越小。
  2. log σ(-v'_{w_i}ᵀ v_{w_I}) 惩罚噪声词得到过高分。噪声词的点积越小,负号后的值越大,第二项越容易优化。
  3. k 决定每个正例要配多少个负例。论文在小数据集上观察到 k=5—20 有用,在大数据集上则可以小到 2—5。这不是免费的精度:k 越大,每个训练样本的计算也越多。6
这里有一个必须保留的边界:负采样的目标不再是完整 softmax 的严格概率目标。论文明确把它当作学习高质量词向量的简化方法,而不是完整语言模型概率的等价计算。它之所以有用,是因为表示学习需要的是足够多、足够有区分度的更新,不一定需要每一步都对整个词表归一化。
噪声怎么抽也会影响结果。论文把词频分布 U(w) 提升到 3/4 次幂:
P_n(w) = U(w)^{3/4} / Z
这个分布仍然让常见词更可能成为负例,但会相对提高低频词被抽到的机会。论文报告,这个选择在尝试过的任务上优于原始词频分布和均匀分布。6
因此,负采样真正换掉的是计算方式:从「每个正例都和整个词表比较」改成「每个正例只和少量噪声词比较」。它保留了区分真实共现与随机共现的训练压力,却把单个样本的成本压到了与 k 有关的规模。

子采样不是清洗,而是改造训练数据

新闻语料里,the、in、a 这样的高频词会出现数亿次。它们当然有语法作用,但对很多词对来说,France 和 the 的共现信息远不如 France 和 Paris 有区分度。若把每次出现都保留下来,高频词会消耗大量训练时间,并反复提供低信息约束。7
论文以词频 f(w_i) 和阈值 t 定义丢弃概率:
P(w_i) = 1 - √(t / f(w_i))
当一个词的频率高于阈值很多时,它更容易被丢弃;低频词则大多保留。论文通常把 t 设在 10⁻⁵ 左右。这个操作同时改变两件事:训练样本减少,训练速度提高;高频词被删掉后,稀有词在有效窗口里遇到的上下文也发生变化,向量质量可能随之提高。
所以子采样不能被理解成训练前的无害去噪。它决定模型究竟看见哪些共现关系,是训练分布的一部分。负采样改变了每个正例要和谁比较,子采样改变了哪些正例有机会出现;两者都在动训练目标的实际计算形态。

Table 1 的数字应该怎样读

论文用约 10 亿词的新闻数据训练 Skip-gram,删除出现次数少于 5 次的词后,词表有 692K 个词。评测任务是语义和句法类比:例如计算 vec(Berlin) - vec(Germany) + vec(France),再用余弦距离寻找最近的词。这个任务测的是向量关系能否支持一类固定的几何操作,不是对所有语言理解能力的总测验。8
Table 1 的关键数字如下。训练时间单位是分钟,准确率分为句法、语义和总准确率;后半部分使用 10⁻⁵ 子采样。9
方法子采样训练时间(分钟)句法准确率语义准确率总准确率
NEG-5无3863%54%59% 9
HS-Huffman无4153%40%47% 9
NEG-510⁻⁵1461%58%60% 9
NEG-1510⁻⁵3661%61%61% 9
HS-Huffman10⁻⁵2152%59%55% 9
从这张表可以读出三件事。
第一,子采样把 NEG-5 的训练时间从 38 分钟降到 14 分钟,总准确率从 59% 变成 60%。NEG-15 也从无子采样时的 97 分钟降到 36 分钟,总准确率从 61% 变成 61%。论文因此把子采样的主要效果概括为提速,同时在这组任务上保持或提升表示质量。
第二,NEG-15 和 HS-Huffman 的相对表现会随数据处理方式变化。使用子采样后,NEG-15 的总准确率是 61%,HS-Huffman 是 55%;但这不是所有任务和数据规模下的普遍排序。论文自己也指出,训练算法和超参数需要按任务选择。
第三,训练时间和准确率必须一起看。只报 61% 会掩盖 k=15 比 k=5 多付出的计算;只报 14 分钟又看不出它的总准确率只比没有子采样的 NEG-5 高 1 个百分点。论文的贡献在于把大规模训练的速度、数据处理和表示效果放进同一组实验里比较。8

为什么还要把短语变成一个 token

单词向量有一个结构性缺口:有些短语的含义不是组成它们的单词含义简单相加。「Boston Globe」是报纸名称,「Air Canada」是航空公司名称;只把 Boston 和 Globe、Air 和 Canada 的向量分别学好,并不能保证模型自动得到整个短语的含义。4
论文的处理办法很直接:先用数据驱动的方法找经常一起出现、在其他上下文中又不常一起出现的词组,把它们替换成独立 token。例如 New York Times 和 Toronto Maple Leafs 会作为整体进入训练;普通的 this is 则保持不变。短语检测分数为:
score(w_i, w_j) = [count(w_i w_j) - δ] / [count(w_i) × count(w_j)]
δ 是折扣项,用来避免大量低频词偶然组成短语。经过 2—4 轮扫描,模型可以先找到二元短语,再把更长的短语组合出来。10
短语实验说明,表现来自多项设置的合力。Table 2 的短语类比测试集包含 3218 个例子,最佳模型达到 72% 准确率;但在约 10 亿词、300 维的设置下,Table 3 中的结果会随负例数量、层次 softmax 和子采样发生明显变化。NEG-15 使用子采样时为 42%,HS-Huffman 使用子采样时为 47%,而未使用子采样时分别只有 27% 和 19%。1112
论文随后把数据扩大到约 330 亿词,把向量维度提高到 1000,并使用整句作为上下文,短语类比准确率达到 72%;把训练数据缩小到 60 亿词后,准确率降到 66%。这组数字不能单独证明「数据越多就一定越好」,但它清楚说明:短语表示的结果受训练数据量、向量维度、上下文范围和训练算法共同影响。13

向量加法为什么偶尔像在做组合

论文还报告了一个容易被过度解读的现象:某些词向量可以直接相加,得到有意义的近邻。例如 vec(Russia) + vec(river) 接近 vec(Volga River)。为什么加法可能有效?论文给出的解释是,词向量在训练中记录了上下文分布;输出层的点积与概率的对数相关,因此两个向量相加,近似对应把两组上下文约束叠加起来。只有同时得到两边高分的词,才更容易在组合后留下来。14
这个解释也说明了加法的边界。它依赖训练语料中确实存在稳定的共同上下文,依赖向量空间把某种关系近似成方向,还依赖测试方式正好用余弦距离寻找最近邻。类比成功说明模型在这类评测上学到了可用结构,不等于向量包含了完整、上下文无关的词义。

这篇论文真正解决了什么,又留下了什么

把前面的实验和公式放在一起,论文的推进顺序很清楚:
  • 原始 Skip-gram 用局部预测目标,把词的分布信息压进向量。
  • 层次 softmax 用树结构绕开完整词表遍历;Negative Sampling 则用少量噪声二分类换取更低的单样本成本。
  • 子采样减少低信息高频共现,同时改变稀有词训练时看到的上下文。
  • 短语 token 把单词组合无法表达的 idiomatic phrase 纳入同一个训练框架。
这些机制共同解释了为什么模型能在大语料上训练出有用的向量。它们没有证明词向量理解了人的词典定义,也没有给出对所有语言任务都成立的语义表示。论文的实验主要围绕新闻语料、类比任务和训练效率展开;类比准确率、语料规模和分钟数必须一起看,不能把其中一个数字抽出来代表全部贡献。
读这类表示学习论文时,可以固定检查三个位置:目标函数要求表示保留什么信息;计算近似删掉了什么;实验指标究竟覆盖了哪些能力。在 Word2Vec 里,第一问的答案是局部共现,第二问的答案是完整 softmax 的词表归一化,第三问的答案是特定语料上的句法和语义类比。这样读,便不会把「向量能做类比」误写成「模型已经获得一般语言理解」。

后续影响:中心词—上下文框架可以离开文本

Word2Vec 的一个可迁移想法,是把「预测邻居」看成学习表示的通用训练方式。2015 年的 Comprehend DeepWalk as Matrix Factorization 摘要明确指出,DeepWalk 把 Skip-gram 引入社交网络的节点表示学习,并把它解释为对一个由随机游走共现概率构成的矩阵进行分解。文本里的邻近词被换成图上的邻近节点,中心—上下文预测的形式仍然保留。15
这说明 Word2Vec 的影响不只在于产生了一套词向量文件,还在于它把表示学习的问题改写成了一个可扩展的预测问题:只要能定义「中心对象」和「上下文对象」,就可以尝试让向量编码它们的共现结构。这个判断适用于文本与图的连接,但不能进一步外推成所有 embedding 方法都等价于 Word2Vec。
2013 年之前的 Efficient Estimation of Word Representations in Vector Space 已经提出 CBOW 和 Skip-gram 两种架构,并报告在 16 亿词数据上不到一天训练高质量词向量;当前论文承接其中的 Skip-gram,把训练速度、负采样、子采样和短语表示推进到同一套大规模实验里。16
如果想沿原始材料继续读,先看这篇论文的 arXiv 摘要页 核对版本和摘要,再打开 HTML 全文 对照公式、算法和表格。读完以后,回到自己的训练任务,先写清楚「谁是中心对象、什么算上下文、怎样采样负例」,这三个问题往往比先调向量维度更能决定你究竟学到了什么。

References

  1. 1
    Distributed Representations of Words and Phrases and their Compositionality(arXiv 摘要页)

    arxiv.org

  2. 2
    Distributed Representations of Words and Phrases and their Compositionality(第 2 节)

    ar5iv.labs.arxiv.org

  3. 3
    原论文 Figure 1

    ar5iv.labs.arxiv.org

  4. 4
    Distributed Representations of Words and Phrases and their Compositionality(引言)

    ar5iv.labs.arxiv.org

  5. 5
    Distributed Representations of Words and Phrases and their Compositionality(第 2.1 节)

    ar5iv.labs.arxiv.org

  6. 6
    Distributed Representations of Words and Phrases and their Compositionality(第 2.2 节与式(4))

    ar5iv.labs.arxiv.org

  7. 7
    Distributed Representations of Words and Phrases and their Compositionality(第 2.3 节)

    ar5iv.labs.arxiv.org

  8. 8
    Distributed Representations of Words and Phrases and their Compositionality(第 3 节)

    ar5iv.labs.arxiv.org

  9. 9
    Distributed Representations of Words and Phrases and their Compositionality(Table 1)

    ar5iv.labs.arxiv.org

  10. 10
    Distributed Representations of Words and Phrases and their Compositionality(第 4 节与式(6))

    ar5iv.labs.arxiv.org

  11. 11
    Distributed Representations of Words and Phrases and their Compositionality(Table 2 与 Table 3)

    ar5iv.labs.arxiv.org

  12. 12
    Distributed Representations of Words and Phrases and their Compositionality(Table 3)

    ar5iv.labs.arxiv.org

  13. 13
    Distributed Representations of Words and Phrases and their Compositionality(第 4.1 节)

    ar5iv.labs.arxiv.org

  14. 14
    Distributed Representations of Words and Phrases and their Compositionality(第 5 节)

    ar5iv.labs.arxiv.org

  15. 15
    Comprehend DeepWalk as Matrix Factorization(arXiv 摘要页)

    arxiv.org

  16. 16
    Efficient Estimation of Word Representations in Vector Space(arXiv 摘要页)

    arxiv.org

AI经典论文精读
AI经典论文精读@xinrui.zhao

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 词向量先学会预测邻居
  • 全词表 softmax 太贵,负采样改了什么
  • 子采样不是清洗,而是改造训练数据
  • Table 1 的数字应该怎样读
  • 为什么还要把短语变成一个 token
  • 向量加法为什么偶尔像在做组合
  • 这篇论文真正解决了什么,又留下了什么
  • 后续影响:中心词—上下文框架可以离开文本