WordEmbedding 和 Word2Vec 的区别
1 课程概览
本课讲解 Word Embedding(词嵌入)的概念及其与 Word2Vec 的区别。Word Embedding 有广义和狭义两种解释:广义指所有稠密词向量表示法,狭义指 RNN 中的词嵌入层。Word2Vec 是静态词向量,Word Embedding 是动态词向量。
2 核心概念与定义
- Word Embedding(词嵌入):通过一定方式将词汇映射到指定维度(一般更高维度)空间的表示法。
- 广义:所有稠密词向量表示法(包括 Word2Vec)
- 狭义:深度神经网络中的词嵌入层(如 RNN 的 Embedding 层)
- 静态词向量(Static Word Vector):Word2Vec 训练后词向量固定不变。
- 动态词向量(Dynamic Word Vector):Word Embedding 层的词向量随模型训练而更新。
3 模型与算法详解
Word Embedding 两种解释
广义解释
- 所有稠密词向量表示法都是 Word Embedding
- 包括 Word2Vec、FastText 等
- 可使用浅层网络或深层网络
狭义解释
- 指深度神经网络中的词嵌入层
- 即 RNN 中的 Embedding 层
- RNN 结构:词嵌入层 → 循环网络层 → 输出层
Word2Vec vs Word Embedding 对比
| 对比项 | Word2Vec | Word Embedding(nn.Embedding) |
|---|---|---|
| 词向量性质 | 静态 | 动态 |
| 训练方式 | 先单独训练词向量,再做任务 | 训练过程中自动生成词向量 |
| 操作步骤 | 两步:①训练词向量;②代入模型 | 一步:创建词向量和训练模型合成 |
| 权重更新 | 训练后固定 | 随模型训练更新 |
| 通俗比喻 | "先办证后干活" | "边办证边干活" |
Word2Vec 核心逻辑
先办证后干活
- 先单独训练好词向量模型
- 再拿这些词向量去做模型任务
Word Embedding 核心逻辑
边办证边干活
- 不单独训练词向量
- 创建词向量和训练模型合成一步完成
- 训练过程中词向量会自动生成并更新
nn.Embedding 代码示例
import torch.nn as nn
# 20个单词,每个用8个数字表示
# 形状:20 × 8
embedding = nn.Embedding(
num_embeddings=20, # 词汇量
embedding_dim=8 # 词向量维度
)
4 数学原理与推导
Word Embedding 映射
将词汇映射到高维空间:
$$\text{Embedding}: w \rightarrow \mathbb{R}^d$$
其中 $d$ 为嵌入维度。
nn.Embedding 权重矩阵
$$W \in \mathbb{R}^{V \times d}$$
其中 $V$ 为词汇量,$d$ 为嵌入维度。
静态 vs 动态更新
Word2Vec(静态):
$$W_{\text{final}} = W_{\text{trained}} \quad \text{(训练后固定)}$$
Word Embedding(动态):
$$W^{(t+1)} = W^{(t)} - \alpha \frac{\partial L}{\partial W} \quad \text{(随训练更新)}$$
5 代码示例
import torch
import torch.nn as nn
# Word Embedding 示例
# 20个单词,每个用8维向量表示
embedding = nn.Embedding(num_embeddings=20, embedding_dim=8)
# 输入单词索引
word_indices = torch.LongTensor([0, 1, 2, 3])
# 获取词向量
word_vectors = embedding(word_indices)
print("词向量形状:", word_vectors.shape) # torch.Size([4, 8])
6 重难点与易错提醒
- ❗重点:Word Embedding 广义 = 所有稠密词向量表示法;狭义 = RNN 的词嵌入层。
- ❗重点:Word2Vec 是静态词向量(先办证后干活),Word Embedding 是动态词向量(边办证边干活)。
- ⚠️易错:Word2Vec 训练后词向量固定不变,Word Embedding 随模型训练更新。
- 💡深入理解:nn.Embedding 是 PyTorch 中的词嵌入层,形状为 $V \times d$。
- 💡深入理解:Word2Vec 需要两步(训练 + 使用),Word Embedding 一步完成。
7 课堂问答精选
Q1:Word Embedding 的广义和狭义解释是什么?
A:广义解释是所有稠密词向量表示法(包括 Word2Vec);狭义解释指深度神经网络中的词嵌入层,即 RNN 的 Embedding 层。
Q2:Word2Vec 和 Word Embedding 的核心区别是什么?
A:①Word2Vec 是静态词向量,训练后固定;Word Embedding 是动态词向量,随训练更新。②Word2Vec 需两步(先训练词向量,再做任务);Word Embedding 一步完成(创建词向量和训练模型合成)。
Q3:如何通俗理解两者的区别?
A:Word2Vec 是"先办证后干活"(先单独训练词向量,再代入模型做任务);Word Embedding 是"边办证边干活"(训练过程中自动生成并更新词向量)。
8 本课小结
- Word Embedding:广义=所有稠密词向量表示法,狭义=RNN 词嵌入层。
- Word2Vec:静态词向量,"先办证后干活",两步操作。
- Word Embedding:动态词向量,"边办证边干活",一步操作。
- nn.Embedding:PyTorch 词嵌入层,形状 $V \times d$。
- 核心区别:静态 vs 动态,两步 vs 一步。
9 延伸思考
- 在什么场景下使用 Word2Vec 更合适?什么场景下使用 Word Embedding 更合适?
- 动态词向量相比静态词向量有什么优势?