Negative Sampling

分类: NLP基础

Negative Sampling

定义

负采样(Negative Sampling)是 Word2Vec 中为避免计算完整 softmax 归一化而提出的近似训练方法。对于每个正样本(目标词-上下文词对),随机采样 kk 个噪声词作为负样本,将多分类问题转化为 k+1k+1 个二分类问题,使训练复杂度从 O(V)O(|V|) 降至 O(k)O(k)

数学形式

Skip-gram + Negative Sampling 的目标函数:

L=logσ(uwOvwI)+i=1kEwiPn(w)[logσ(uwivwI)]\mathcal{L} = \log \sigma(u_{w_O}^\top v_{w_I}) + \sum_{i=1}^{k} \mathbb{E}_{w_i \sim P_n(w)} \left[\log \sigma(-u_{w_i}^\top v_{w_I})\right]

vwIv_{w_I}: 输入词(中心词)的嵌入

uwOu_{w_O}: 正样本(真正的上下文词)的嵌入

uwiu_{w_i}: 负样本的嵌入

Pn(w)f(w)3/4P_n(w) \propto f(w)^{3/4}: 噪声分布(词频的 3/4 次方,使低频词被采到的概率略高于按频率采样)

核心要点

计算效率的质变:完整 softmax 需要对词汇表中所有 V|V| 个词计算内积和归一化;负采样只需计算 k+1k+1 个内积(kk 通常取 5-20),训练速度提升数个数量级

隐式矩阵分解:Levy & Goldberg (2014) 证明 SGNS 实际上在分解 shifted PMI 矩阵:wc=PMI(w,c)logkw \cdot c = \text{PMI}(w,c) - \log k,建立了预测方法和计数方法之间的理论联系

噪声分布的设计:采用 Pn(w)f(w)3/4P_n(w) \propto f(w)^{3/4} 而非均匀分布或原始频率分布,是一个经验性但非常有效的选择,平衡了高频词和低频词的采样概率

对比学习的先驱:负采样的 “拉近正样本、推远负样本” 思想是现代对比学习(SimCLR、MoCo、CLIP)的直接前身

采样数 kk 的影响:小数据集上 k=5-20k=5\text{-}20 效果好,大数据集上 k=2-5k=2\text{-}5 即可。kk 过大会使模型过度关注区分常见负样本而忽略语义结构

代表工作

Mikolov et al. (2013): Distributed Representations of Words and Phrases and their Compositionality

Levy & Goldberg (2014): Neural Word Embedding as Implicit Matrix Factorization

相关概念

Distributional Semantics

Co-occurrence Matrix

N-gram

CLIP