非归一化统计模型的噪声对比估计(NCE,Noise-Contrastive Estimation)(一)

1、介绍

本文介绍一种“参数化密度函数”的估计方法。

设样本X=(\boldsymbol{x}_1,...,\boldsymbol{x}_{T_d})服从一个未知的概率密度函数(pdf)p_d,其中\vec{x}\in \mathbb{R}^np_d使用参数化函数族\{p_m(.;\boldsymbol{\theta})\}来模拟,其中\boldsymbol{\theta}为参数向量。通常假设p_d属于这一函数族,即p_d(.)=p_m(.;\boldsymbol{\theta}^*)\boldsymbol{\theta}^*的任何估计\hat{\boldsymbol{\theta}}必须满足如下两个限制条件:

\int{p_m(\boldsymbol{u};\boldsymbol{\hat{\boldsymbol{\theta}}})} =1,\qquad p_m(.;\hat{\boldsymbol{\theta}})\geqslant 0 \qquad (1)                       

如果对于所有\boldsymbol{\theta}来说(不只是\hat{\boldsymbol{\theta}}),p_m(.;\boldsymbol{\theta})都满足上述两个限制条件,则称模式为“归一化的”,最大似然方法可以用来估计\boldsymbol{\theta}。如果p_m(.;\boldsymbol{\theta})仅满足非负的条件而不满足正则化的条件,则称模型为“非归一化的”。设模型p^0_m(.;\boldsymbol{\alpha})非归一化,分区函数Z(\boldsymbol{\alpha})

      Z(\boldsymbol{\alpha})=\int{p^0_m(\boldsymbol{u};\boldsymbol{\alpha})}d\boldsymbol{u} \qquad(2)

分区函数可以用来将非归一化模型p^0_m(.;\boldsymbol{\alpha})转化为归一化模型:p^0_m(.;\boldsymbol{\alpha})/Z(\boldsymbol{\alpha})。本文中,我们提出一种新的估计非归一化模型的方法。主要思想是将Z,或者c = ln1/Z不再视为\boldsymbol{\alpha}的一个函数,而是模型的附加参数。即

                \ln{p_m(.;\boldsymbol{\theta})}=\ln{p^0_m(.;\boldsymbol{\alpha})}+c

这里\boldsymbol{\theta}=(\boldsymbol{\alpha},c)。估计\hat{\boldsymbol{\theta}}=(\hat{\boldsymbol{\alpha}},\hat{c})使得p^0_m(.;\hat{\boldsymbol{\alpha}})的形状和p_d的相同,而\hat{c}的作用是对其进行缩放,这样式(1)就成立了。


2、噪声对比估计(NCE,Noise-Contrastive Estimation)

2.1 通过对比来估计概率密度函数

设“参考(噪声)样本”为Y=(\boldsymbol{y}_1,...,\boldsymbol{y}_{T_n}),其中\boldsymbol{y}_i\in\mathbb{R}^n,该样本服从概率密度函数p_n,样本X可以由比值p_d/p_n来对比描述。若p_np_d/p_n已知的话,我们可以由它们来获取p_d

U=(\boldsymbol{u}_1,..., \boldsymbol{u}_{T_d+T_n}, )XY的合并,我们给U中的每一个元素\boldsymbol{u}_t分配一个类别标签C_t,如果\boldsymbol{u}_t\in X,则C_t=1,如果\boldsymbol{u}_t\in Y,则C_t=0。我们用p_m(.;\boldsymbol{\theta})来模拟p(.|C=1),则条件概率密度函数为

p(\boldsymbol{u}|C_t=1;\boldsymbol{\theta})=p_m(\boldsymbol{u};\boldsymbol{\theta}), \qquad \qquad p(\boldsymbol{u}|C=0)=p_n(\boldsymbol{\boldsymbol{u}})

