PaperNotes(10)-Maximum Entropy Generators for Energy-Based Models

Maximum Entropy Generators for Energy-Based Models

  • Abstract
  • 1 Introduction
  • 2 Background
  • 3 Maximum Entropy Generators for Energy-Based Models
  • 4 Experiments
  • 5 Related Work
  • 6 Conclusion
  • 7 Acknowledgements

Abstract

由于对数似然梯度的难以计算,能量模型的最大似然估计是一个具有挑战性的问题。本文中,我们提出了利用神经网络来学习能量函数和摊销(amotized)近似采样机制,这提供了对数似然梯度的有效近似。所得到的目标要求生成样本的熵最大化,我们使用最近提出的非参数互信息估计器来实现这一目标。最后,为了稳定由此产生的对抗博弈,我们使用从分数匹配文献(score matching literature)中导出的零中心梯度惩罚作为必要条件。所提出的技术可以生成具尖锐图像,IS和FID分数的与最新的GAN技术相比都具有竞争力,不会产生模式崩溃,并且与最新的异常检测技术竞争。

1 Introduction

无监督学习利用未标记数据,被视为实现人工智能的关键(Lake等人,2017)。基于能量的模型(EBMs、LeCun等人。(2006)是一系列无监督的学习方法,重点是学习能量函数,即数据的非标准化对数密度。这就不需要对数据分布进行参数化假设,以使归一化常数(Z)可处理。然而,在实践中,由于同样缺乏限制,学习高质量的基于能量的模型面临着诸多挑战。为了避免显式地计算Z或其梯度,对比散度(Hinton,2000)和依赖于马尔可夫链蒙特卡罗(MCMC)的随机最大似然(Younes,1998;Tieleman,2008a)从基于能量的模型中近似地采样。然而,基于MCMC的高维数据采样方法往往存在混合时间长的问题。因此,基于能量的模型培训与其他无监督学习技术如变分自动编码器(Kingma&Welling,2014))和生成性对抗网络(Goodfelle等人,2014))相比,并没有很大的竞争力。

在这项工作中,我们提出了最大熵产生器(MEG),在这个框架中我们训练能量函数和近似取样器,它可以是快速的(使用产生器网络G)或使用G在产生器的潜在空间中初始化马尔可夫链。适当地训练这样一个生成器需要生成器的输出分布的熵最大化,为此我们利用非参数互信息最大化的最新进展(Belghazi等人,2018;Hjelm等人,2018;Oord等人,2018;Poole等人,2018)。

为了评估该技术的有效性,我们在图像生成、精确模式表示和异常检测方面与其他最新技术进行了比较。我们证明,根据FID(Heusel et al.,2017)和IS(Salimans et al.,2016),所提出的技术能够生成与WGAN-GP(Gullajani et al.,2017)具有竞争力的CIFAR-10样品,并且能够在正确的数据频率下生成4叠加NIST的所有104个模式的样本。

我们证明,我们的技术在KDD99数据集上训练有助于异常检测的能量函数,并且它执行的异常检测技术和为该任务专门设计的最顶尖的异常检测技术可以相提并论,且远远优于其他基于能量和生成的异常检测模型。

为了总结我们的贡献,我们提出了最大熵发生器(MEG),这是一个新的框架工作,用于训练基于能量的模型,使用摊销神经发生器和互信息最大化。结果表明,所得到的能量函数可以成功地用于异常检测,并优于最近发表的基于能量模型的结果。我们表明,MEG生成了清晰的图像-具有竞争性的IS和FID分数。并且比标准GANs准确地捕获了更多的模式,同时与许多最大似然生成模型存在模型混合问题
不受导致模糊样本的的共模混合问题的影响。

2 Background

设x表示数据空间X\mathcal{X}X中的一个样本,Eθ:X→RE_θ:\mathcal{X}→\mathbb{R}Eθ:XR为一个能量函数对应于非归一化的估计密度函数的负对数。
pθ(x)e−Eθ(x)Zθ∝e−Eθ(x)p_{\theta}(\bm{x})\frac{e^{-E_\theta ({\bm{x}})}}{Z_{\theta}}\propto e^{-E_\theta ({\bm{x}})}pθ(x)ZθeEθ(x)eEθ(x)

其中:ZθZ_{\theta}Zθ为归一化常数或( partition function).。令pDp_DpD为训练分布,从中提取训练集。对于优化能量函数的参数θ,最大似然参数梯度为
∂Ex∼pD[−log⁡pθ(x)]∂θ=Ex∼pD[∂Eθ(x)∂θ]−Ex∼pθ(x)[∂Eθ(x)∂θ]\frac{\partial \mathbb{E}_{\boldsymbol{x} \sim p_{D}}\left[-\log p_{\theta}(\boldsymbol{x})\right]}{\partial \theta}=\mathbb{E}_{\boldsymbol{x} \sim p_{D}}\left[\frac{\partial E_{\theta}(\boldsymbol{x})}{\partial \theta}\right]-\mathbb{E}_{\boldsymbol{x} \sim p_{\theta}(\boldsymbol{x})}\left[\frac{\partial E_{\theta}(\boldsymbol{x})}{\partial \theta}\right]θExpD[logpθ(x)]=ExpD[θEθ(x)]Expθ(x)[θEθ(x)]

