基于连续词袋模型(CBOW)的Word2Vec词向量训练算法详解
字数 1311 2025-11-16 06:38:48

基于连续词袋模型(CBOW)的Word2Vec词向量训练算法详解

我将为您详细讲解Word2Vec中的CBOW模型,这是一个重要的词向量学习算法。

📌 算法概述
CBOW(Continuous Bag-of-Words)是Word2Vec的两种主要架构之一,其核心思想是通过上下文词语来预测中心词。与Skip-gram模型相反,CBOW是用周围的词来预测中间的词。

🔄 算法流程详解

  1. 数据预处理
    首先对原始文本进行预处理:
  • 分词:将文本分割成单词序列
  • 构建词汇表:统计所有单词的出现频率,并为每个单词分配唯一索引
  • 去除低频词:通常过滤掉出现次数少于某个阈值的单词
  1. 训练样本构建
    对于文本序列中的每个位置,构建(上下文,中心词)训练对:
  • 设定窗口大小(如5):中心词前后各取2个词
  • 示例:"the quick brown fox jumps"中,如果中心词是"brown",则上下文为["the", "quick", "fox", "jumps"]
  1. 模型架构详解

输入层:

  • 上下文词语的one-hot编码向量
  • 向量维度等于词汇表大小V
  • 每个词语对应一个维度为1,其他为0的稀疏向量

投影层(隐藏层):

  • 将多个上下文词的one-hot向量通过共享的权重矩阵W(V×N维)映射到低维空间
  • 计算方式:对上下文词的向量取平均后乘以权重矩阵
  • 数学表达:h = (1/C) × Wᵀ × (∑xᵢ),其中C是上下文词数量

输出层:

  • 通过第二个权重矩阵W'(N×V维)将隐藏层向量映射回词汇表空间
  • 计算得分向量:u = W'ᵀ × h
  • 应用softmax函数得到每个词作为中心词的概率分布
  1. 训练过程

前向传播:

  • 输入上下文词的one-hot向量
  • 计算隐藏层向量h
  • 计算输出得分u
  • 通过softmax得到概率分布:P(w_c|w_{context}) = exp(u_c) / ∑exp(u_j)

损失函数:

  • 使用交叉熵损失:L = -log(P(w_c|w_{context}))
  • 其中w_c是真实的中心词

反向传播:

  • 计算输出层的误差梯度
  • 通过链式法则反向传播误差
  • 更新权重矩阵W和W'
  1. 优化技巧

层次softmax:

  • 使用霍夫曼树来组织词汇表
  • 将复杂度从O(V)降低到O(logV)
  • 高频词拥有更短的路径

负采样:

  • 随机采样K个负样本(非目标词)
  • 优化目标:最大化正样本概率,最小化负样本概率
  • 损失函数:logσ(v'{w_O}ᵀh) + ∑logσ(-v'{w_i}ᵀh)
  1. 词向量提取

训练完成后:

  • 权重矩阵W的每一行对应一个词的词向量
  • 这些向量捕获了词语的语义和语法信息
  • 相似词在向量空间中位置接近

✨ 算法特点

优点:

  • 训练效率高,特别是使用优化方法后
  • 对高频词的处理效果更好
  • 能够很好地捕获词语的语义相似性

缺点:

  • 对罕见词的处理相对较差
  • 无法很好地处理一词多义现象

🔍 实际应用
CBOW训练出的词向量广泛应用于:

  • 文本分类的特征输入
  • 推荐系统的物品表示
  • 问答系统的语义匹配
  • 机器翻译的词语对齐

这个算法通过简单的神经网络结构,有效地学习了词语的分布式表示,为后续的深度学习模型奠定了基础。

基于连续词袋模型(CBOW)的Word2Vec词向量训练算法详解 我将为您详细讲解Word2Vec中的CBOW模型,这是一个重要的词向量学习算法。 📌 算法概述 CBOW(Continuous Bag-of-Words)是Word2Vec的两种主要架构之一,其核心思想是通过上下文词语来预测中心词。与Skip-gram模型相反,CBOW是用周围的词来预测中间的词。 🔄 算法流程详解 数据预处理 首先对原始文本进行预处理: 分词:将文本分割成单词序列 构建词汇表:统计所有单词的出现频率,并为每个单词分配唯一索引 去除低频词:通常过滤掉出现次数少于某个阈值的单词 训练样本构建 对于文本序列中的每个位置,构建(上下文,中心词)训练对: 设定窗口大小(如5):中心词前后各取2个词 示例:"the quick brown fox jumps"中,如果中心词是"brown",则上下文为[ "the", "quick", "fox", "jumps" ] 模型架构详解 输入层: 上下文词语的one-hot编码向量 向量维度等于词汇表大小V 每个词语对应一个维度为1,其他为0的稀疏向量 投影层(隐藏层): 将多个上下文词的one-hot向量通过共享的权重矩阵W(V×N维)映射到低维空间 计算方式:对上下文词的向量取平均后乘以权重矩阵 数学表达:h = (1/C) × Wᵀ × (∑xᵢ),其中C是上下文词数量 输出层: 通过第二个权重矩阵W'(N×V维)将隐藏层向量映射回词汇表空间 计算得分向量:u = W'ᵀ × h 应用softmax函数得到每个词作为中心词的概率分布 训练过程 前向传播: 输入上下文词的one-hot向量 计算隐藏层向量h 计算输出得分u 通过softmax得到概率分布:P(w_ c|w_ {context}) = exp(u_ c) / ∑exp(u_ j) 损失函数: 使用交叉熵损失:L = -log(P(w_ c|w_ {context})) 其中w_ c是真实的中心词 反向传播: 计算输出层的误差梯度 通过链式法则反向传播误差 更新权重矩阵W和W' 优化技巧 层次softmax: 使用霍夫曼树来组织词汇表 将复杂度从O(V)降低到O(logV) 高频词拥有更短的路径 负采样: 随机采样K个负样本(非目标词) 优化目标:最大化正样本概率,最小化负样本概率 损失函数:logσ(v' {w_ O}ᵀh) + ∑logσ(-v' {w_ i}ᵀh) 词向量提取 训练完成后: 权重矩阵W的每一行对应一个词的词向量 这些向量捕获了词语的语义和语法信息 相似词在向量空间中位置接近 ✨ 算法特点 优点: 训练效率高,特别是使用优化方法后 对高频词的处理效果更好 能够很好地捕获词语的语义相似性 缺点: 对罕见词的处理相对较差 无法很好地处理一词多义现象 🔍 实际应用 CBOW训练出的词向量广泛应用于: 文本分类的特征输入 推荐系统的物品表示 问答系统的语义匹配 机器翻译的词语对齐 这个算法通过简单的神经网络结构,有效地学习了词语的分布式表示,为后续的深度学习模型奠定了基础。