Word2Vec 模型的工作原理
Word2Vec 模型的工作原理
Word2Vec 是由 Google 研究员 Tomas Mikolov 等人于 2013 年提出的词向量生成模型,核心目标是将词语转化为低维稠密的向量,使语义相关的词在向量空间中位置相近。其工作原理基于语言建模和神经网络优化,通过预测词语的上下文关系来学习语义表征。
一、核心思想:用上下文建模语义
Word2Vec 假设 “一个词的语义由其周围的上下文决定”(分布式假设)。例如,“狗” 和 “猫” 常出现在相似的上下文中(如 “宠物”“吠叫”“抓老鼠”),因此它们的向量在空间中会接近。
模型通过构建一个简化的语言模型,用神经网络预测词语与其上下文的关系,在训练过程中优化词向量参数,最终得到每个词的稠密表示。
二、两种核心架构
Word2Vec 有两种主要模型架构:连续词袋模型(CBOW)和Skip-gram 模型。两者的区别在于 “预测方向” 不同:
-
连续词袋模型(CBOW)
- 目标:根据上下文词语(Context)预测当前词(Target)。
- 示例:输入上下文 “我” 和 “自然语言处理”,预测中间词 “爱”。
- 网络结构:
- 输入层:上下文词语的独热编码(One-Hot Encoding)。
- 嵌入层:将独热向量映射到低维词向量(即待学习的参数)。
- 隐藏层:对上下文词向量求和或平均(无激活函数)。
- 输出层:通过 Softmax 预测目标词的概率(词汇表大小为输出维度)。
- 数学表达:\(\hat{y} = \text{softmax}\left( W' \cdot \left( \sum_{c \in \text{Context}} e_c \right) + b' \right)\) 其中 \(e_c\) 是上下文词的向量,\(W'\) 和 \(b'\) 是输出层参数。
-
Skip-gram 模型
- 目标:根据当前词(Target)预测上下文词语(Context)。
- 示例:输入词 “爱”,预测上下文 “我” 和 “自然语言处理”。
- 网络结构:
- 输入层:目标词的独热编码。
- 嵌入层:映射到低维词向量。
- 隐藏层:直接传递词向量(无激活函数)。
- 输出层:对每个上下文位置独立预测词语概率(通常用多个 Softmax 层)。
- 数学表达:\(\hat{y}_i = \text{softmax}\left( W' \cdot e_t + b'_i \right) \quad (i \text{ 为上下文位置})\) 其中 \(e_t\) 是目标词向量,\(b'_i\) 是不同上下文位置的偏置。
三、优化方法:降低计算复杂度
直接使用 Softmax 训练 Word2Vec 会面临两个问题:
- 词汇表过大:Softmax 计算复杂度为 \(O(V)\)(V 为词汇表大小),训练效率极低。
- 负样本过多:非上下文词(负样本)远多于正样本,导致梯度更新低效。
Word2Vec 引入两种优化技术解决上述问题:
1. 层次 Softmax(Hierarchical Softmax)
- 原理:用哈夫曼树(Huffman Tree)将词汇表组织成二叉树结构,每个叶子节点对应一个词语,非叶子节点代表分类决策点。
- 优势:将 Softmax 的 \(O(V)\) 计算复杂度降为 \(O(\log V)\)。
- 训练过程:
- 从根节点到目标词的叶子节点的路径为正样本,路径上的每个分支对应一个二分类任务(左子树为 1,右子树为 0)。
- 通过逻辑回归(Sigmoid)预测每个分支的方向,优化路径上的参数。
2. 负采样(Negative Sampling)
- 原理:不计算所有负样本的梯度,仅随机采样少量负样本(如 5-20 个)进行更新。
- 步骤:
- 对于当前正样本对(目标词与上下文词),保留其梯度更新。
- 从噪声分布(通常基于词频的幂律分布,如 \(P(w) \propto f(w)^{0.75}\))中采样负样本。
- 对每个负样本,用二分类任务训练(正样本标签为 1,负样本标签为 0)。
- 优势:大幅减少计算量,尤其适合大规模语料。
四、词向量的生成与存储
- 训练完成后:嵌入层的权重矩阵即为词向量表,每行对应一个词语的向量。
- 向量维度:通常为 50-300 维,维度越高可捕捉的语义细节越丰富,但计算成本也越高。
- 输出形式:每个词向量是单位长度的归一化向量,便于用余弦相似度衡量语义相关性。
五、CBOW 与 Skip-gram 的对比
特性 | CBOW | Skip-gram |
---|---|---|
适合场景 | 高频词、小数据集、短文本 | 低频词、大数据集、长文本 |
训练速度 | 更快(输入为多个上下文词的平均) | 较慢(每次处理单个目标词) |
语义捕捉 | 侧重整体上下文共性 | 擅长捕捉一词多义(因关注单个词) |
六、经典案例:类比推理
Word2Vec 学习到的向量具有线性代数性质,典型示例为类比推理:\(\text{国王} - \text{男人} + \text{女人} \approx \text{女王}\)
- 原理:向量间的差值反映语义关系(如 “性别”“职位”),模型通过上下文学习到这类关系的线性表示。
七、总结
Word2Vec 的核心贡献在于:
- 用简单高效的神经网络架构解决了词向量的表征问题;
- 首次实现了语义关系的数学化(如向量加减);
- 为后续预训练模型(如 BERT)奠定了基础。
尽管其生成的是 “静态词向量”(一词一向量,不依赖上下文),但至今仍是 NLP 入门和基础任务(如文本分类)的常用工具。