概率视角下的负采样(Negative Sampling)

前言

负采样(Negative Sampling)是自然语言处理中用于高效训练词向量(如 Word2Vec)的核心技术之一。它通过将大规模多分类问题转化为一系列二分类问题,显著降低计算复杂度,同时保持模型性能。本文将从数学原理、概率建模、梯度推导到工程实现,系统讲解负采样技术,确保科学严谨性与正确性。


🎯 1. 背景:为什么需要负采样?

在词向量模型(如 Skip-gram)中,目标是最大化给定中心词 wcw_cwc 时其上下文词 wow_owo 出现的概率:

P(wo∣wc)=exp⁡(uwo⊤vwc)∑w′∈Vexp⁡(uw′⊤vwc) P(w_o \mid w_c) = \frac{\exp(\mathbf{u}_{w_o}^\top \mathbf{v}_{w_c})}{\sum_{w' \in \mathcal{V}} \exp(\mathbf{u}_{w'}^\top \mathbf{v}_{w_c})} P(wowc)=wVexp(uwvwc)exp(uwovwc)

其中:

  • vwc∈Rd\mathbf{v}_{w_c} \in \mathbb{R}^dvwcRd:中心词的输入向量;
  • uwo∈Rd\mathbf{u}_{w_o} \in \mathbb{R}^duwoRd:上下文词的输出向量;
  • V\mathcal{V}V:词汇表,大小常为 104∼10610^4 \sim 10^6104106

❗ 问题:Softmax 分母计算代价高

  • 每次计算需遍历整个词汇表;
  • 梯度更新需对所有词向量求导;
  • 时间复杂度为 O(∣V∣)O(|\mathcal{V}|)O(V),在大规模语料上不可行。

✅ 解决方案:负采样(Negative Sampling)

核心思想:

不直接建模完整 Softmax,而是构造一个二分类任务:区分“真实上下文词”与“随机采样的负例词”。

优势:

  • 计算复杂度降至 O(K)O(K)O(K)KKK 为负样本数(通常 K=5∼20K=5\sim20K=520);
  • 易于实现,训练稳定;
  • 在实践中性能媲美甚至优于分层 Softmax。

📐 2. 数学建模:从概率视角理解负采样

在原始的 Skip-gram 模型中,我们希望最大化以下联合概率:

∏t=1T∏−m≤j≤m,j≠0P(D=1∣w(t),w(t+j))\prod_{t=1}^{T} \prod_{-m \leq j \leq m, j \neq 0} P(D=1 \mid w^{(t)}, w^{(t+j)})t=1Tmjm,j=0P(D=1w(t),w(t+j))
其中:

  • w(t)w^{(t)}w(t) 是中心词,
  • w(t+j)w^{(t+j)}w(t+j) 是上下文词(在窗口内),
  • D=1D=1D=1 表示“这两个词共现”是一个正样本事件。

但仅使用正样本会导致模型倾向于将所有词向量推向无穷大(因为当所有词向量相同时,P(D=1)→1P(D=1) \to 1P(D=1)1),这没有意义。因此引入负采样:对于每个正样本 (wc,wo)(w_c, w_o)(wc,wo),从预定义分布 P(w)P(w)P(w) 中采样 KKK 个噪声词 wkw_kwk,这些是“负样本”。

我们要估计的是:

P(w(t+j)∣w(t))P(w^{(t+j)} \mid w^{(t)})P(w(t+j)w(t))

即:给定中心词 w(t)w^{(t)}w(t),出现上下文词 w(t+j)w^{(t+j)}w(t+j) 的概率。

在负采样的框架下,我们将这个条件概率近似为:

“正样本发生的概率 × 所有负样本不发生的概率”

也就是说,我们假设事件 S:woS: w_oS:wowcw_cwc 的真实上下文词,以及 N1,…,NK:wkN_1, \ldots, N_K: w_kN1,,NK:wk 不是 wcw_cwc 的上下文词,是相互独立的。

于是我们可以写:

P(w(t+j)∣w(t))≈P(正例)×∏k=1KP(负例k)P(w^{(t+j)} \mid w^{(t)}) \approx P(\text{正例}) \times \prod_{k=1}^{K} P(\text{负例}_k)P(w(t+j)w(t))P(正例)×k=1KP(负例k)

即:

P(w(t+j)∣w(t))≈P(D=1∣w(t),w(t+j))∏k=1KP(D=0∣w(t),wk)P(w^{(t+j)} \mid w^{(t)}) \approx P(D=1 \mid w^{(t)}, w^{(t+j)}) \prod_{k=1}^{K} P(D=0 \mid w^{(t)}, w_k)P(w(t+j)w(t))P(D=1w(t),w(t+j))k=1KP(D=0w(t),wk)

其中 wk∼P(w)w_k \sim P(w)wkP(w) 是从数据分布中采样的噪声词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值