噪音对比估计(NCE)

噪音对比估计(NCE)噪声对比估计 NCE 是一种统计模型估计方法 用于解决神经网络中的复杂计算问题 常见于图像处理和自然语言处理领域

下方图片查看HappyChart专业绘图软件

噪音对比估计(NCE, Noise Contrastive Estimation)是一种新的统计模型估计方法,由Gutmann和Hyv¨arinen提出来,能够用来解决神经网络的复杂计算问题,因此在图像处理和自然语言处理中得到广泛应用。在介绍NCE之前,首先复习一些基础知识。

全概率公式

设实验 E E E的样本空间为 S S S A A A E E E的事件, B 1 , B 2 , ⋯   , B n 为 S B_1,B_2,\cdots, B_n为S B1,B2,,BnS的一个划分,且 P ( B i ) > 0 ( i = 1 , 2 , ⋯   , n ) P(B_i)>0 (i=1,2,\cdots, n) P(Bi)>0(i=1,2,,n),则:
P ( A ) = P ( A ∣ B 1 ) P ( B 1 ) + P ( A ∣ B 2 ) P ( B 2 ) + ⋯ + P ( A ∣ B n ) P ( B n ) (1) P(A)=P(A|B_1)P(B_1)+P(A|B_2)P(B_2)+\cdots + P(A|B_n)P(B_n)\tag{1} P(A)=P(AB1)P(B1)+P(AB2)P(B2)++P(ABn)P(Bn)(1)
式(1)为全概率公式
#(0-1)分布对数似然函数
假设 p p p服从(0-1)伯努利分布, x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn为样本量 X 1 , X 2 , ⋯   , X n X_1,X_2,\cdots,X_n X1,X2,,Xn的样本值,则 p p p的似然函数为 L ( θ ) = Π i = 1 n p x i ( 1 − p ) 1 − x i L(\theta)=\Pi_{i=1}^np^{x_i}(1-p)^{1-x_i} L(θ)=Πi=1npxi(1p)1xi,转化为对数似然函数为:
l n L ( θ ) = Σ i = 1 n [ x i l n p + ( 1 − x i ) l n ( 1 − p ) ] (2) lnL(\theta)=\Sigma_{i=1}^n[x_ilnp+(1-x_i)ln(1-p)]\tag{2} lnL(θ)=Σi=1n[xilnp+(1xi)ln(1p)](2)

NCE的推导

