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损失函数定义:
\[
\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)的更多相关文章
- Noise Contrastive Estimation
Notes from Notes on Noise Contrastive Estimation and Negative Sampling one sample: \[x_i \to [y_i^0, ...
- Notes on Noise Contrastive Estimation and Negative Sampling
Notes on Noise Contrastive Estimation and Negative Sampling ## 生成负样本 在常见的关系抽取应用中,我们经常需要生成负样本来训练一个好的系 ...
- 通俗易懂讲解Word2vec的本质
本文首发于微信公众号「对白的算法屋」,来一起学AI叭 一.Word2vec CBOW(Continuous Bag-of-Words):每个词的含义都由相邻词决定. Skip-gram:依据分布的相似 ...
- Hinge Loss、交叉熵损失、平方损失、指数损失、对数损失、0-1损失、绝对值损失
损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示.损失函数越小,模型的鲁棒性就越好. 损失 ...
- 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)
论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...
- [AI] 论文笔记 - CVPR2018 Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation
写在前面 原始视频(30fps) 补帧后的视频(240fps) 本文是博主在做实验的过程中使用到的方法,刚好也做为了本科毕设的翻译文章,现在把它搬运到博客上来,因为觉得这篇文章的思路真的不错. 这篇文 ...
- loss function
什么是loss? loss: loss是我们用来对模型满意程度的指标.loss设计的原则是:模型越好loss越低,模型越差loss越高,但也有过拟合的情况. loss function: 在分 ...
- Faster RNNLM (HS/NCE) toolkit
https://github.com/kjw0612/awesome-rnn Faster Recurrent Neural Network Language Modeling Toolkit wit ...
- 【论文:麦克风阵列增强】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 ...
随机推荐
- ext当表单中的输入项为必填时,输入项label后显示红色的*
form表单里,当输入项为必填项时,需要将对应item的allowblank属性设置为true,如果item的label后面自带红色的*,表单中哪些输入项是“必填”,哪些输入项是“非必填”,一眼望去清 ...
- 斐波那契数列(C#)
斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:1.1.2.3.5.8.13 ...
- 测试面试话题8:测试人员如何让开发少写bug?
在测试过程中和不同开发合作,往往会发现一些bug都是大多数开发人员常出现的错误,为了帮助开发人员,也减少测试的重复工作量,非常有必要将以往出现的bug做整理,分析原因,让开发知道这些bug, 避免再次 ...
- python接口自动化-session_自动发文
一.session简介 查看 requests.session() 帮助文档(只贴了一部分内容) import requests help(requests.session()) class Sess ...
- 数据库升级到mysql5.7出现的1067 - Invalid default value for '字段名' (docker版)
docker run -d --name xxx mysql:5.7 docker container cp xxx:/etc/mysql/mysql.conf.d . // 取出mysql中的配 ...
- AI 学习路线
[导读] 本文由知名开源平台,AI技术平台以及领域专家:Datawhale,ApacheCN,AI有道和黄海广博士联合整理贡献,内容涵盖AI入门基础知识.数据分析挖掘.机器学习.深度学习.强化学习.前 ...
- Perl输出带颜色行号或普通输出行
定义好了一个可以输出带颜色行号以及行数据的函数print_with_line_num,f()是测试函数.在f()函数中,读取文件并输出读取的每一行数据,但根据参数选项决定是普通输出行还是同时输出带颜色 ...
- 360 随身 WiFi3 在 Ubuntu 14.04 下的使用
由于 360 随身 WiFi3 采用 Mediaek 代号 0e8d:760c 的芯片,目前没有官方或第三方 Linux 驱动,所以造成 Linux 用户的诸多困扰. 本文给出一个迂回的解决方案:在 ...
- EntityFramework Core 2.1重新梳理系列属性映射(一)
前言 满血复活啦,大概有三个月的时间没更新博客了,关于EF Core最新进展这三个月也没怎么去看,不知现阶段有何变化没,本文将以EF Core 2.1稳定版本作为重新梳理系列,希望对看本文的你有所帮助 ...
- 12 Django Rest Swagger生成api文档
01-简介 Swagger:是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.总体目标是使客户端和文件系统源代码作为服务器以同样的速度来更新.当接口有变动时,对应的接 ...