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. nginx预防常见攻击

    目录 nginx防止DDOS攻击 概述 攻击手段 配置 限制请求率 限制连接的数量 关闭慢连接 设置 IP 黑名单 设置IP白名单 小站点解决方案 nginx防止CC攻击 概述 主动抑制方法 应用举例 ...

  2. 把python学的让自己成为智障的day14

    智障的第14天,今天还是装饰器,这也是这个难点,装饰器也是函数的其中一种,所以需要有返回值才能返回到之后要执行的函数中,当然,作为函数可以在其中带上参数,装饰器只是比较特殊,自然也可以带参数,目前来说 ...

  3. Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)

    Problem   Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...

  4. Python--day08(文件操作)

    昨天内容回顾 1.  数据类型转换 1.  数字类型:数字类型之间可以直接  类型()进行直接转换 2.  str与int类型:int() 与str() 之间在某些条件下可以直接转换 int('10' ...

  5. MarkDownPad2基本语法

    一.换行和空格   (1)换行   行尾加两个空格   (2)空格     二.标题   在#后跟个空格再写文字,一个#是一级标题,两个#是二级标题,以此类推,支持六级标题.   示例: # 一级标题 ...

  6. Tutorial 02_熟悉常用的HDFS操作

    Shell命令实现: (1)向HDFS 中上传任意文本文件,如果指定的文件在HDFS 中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件: (2) 从HDFS 中下载指定文件,如果本地文 ...

  7. Angular 基本内置服务和筛选器

    AngularJS中的内置服务(共30多个): $http 发送http请求,主要用于进行异步数据请求的功能实现,这个服务主要封装了XMLHttpRequest对象和JSONP数据访问模式来完成远程请 ...

  8. Java队列学习

    队列是Java集合中的重要组成部分,具有先进先出的特性,使其具有广泛的应用场景,比如排队等.因此今天就来学习一下Java中的队列.本文的例子使用的Java8环境. 继承类图 学习队列,首先要知道它的类 ...

  9. js获取元素宽高、位置相关知识汇总

    常见clientWidth.clientHeight.offsetWidth.offsetLeft,clientX.scrollTop等词语,比较混乱,现在总结下他们的区别. 1. clientWid ...

  10. CentOS7桌面版系统使用的一些小技巧

    1. 清空~/.kde/ 文件下的文件,登陆后不显示桌面的解决方法 在使用CentOS7 桌面系统时,有时候打开文件会很卡.这时我们需要清空当前用户下的 .kde 文件下的所有文件. 再重新登陆该用户 ...