假设 X = ( x 1 , x 2 , ⋯   , x T d ) X=(x_1,x_2,\cdots, x_{T_d}) X=(x1,x2,,xTd)是从真实的数据(或语料库)中抽取样本,但是样本服从什么样的分布我们不知道,那么先假设其中的每个 x i x_i xi服从一个未知的概率密度函数 p d p_d pd。这样我们需要一个相对可参考的分布反过来去估计概率密度函数 p d p_d pd,这个可参考的分布或称之为噪音分布应该是我们知道的,比如高斯分布,均匀分布等。假设这个噪音分布的概率密度函数为 p n p_n pn,从中抽取样本数据为 Y = ( y 1 , y 2 , ⋯   , y T n ) Y=(y_1,y_2,\cdots, y_{T_n}) Y=(y1,y2,,yTn),而这个数据称之为噪声样本,我们的目的就是通过学习一个分类器把这两类样本区别开来,并能从模型中学到数据的属性,噪音对比估计的思想就是“通过比较而学习”。
定义
U = X ⋃ Y = { u 1 , u 2 , ⋯   , u T d + T n } U=X\bigcup Y=\{u_1,u_2,\cdots, u_{T_d+T_n}\} U=XY={ u1,u2,,uTd+Tn},其中 T d T_d Td为数据样本个数, T n T_n Tn为噪音分布的样本个数1。那么我们认为 u t u_t ut服从(0-1)分布,给每个 u t u_t ut一个标签 C t C_t Ct,则
C t = { 1 i f u t ∈ X 0 i f u t ∈ Y C_t=\begin{cases} 1 &if &u_t\in X \\ 0 & if& u_t\in Y \end{cases} Ct={ 10ififutXutY
由于 p d p_d pd未知,我们让 p ( ⋅ ∣ C = 1 ) = p m ( . ; θ ) p(\cdot|C=1)=p_m(.;\theta) p(C=1)=pm(.;θ),我们假设存在一个 θ ∗ \theta^* θ使得 p d ( . ) = p m ( . ; θ ∗ ) p_d(.)=p_m(.;\theta^*) pd(.)=pm(.;θ),那么,就可以认为经验分布 p d ( . ) p_d(.) pd(.)为参数分布簇 p m ( . ; θ ) p_m(.;\theta) pm(.;θ)中的一员。
给定以上定义,我们得到:
p ( u ∣ C = 1 ) = p m ( u ; θ ) # d a t a p ( u ∣ C = 0 ) = p n ( u ) # n o i s e (3) p(u|C=1)=p_m(u;\theta)\quad \#data\\ p(u|C=0)=p_n(u) \quad \#noise\tag{3} p(uC=1)=pm(u;θ)#datap(uC=0)=pn(u)#noise(3)
先验分布:
P ( C = 1 ) = T d T d + T n P ( C = 0 ) = T n T d + T n (4) P(C=1)=\frac{T_d}{T_d+T_n}\\ P(C=0)=\frac{T_n}{T_d+T_n}\tag{4} P(C=1)=Td+TnTdP(C=0)=Td+TnTn(4)
根据全概率公式:
P ( u ) = P ( u ∣ C = 1 ; θ ) P ( C = 1 ) + P ( u ∣ C = 0 ) P ( C = 0 ) = p m ( u ; θ ) T d T d + T n + p n ( u ) T n T d + T n (5) P(u)=P(u|C=1;\theta)P(C=1) + P(u|C=0)P(C=0)\\ =p_m(u;\theta)\frac{T_d}{T_d+T_n} + p_n(u)\frac{T_n}{T_d+T_n}\tag{5} P(u)=P(uC=1;θ)P(C=1)+P(uC=0)P(C=0)=pm(u;θ)Td+TnTd+pn(u)Td+TnTn(5)
而我们要得到后验概率 P ( C = 1 ∣ u ; θ ) P(C=1|u;\theta) P(C=1∣u;θ),则根据贝叶斯公式得:
P ( C = 1 ∣ u ; θ ) = P ( u ∣ C = 1 ; θ ) P ( C = 1 ) P ( u ) = p m ( u ; θ ) T d T d + T n p m ( u ; θ ) T d T d + T n + p n ( u ) T n T d + T n = p m ( u ; θ ) p m ( u ; θ ) + T n T d p n ( u ) P(C=1|u;\theta)=\frac{P(u|C=1;\theta)P(C=1)}{P(u)}\\ =\frac{p_m(u;\theta)\frac{T_d}{T_d+T_n}}{p_m(u;\theta)\frac{T_d}{T_d+T_n} + p_n(u)\frac{T_n}{T_d+T_n}}\\ =\frac{p_m(u;\theta)}{p_m(u;\theta)+\frac{T_n}{T_d}p_n(u)} P(C=1∣u;θ)=P(u)P(uC=1;θ)P(C=1)=pm(u;θ)Td+TnTd+pn(u)Td+TnTnpm(u;θ)Td+TnTd=pm(u;θ)+TdTnpn(u)pm(u;θ)

P ( C = 1 ∣ u ; θ ) = p m ( u ; θ ) p m ( u ; θ ) + v p n ( u ) (6) P(C=1|u;\theta)=\frac{p_m(u;\theta)}{p_m(u;\theta)+vp_n(u)}\tag{6} P(C=1∣u;θ)=pm(u;θ)+vpn(u)pm(u;θ)(6)
同理
P ( C = 0 ∣ u ; θ ) = v p n ( u ) p m ( u ; θ ) + v p n ( u ) (7) P(C=0|u;\theta)=\frac{vp_n(u)}{p_m(u;\theta)+vp_n(u)}\tag{7} P(C=0∣u;θ)=pm(u;θ)+vpn(u)vpn(u)(7)
其中, v = T n T d v=\frac{T_n}{T_d} v=TdTn
然后引进一个对数比率 G ( u ; θ ) = l n p m ( u ; θ ) p n ( u ) G(u;\theta)=ln\frac{p_m(u;\theta)}{p_n(u)} G(u;θ)=lnpn(u)pm(u;θ),让 P ( C = 1 ∣ u ; θ ) = h ( u ; θ ) P(C=1|u;\theta)=h(u;\theta) P(C=1∣u;θ)=h(u;θ),那么 h ( u ; θ ) h(u;\theta) h(u;θ)可写为:
h ( u ; θ ) = r v ( G ( u ; θ ) ) (8) h(u;\theta)=r_v(G(u;\theta))\tag{8} h(u;θ)=rv(G(u;θ))(8)
其中, r v ( u ) = 1 1 + v e x p ( − u ) r_v(u)=\frac{1}{1+vexp(-u)} rv(u)=1+vexp(u)1
由于类别 C t C_t Ct独立同分布于伯努利分布,则条件对数似然函数为:
L ( θ ) = Σ t = 1 T d + T n [ C t l n P ( C t = 1 ∣ u t ; θ ) + ( 1 − C t ) l n P ( C t = 0 ∣ u t ) ] = Σ t = 1 T d l n [ h ( x t ; θ ) ] + Σ t = 1 T n l n [ 1 − h ( y t ; θ ) ] (9) L(\theta)=\Sigma_{t=1}^{T_d+T_n}[C_tlnP(C_t=1|u_t;\theta)+(1-C_t)lnP(C_t=0|u_t)]\\ =\Sigma_{t=1}^{T_d}ln[h(x_t;\theta)]+\Sigma_{t=1}^{T_n}ln[1-h(y_t;\theta)]\tag{9} L(θ)=Σt=1Td+Tn[CtlnP(Ct=1∣ut;θ)+(1Ct)lnP(Ct=0∣ut)]=Σt=1Tdln[h(xt;θ)]+Σt=1Tnln[1h(yt;θ)](9)
注意到,如果给式(9)加上个负号就成为了交叉熵函数了。从结果可以看出,我们进行的无监督学习的密度估计可由监督学习算法logistic regression来学习,这就是监督学习与无监督学习的联系。
#NCE的估计
我们知道,正则化的密度函数 p m ( . ; θ ^ ) p_m(.;\hat{\theta}) pm(.;θ^)满足以下约束:
∫ p m ( u ; θ ) d u = 1 # 正则化约束 p m ( . ; θ ) ≥ 0 # 密度函数为正的约束 \int p_m(u;\theta)du=1\quad \#正则化约束\\ p_m(.;\theta)\ge 0\quad \#密度函数为正的约束 pm(u;θ)du=1#正则化约束pm(.;θ)0#密度函数为正的约束
如果对于所有的 θ \theta θ,上述约束都成立,那么模型是正则化的,并且我们可以用极大似然函数去估计 θ \theta θ,如果只满足密度函数为正的约束,则认为模型为非正则化。我们的一个主要假设就是存在一个子集 θ ∗ \theta^* θ使得非正则化的模型积分为1(即满足正则化 p d ( . ) = p m ( . ; θ ) p_d(.)=p_m(.;\theta) pd(.)=pm(.;θ)),非正则化的模型表示为 p m 0 ( . ; α ) p_m^0(.;\alpha) pm0(.;α)
我们定义配分函数 Z ( α ) Z(\alpha) Z(α)为:
Z ( α ) = ∫ p m 0 ( u ; α ) d u (10) Z(\alpha)=\int p_m^0(u;\alpha)du\tag{10} Z(α)=pm0(u;α)du(10)
Z ( α ) Z(\alpha) Z(α)就是把非正则化模型 p m 0 ( . ; α ) p_m^0(.;\alpha) pm0(.;α)转化为正则化模型 p m 0 ( . ; α ) / Z ( α ) p_m^0(.;\alpha)/Z(\alpha) pm0(.;α)/Z(α)
这里的问题是, α \alpha α Z ( α ) Z(\alpha) Z(α)的映射是一个积分,除非 p m 0 ( . ; α ) p_m^0(.;\alpha) pm0(.;α)是一个简单的形式的时候,一般不能得到解析式。对于高维的问题,计算 Z ( α ) Z(\alpha) Z(α)更加困难,所以尽可能的不要计算 Z ( α ) Z(\alpha) Z(α)。而NCE就是不用计算 Z ( α ) Z(\alpha) Z(α)的一种估计方法。其基本思想就是认为 Z Z Z或等价地 c = l n 1 / Z c=ln1/Z c=ln1/Z为模型的一个参数2,NCE加入这个正则化参数 c c c并估计
l n p m ( ; . ; θ ) = l n p m 0 ( . ; α ) + c (11) lnp_m(;.;\theta)=lnp_m^0(.;\alpha)+c\tag{11} lnpm(;.;θ)=lnpm0(.;α)+c(11)
现在参数 θ = ( α , c ) \theta=(\alpha,c) θ=(α,c)。这样估计参数 θ ^ = ( α ^ , c ^ ) \hat{\theta}=(\hat{\alpha},\hat{c}) θ^=(α^,c^)使得非正则化模型 p m 0 ( . ; α ) p_m^0(.;\alpha) pm0(.;α)形状匹配 p d p_d pd,而 c ^ \hat{c} c^提供了正则化项,从而使得整个模型得到正则化。
经过训练, c ^ \hat{c} c^ l n 1 / Z ( α ) ln1/Z(\alpha) ln1/Z(α)的估计,通过最大化下面的目标函数得到的 θ \theta θ的估计为
J T θ = 1 T d { Σ t = 1 T d l n [ h ( x t ; θ ) ] + Σ t = 1 T n l n [ 1 − h ( y t ; θ ) ] } (12) J_T\theta= \frac{1}{T_d}\{\Sigma_{t=1}^{T_d}ln[h(x_t;\theta)]+\Sigma_{t=1}^{T_n}ln[1-h(y_t;\theta)]\}\tag{12} JTθ=Td1{ Σt=1Tdln[h(xt;θ)]+Σt=1Tnln[1h(yt;θ)]}(12)
上式再化简一下得:
J T θ = 1 T d Σ t = 1 T d l n [ h ( x t ; θ ) ] + v 1 T n Σ t = 1 T n l n [ 1 − h ( y t ; θ ) ] (13) J_T\theta= \frac{1}{T_d}\Sigma_{t=1}^{T_d}ln[h(x_t;\theta)]+v\frac{1}{T_n}\Sigma_{t=1}^{T_n}ln[1-h(y_t;\theta)]\tag{13} JTθ=Td1Σt=1Tdln[h(xt;θ)]+vTn1Σt=1Tnln[1h(yt;θ)](13)
注意到, h ( . ; θ ) ∈ ( 0 , 1 ) h(.;\theta)\in(0,1) h(.;θ)(0,1),并且
h ( . ; θ ) = { 0 l i m G ( . ; θ ) → − ∞ 1 l i m G ( . ; θ ) → ∞ h(.;\theta)=\begin{cases} 0 & limG(.;\theta)\rightarrow -\infty\\ 1 & limG(.;\theta)\rightarrow \infty \end{cases} h(.;θ)={ 01limG(.;θ)limG(.;θ)
对于logistic regression来说,变量趋向于两个极端区别度越大,所以对于学习后的最优的参数 θ ^ T \hat{\theta}_T θ^T而言,在 u T ∈ X u_T\in X uTX的情况下会使得 G ( u T ; θ ^ T ) G(u_T;\hat{\theta}_T) G(uT;θ^T)尽可能的大,对于 u T ∈ Y u_T\in Y uTY尽可能的小,换而言之,我们就是让 P ( C = 1 ; u ; θ ) P(C=1;u;\theta) P(C=1;u;θ)对于大多数的 x i x_i xi尽可能的大,对于大多数 y i y_i yi尽可能的小,这样就可以区分两种不同的数据。而word2vec中的negtive sample是NCE的一种特殊情况。

参考文献
【Michael Gutmann, Aapo Hyv¨arinen】Noise-contrastive estimation: A new estimation principle for unnormalized statistical models
【Michael U. Gutmann, Aapo Hyv¨arinen】Noise-Contrastive Estimation of Unnormalized Statistical Models, with Applications to Natural Image Statistics
【David Meyer】Notes on Noise Contrastive Estimation (NCE)
【Chris Dyer】Notes on Noise Contrastive Estimation and Negative Sampling
【Farhana Ferdousi Liza, Marek Grzes】Improving Language Modelling with Noise Contrastive Estimation


  1. 我们在Gutmann和Hyv¨arinen提出的NCE模型上做了一些修改,认为两个分布的样本不相等,其他的一些文章是从经验分布中抽取样本为1( T d = 1 T_d=1 Td=1), 从噪音分布中抽取样本为 k k k ( T n = k ) (T_n=k) (Tn=k),总的抽样为 k + 1 k+1 k+1,都是我们设置的特殊化 ↩︎
  2. 在其他文献中也有把 Z Z Z直接设置为1 ↩︎
今天的文章 噪音对比估计(NCE)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-30 12:17
下一篇 2024-12-30 12:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/92211.html