©作者 | 程引

单位 | 日本BizReach公司

研究方向 | 推荐系统、自然语言处理

负采样(Negative Sampling, NEG)/噪声对比估计(Noise Contrastive Estimation, NCE)/生成对抗网络(Generative adversarial networks, GAN)/自监督学习(Self-supervised learning, SSL)是自然语言处理、推荐系统中常见的技术,它们各有特点而又联系密切。

本文将从自然语言处理的背景切入,按照以下逻辑,层层递进,介绍这些方法的实现区别与内在联系:

  • 负采样(NEG) 是对噪声对比估计(NCE)的近似

  • 噪声对比估计(NCE)是对极大似然估计(MLE)的近似

  • 噪声对比估计(NCE)是生成器(generator)固定的生成对抗网络(GAN)

  • InfoNCE 的是多分类版本的噪声对比估计(NCE)

  • InfoNCE 及其变体是自监督学习(SSL)常用的损失函数

  • InfoNCE 实质上是在做自归一重要性采样(SNIS)

  • 以上模型都属于能量启发模型(EIM),回避对配分函数(partition function)的直接计算

词嵌入(Word embedding)

对于单词或者商品这样的随机变量空间,通常它们的 one-hot 表达都是高度稀疏的。标准的处理方法是使用词嵌入(word embedding)技术。负采样最初是针对词嵌入学习中存在的困难,所发展出的一种构造样本的方法。词嵌入的目标,是学习得到这样一个语义空间:

语义相近的单词,在语义空间中也尽量靠近

具体地,需要将第 个文档中的第 个单词,表示为高维、稀疏的 one-hot 向量 。将其映射到一个低维、稠密的 空间上去。

所谓语义,是由分布假设(distributional hypothesis)所定义的。这个假设是指:具有相似上下文 (context) 的单词,往往具有相似的含义;两个单词的差异程度,大致上对应于在它们环境的差异程度。

隐语义索引(LSI)/ 隐语义分析(LSA)/ 点间互信息(PMI)

隐语义索引(Latent semantic indexing, LSI)是最直接的利用统计特征,建立词嵌入空间的方法。

首先建立矩阵 ,其中矩阵元素 表示第 种「条目(term)」出现在第 种「上下文(context)」的统计次数。条目和上下文的定义都可以按照实际需要,自由定制。如果以「单词」作为「条目」,以「文章」作为「上下文」,则这样的矩阵又叫做词条-文档频率矩阵(term-document frequency matrix)。

词与词直接必然存在千丝万缕的联系,这也意味着词条-文档频率矩阵一定是一个低秩矩阵,通过与推荐系统中完全一样的方法:

https://zhuanlan.zhihu.com/p/408838233

可以求得词条-文档频率矩阵的 K 秩最佳近似:

则有:

其中 为第 个单词的嵌入,而 表示第 个文档的嵌入。利用这些嵌入,可以实现文档检索(document retrieval)。例如每一次查询内容为:

可以直接通过欧式距离,或者余弦相似度来实现对文档的排序:

这种检索方式就被成为隐语义索引。

隐语义分析(Latent semantic analysis, LSA)是隐语义索引的推广。将作为上下文的文档,替换成单词附近的滑窗 ,其余的计算与隐语义索引中的完全相同。

点间互信息(pointwise mutual information, PMI)将隐语义分析中的单纯计数 替换成互信息的形式:

点互信息的核心思想是:

考虑「上下文共现」高于「先验共现」的概率

将 PMI 矩阵中的负值全部置零,就得到 positive PMI (PPMI)模型。然而 PPMI 也具有偏置的问题:对于罕见词的评分非常高。使用拉普拉斯平滑(Laplace smoothing)可以一定程度上缓解这个问题。

词向量(Word2vec)

词向量模型大致分为两种类型:CBOW(continuous bag of words)与 skipgram。Word2vec 有一个很强(但有效)的假设:

所有的上下文都是相互独立的。

