NCE损失(Noise-Constrastive Estimation Loss)

Posted arachis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NCE损失(Noise-Constrastive Estimation Loss)相关的知识,希望对你有一定的参考价值。

1.算法概述

假设X是从真实的数据(或语料库)中抽取的样本,其服从一个相对可参考的概率密度函数P(d),噪音样本Y服从概率密度函数为P(n),噪音对比估计(NCE)就是通过学习一个分类器把这两类样本区别开来,并能从模型中学到数据的属性。

模型原始论文:Noise-contrastive estimation: A new estimation principle for unnormalized statistical models
tensorflow引用:Candidate Sampling Algorithms Reference

2.算法要点与推导

2.1损失函数定义:

[ ext{让$U=Xigcup Y={u1,u2,?,u_{T_d}+u_{T_n}}$,其中$T_d$为数据样本个数,$T_n$为噪音分布的样本个数。那么我们认为$u_t$服从(0-1)分布,给每个$u_t$一个标签$C_t$,则} ]

[ C_t= egin{cases} 1, & ext{if $u_t in X$} 0, & ext{if $u_t in Y$} end{cases} ]

[ ext{由于$p_d$未知,我们让$p(?|C=1)=p_m(.;θ)$,我们假设存在一个$ heta^*$} ext{使得$p_d(.)=p_m(.; heta^*)$,那么,就可以认为经验分布$p_d(.)$为参数分布簇$p_m(.;θ)$中的一员。} ]
给定以上定义,我们得到:

[ egin{cases} p(u|C=1)=p_m(u; heta) ,& ext{data} p(u|C=0)=p_n(u) ,& ext{noise} end{cases} ]
这里时间有限,中间推到步骤先略过。最终得到损失函数公式如下:

[ L(θ)=Σ^{T_d+T_n}_{t=1}[C_tlnP(C_t=1|u_t; heta)+(1-C_t)lnP(C_t=0|u_t)] =Σ^{T_d}_{t=1}ln[h(x_t;θ)]+Σ^{Tn}_{t=1}ln[1-h(y_t;θ)] ]
注意到,如果给式(9)加上个负号就成为了交叉熵函数了。从结果可以看出,我们进行的无监督学习的密度估计可由监督学习算法logistic regression来学习,这就是监督学习与无监督学习的联系。

3.算法特性及优缺点

4.实现和具体例子

噪音对比估计(NCE)
tensorflow tf.nn.nce_loss()源代码学习

以上是关于NCE损失(Noise-Constrastive Estimation Loss)的主要内容,如果未能解决你的问题,请参考以下文章

nce loss 和

NCE L3

FILE_STORAGE_INFO 结构中返回的 PhysicalBytesPerSectorForPerformance 的确切含义是啥?

html 从http://alistapart.com/article/one-step-ahead-improving-performance-with-prebrowsing预呈现

html 资源预取来自http://alistapart.com/article/one-step-ahead-improving-performance-with-prebrowsing

html 预浏览(DNS预取)来自http://alistapart.com/article/one-step-ahead-improving-performance-with-prebrowsing