噪声对比估计(Noise Contrastive Estimation, NCE)
这样,我们可以用采样的方式近似求解目标函数,避免计算整个词汇表的归一化项。NCE 的目标是将计算语言模型的参数估计问题转换为二分类问题,即区分。足够大的情况下,NCE 能够收敛到正确的参数估计。的求和,计算代价仍然较大。在实际训练时,我们使用参数化模型。,是一个未归一化的打分函数,而。然而,第二项涉及对整个词汇表。于是,对于一个给定的上下文。(从某个噪声分布中采样)。对于一个给定的上下文。
2.1 NCE的基本思想
NCE 的目标是将计算语言模型的参数估计问题转换为二分类问题,即区分真实数据分布(来自训练数据)和噪声数据分布(从某个噪声分布中采样)。
对于一个给定的上下文 c c c,采样方法如下:
- 以概率 1 1 + k \frac{1}{1+k} 1+k1 从真实数据分布 p ~ ( w ∣ c ) p̃(w | c) p~(w∣c) 采样一个单词 w w w ,并标记为 D = 1 D=1 D=1(真实数据)。
- 以概率 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,w∣c)={1+kkq(w),1+k1p~(w∣c),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,w∣c)+p(d=1,w∣c)p(d=0,w∣c)
= 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~(w∣c)+1+kkq(w)1+kkq(w)=p~(w∣c)+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~(w∣c)+kq(w)p~(w∣c)
2.3 替换为模型分布
在实际训练时,我们使用参数化模型 p θ ( w ∣ c ) pθ(w | c) pθ(w∣c) 来逼近 p ~ ( w ∣ c ) p̃(w | c) p~(w∣c),即:
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θ(w∣c)+kq(w)pθ(w∣c)
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)=pθ(w∣c)+kq(w)kq(w)
其中, p θ ( w ∣ c ) pθ(w | c) pθ(w∣c) 由:
p θ ( w ∣ c ) = u θ ( w , c ) Z ( c ) pθ(w | c) = \frac{uθ(w, c)}{Z(c)} pθ(w∣c)=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 引入两种假设:
- 估计归一化因子:NCE 允许 Z ( c ) Z(c) Z(c) 作为一个参数进行估计,记作 z c z_c zc。
- 固定归一化因子:在神经网络中,通常将 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)+kEw∼qlogp(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) LMC−NCEk=(w,c)∈D∑(logp(D=1∣c,w)+i=1∑klogp(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)∈D∑w∈V∑uθ(w∣c)+kq(w)kq(w)×(p~(w∣c)−uθ(w∣c))∂θ∂loguθ(w∣c)
当 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} LMC−NCEk→LNCEk
这表明在 k k k 足够大的情况下,NCE 能够收敛到正确的参数估计。
更多推荐
所有评论(0)