先验概率为P(C=1)=T_d/(T_d+T_n), \quad P(C=0)=T_n/(T_d+T_n),后验概率为

       P(C=1|\boldsymbol{u};\boldsymbol{\theta})=\frac{p_m(\boldsymbol{u};\boldsymbol{\theta})}{p_m(\boldsymbol{u};\boldsymbol{\theta})+vp_n(\boldsymbol{u})}, \quad P(C=0|\boldsymbol{u};\boldsymbol{\theta})=\frac{vp_n(\boldsymbol{u})}{p_m(\boldsymbol{u};\boldsymbol{\theta})+vp_n(\boldsymbol{u})} \qquad \qquad (3)

其中v=P(C=0)/P(C=1)=T_n/T_d。令h(\boldsymbol{u};\boldsymbol{\theta})=P(C=1|\boldsymbol{u};\boldsymbol{\theta})。设

          G(\boldsymbol{u};\boldsymbol{\theta})=\ln p_m(\boldsymbol{u};\boldsymbol{\theta})-\ln p_n(\boldsymbol{u}) \qquad \qquad \qquad \qquad \qquad (4)

           h(\boldsymbol{u};\boldsymbol{\theta})=r_v(G(\boldsymbol{u};\boldsymbol{\theta})) \qquad \qquad \qquad \qquad \qquad \qquad \qquad (5)

其中

           r_v(u)=\frac{1}{1+v\exp{(-u)}} \qquad \qquad \qquad \qquad \qquad \qquad \qquad (6)

则似然函数为

          l(\boldsymbol{\theta})=\sum_{t=1}^{T_d+T_n}{C_t\ln{P(C_t=1|\boldsymbol{u}_t;\boldsymbol{\theta})}+(1-C_t)\ln{P(C_t=0|\boldsymbol{u}_t;\boldsymbol{\theta})}} \\ \qquad =\sum_{t=1}^{T_d}{\ln{[h( \boldsymbol{x}_t;\boldsymbol{\theta})]}}+\sum_{t=1}^{T_n}{\ln[{1-h(\boldsymbol{y}_t;\boldsymbol{\theta})}]} \qquad \qquad \qquad (7)

2.2 估计器的定义

在1中,我们介绍了\ln{p_m(.;\boldsymbol{\theta})}=\ln{p^0_m(.;\boldsymbol{\alpha})}+c,其中\boldsymbol{\theta}=(\boldsymbol{\alpha}, c)c用来放缩非归一化模型p^0_m(.;\boldsymbol{\alpha}),这样式(1)能够成立。c的估计值\hat{c}是对\ln{1/Z(\hat{\boldsymbol{\alpha}})}的一个估计。估计器\hat{\boldsymbol{\theta}}_T能够使

J_T(\boldsymbol{\theta})=\frac{1}{T_d}\left \{ \sum_{t=1}^{T_d}{\ln{[h(\boldsymbol{x}_t;\boldsymbol{\theta})]}} + \sum_{t=1}^{T_n}\ln{[1-h(\boldsymbol{y}_t;\boldsymbol{\theta})]} \right \} \qquad \qquad (8)

达到最大,上式也可以写为

J_T(\boldsymbol{\theta})=\frac{1}{T_d}\sum_{t=1}^{T_d}{\ln{[h(\boldsymbol{x}_t;\boldsymbol{\theta})]}} + v\frac{1}{T_n}\sum_{t=1}^{T_n}\ln{[1-h(\boldsymbol{y}_t;\boldsymbol{\theta})]} \qquad \qquad (9)

注意h(.;\boldsymbol{\theta})\in (0,1),当G(.;\boldsymbol{\theta})\rightarrow -\infty时,h(.;\boldsymbol{\theta})达到0,当G(.;\boldsymbol{\theta})\rightarrow \infty时,h(.;\boldsymbol{\theta})达到1。J_T的上界为0,对于所有t,当h(\boldsymbol{x}_t;\boldsymbol{\theta})h(\boldsymbol{y}_t;\boldsymbol{\theta})分别趋近于1和0时,J_T能达到上界。因此最优估计参数\hat{\boldsymbol{\theta}}_T使得“对于所有\boldsymbol{u}_t \in XG(\boldsymbol{u}_t;\hat{\boldsymbol{\theta}}_T)尽可能的大;对于所有\boldsymbol{u}_t \in XG(\boldsymbol{u}_t;\hat{\boldsymbol{\theta}}_T)尽可能的小”。