其中第二项是logZθlog Z_θlogZθ的梯度,当训练收敛时,两个期望的和为零,正相位(在数据采集自pD)的期望能量梯度与负相位(数据采自pθ(x)p_θ(x)pθ(x)下)的期望能量梯度相匹配。因此,训练包括尝试分离两个分布:正相位分布(与数据相关)和负相位分布(模型自由运行并自行生成配置)。这一观察结果激发了Bengio(2009)提出的pre-GAN思想,即“模型样本为负样本”,如果分类器将数据分布与模型自身样本分离,则可以用来学习能量函数。在之后不久发表的GANs模型,Goodfellow(2014)也做了一个类似的联系,涉及噪声对比估计(Gutmann&Hyvarinen,2010)。还应认识到等式2与Wasserstein GANs或WGAN的目标函数之间的相似性(Arjovsky等人,2017年)

式2中的主要挑战是从与能量函数Eθ相关的分布pθ中获得样本。虽然有一个能量函数可以方便地获得分数,从而可以比较不同x的相对概率,但是很难将能量函数转换为生成过程。常用的研究方法是基于马尔可夫链蒙特卡罗,其中一个迭代更新一个候选配置,直到这些配置在分布上收敛到期望的分布pθ。对于RBM,最常用的算法是对比散度(Hinton,2000)和随机最大似然(Younes,1998;Tieleman,2008a),依赖于RBM的特定结构来执行Gibbs抽样。尽管这些基于MCMC的方法很有吸引力,但与自回归模型(van den Oord等人,2016年)、变分自动编码器(Kingma&Welling,2014年)和生成性对抗网络或GANs(Goodfelle等人,2014年)相比,近年来RBM(及其更深层的形式,深玻尔兹曼机器)没有竞争力。

3 Maximum Entropy Generators for Energy-Based Models

3.1 Improving training stability
3.2 Improving sample quality via latent space MCMC

当MEG同时训练一个发生器和一个有效的能量函数时,我们可以通过向高密度区域偏移采样来提高采样质量。此外,正如Bengio等人最初讨论的那样,在潜在空间中进行MCMC行走应该比在数据空间中更容易,因为转换后的数据流形(在潜在空间中)比在原始观测数据空间中更平坦。(2013年)。其动机也类似于Brock等人成功使用的“截断技巧”。(2018年)。然而,我们使用了一种基于MCMC的方法,这种方法适用于任意的潜在分布。

我们使用Metropolis-adjusted Langevin算法(MALA、Girolami和Calderhead(2011)),Langevin dynamics在潜在空间中生成一个建议分布,如下所示:

4 Experiments

为了了解MEG的好处,我们首先在玩具数据上可视化生成模型所获得的能量密度。接下来,我们通过运行离散模式崩溃实验来评估熵最大化器的有效性,以验证我们学习了所有模式以及相应的模式计数(频率)分布。此外,我们还评估了MEG在锐化图像生成方面的性能,因为这是用最大似然法训练的模型的常见故障模式,容易产生模糊样本(the is等人,2015)。我们还比较了在可见空间的MCMC样本和我们提出的从合成能量函数的潜在空间的MCMC样本。最后,进行异常检测实验,验证所学习的能量函数的应用。

4.1 Visualizing the learned energy function
4.2 Investigating Mode Collapse
GANs因存在模式崩溃问题而臭名昭著,其中数据分布的某些模式不由生成的分布表示。由于生成器被训练成用能量模型分布(通过最大似然法训练)最小化其KL发散,我们期望生成器忠实地捕捉数据分布的所有模式。我们的理论要求我们最大化生成分布的熵,我们相信这有助于确保全模式捕获。

为了从经验上验证MEG捕获了所有数据分布模式,我们采用了与(Metz et al.,2016)和(Srivastava et al.,2017)相同的实验设置。我们在stackednist数据集上训练生成模型,这是一个通过在不同通道上叠加MNIST创建的合成数据集。使用一个预训练的MNIST分类器计算模式数,并根据经验计算生成的模式分布和数据分布之间的KL散度。
4.3 Modeling Natural Images

5 Related Work

6 Conclusion

7 Acknowledgements

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode105 前序中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路: 1、…

c++的虚拟继承 的一些思考吧

虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class …

对于linux socket与epoll配合相关的一些心得记录

对于linux socket与epoll配合相关的一些心得记录 没有多少高深的东西,全当记录,虽然简单,但是没有做过测试还是挺容易让人糊涂的int nRecvBuf32*1024;//设置为32Ksetsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int))…