CBOW 模型

简而言之,CBOW 模型是从上下文预测中心词:

其中 是整个词库, 是滑窗尺寸, 是中心词, 是上下文:

Skip-gram 模型

Skip-gram 模型是从预测中心词上下文:

则与 CBOW 类似,可以将给定中心词,对应上下文的条件概率为:


负采样(Negative sampling, NEG)

不论是对于 CBOW 还是 Skip-gram 模型,都需要遍历整个词库 ,这种计算代价在实际中是不可承受的。为了节省运算量,加速训练,需要使用负采样方法。结合负采样之后的 Skip-gram 模型称为 SGNS 模型(skip-gram with negative sampling)。

具体来说,对于每个中心词 ,将其上下文的单词中选择 1 个作为正样本;负样本又被称为噪声词(noise words),以 , 的概率从词库中抽取 作为个负样本,这样构造负样本是为了让更多的罕见词获得训练的机会。由此待求条件概率为:

由此只需要用随机梯度下降法,训练一个二分类模型即可:

可以看到,在每一组样本的计算过程中,已经不需要遍历整个词库 。

负采样(NEG) 是对噪声对比估计(NCE)的近似

负采样引入了噪声词,通过训练二分类模型,来避免对整个词库 的反复遍历。然而需要注意的是,当且仅当 ,且噪声词为均一分布时,使用负采样才能得到中心词的似然函数。而按照 SGNS 的设计,负样本窗口必然是远远小于词库尺寸的,这将导致一个严重的缺陷:

由负采样得到的模型只能用于生成词嵌入,而不能生成语言模型

噪声对比估计(Noise Contrastive Estimation, NCE)就是用来解决针对经验概率分布(empirical distribution)的估计问题。NCE 的核心思想是:假设 是采样自未知的经验概率密度函数 。由噪声分布 引入噪声样本 。通过估计 来最终估计出 。

噪声对比估计(NCE)是重要性采样(IS)的特例

同样是将概率估计问题转化为二分类问题,唯一的不同是 NCE 利用了已知的噪声概率分布,来估计未知的经验概率分布。这种思想与重要性采样(Importance Sampling, IS)异曲同工,唯一的不同是 NEG / NCE 是通过逻辑回归(logistic regression)对数据与噪声进行二分类;IS 是通过交叉熵(cross entropy)进行多分类。三者的区别与联系一目了然:

在 NEG 中:

在 NCE 中(约等号是因为配分函数 直接置 1):

在 IS 中:

由此可以得到 NCE 的条件似然函数为:

其中:

从而可以构造出相应的损失函数,最终估计出经验概率密度函数 。

噪声对比估计(NCE)是对极大似然估计(MLE)的近似

与 MLE 一样,可以证明 NCE 满足渐近正态性(asymptotic normality):

而 MLE 还同时满足渐近有效性(asymptotic efficiency):

并以及在此基础上还满足一致性(consistency):

从可以证明当 ,NCE 的 Cramér–Rao bound(CRB)同样收敛至 , 为费雪信息(Fisher information),因此实际应用中 也应选取得尽量大。

上述事实说明,在考虑配分函数(partition function)的情况下,NCE 的方差渐近收敛于 MLE,因而同样满足渐近有效性以及一致性,这也是 NCE 方法之所以成立的重要理论保证。由于配分函数实际上无法计算,在 NCE 公式中直接置为 1,因此是 MLE 的近似结果,这种方法称之为自归一化(self-normalisation)。

对于未知分布的估计问题,是典型的无监督学习(unsupervised learning)任务,而通过 NCE / NEG,用有监督学习(supervised learning)方法实现了这样的目的,从而建立了无监督学习与有监督学习的桥梁,这就是自监督学习(Self-supervised learning, SSL)。

噪声对比估计(NCE)是生成器(generator)固定的生成对抗网络(GAN)

