Candidate sampling:NCE loss和negative sample

栏目: 数据库 · 发布时间: 6年前

内容简介:在工作中用到了类似于negative sample的方法,才发现我其实并不了解candidate sampling。于是看了一些相关资料,在此简单总结一些相关内容。主要内容来自tensorflow的candidate_sampling和卡耐基梅隆大学一个学生写的一份notes首先,什么是candidate sampling呢?假设我们有这样一个问题,给定一个样本集,其中每个样本由 ,其中 是输入特征, 是一个target小集合,满足 。我们的目标是学习一个 ,使得给定一个 ,我们可以预测出类别 为正的可能

在工作中用到了类似于negative sample的方法,才发现我其实并不了解candidate sampling。于是看了一些相关资料,在此简单总结一些相关内容。

主要内容来自tensorflow的candidate_sampling和卡耐基梅隆大学一个学生写的一份notes Notes on Noise Contrastive Estimation and Negative Sampling ,还有一部分参考了tensorflow的nce_loss和sampled_softmax_loss的文档。

What is Candidate Sampling

首先,什么是candidate sampling呢?假设我们有这样一个问题,给定一个样本集,其中每个样本由 ,其中 是输入特征, 是一个target小集合,满足 。我们的目标是学习一个 ,使得给定一个 ,我们可以预测出类别 为正的可能性。

如果我们使用正常的softmax方法,那么在计算每一个sample时,我们都需要遍历整个集合 ,对每一个可能的 计算一次 ,这是非常昂贵的操作。尤其是在NLP的相关预测中,这一操作代价更加高昂。所以candidate sampling的方法被提了出来:在计算每一个sample时,我们从整个标签集合或者负标签集合中随机采样出一个小的candidate集合 ,将 和 一起组成当前的candidate集合 ,并在 上计算 。

常见的candidate sampling方法的特性可以见下表:

Candidate sampling:NCE loss和negative sample

在这个表中, 是一个不依赖于候选类的任意函数。 由于Softmax涉及归一化,因此添加这样的函数不会影响计算的概率。 是 中类y的期望概率或者期望个数。

NCE和nagetive sample可以适应于 是multiset的情况,在这种情况下, 等于 中类y的期望个数。NCE,negative sampling和sampled logistic可以适应于 是multiset的情况,在这种情况下, 等于 中类y的期望个数。

Noise Contrastive Estimation (NCE)

我们考虑一种简单的也是最常用的情况, 。以经典的word预测为例,此时 。我们给定经验分布 和 ,则每一个训练集中的正样本都相当于从 采样出一个 ,并在这个 的基础上在 上采样出 ,并标定label 。同时我们从分布 中采样出 个noise samples,则

那么使用条件概率公式,我们就可以写出:

在神经网络算法中,我们使用 来代替 ,并试图用梯度下降法来训练 。

Negative Sampling

Negative Sampling是NCE的一种近似,比较值得注意的是,negative sampling对于分布Q有强依赖,NCE则没有这个问题。

tensorflow实现

NCE loss在tensorflow中的文档可以参考 tf.nn.nce_loss 。要注意的是,使用这种方法时,标签必须按照frequency的降序排序,因为默认的采样方法是tf.nn.log_uniform_candidate_sampler。当然我们也可以实现自己的采样方法。

Negative sampling则用sampled_softmax_loss来实现,注意sampled_softmax_loss只能处理一个正label的情况。


以上所述就是小编给大家介绍的《Candidate sampling:NCE loss和negative sample》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Go Web编程

Go Web编程

谢孟军 / 电子工业出版社 / 2013-6-1 / 65.00元

《Go Web编程》介绍如何用Go语言进行Web应用的开发,将Go语言的特性与Web开发实战组合到一起,帮读者成功地构建跨平台的应用程序,节省Go语言开发Web的宝贵时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。 在《Go Web编程》中,读者可以更加方便地找到各种编程问题的解决方案,内容涵盖文本处理、表单处理、Session管理、数据库交互、加/解密、国际化和标......一起来看看 《Go Web编程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具