2.3 估计器的特征

我们刻画当样本量T_d很大,并且比值v固定时的估计器\hat{\boldsymbol{\theta}}_T的特征。根据弱大数定理,当T_d趋近于无穷大时,J_T(\boldsymbol{\theta})依概率收敛于JJ

J(\boldsymbol{\theta})=E\left\{\ln{[h(\boldsymbol{x};\boldsymbol{\theta})]} \right\} + vE\left\{\ln{[1-h(\boldsymbol{y};\boldsymbol{\theta})]} \right\} \qquad \qquad \qquad (10)

f_m(.)=\ln{p_m(.;\boldsymbol{\theta})},我们把“将J视为f_m(.)的函数”后的目标函数表示为\widetilde{J}(f_m),即

\widetilde{J}(f_m)=E\left\{\ln{[ r_v(f_m(\boldsymbol{x}) - \ln{p_n(\boldsymbol{x})}) ]} \right\} + vE\left\{\ln{[1- r_v(f_m(\boldsymbol{y})-\ln{p_n(\boldsymbol{y})})]} \right\} \qquad \qquad \qquad (11)

下面的定理显示,概率密度函数p_d可以通过最大化\widetilde{J}来获得,即在拥有无穷多数据的理想条件下,学习一个非参数分类器。

定理1(非参数估计)\widetilde{J}f_m=\ln{p_d}时达到最大。噪声密度函数p_n一旦确定,\widetilde{J}的最大值也就唯一确定,p_np_d取值大于零的地方也大于零。

目标函数\widetilde{J}具有在“不限定\exp{(f_m)}的积分值为1”的条件下,其最大值对应的概率密度函数\exp{(f_m)}的积分值自动为1。p_n大于零的条件告诉我们,在没有对比噪声样本的空间,p_d无法被估计出来。

通常假定存在\boldsymbol{\theta}^*,使得p_d(.)=p_m(.;\boldsymbol{\theta}^*)

定理2(一致性)如果下面的(a)到(b)都满足了,则\hat{\boldsymbol{\theta}}_T依概率收敛于\boldsymbol{\theta}^*\hat{\boldsymbol{\theta}}_T\overset{P}{\rightarrow} \boldsymbol{\theta}^*

(a)p_np_d取值大于零的地方也大于零;

(b)\sup_{\boldsymbol{\theta}}{|J_T(\boldsymbol{\theta})-J(\boldsymbol{\theta})|}\overset{P}{\rightarrow}0

(c)矩阵\mathbb{I}_v=\int{g(\boldsymbol{u})g(\boldsymbol{u})^TP_v(\boldsymbol{u})p_d(\boldsymbol{u})d\boldsymbol{u}}满秩,其中

\boldsymbol{g}(\boldsymbol{u})=\nabla_{\boldsymbol{\theta}}{\ln{p_m(\boldsymbol{u};\boldsymbol{\theta})}}|_{\boldsymbol{\theta}^*}, \qquad \qquad P_v(\boldsymbol{u})=\frac{vp_n(\boldsymbol{u})}{p_d(\boldsymbol{u})+vp_n(\boldsymbol{u})}

上式中条件(b)表示要求J_T(\boldsymbol{\theta})\boldsymbol{\theta}的取值集合上,依概率收敛于J(\boldsymbol{\theta})

定理3(渐近正态性)\sqrt{T_d}(\hat{\boldsymbol{\theta}}_T-\boldsymbol{\theta}^*)为渐近正态分布的,其均值为0,协方差为\Sigmoid\Sigma,其中

            \Sigma=\mathbb{I}_v^{-1}- \left(1+\frac{1}{v} \right)\mathbb{I}_v^{-1}E(P_v\boldsymbol{g})E(P_v\boldsymbol{g})^T\mathbb{I}_v^{-1}

E(P_v\boldsymbol{g})=\int{P_v(\boldsymbol{u})\boldsymbol{g}(\boldsymbol{u})p_d(\boldsymbol{u})d\boldsymbol{u}}

