当前位置: 首页 > news >正文

Word2Vec 模型的工作原理

Word2Vec 模型的工作原理

Word2Vec 是由 Google 研究员 Tomas Mikolov 等人于 2013 年提出的词向量生成模型,核心目标是将词语转化为低维稠密的向量,使语义相关的词在向量空间中位置相近。其工作原理基于语言建模神经网络优化,通过预测词语的上下文关系来学习语义表征。

一、核心思想:用上下文建模语义

Word2Vec 假设 “一个词的语义由其周围的上下文决定”(分布式假设)。例如,“狗” 和 “猫” 常出现在相似的上下文中(如 “宠物”“吠叫”“抓老鼠”),因此它们的向量在空间中会接近。

模型通过构建一个简化的语言模型,用神经网络预测词语与其上下文的关系,在训练过程中优化词向量参数,最终得到每个词的稠密表示。

二、两种核心架构

Word2Vec 有两种主要模型架构:连续词袋模型(CBOW)Skip-gram 模型。两者的区别在于 “预测方向” 不同:

  1. 连续词袋模型(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'\) 是输出层参数。
  2. 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 会面临两个问题:

  1. 词汇表过大:Softmax 计算复杂度为 \(O(V)\)(V 为词汇表大小),训练效率极低。
  2. 负样本过多:非上下文词(负样本)远多于正样本,导致梯度更新低效。

Word2Vec 引入两种优化技术解决上述问题:

1. 层次 Softmax(Hierarchical Softmax)
  • 原理:用哈夫曼树(Huffman Tree)将词汇表组织成二叉树结构,每个叶子节点对应一个词语,非叶子节点代表分类决策点。
  • 优势:将 Softmax 的 \(O(V)\) 计算复杂度降为 \(O(\log V)\)。
  • 训练过程
    • 从根节点到目标词的叶子节点的路径为正样本,路径上的每个分支对应一个二分类任务(左子树为 1,右子树为 0)。
    • 通过逻辑回归(Sigmoid)预测每个分支的方向,优化路径上的参数。
2. 负采样(Negative Sampling)
  • 原理:不计算所有负样本的梯度,仅随机采样少量负样本(如 5-20 个)进行更新。
  • 步骤
    1. 对于当前正样本对(目标词与上下文词),保留其梯度更新。
    2. 从噪声分布(通常基于词频的幂律分布,如 \(P(w) \propto f(w)^{0.75}\))中采样负样本。
    3. 对每个负样本,用二分类任务训练(正样本标签为 1,负样本标签为 0)。
  • 优势:大幅减少计算量,尤其适合大规模语料。
四、词向量的生成与存储
  • 训练完成后:嵌入层的权重矩阵即为词向量表,每行对应一个词语的向量。
  • 向量维度:通常为 50-300 维,维度越高可捕捉的语义细节越丰富,但计算成本也越高。
  • 输出形式:每个词向量是单位长度的归一化向量,便于用余弦相似度衡量语义相关性。
五、CBOW 与 Skip-gram 的对比
特性CBOWSkip-gram
适合场景高频词、小数据集、短文本低频词、大数据集、长文本
训练速度更快(输入为多个上下文词的平均)较慢(每次处理单个目标词)
语义捕捉侧重整体上下文共性擅长捕捉一词多义(因关注单个词)
六、经典案例:类比推理

Word2Vec 学习到的向量具有线性代数性质,典型示例为类比推理:\(\text{国王} - \text{男人} + \text{女人} \approx \text{女王}\)

  • 原理:向量间的差值反映语义关系(如 “性别”“职位”),模型通过上下文学习到这类关系的线性表示。
七、总结

Word2Vec 的核心贡献在于:

  1. 用简单高效的神经网络架构解决了词向量的表征问题;
  2. 首次实现了语义关系的数学化(如向量加减);
  3. 为后续预训练模型(如 BERT)奠定了基础。

尽管其生成的是 “静态词向量”(一词一向量,不依赖上下文),但至今仍是 NLP 入门和基础任务(如文本分类)的常用工具。

http://www.xdnf.cn/news/527635.html

相关文章:

  • c#基础01(.Net介绍)
  • 图漾相机错误码解析(待补充)
  • 51单片机实现流水灯
  • 大数据hadoop小文件处理方案
  • 解锁MySQL性能调优:高级SQL技巧实战指南
  • visual studio code中的插件都是怎么开发的?用的什么编程语言?
  • 深度解析3D模型生成器:基于StyleGAN3与PyTorch3D的多风格生成工具开发实战
  • stm32week16
  • PyMOL结构对齐方式
  • 我的食物信使女友
  • 操作符的详解
  • Google机器学习实践指南(训练与损失函数篇)
  • 避开封禁陷阱:动态IP在爬虫、跨境电商中的落地实践
  • 网络安全之大模型隐私攻击技术
  • 使用 OpenCV 实现 ArUco 码识别与坐标轴绘制
  • OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()
  • 耗时十分钟,做了一个 uniapp 灵感泡泡机
  • 【QT】一个界面中嵌入其它界面(三)
  • DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成
  • 系统安全及应用学习笔记
  • MySQL数据库基础 -- SQL 语句的分类,存储引擎
  • 系统安全应用
  • 【C++】map和multimap的常用接口详解
  • flask蓝图的导入与注册
  • VS2017编译librdkafka 2.1.0
  • 【语音克隆Open Voice的使用】
  • mysql的安装方式
  • 【成品设计】基于STM32的环境监控系列
  • labview硬件开发板——LED流水灯
  • 微服务项目->在线oj系统(Java版 - 4)