2.1 NCE的基本思想

NCE 的目标是将计算语言模型的参数估计问题转换为二分类问题,即区分真实数据分布(来自训练数据)和噪声数据分布(从某个噪声分布中采样)。

对于一个给定的上下文 c c c,采样方法如下:

  1. 以概率 1 1 + k \frac{1}{1+k} 1+k1真实数据分布 p ~ ( w ∣ c ) p̃(w | c) p~(wc) 采样一个单词 w w w ,并标记为 D = 1 D=1 D=1(真实数据)。
  2. 以概率 k 1 + k \frac{k}{1+k} 1+kk噪声分布 q ( w ) q(w) q(w) 采样 k k k 个单词,并标记为 D = 0 D=0 D=0(噪声数据)。

于是,对于一个给定的上下文 c c c,( d , w d, w d,w ) 这对数据的联合概率可以表示为:
p ( d , w ∣ c ) = { k 1 + k q ( w ) , if  d = 0  (噪声数据) 1 1 + k p ~ ( w ∣ c ) , if  d = 1  (真实数据) p(d,w | c) = \begin{cases} \frac{k}{1+k} q(w), & \text{if } d=0 \text{ (噪声数据)} \\ \frac{1}{1+k} p̃(w | c), & \text{if } d=1 \text{ (真实数据)} \end{cases} p(d,wc)={1+kkq(w),1+k1p~(wc),if d=0 (噪声数据)if d=1 (真实数据)


2.2 条件概率的计算

由条件概率定义:
p ( D = 0 ∣ c , w ) = p ( d = 0 , w ∣ c ) p ( d = 0 , w ∣ c ) + p ( d = 1 , w ∣ c ) p(D = 0 | c, w) = \frac{p(d=0, w | c)}{p(d=0, w | c) + p(d=1, w | c)} p(D=0∣c,w)=p(d=0,wc)+p(d=1,wc)p(d=0,wc)
= k 1 + k q ( w ) 1 1 + k p ~ ( w ∣ c ) + k 1 + k q ( w ) = k q ( w ) p ~ ( w ∣ c ) + k q ( w ) = \frac{\frac{k}{1+k} q(w)}{\frac{1}{1+k} p̃(w | c) + \frac{k}{1+k} q(w)} = \frac{k q(w)}{p̃(w | c) + k q(w)} =1+k1p~(wc)+1+kkq(w)1+kkq(w)=p~(wc)+kq(w)kq(w)

类似地,
p ( D = 1 ∣ c , w ) = p ~ ( w ∣ c ) p ~ ( w ∣ c ) + k q ( w ) p(D = 1 | c, w) = \frac{p̃(w | c)}{p̃(w | c) + k q(w)} p(D=1∣c,w)=p~(wc)+kq(w)p~(wc)


2.3 替换为模型分布

在实际训练时,我们使用参数化模型 p θ ( w ∣ c ) pθ(w | c) (wc) 来逼近 p ~ ( w ∣ c ) p̃(w | c) p~(wc),即:
p ( D = 1 ∣ c , w ) = p θ ( w ∣ c ) p θ ( w ∣ c ) + k q ( w ) p(D = 1 | c, w) = \frac{pθ(w | c)}{pθ(w | c) + k q(w)} p(D=1∣c,w)=(wc)+kq(w)(wc)
p ( D = 0 ∣ c , w ) = k q ( w ) p θ ( w ∣ c ) + k q ( w ) p(D = 0 | c, w) = \frac{k q(w)}{pθ(w | c) + k q(w)} p(D=0∣c,w)=(wc)+kq(w)kq(w)

其中, p θ ( w ∣ c ) pθ(w | c) (wc) 由:
p θ ( w ∣ c ) = u θ ( w , c ) Z ( c ) pθ(w | c) = \frac{uθ(w, c)}{Z(c)} (wc)=Z(c)uθ(w,c)
其中 u θ ( w , c ) = exp ⁡ ( s θ ( w , c ) ) uθ(w, c) = \exp(sθ(w, c)) uθ(w,c)=exp(sθ(w,c)),是一个未归一化的打分函数,而 Z ( c ) Z(c) Z(c) 是归一化因子。

为了降低计算复杂度,NCE 引入两种假设:

  1. 估计归一化因子:NCE 允许 Z ( c ) Z(c) Z(c) 作为一个参数进行估计,记作 z c z_c zc
  2. 固定归一化因子:在神经网络中,通常将 Z ( c ) Z(c) Z(c) 直接固定为 1(即自归一化假设),从而避免计算 Z ( c ) Z(c) Z(c) 的开销。

因此,我们最终的分类概率可以写为:
p ( D = 1 ∣ c , w ) = u θ ( w , c ) u θ ( w , c ) + k q ( w ) p(D = 1 | c, w) = \frac{uθ(w, c)}{uθ(w, c) + k q(w)} p(D=1∣c,w)=uθ(w,c)+kq(w)uθ(w,c)
p ( D = 0 ∣ c , w ) = k q ( w ) u θ ( w , c ) + k q ( w ) p(D = 0 | c, w) = \frac{k q(w)}{uθ(w, c) + k q(w)} p(D=0∣c,w)=uθ(w,c)+kq(w)kq(w)


2.4 NCE的目标函数

在训练过程中,我们最大化二分类任务的对数似然:
L N C E k = ∑ ( w , c ) ∈ D ( log ⁡ p ( D = 1 ∣ c , w ) + k E w ∼ q log ⁡ p ( D = 0 ∣ c , w ) ) L_{NCE_k} = \sum_{(w, c) \in D} \left( \log p(D = 1 | c, w) + k \mathbb{E}_{w \sim q} \log p(D = 0 | c, w) \right) LNCEk=(w,c)D(logp(D=1∣c,w)+kEwqlogp(D=0∣c,w))

然而,第二项涉及对整个词汇表 V V V 的求和,计算代价仍然较大。因此,NCE 使用蒙特卡洛近似,即从噪声分布 q ( w ) q(w) q(w) 采样 k k k 个负样本:

L M C − N C E k = ∑ ( w , c ) ∈ D ( log ⁡ p ( D = 1 ∣ c , w ) + ∑ i = 1 k log ⁡ p ( D = 0 ∣ c , w i ) ) L_{MC-NCE_k} = \sum_{(w, c) \in D} \left( \log p(D = 1 | c, w) + \sum_{i=1}^{k} \log p(D = 0 | c, w_i) \right) LMCNCEk=(w,c)D(logp(D=1∣c,w)+i=1klogp(D=0∣c,wi))

这样,我们可以用采样的方式近似求解目标函数,避免计算整个词汇表的归一化项。


2.5 渐近分析

NCE 的梯度计算如下:
∂ ∂ θ L N C E k = ∑ ( w ′ , c ) ∈ D ∑ w ∈ V k q ( w ) u θ ( w ∣ c ) + k q ( w ) × ( p ~ ( w ∣ c ) − u θ ( w ∣ c ) ) ∂ ∂ θ log ⁡ u θ ( w ∣ c ) \frac{\partial}{\partial \theta} L_{NCE_k} = \sum_{(w', c) \in D} \sum_{w \in V} \frac{k q(w)}{uθ(w | c) + k q(w)} \times (p̃(w | c) - uθ(w | c)) \frac{\partial}{\partial \theta} \log uθ(w | c) θLNCEk=(w,c)DwVuθ(wc)+kq(w)kq(w)×(p~(wc)uθ(wc))θloguθ(wc)

k → ∞ k \to \infty k 时,NCE 近似等价于最大似然估计,即:
L M C − N C E k → L N C E k L_{MC-NCE_k} \to L_{NCE_k} LMCNCEkLNCEk

这表明在 k k k 足够大的情况下,NCE 能够收敛到正确的参数估计。


参考链接

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