标准回答
Word2Vec 是 Mikolov 等人提出的词向量学习方法,核心思想是「一个词的含义由它的上下文决定」(分布式假设),通过预测词与上下文的关系来学习向量。
如何获取词向量
Word2Vec 是一个只有一层隐藏层的浅层神经网络,用语料本身构造自监督任务,包含两种结构:
- CBOW(连续词袋):用上下文词预测中心词。把窗口内若干上下文词的向量求和/平均,再预测中心词。训练快,对高频词友好。
- Skip-gram:用中心词预测上下文词。对每个中心词分别预测窗口内的各个上下文词。训练较慢,但对低频词和小语料效果更好。
训练时网络输入是 one-hot,输入层到隐藏层的权重矩阵形状为 V×N(V 为词表大小,N 为向量维度)。训练完成后,这个输入权重矩阵的每一行就是对应词的词向量——隐藏层没有激活函数,本质就是一张查找表(lookup table)。
如何评估词向量的好坏
分为内在评估与外在评估两类:
1. 内在评估(Intrinsic) 直接考察向量空间本身的性质:
- 词类比(Analogy):检验 king - man + woman ≈ queen 这类关系能否在向量运算中成立。
- 词相似度(Similarity):计算词对的余弦相似度,与人工标注的相似度打分求相关系数(如 Spearman),相关性越高越好。
- 聚类 / 可视化:用 t-SNE 等降维观察同类词是否聚集。
2. 外在评估(Extrinsic) 把词向量作为特征输入下游任务(文本分类、命名实体识别 NER、情感分析等),看任务指标是否提升。外在评估最贴近实际应用,但受下游模型影响,成本也更高。
实践中常先用内在评估快速筛选,再用目标任务的外在评估做最终选型。
常见误区
⚠️ 常见踩坑
误以为 Word2Vec 训练后要取隐藏层到输出层的权重,或要用整个网络做推理。实际上词向量就是输入层权重矩阵的行向量,输出层权重在得到词向量后即可丢弃;另一个误区是只看词类比这类内在指标就下结论,而忽略了对真实下游任务的外在评估。
追问
追问 1:CBOW 和 Skip-gram 在什么场景下各自更有优势?
CBOW 把多个上下文词聚合预测中心词,训练速度快、对高频词表示更平滑,适合大语料、追求效率的场景。Skip-gram 为每个中心词单独预测各上下文词,等价于产生更多训练样本,对低频词和小规模语料学习更充分,表示质量通常更高,但训练更慢。
追问 2:为什么内在评估好的词向量,下游任务不一定好?
内在评估(词类比、相似度)只衡量向量空间的局部几何性质,而下游任务还依赖任务相关的语义、领域适配以及上游模型结构。某些向量在通用相似度上表现好,但在特定领域(如医疗、法律)缺乏针对性,因此最终仍要以目标任务的外在指标为准。
追问 3:词类比任务 king - man + woman ≈ queen 背后的原理是什么?
Word2Vec 学到的向量空间近似具有线性结构,某些语义/语法关系(如"性别""单复数")被编码为相对稳定的方向向量。king 与 man 的差向量大致表示"王室-性别"的偏移,加到 woman 上后落在 queen 附近。这反映了分布式表示对类比关系的捕捉能力,但并非对所有关系都严格成立。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习