Word2Vec词向量生成算法
字数 1115 2025-10-27 11:27:25
Word2Vec词向量生成算法
题目描述
Word2Vec是一种将单词转换为稠密向量的算法,这些向量能捕捉单词的语义和语法关系。例如,"国王"和"王后"的向量关系可能类似于"男人"和"女人"的关系。题目要求理解Word2Vec的核心思想、两种模型架构(Skip-gram和CBOW),以及如何通过训练得到词向量。
解题过程
-
核心思想:分布式假设
- 背景:传统方法(如One-hot编码)无法表达单词间的关联。
- 关键假设:上下文相似的单词,其语义也相似。例如,"苹果"和"香蕉"可能出现在"吃"、"水果"等相似上下文环境中。
- 目标:将每个单词映射为一个低维稠密向量,使得语义相近的单词在向量空间中距离更近。
-
模型架构:CBOW(连续词袋模型)
- 输入:给定一个单词的上下文(例如前后各2个单词),预测中心词。
- 示例:句子"I drink apple juice"中,若中心词为"apple",则输入为["drink", "juice"](忽略顺序),输出为目标"apple"。
- 过程:
- 输入层:上下文单词的One-hot向量。
- 隐藏层:将输入向量乘以权重矩阵(即词嵌入矩阵),得到上下文向量的平均值。
- 输出层:通过Softmax计算目标词的概率分布。
- 特点:适合小型数据集,对高频词效果较好。
-
模型架构:Skip-gram(跳字模型)
- 输入:给定中心词,预测其上下文单词。
- 示例:中心词"apple"作为输入,输出可能是["drink", "juice"]。
- 过程:
- 输入层:中心词的One-hot向量。
- 隐藏层:通过权重矩阵得到中心词的向量表示。
- 输出层:计算上下文中每个单词的条件概率。
- 特点:适合大型数据集,能更好处理低频词。
-
训练优化:负采样(Negative Sampling)
- 问题:原始Softmax计算开销大(词汇表可能包含数万词)。
- 解决方案:
- 正样本:真实上下文单词(如"juice")。
- 负样本:随机采样K个非上下文单词(如"dog", "car")。
- 目标函数:最大化正样本概率,最小化负样本概率。
- 效果:大幅提升训练速度,是Word2Vec实用的关键。
-
向量关系的几何解释
- 训练后,词向量空间中的方向可表示语义关系。
- 示例:向量("国王") - 向量("男人") + 向量("女人") ≈ 向量("王后")。
- 原理:模型在训练中捕捉了上下文分布的共性模式。
总结
Word2Vec通过预测单词与其上下文的关系,学习到具有语义信息的词向量。Skip-gram和CBOW是两种对称的架构,负采样等技术解决了计算效率问题。最终得到的向量可用于下游任务(如文本分类、机器翻译)。