推论1  对于大样本T_d,均方误差E\left(\left \| \hat{\boldsymbol{\theta}}_T- \boldsymbol{\theta}^*\right \|^2 \right )等于tr(\Sigma)/T_d

             2.4 选择噪声

         定理2显示,对于给定的训练样本量T_d,当噪声样本量T_n越来越大时,v也越来越大,P_v趋近于1。这说明,对于较大的v,协方差矩阵\Sigma不依赖于噪声分布p_n。于是我们有如下定理。

推论2 当v\rightarrow \infty时,\Sigma不受p_n选择的影响,

               \Sigma=\mathbb{I}^{-1}-\mathbb{I}^{-1}E(\boldsymbol{g})E(\boldsymbol{g})^T\mathbb{I}^{-1}

其中E(\boldsymbol{g})=\int{\boldsymbol{g}(\boldsymbol{u})p_d(\boldsymbol{u})d\boldsymbol{u}}, \mathbb{I}=\int{\boldsymbol{g}(\boldsymbol{u})\boldsymbol{g}(\boldsymbol{u})^T}p_d(\boldsymbol{u})d\boldsymbol{u}

    由推论2知,当v\rightarrow \infty时,估计误差\hat{\boldsymbol{\theta}}_T-\boldsymbol{\theta}^*p_n的依赖度逐渐减小,p_n的选择也越来越不重要。

推论3 对于任意归一化模型p_n,当v\rightarrow \infty时,噪声对比估计都是渐近“fisher高效的”。

证明:对于归一化模型来说,参数c不再需要。在MLE中,\boldsymbol{g}为“得分函数”,矩阵\mathbb{I}费希尔信息矩阵(Fisher information matrix)。由于E(\boldsymbol{g})=\boldsymbol{0},协方差矩阵\boldsymbol{\Sigma}是Fisher information matrix的逆矩阵。

对于噪声分布,一个好的选择是p_np_d非常接近。如果p_np_d差别太大,分类问题会非常简单,系统不会从样本的结构中学习太多东西。如下定理可以做部分解释:

推论4 如果p_n=p_d,那么\boldsymbol{\Sigma}=\left(1+\frac{1}{v} \right )\left(\mathbb{I}^{-1}-\mathbb{I}^{-1}E(\boldsymbol{g})E(\boldsymbol{g})^{T}\mathbb{I}^{-1} \right )

证明:由于p_n=p_d,所以P_v(\boldsymbol{u})=\frac{vp_n(\boldsymbol{u})}{p_d(\boldsymbol{u})+vp_n(\boldsymbol{u})}=\frac{v}{1+v}\mathbb{I}_v=\int{\boldsymbol{g}(\boldsymbol{u})\boldsymbol{g}(\boldsymbol{u})^TP_v(\boldsymbol{u})p_d(\boldsymbol{u})d\boldsymbol{u}}=\frac{v}{1+v}\int{\boldsymbol{g}(\boldsymbol{u})\boldsymbol{g}(\boldsymbol{u})^Tp_d(\boldsymbol{u})d\boldsymbol{u}} =\frac{v}{1+v}\mathbb{I}

所以\Sigma=\mathbb{I}_v^{-1}- \left(1+\frac{1}{v} \right)\mathbb{I}_v^{-1}E(P_v\boldsymbol{g})E(P_v\boldsymbol{g})^T\mathbb{I}_v^{-1}=\left(1+\frac{1}{v} \right )\left(\mathbb{I}^{-1}-\mathbb{I}^{-1}E(\boldsymbol{g})E(\boldsymbol{g})^{T}\mathbb{I}^{-1} \right )

对于归一化模型,当v=1时,E(\boldsymbol{g})=\boldsymbol{0},所以\Sigma=2\mathbb{I}^{-1};当v=10时,\Sigma=1.1\mathbb{I}^{-1}。对于与训练样本分布相近的噪声分布,v不需要太大,MSE即可靠近其理论值。

为获取具有较小估计误差的分布估计,上述讨论可总结噪声分布的选取标准为:

1、\ln{p_n}具有解析表达式;

2、噪声分布的采样过程较简单;

3、噪声分布在某些方面,例如其方差,与训练样本相同;

4、在计算允许的情况下,噪声样本量越大越好。

