核心思想
Word2Vec是一种通过无监督学习获取词汇向量表示的算法,核心假设是分布相似性:语义相似的词会出现在相似的上下文中。其目标是将单词映射到低维稠密向量空间,使得:
模型架构
CBOW (Continuous Bag-of-Words)
- 通过上下文预测中心词
- 目标函数:最大化对数似然
上下文词向量与中心词向量
在 CBOW 模型中,每个词对应两种向量表示:
-
上下文词向量(Context Word Vector):当词作为上下文词时,其对应的向量。记为 ,其中 表示词的索引。上下文词向量也是CBOW模型中词的嵌入向量。
-
中心词向量(Center Word Vector):当词作为中心词(目标词)时,其对应的向量。记为 ,其中 表示中心词的索引。中心词向量不用做词嵌入,只是用于辅助概率计算。
输入矩阵与输出矩阵
CBOW 模型通过两个矩阵定义词向量:
-
输入矩阵(Input Matrix):记为 ,其中 是词汇表大小, 是向量维度。矩阵的每一行对应一个词的上下文词向量。例如,词 的上下文词向量为 。
-
输出矩阵(Output Matrix):记为 ,矩阵的每一列对应一个词的中心词向量。例如,词 的中心词向量为 。
计算过程
给定一个上下文窗口大小为 的词序列,CBOW 的目标是通过上下文词预测中心词。具体步骤如下:
- 获取上下文词向量
对窗口内的所有上下文词 ,从输入矩阵 中提取向量 ,并计算均值:
- 计算中心词得分
对每个可能的中心词 ,计算其与上下文词均值向量的相似度得分:
- Softmax 归一化
将得分转换为概率分布:
下图演示了词汇表大小为5,词嵌入维度为3时CBOW的计算流程:
在实际实现中,输出矩阵就是Softmax的权重矩阵。
损失函数
CBOW 使用负对数似然损失函数。对每个上下文窗口和对应的中心词 ,损失函数定义为:
其中:
- 是训练文本的总词数。
- 外层求和表示对所有中心词求平均。
Skip-gram
简介
- 通过中心词预测上下文
-
更擅长处理低频词
-
目标函数:
中心词向量与上下文词向量
在 SkipGram 模型中,每个词对应两种向量表示:
-
中心词向量(Center Word Vector):当词作为中心词时,其对应的向量。记为 ,其中 表示词的索引。中心词向量也是SkipGram模型中词的嵌入向量。
-
上下文词向量(Context Word Vector):当词作为上下文词时,其对应的向量。记为 ,其中 表示上下文词的索引。上下文词向量不用做词嵌入,只是用于辅助概率计算。
输入矩阵与输出矩阵
SkipGram 模型通过两个矩阵定义词向量:
-
输入矩阵(Input Matrix):记为 ,其中 是词汇表大小, 是向量维度。矩阵的每一行对应一个词的中心词向量。例如,词 的中心词向量为 。
-
输出矩阵(Output Matrix):记为 ,矩阵的每一列对应一个词的上下文词向量。例如,词 的上下文词向量为 。
计算过程
给定一个中心词 和上下文窗口大小 ,SkipGram 的目标是计算窗口内上下文词的条件概率。具体步骤如下:
-
获取中心词向量
通过输入矩阵 得到中心词 的向量 。 -
计算上下文词得分
对每个可能的上下文词 ,计算其与中心词的相似度得分:
- Softmax 归一化
将得分转换为概率分布:
下图演示了词汇表大小为5,词嵌入维度为3时SkipGram的计算流程:
损失函数
SkipGram 使用负对数似然损失函数。对每个中心词 和上下文窗口内的所有上下文词 ,损失函数定义为:
其中:
- 是训练文本的总词数。
- 内层求和表示对上下文窗口内的每个词计算负对数概率。
- 外层求和表示对所有中心词求平均。
关键优化技术
1. 层次Softmax
-
使用霍夫曼树编码词频
-
时间复杂度从降为
-
节点概率计算:
2. 负采样 (Negative Sampling)
-
用噪声对比估计替代softmax
-
目标函数变为:
参数设置
- 向量维度:通常100-500维
- 窗口大小:5-10
- 负样本数:5-20
优缺点
优点:
- 高效训练。
- 捕获语义规律。
局限:
- 无法处理一词多义.
- 上下文窗口固定。
通过分布式表示突破传统one-hot编码的维度灾难,为NLP带来里程碑式进展。