在词嵌入(Word Embedding)技术中,通常使用 Softmax 作为输出层来计算词表中所有词的概率分布。如果词表很大,使用 Softmax 将会带来很大的计算开销,因为 Softmax 需要对词表中的每一个词汇进行指数计算以及归一化。
负采样就是一种用于优化词嵌入模型在大规模数据集上的训练效率的策略。负采样方法的具体工作原理如下:
- 正样本:正常预测的标签。例如:对于 SkipGram 模型,其上下文词为正样本标签。对于 CBOW 模型,其预测的中心词为这样本标签。
- 负样本:为了训练模型识别中心词与其上下文词之间的关联性,模型不仅需要看到正例,还需要“见到”反例。负采样就是从词汇表中随机抽取一定数量的词作为假定的“非关联词”,这些词就是负样本。
注意:选择负样本并不是随机的,而是需要通过一定的策略,比如通过词频采样,综合选择一些高频词和低频词共同作为负样本。
通过负采样,模型能够聚焦于最有效的负面训练信号上,显著减少计算量并加快收敛速度,同时还能保持或改进词向量的质量。
1. CBOW 模型
假设:输入的序列为:”a b c d e f g h i j k l m n o p q”
- 窗口大小:2
- 背景词:a、b、d、e
- 中心词:c
- 负采样:k、m、n、p、q(负采样数量5)
输入 a、b、c、d ,希望预测 c 的概率越大越好,k、m、n、p、q 的概率越小越好
- \(v_{t}\) 表示背景词向量的平均,即:a、b、c、d 的平均向量
- \(u_{target}\) 表示目标词 \(w_{t}\) 的词向量,即:c 的词向量
- \(v_{i}\) 表示第 i 个负样本词的词向量
- K 表示负样本词的数量,是一个超参数
- σ 表示 sigmoid 函数
2. Skip-Gram 模型
假设:输入的序列为:”a b c d e f g h i j k l m n o p q”
- 窗口大小:2
- 背景词:a、b、d、e
- 中心词:c
- 负采样:k、m、n、p、q(负采样数量5)
输入 c,希望预测 a、b、c、d 的概率越大越好,k、m、n、p、q 的概率越小越好
- \(v_{i}\) 表示每个上下文词,即:a、b、c、d 中的词
- \(v_{j}\) 表示负样本中的词,即:k、m、n、p、q 中的词
- \(v_{WI}\) 表示输入词,即:中心词 c