自用。nlp课程预习。待补充
数学原理概述
假设词汇表有 个词,而词向量的维度为
。Skip-gram的基本目标是通过优化一个目标函数来训练词向量,使得模型能够从中心词预测上下文词。
1. 词向量表示
在Skip-gram模型中,我们有两个矩阵:
- 词嵌入矩阵
:维度为
,其中每一行是一个词的词向量。
- 输出矩阵
:维度为
,表示词的输出向量。
在训练过程中,首先通过词嵌入矩阵 查找中心词的向量,然后通过矩阵
来计算预测上下文词的概率。
2. 目标函数(优化目标)
给定一个中心词 和一个上下文词
,希望通过
来预测
。通过计算条件概率来实现:
其中:
是中心词
的词向量。
是上下文词
的词向量。
- 分母是归一化项,表示所有词的概率分布。
为了优化模型,我们使用 交叉熵损失 作为目标函数:
其中 是词
的上下文词集合,
是语料库中所有词的总数。优化这个目标函数可以通过梯度下降法来实现。
3. 训练过程
- 从语料中随机选择一个中心词
和其上下文词
。
- 计算
的词向量
和上下文词
的词向量
。
- 计算目标函数(交叉熵损失)。
- 使用梯度下降算法更新词向量矩阵
和
。
4. 近似计算
在实际训练过程中,由于词汇表可能非常大,直接计算归一化项(分母)会非常耗时。因此,通常采用 负采样(Negative Sampling) 或 层次Softmax(Hierarchical Softmax) 方法来近似优化。
- 负采样:通过仅随机选择一些负样本(不是上下文词的词)来简化优化。
- 层次Softmax:利用霍夫曼树对词汇进行编码,从而加速计算。