一些噪声分布可选的例子:高斯分布,高斯混合分布,ICA分布。若均匀分布的支撑(support)包含训练样本的支撑,这样条件(a)就可以成立了。

3.2. Noise-Contrastive Estimation Computing the non-parametric softmax in Eq.(2) is cost prohibitive when the number of classes n is very large, e.g. at the scale of millions. Similar problems have been well addressed in the literature for learning word embed- dings [25, 24], where the number of words can also scale to millions. Popular techniques to reduce computation in- clude hierarchical softmax [26], noise-contrastive estima- tion (NCE) [9], and negative sampling [24]. We use NCE [9] to approximate the full softmax. We adapt NCE to our problem, in order to tackle the dif- ficulty of computing the similarity to all the instances in the training set. The basic idea is to cast the multi-class clas- sification problem into a set of binary classification prob- lems, where the binary classification task is to discrimi- nate between data samples and noise samples. Specifically, the probability that feature representation v in the memory bank corresponds to the i-th example under our model is, P (i|v) = exp(vT fi/τ ) Zi (4) Zi = n∑ j=1 exp (vT j fi/τ ) (5) where Zi is the normalizing constant. We formalize the noise distribution as a uniform distribution: Pn = 1/n. Following prior work, we assume that noise samples are m times more frequent than data samples. Then the posterior probability of sample i with feature v being from the data distribution (denoted by D = 1) is: h(i, v) := P (D = 1|i, v) = P (i|v) P (i|v) + mPn(i) . (6) Our approximated training objective is to minimize the neg- ative log-posterior distribution of data and noise samples, JN CE (θ) = −EPd [log h(i, v)] −m·EPn [log(1 − h(i, v′))] . (7) Here, Pd denotes the actual data distribution. For Pd, v is the feature corresponding to xi; whereas for Pn, v′ is the feature from another image, randomly sampled according to noise distribution Pn. In our model, both v and v′ are sampled from the non-parametric memory bank V . Computing normalizing constant Zi according to Eq. (4) is expensive. We follow [25], treating it as a constant and estimating its value via Monte Carlo approximation: Z ≃ Zi ≃ nEj [exp(vT j fi/τ )] = n m m∑ k=1 exp(vT jk fi/τ ), (8) where {jk} is a random subset of indices. Empirically, we find the approximation derived from initial batches suffi- cient to work well in practice. NCE reduces the computational complexity from O(n) to O(1) per sample. With such drastic reduction, our exper- iments still yield competitive performance. 3.3. Proximal RegularizationTraining Iterations Training Loss The Effect of Proximal Regulari
08-24
以下是这段英文的技术翻译和解释: --- ## 3.2. 噪声对比估计Noise-Contrastive Estimation) 在类别数量 $ n $ 常大的情况下(例如达到百万级别),计算公式 (2) 中的**参数 softmax** 是**计算成本过高、难以承受**的。类似的问题在学习词嵌入(word embeddings)的文献中已经被很好地研究过 [25, 24],在这些任务中,词的数量也可能达到百万级别。为了减少计算量,常用的技术包括:层次 softmax(hierarchical softmax)[26]、噪声对比估计NCE)[9] 以及负采样(negative sampling)[24]。我们使用 **NCE [9]** 来近似完整的 softmax。 我们将 NCE 应用于我们的问题中,以解决**计算训练集中所有实例相似度的困难**。其基本思想是将多分类问题转化为组二分类问题,其中每个二分类任务的目标是**区分数据样本与噪声样本**。 具体来说,在我们的模型中,内存库中的特征表示 $ v $ 对应于第 $ i $ 个示例的概率为: $$ P(i|v) = \frac{\exp(v^\top f_i / \tau)}{Z_i} \tag{4} $$ $$ Z_i = \sum_{j=1}^{n} \exp(v_j^\top f_i / \tau) \tag{5} $$ 其中 $ Z_i $ 是归一化常数。我们将噪声分布形式化为均匀分布:$ P_n = \frac{1}{n} $。 根据已有研究,我们假设噪声样本的出现频率是数据样本的 $ m $ 倍。那么特征表示 $ v $ 对应样本 $ i $ 来自数据分布(记为 $ D = 1 $)的后验概率为: $$ h(i, v) := P(D = 1 | i, v) = \frac{P(i|v)}{P(i|v) + m P_n(i)} \tag{6} $$ 我们的近似训练目标是最小化数据样本和噪声样本的**负对数后验分布**: $$ J_{\text{NCE}}(\theta) = - \mathbb{E}_{P_d} [\log h(i, v)] - m \cdot \mathbb{E}_{P_n} [\log(1 - h(i, v'))] \tag{7} $$ 其中,$ P_d $ 表示实际的数据分布。对于 $ P_d $,$ v $ 是与 $ x_i $ 对应的特征;而对于 $ P_n $,$ v' $ 是根据噪声分布 $ P_n $ 随机采样的其他图像的特征。在我们的模型中,$ v $ 和 $ v' $ 都是从参数内存库 $ V $ 中采样的。 根据公式 (4) 计算归一化常数 $ Z_i $ 是昂贵的。我们借鉴 [25] 的方法,将其视为常数,并通过**蒙特卡洛近似**来估计其值: $$ Z \simeq Z_i \simeq n \mathbb{E}_j [\exp(v_j^\top f_i / \tau)] = \frac{n}{m} \sum_{k=1}^{m} \exp(v_{j_k}^\top f_i / \tau) \tag{8} $$ 其中 $ \{j_k\} $ 是个随机子集的索引。实验证明,从初始 batch 中得到的近似值在实践中已经足够有效。 NCE 将每个样本的计算复杂度从 $ O(n) $ 降低到 $ O(1) $。尽管计算量大幅减少,我们的实验结果仍然具有竞争力。 --- ### 关键词解释: - **non-parametric softmax**:参数化的 softmax,不使用可学习参数,而是基于特征向量之间的点积计算概率。 - **noise-contrastive estimation (NCE)**:通过将多分类问题转化为二分类问题(区分真实样本与噪声样本)来近似 softmax。 - **memory bank**:存储训练过程中所有样本的特征表示,用于对比学习或 NCE- **Monte Carlo approximation**:用随机采样的方式近似复杂计算(如归一化常数)。 --- ### 公式解析: - 公式 (4) 给出了特征 $ v $ 属于第 $ i $ 个类别的概率,形式上与 softmax 类似。 - 公式 (6)个二分类概率,用于判断个样本是来自真实数据还是噪声- 公式 (7)NCE 的目标函数,它由两部分组成: -部分鼓励模型将真实样本识别为“数据” - 第二部分鼓励模型将噪声样本识别为“数据” - 公式 (8) 提供了个高效估计归一化常数 $ Z_i $ 的方法。 --- ### 实现建议(伪代码): ```python import torch import torch.nn.functional as F def nce_loss(features, targets, memory_bank, tau=0.07, m=1): # features: 当前样本的特征,形状 (batch_size, dim) # targets: 样本的索引,形状 (batch_size, ) # memory_bank: 参数内存库,形状 (n_samples, dim) # tau: 温度系数 # m: 噪声样本数量比例 batch_size = features.shape[0] n_samples = memory_bank.shape[0] # 计算正样本的相似度 pos_logits = torch.einsum('bd,nd->bn', features, memory_bank) # (batch_size, n_samples) pos_logits /= tau pos_logits = pos_logits.gather(1, targets.unsqueeze(1)) # (batch_size, 1) # 随机采样 m 个噪声样本 noise_indices = torch.randint(0, n_samples, size=(batch_size, m), device=features.device) noise_features = memory_bank[noise_indices] # (batch_size, m, dim) neg_logits = torch.einsum('bd,bmd->bm', features, noise_features) # (batch_size, m) neg_logits /= tau # 构造二分类标签 labels = torch.cat([torch.ones_like(pos_logits), torch.zeros_like(neg_logits)], dim=1) # (batch_size, 1+m) logits = torch.cat([pos_logits, neg_logits], dim=1) # 使用 BCEWithLogitsLoss 计算损失 loss = F.binary_cross_entropy_with_logits(logits, labels, reduction='mean') return loss ``` --- ### 相关问题:
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值