在 NCE 中噪声样本 越接近 ,似然函数越大。当完全相等时,取得最大值。直观上也很容易理解:分布越接近,对于模型的分辨难度越大,从而越能够更好学习到经验分布。

在 TensorFlow 代码中,噪声分布默认使用 Zipfian 分布。因此使用时要按词频进行排序,来获得最佳性能。

到目前为止,噪声分布都由事先指定,而正如前文指出的,由于 NCE 是 MLE 的近似,样本规模的扩大,可以减弱噪声分布偏离带来的不利影响。而近年来风靡一时的生成对抗网络(Generative adversarial networks, GAN),实质上是进一步放松了对噪声分布的限制,而由生成器(generator)来直接生成噪声样本。

InfoNCE 的是多分类版本的噪声对比估计(NCE)

在 NCE 方法中,引入噪声分布,对噪声和正样本通过逻辑回归进行了二分类学习,从而最终得到经验分布。容易想到,可以将 NCE 的考察对象从二分类扩展到多分类;将计算方式由逻辑回归推广到交叉熵:

这种损失函数被称之为 InfoNCEranking NCE

当下流行的对比学习(contrastive learning)是自监督学习(Self-supervised learning, SSL)的一种。InfoNCE 及其变体被广泛用于各种对比学习的损失函数中,其中比较著名的模型有如 SimCLR / MoCo / SimCSE 等。

基于能量模型(EBM)与能量启发模型(EIM)

基于能量模型(Energy-based model, EBM)是一种统一的学习框架,用于图模型及其他结构化模型的训练。常见的 EBM 模型有玻尔兹曼机(Boltzmann machines)、条件随机场(conditional random fields)、马尔科夫随机场(Markov random fields)等等。EBM 由于配分函数的计算,使得采样和估计都比较困难。

能量启发模型(Energy-Inspired Models, EIM)则另辟蹊径,通过采样方法,提供容易计算的似然函数的下界(lower bounds),来进行近似。


InfoNCE 实质上是在做自归一重要性采样(SNIS)

基于能量模型 由能量函数 所定义:

其中 为先验分布, 为难以计算的配分函数。通过引入隐变量 和变分分布 ,可以得到:

KL 散度的一项可以放缩丢弃,以 为采样不确定性,则有:

重要性采样(importance sampling, IS)是通过引⼊⼀个辅助的概率密度函数,来减少蒙特卡洛⽅法的⽅差。配分函数未知的情况下,采用自归一重要性采样(Self-Normalized Importance Sampling, SNIS):

由此得到对数似然的下界为:

又由于对互信息有:

将 SNIS 作为变分分布,带入上式,可以得到这样的观点:

InfoNCE 是通过自归一重要性采样,来优化互信息的下界

至此,从能量观点,建立了对从负采样到对比学习的统一认识。

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

