Word2Vec

Word2Vec是词嵌入领域的里程碑工作,它让词向量能够捕获语义关系,为现代NLP奠定了基础。理解Word2Vec是掌握词嵌入技术的起点。

学习难度:入门·阅读时间:约10分钟

Word2Vec概述

历史背景

2013年,Google的Mikolov等人提出了Word2Vec:

  • 之前的词表示方法(如TF-IDF)无法捕获语义
  • Word2Vec让相似词有相似的向量
  • 引发了词嵌入研究的热潮

核心思想

分布式假设:

"出现在相似上下文中的词具有相似的含义"

两个模型架构

  • CBOW:根据上下文预测目标词
  • Skip-gram:根据目标词预测上下文

CBOW模型

模型结构

Continuous Bag of Words:

  1. 输入:上下文词的one-hot编码
  2. 词嵌入层:将one-hot映射为词向量
  3. 平均:对上下文词向量取平均
  4. 输出层:预测目标词的概率分布

示例

句子:"我 喜欢 学习 AI"

  • 上下文:["我", "学习", "AI"]
  • 目标词:"喜欢"
  • 模型根据上下文预测"喜欢"

特点

  • ✅ 训练速度快
  • ✅ 对小数据集效果好
  • ❌ 忽略上下文顺序

Skip-gram模型

模型结构

Skip-gram与CBOW相反:

  1. 输入:目标词的one-hot编码
  2. 词嵌入层:获取目标词的词向量
  3. 输出层:预测每个上下文位置的概率分布

示例

句子:"我 喜欢 学习 AI"

  • 目标词:"喜欢"
  • 预测上下文:["我", "学习", "AI"]

特点

  • ✅ 对罕见词效果更好
  • ✅ 能学习更细粒度的语义
  • ❌ 训练时间较长

CBOW vs Skip-gram

特性CBOWSkip-gram
训练速度
罕见词一般
小数据集一般
大数据集一般

优化技术

计算瓶颈

原始softmax输出层计算成本高:

P(w|c) = exp(v_w · v_c) / Σ exp(v_i · v_c)

分母需要对词汇表中所有词求和,计算量大。

层次Softmax

  • 使用哈夫曼树组织词汇表
  • 将计算复杂度从O(V)降到O(log V)

负采样(Negative Sampling)

更流行的优化方法:

  • 只更新正样本和少量负样本
  • 将多分类问题转化为二分类
  • 极大降低计算成本

负采样公式

最大化:log σ(v_w · v_c) + Σ log σ(-v_neg · v_c)

词向量特性

语义相似性

相似的词在向量空间中距离近:

  • 相似度通常用余弦相似度衡量
  • "猫"和"狗"的向量比"猫"和"汽车"更近

类比关系

词向量支持向量运算表达关系:

国王 - 男人 + 女人 ≈ 王后
北京 - 中国 + 法国 ≈ 巴黎

可视化

通过降维可视化词向量:

  • 语义相关的词聚类在一起
  • 可以发现词之间的关系结构

应用场景

下游NLP任务

  • 文本分类:用词向量表示文本
  • 命名实体识别:作为特征输入
  • 情感分析:捕获语义信息
  • 机器翻译:跨语言词向量

推荐系统

  • Item2Vec:将物品序列视为句子
  • 学习物品的向量表示
  • 用于相似物品推荐

局限性

  • 无法处理多义词(一个词一个向量)
  • 不考虑上下文(静态嵌入)
  • 后续被上下文嵌入(BERT等)超越
----