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损失函数定义:

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

\[
C_t=
\begin{cases}
1, & \text{if $u_t \in X$} \\
0, & \text{if $u_t \in Y$}
\end{cases}
\]

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

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

\[
L(θ)=Σ^{T_d+T_n}_{t=1}[C_tlnP(C_t=1|u_t;\theta)+(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)的更多相关文章

  1. Noise Contrastive Estimation

    Notes from Notes on Noise Contrastive Estimation and Negative Sampling one sample: \[x_i \to [y_i^0, ...

  2. Notes on Noise Contrastive Estimation and Negative Sampling

    Notes on Noise Contrastive Estimation and Negative Sampling ## 生成负样本 在常见的关系抽取应用中,我们经常需要生成负样本来训练一个好的系 ...

  3. 通俗易懂讲解Word2vec的本质

    本文首发于微信公众号「对白的算法屋」,来一起学AI叭 一.Word2vec CBOW(Continuous Bag-of-Words):每个词的含义都由相邻词决定. Skip-gram:依据分布的相似 ...

  4. Hinge Loss、交叉熵损失、平方损失、指数损失、对数损失、0-1损失、绝对值损失

    损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示.损失函数越小,模型的鲁棒性就越好. 损失 ...

  5. 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)

    论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...

  6. [AI] 论文笔记 - CVPR2018 Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation

    写在前面 原始视频(30fps) 补帧后的视频(240fps) 本文是博主在做实验的过程中使用到的方法,刚好也做为了本科毕设的翻译文章,现在把它搬运到博客上来,因为觉得这篇文章的思路真的不错. 这篇文 ...

  7. loss function

    什么是loss?   loss: loss是我们用来对模型满意程度的指标.loss设计的原则是:模型越好loss越低,模型越差loss越高,但也有过拟合的情况.   loss function: 在分 ...

  8. Faster RNNLM (HS/NCE) toolkit

    https://github.com/kjw0612/awesome-rnn Faster Recurrent Neural Network Language Modeling Toolkit wit ...

  9. 【论文:麦克风阵列增强】Microphone Array Post-Filtering For Non-Stationary Noise Suppression

    作者:桂. 时间:2017-06-08  08:01:41 链接:http://www.cnblogs.com/xingshansi/p/6957027.html 原文链接:http://pan.ba ...

随机推荐

  1. live-server 介绍&安装

    live-server是可以运行前端静态文件的一个服务器,既然我们要前后端分离,所以就需要单独将html代码运行起来,这里我们选择live-server,等到后边真正部署的时候在用nginx js的解 ...

  2. 关于MySQL集群的一些看法

    作者:Gary Chen链接:https://zhuanlan.zhihu.com/p/20204156来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 市面上的招聘往往 ...

  3. linux如何批量关闭进程

    碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择. 代码: ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 ...

  4. centos7安装docker并设置开机自启以及常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  5. 你的知识需要管理PKM

    有一段时间没有更新技术博客了~,大脑中总感觉有点东西要写,却不知道从哪里开始写~至少写点东西,也算是一个阶段的成长.反思~ 学习(充电过程).工作(知识变现过程)不是简单重复,永远都是最值得去反思.玩 ...

  6. 《重构》的读书笔记–方法列表

    第5章 重构列表 5.1 重构的记录格式103 5.2 寻找引用点105 5.3 这些重构手法有多成熟106 第6章 重新组织函数 6.1 (P110)Extract Method(提炼函数) 6.2 ...

  7. CQOI2019(十二省联考)游记

    CQOI2019(十二省联考)游记 Day -? 自从联赛爆炸,\(THUWC\)爆炸,\(WC\)爆炸(就没有不爆炸的)之后我已经无所畏惧... 听说是考\(4.5 h\)吗? Day -1 \(Z ...

  8. git@github.com: Permission denied (publickey).////remote: Permission to xxx/test.git denied to xxx.等权限问题

    Error msg git@github.com: Permission denied (publickey) 或者: remote: Permission to xxx/test.git denie ...

  9. MySQL大小写敏感

    MySQL大小写敏感说明 - TonyWu - 博客园https://www.cnblogs.com/wzmenjoy/p/4244545.html

  10. .netcore2.0发送邮件

    SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指 ...