leetcode144 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路:模仿递归的思路压栈即可。 /*** Definition for a bi…

AJAX大总结

1、AJAX概述 1.1 什么是AJAX AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。 …

我对STL的一些看法(一)初步认识STL

后面一段时间我将会给大家分享我自己学到STL以及应用的时候遇到的问题还有他的一些精髓,可能开始的逻辑会有些乱吧,不过后面还会不断的整理和优化,让自己看明白也让更多的读者看的清楚。 最近刚闲下来,先说说什么是STL: 不知道你是否有过这样的经历。在大学,你准备着手完…

PaperNotes(12)-Autoregressive Quantile networks for generative modeling

Autoregressive Quantile networks for generative modeling3 autoregressive implicit quantiles3 autoregressive implicit quantiles autoregressive:自身做回归变量,用之前若干时刻的随机变量 来建模 之后某些时刻 随机变量的模型。 N维随机变量的…

我对STL的一些看法(二)认识vector容器

先说vector吧。 C++ Vector(向量容器) 是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。 vector 的数据安排以及操作方式,与 array 非常像似。两者的唯㆒差别在于空间的…

git大总结

git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone 获取一个url对应的远程Git repo, 创建一个local copy. 一般的格式是git clone [url]. clone下来的repo会以url最后一个斜线后面的名称命名,创…

我对STL的一些看法(三)认识list容器

C++ List(双向链表) 是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于…

C++(4)--初识变量、数据类型

C变量1.C 命名规则2.C 命名规范3.C 数据类型sizeof ()4.声明和使用变量4.1使用整型变量4.2使用单精度浮点型变量4.3使用双精度浮点型变量5.附送-cout 设置宽度,对齐方式6.算术运算符和表达式6.1除法、取余6.2自加、自减7.强制类型转换《老九学堂C课程》《C primer》…

我对STL的一些看法(四)认识deque容器

Deque(双向队列) 是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元…

我对STL的一些看法(五)初识关联容器

3关联容器 pair类型 这个是一个简单的标准库类型,该类型在utility头文件中定义,我们来看看他主要的操作: pair<T1 ,T2> p1; 创建一个空的pair对象 pair<T1,T2> p1(v1,v2);创建一个pair对象,他的两个元素分别为T1类型的v1,T2类型的v2 make_pair(v1,v2…

关系数据库——mysql数据类型大总结

整数类型&#xff1a; 实数类型&#xff1a; 定点数&#xff1a;DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值。 DECIMAL(M,D)&#xff0c;其中M表示十进制数字总的个数&#xff0c;D表示小数点后面数字的位数。 如果存储时&#xff0c;整…

学点数学(5)--线性规划对偶形式的理解

线性规划对偶问题的理解1.弱对偶2.强对偶曾在上课的时候多次遇到这个求一个问题的对偶形式&#xff0c;大多是硬套公式。记一次&#xff0c;忘一次。后来在苏大佬的博客中看到了相关阐述&#xff0c;感觉豁然开朗&#xff0c;&#xff08;可以记得就一些了&#xff09;遂做笔记…

关系数据库——视图/存储过程/触发器

视图 视图是虚拟的表&#xff0c;与包含数据的表不同&#xff0c;视图只包含使用时动态检索数据的查询,主要是用于查询。 为什么使用视图 重用sql语句简化复杂的sql操作&#xff0c;在编写查询后&#xff0c;可以方便地重用它而不必知道他的基本查询细节。使用表的组成部分而…

C++(5)--运算符、表达式、条件结构(if, switch)

C运算符、表达式 条件结构1.表达式与运算符1.1赋值运算符1.2算术运算符1.3关系运算符1.4逻辑运算符1.5位运算符1.6 sizeof()1.7 三目运算符1.8 运算符的优先级2.条件结构2.1--if2.2 --switch结构2.3 switch 和 多重if 结构的对比条件结构)《老九学堂C课程》《C primer》学习笔记…

关系数据库——mysql常用函数总结

文本处理函数 Left(x,len) – 返回串左边的字符&#xff08;长度为len&#xff09; Right(x,len) Length(x) – 返回串的长度 Locate(x,sub_x) – 找出串的一个子串 SubString(x, from, to) – 返回字串的字符 Lower(x) Upper(x) LTrim(x) RTrim(x) Soundex(x) – 读…

setsockopt()用法(参数详细说明)

先来看看函数的原型: int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 然后我们来看看参数: s(套接字): 指向一个打开的套接口描述字 level:(级别): 指定选项代码的类型。

再议libcurl编程

那是2年前用libcurl了,我肯定好久不用的知识,放置久了就会遗忘,现在我又重拾起这个知识点,重头再来,至于前面的基础知识,可以参考我的 http://blog.csdn.net/pbymw8iwm/article/details/6675754 假设你要获取URL所表示的远程主机上的资源。你需要写一段程序用来完…