能量启发模型:从负采样到自监督学习NEG-NCE-GAN-SSL家族相关推荐

  1. 推荐系统入门必读:一文读懂推荐系统负采样

    ©作者 | 潘星宇 学校 | 中国人民大学硕士生 研究方向 | 推荐系统 推荐系统负采样作为推荐模型训练的重要一环,对模型的训练效果有着重要影响,也是推荐系统领域的一个重要研究分支.本文将从研究背景到 ...

  2. 小白必看:一文读懂推荐系统负采样

    © 作者|潘星宇 机构|中国人民大学信息学院硕士一年级 导师|赵鑫教授 研究方向 | 推荐系统 引言 推荐系统负采样作为推荐模型训练的重要一环,对模型的训练效果有着重要影响,也是推荐系统领域的一个重要 ...

  3. NLP-词向量(Word Embedding)-2013:Word2vec模型(CBOW、Skip-Gram)【对NNLM的简化】【层次Softmax、负采样、重采样】【静态表示;无法解决一词多义】

    一.文本的表示方法 (Representation) 文本是一种非结构化的数据信息,是不可以直接被计算的.因为文本不能够直接被模型计算,所以需要将其转化为向量. 文本表示的作用就是将这些非结构化的信息 ...

  4. 2.7 负采样-深度学习第五课《序列模型》-Stanford吴恩达教授

    负采样 (Negative Sampling) 在上个视频中,你见到了Skip-Gram模型如何帮助你构造一个监督学习任务,把上下文映射到了目标词上,它如何让你学到一个实用的词嵌入.但是它的缺点就在于 ...

  5. 【推荐系统】双塔模型中的负采样

    作者:十方 推荐模型中双塔模型早已经普及.一个塔学用户表达.一个塔学item表达.很多双塔模型用各种各样的in-batch负采样策略.十方也是如此.往往使用比较大的batchsize,效果会比较好,但 ...

  6. KGPolicy:用于推荐的负采样模型(知识图谱策略网络)WWW 2020

    论文链接:https://arxiv.org/pdf/2003.05753.pdf 代码链接:https://github.com/xiangwang1223/kgpolicy 摘要 合理的处理缺失数 ...

  7. 词向量模型skip-gram以及负采样技术图解

    一.前言 请勿全文复制转载!尊重劳动成果! 在使用词向量之前,我们往往用one-hot向量来表示一个字词,这样有两个缺点: ① 维度过大.使用one-hot向量来表示字词,那么一个字词就需要一个词表大 ...

  8. 基于高频词抽样+负采样的CBOW模型

    深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. ✨word2vector系列展示✨ 一.CBOW 1.朴素CBOW模型 word2ve ...

  9. 背景区域为负样本什么意思_词向量-skipgram与负采样

    大纲: 1. onehot vs 分布式表示 2. 分布式表示的全局泛化能力 3. how to learn word2vec - intuition 4. SkipGram 5. SkipGram ...

最新文章

  1. 脚本征集大赛开启啦!100% 有奖!
  2. KVM、QEMU和KQemu的区别:
  3. python菜鸟教程m-Python map() 函数
  4. Linux性能监测工具Nmon介绍及其使用
  5. yunyang tensorflow-yolov3 Intel Realsense D435 (并发)调用两个摄像头运行识别程序并画框
  6. MyBatis3 用log4j在控制台输出 SQL----亲测,真实可用
  7. Linux并发与竞争介绍(原子操作、自旋锁、信号量、互斥体)
  8. java服务端无法发送给客户端,无法从客户端向服务器发送消息
  9. 浪潮服务器可管理和维护性,专注用户需求,浪潮服务器提供优质高效的产品
  10. 使用SVG绘制湖南地图
  11. 雷林鹏分享:PHP XML Parser 函数
  12. LintCode 合并二维数组
  13. TOGAF9中文版(五)
  14. 身份证校验码计算:根据身份证前17位计算第18位校验码-c++实现
  15. python循环语句while教案_while循环教学设计
  16. 建广数科(文思海辉)招聘
  17. python淘宝cookies抢购_Python爬虫利用cookie抓取淘宝商品比价
  18. Ansible之管理windows主机
  19. UPC 2020年夏混合个人训练第五十场【DEG】
  20. 解放双手——Android的自动化构建及发布

热门文章

  1. 2019年最新版本: nvm use 7.10.0 激活系统报错——输入错误: 没有文件扩展“.vbs”的脚本引擎
  2. 中国天气网接口类(中国天气预报)
  3. 有十个按钮点击按钮aler按钮的序号
  4. IMX6ULL-UBOOT分析(1):链接脚本u-boot.lds、Systemp.map和u-boot.map分析
  5. C++ 链表多项式求导
  6. 全方位解读数砖的 Delta Engine
  7. ProxmoxVE6.2 虚拟机导入导出
  8. 初一计算机游戏,沉迷于电脑游戏初一作文
  9. 用C语言easyx库来写一个简单的翻翻乐小游戏(附源码素材)
  10. 清楚姐姐玩翻翻乐[期望dp]