核心要点

  • GloVe(Global Vectors)先遍历整个语料构建全局词-词共现矩阵,统计词 i 与上下文词 j 共同出现的次数。

  • 训练目标是用加权最小二乘拟合「两个词向量的点积加偏置约等于它们共现次数的对数」,让向量编码全局共现统计。

  • 它兼顾全局统计信息(类矩阵分解)与局部上下文窗口(类 Word2Vec),介于两类方法之间。

  • 优点:充分利用全局共现、训练可并行、在词类比任务上常更稳定;缺点:需要存储共现矩阵(内存大),且和 Word2Vec 一样是静态词向量,无法表达一词多义。

标准回答

训练流程:先统计,再拟合

GloVe 全称 Global Vectors,分两步。第一步构建全局共现矩阵 X:扫一遍整个语料,用滑动窗口统计每个词 i 与上下文词 j 在窗口内共同出现的加权次数(距离越远权重越小),得到一个稀疏的词-词共现矩阵。第二步拟合对数共现:让两个词向量的点积去逼近它们共现次数的对数,即优化目标大致是「词向量点积 + 偏置 约等于 log(共现次数)」,并对每对词加一个权重函数 f(X_ij),给高频对设上限、给极低频对降权,避免常见词和噪声主导损失。整个目标是加权最小二乘,可对非零共现对并行优化。

为什么这样设计

GloVe 的核心洞察是:词义关系更多体现在共现概率的比值上。比如 ice 和 steam,用 solid 做探针时 P(solid|ice)/P(solid|steam) 会很大。把目标设为拟合共现概率的对数,正好让向量差编码这种比值关系,这也是它在词类比(king - man + woman 约等于 queen)上表现稳定的原因。

应用场景

作为通用静态词向量,可用于文本分类、命名实体识别、检索等任务的词嵌入初始化,也常作为下游模型的特征层或相似度计算基础,官方还发布了基于大规模语料的预训练向量直接复用。

相比 Word2Vec 的优缺点

优点:Word2Vec(Skip-gram/CBOW)逐窗口采样、只用局部上下文,GloVe 直接利用全局共现统计,信息利用更充分;目标是确定的最小二乘,便于并行,在词类比上常更稳。缺点:需要先构建并存储共现矩阵,大词表时内存开销大;且二者同属静态词向量,每个词一个固定向量,无法区分一词多义。

常见误区

⚠️ 常见踩坑

GloVe 不是简单的「计数矩阵分解」也不是纯预测模型,它是把全局共现统计塞进一个带权重的回归目标里,介于两者之间;另外别以为它比 Word2Vec 一定更强,实际效果取决于语料和任务,二者常常各有胜负。

追问

追问 1GloVe 损失里的权重函数 f(X_ij) 有什么作用?

它解决高频与低频共现对的不均衡问题。如果直接对所有共现对做最小二乘,像 the、of 这类超高频共现会主导损失,而大量低频共现又可能是噪声。f(X_ij) 通常是一个分段函数:共现次数低时权重随次数增长,超过阈值后封顶为常数,这样既不让极高频对过度主导,也给低频对合理但有限的权重,并且让共现为 0 的对权重为 0、被直接跳过,从而只在非零项上训练。

追问 2GloVe 既然用了全局共现,为什么仍解决不了一词多义?

因为它为每个词只学习一个固定向量。共现矩阵把一个词在所有语境下的共现统计「平均」到了一起,bank 在「河岸」和「银行」语境下的共现都被压进同一行,最终得到的是混合语义的单一向量。要表达一词多义,需要像 ELMo、BERT 那样根据具体句子上下文动态生成向量,而 GloVe 的训练范式本身不具备这种上下文感知能力。

追问 3什么情况下你会选 GloVe 而不是 Word2Vec?

当语料相对固定、可以一次性统计出共现矩阵并反复训练时,GloVe 的全局信息利用和可并行优化比较划算,尤其想要稳定的词类比表现或直接复用官方预训练向量时。反之,如果语料是流式/超大、内存吃紧、共现矩阵难以承受,或更看重在线增量更新,Word2Vec 的逐样本负采样训练更轻便。实际工程里也常两者都试,按下游指标择优。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习