©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

生成模型一直是笔者比较关注的主题,不管是 NLP 和 CV 的生成模型都是如此。

这篇文章里,我们介绍一个新颖的生成模型,来自论文 Batch norm with entropic regularization turns deterministic autoencoders into generative models [1],论文中称之为 EAE(Entropic AutoEncoder)。

它要做的事情给变分自编码器(VAE)基本一致,最终效果其实也差不多(略优),说它新颖并不是它生成效果有多好,而是思路上的新奇,颇有别致感。

此外,借着这个机会,我们还将学习一种统计量的估计方法—— k 邻近方法,这是一种很有用的非参数估计方法。

自编码器vs生成模型

普通的自编码器是一个“编码-解码”的重构过程,如下图所示:

▲ 典型自编码器示意图

其 loss 一般为:

当训练完成后,我们自然可以针对每一幅图像 x,得到它的编码  z=E(x) 以及重构图














,而当 x 与









足够接近时,我们就可以认为 z 是 x 的有效表征,它已经充分包含了 x 的信息。

那么,生成模型又是什么情况呢?“生成”指的是随机生成,也就是说允许我们能随机构建一幅图像来,对于自编码器的解码器 D(z),并不是每一个 z 解码出来的  D(z) 都是一幅有意义的图像,因此普通的自编码器并不能视为生成模型。

如果我们能够事先知道所有的x编码出来的 z=E(x) 所构成的分布,并且这个分布是一个易于采样分布,那么就可以实现随机采样生成了。

所以,从自编码器到生成模型,缺的那一步就是确定隐变量 z 的分布,更准确来说,是迫使隐变量 z 服从一个易于采样的简单分布,比如标准正态分布。VAE 通过引入 KL 散度项来达到这一点,那么 EAE 又是怎么实现的呢?

正态分布与最大熵

我们知道,最大熵原理是一个相当普适的原理,它代表着我们对未知事件的最客观认知。最大熵原理的一个结论是:

在所有均值为 0、方差为 1 的分布中,标准正态分布的熵最大。

如果读者还不了解最大熵的相关内容,可以参考旧作《“熵”不起:从熵、最大熵原理到最大熵模型(二)》[2]。

上述结论告诉我们,如果我们能有某种手段保证隐变量的均值为 0 和方差为 1,那么我们只需要同时最大化隐变量的熵,就可以得到“隐变量服从标准正态分布”这个目的了,即:

其中






是超参数,而:

是隐变量 z=E(x) 对应的熵,最小化









意味着最大化








,即最大熵。

问题是如何保证这两个约束呢?如果计算隐变量的熵呢?

均值方差约束与BN

先来解决第一个问题:如何达到——至少近似地达到——“隐变量的均值为 0、方差为 1 ”这个约束?因为只有满足这个约束的前提下,最大熵的分布才是标准正态的。解决这个问题的办法是我们熟悉的批归一化,也就是 BN(Batch Normalization)。

在 BN 的训练阶段,我们会直接对每个变量减去其 batch 内的均值并且除以 batch 内标准差,这保证了训练阶段每个 batch 的变量均值确实为 0,方差确实为 1。

然后,它会将每个 batch 内的均值方差滑动平均并缓存下来,用于推断阶段的预测。

总而言之,就是将 BN 应用于隐变量,就可以使得隐变量(近似地)满足相应的均值方差约束。

此时,我们就得到:

这里的









代表 BN 层。

熵的采样估计

现在,来到了整个 EAE 模型的最后一部分、同时也是最硬核的一部分了,也就是如何估计熵 H(Z)。理论上来说,为了算 H(Z) 我们需要知道 p(z),但我们现在只有样本



















而不知道 p(z) 的表达式,在这种前提下对 H(Z) 做的估计叫做非参数估计。

先给结论:

熵的最临近估计


























是从








采样出来的 n 个样本,记















到它最邻近的样本的距离,即



































是 d 维单位球的体积,







是欧拉常数 [3],则:

抛开跟优化不相关的常数,上述结论实际上就是说






















,这就是我们需要添加到 loss 的项。

这个看上去很奇怪、实际上确实也不容易理解的结果是怎么得来的呢?事实上,它是一种重要的估计方法—— k 邻近方法——的经典例子。下面将会给出它的推导过程,该过程参考自论文《A non-parametric k-nearest neighbour entropy estimator》[4]。

让我们考虑特定的样本







,设












是它的第 k 个最邻近的样本,即将所有的












按照














从小到大排列,第 k 个就是












,记

































,我们现在考虑










的概率分布。

假设

















,那么就意味着剩下的 n-1 个样本之中,有 k-1 个落在了“以







为球心、以




为半径”的球内,有 n-k-1 个落在了“以







为球心、以







为半径”的球外,剩下一个夹在两球之间,不难得到这种情况发生的概率是:

其中



















代表着从 n-1 个样本中挑出 1 个样本夹在两球之间的组合数,而























则是从剩下的 n-2 个样本中挑出 k-1 个样本放到球内的组合数(剩下的 n-k-1 个自动就在球外了);










是单个样本位于球内的概率,即:

所以

















是挑出来的 k-1 个样本都在球内的概率,


























是 n-k-1 个样本都在球外的概率,





















则是一个样本在球间的概率,所有项乘起来就是式(6),而展开并只保留一阶项得到近似式:

注意上式描述了一个合理的概率分布,因此它的积分必然为 1。

现在我们可以做个近似假设,值得注意的是,这是整个推导过程的唯一假设,而最终结果的可靠程度也取决于这个假设的成立程度:

其中

















就是半径为










的球的体积,上述假设就是说 p(z) 在半径为




的球内的均值约等于它在球中心的值,并且积分的有效半径只有










。根据这个近似我们有 ,或者:

用(8)乘以上式两端,并对




积分(积分区间为









,或者等价于对







在  [0,1] 积分)。除











外,其余几项都是跟




无关,所以积分后依然等于自身,而:

其中




代表着双伽马函数(别问我这些积分是怎么算出来的,我也不知道,但我知道用 Mathematica 软件能把它都算出来)。

于是我们得到近似:

所以最终熵的近似为:

这是比式(5)更一般的结果。事实上式(5)是上式 k=1 时的结果,因为










,而 ,这些变换公式都可以在维基百科上找到。

开头就已经提到过,k 邻近方法是一种很有用的非参数估计方法,它还跟笔者之前介绍过的 IMLE 模型 [5] 有关。但笔者本身也不熟悉 k 邻近方法,还需要多多学习,目前找到的资料是《Lectures on the Nearest Neighbor Method》[6] 。

此外,关于熵的估计,还可以参考斯坦福的资料《Theory and Practice of Differential Entropy Estimation》[7] 。

进一步思考与分析

有了(5)或(13),式(4)所描述的EAE的loss就完成了,所以 EAE 模型也就介绍完毕了。剩下的是实验结果,就不详细介绍了,反正就是感觉生成的图像跟 VAE 差不多,但指标上更优一些。

▲ 来自EAE论文的实验对比

▲ 来自EAE论文的效果图示

那 EAE 相比 VAE 的好处在哪呢?在 VAE 中,比较关键的一步是重参数(可以参考笔者的变分自编码器(一):原来是这么一回事),就是这一步降低了模型训练的方差(相比 REINFORCE 方法,可以参考笔者的《漫谈重参数:从正态分布到Gumbel Softmax》[8]),从而使得 VAE 可以有效地训练下去。

然而,虽然重参数降低了方差,但事实上方差依然不小,简单来说就是重参数这一步带来较大的噪声(尤其是训练早期),导致 decoder 无法很好地利用 encoder 的信息,典型的例子就是将 VAE 用在 NLP 时的“ KL 散度消失”现象。

但是 EAE 基本上不存在这个问题,因为 EAE 基本上就是普通的自编码器,多加的 BN 不会对自编码性能有什么影响,而多加的熵正则项原则上也只是增加隐变量的多样性,不会给编码信息的利用与重构带来明显困难。

笔者认为,这就是 EAE 相对于 VAE 的优势所在。当然,笔者目前还没有对 EAE 进行太多实验,上述分析多为主观推断,请读者自行甄别。如果笔者有进一步的实验结论,到时会继续在博客与大家分享。

最后补上一个小结

本文介绍了一个称之为 EAE 的模型,主要是把 BN 层和最大熵塞进了普通的自编码器中,使得它具有生成模型的能力。原论文做的不少实验显示 EAE 比 VAE 效果更好,所以应该是一个值得学习和试用的模型。

此外,EAE 的关键部分是通过 k 邻近方法来估计熵,这部分比较硬核,但事实上也很有价值,值得对统计估计感兴趣的读者细细阅读。

参考链接

[1] https://arxiv.org/abs/2002.10631

[2] https://kexue.fm/archives/3552

[3] https://en.wikipedia.org/wiki/Euler%E2%80%93Mascheroni_constant

[4] https://arxiv.org/abs/1506.06501

[5] https://kexue.fm/archives/6394

[6] https://link.springer.com/book/10.1007/978-3-319-25388-6

[7] https://web.stanford.edu/~yjhan/diff_entropy.pdf

[8] https://kexue.fm/archives/6705

点击以下标题查看更多往期内容:

  • 变分推断(Variational Inference)最新进展简述

  • 变分自编码器VAE:原来是这么一回事

  • 图神经网络三剑客:GCN、GAT与GraphSAGE

  • 如何快速理解马尔科夫链蒙特卡洛法?

  • 深度学习预训练模型可解释性概览

  • ICLR 2020:从去噪自编码器到生成模型

#投 稿 通 道#

 让你的论文被更多人看到 

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

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

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

EAE:自编码器 + BN + 最大熵 = 生成模型相关推荐

  1. 谷歌大脑Wasserstein自编码器:新一代生成模型算法

    白悦.许迪 变分自编码器(VAE)与生成对抗网络(GAN)是复杂分布上无监督学习主流的两类方法.近日,谷歌大脑 Ilya Tolstikhin 等人提出了又一种新思路:Wasserstein 自编码器 ...

  2. ICLR 2020:从去噪自编码器到生成模型

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在我看来,几大顶会之中,ICLR 的论文通常是最有意思的,因为它们的选题和风格基本上都比较轻松活泼.天马行空,让人 ...

  3. 【阿里云课程】深度生成模型基础,自编码器与变分自编码器

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中两节,介绍如下: 第1节:生成模型基础 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生成模型 ...

  4. 玻尔兹曼机、深度信念网络、编码器等生成模型

    受限玻尔兹曼机 -训练方式:对比散度方法(示例代码如下,原博客为https://blog.csdn.net/slx_share/article/details/92072228?ops_request ...

  5. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  6. 用生成模型来做图像恢复的介绍和回顾:上下文编码器

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Chu-Tak Li 编译:ronghuaiyang 导读 本文给出了图像 ...

  7. 生成模型和判别模型的对比,懂这俩机器学习不在话下 最大熵模型

    决策函数:最大熵模型 最大熵模型:判别模型:构建特征和标签的映射通过计算条件熵(在已知条件下做风险最低的预测,万物熵增的规律启发) 生成:HMM,BAYES 一般来说,生成式模型需要非常充足的数据量以 ...

  8. 【生成模型】变分自编码器(VAE)及图变分自编码器(VGAE)

    这段时间在学习机器学习中有关不确定性和概率分布的知识,发现了VAE这样一个有趣的方向,想抓紧时间整理一下VAE的主要思想和方法,然后思考如何迁移应用到自己的研究方向上. 从直观上理解VAE 变分自编码 ...

  9. 【论文阅读-3】生成模型——变分自编码器(Variational Auto-Encoder,VAE)

    [论文阅读]生成模型--变分自编码器 1. VAE设计思路:从PCA到VAE 1.1 PCA 1.2 自编码器(Auto-Encoder, AE) 1.3 从AE到VAE 2. VAE模型框架 2.1 ...

最新文章

  1. TCP/IP illustated: 第七、八章 Ping program Traceroute program
  2. 接收超时死信的死信交换机
  3. ebay php 商品添加多运输,eBay如何设置物流方式
  4. Restful Service 中 DateTime 在 url 中传递
  5. 痛苦的vsftpd配置
  6. 详解 Array.prototype.slice.call(arguments)
  7. CNN入门讲解:不一样的Softmax
  8. [转载] python创建集合、计算a|b_python之路(集合,深浅copy,基础数据补充)
  9. java selenium sleep_【转】java-selenium三种等待方式
  10. NVIDIA NSight System工具安装和使用介绍(MacOS)
  11. Windows图片查看器不出现下一张和上一张按钮
  12. matlab线性同余发生器,线性同余法生成伪随机数
  13. java无头浏览器_PuppeteerSharp无头浏览器.NetSdk(Puppeteer)
  14. Altium Designer快捷键,布线技巧
  15. Apple Pencil有必要买正版吗?Apple Pencil平替推荐
  16. 教你巧用万用表测量大值电阻
  17. PHP - 垃圾回收机制收集
  18. 6-机器学习之KNN(K-近临算法)
  19. 蓝牙学习笔记之LMP协议(十二)
  20. python中调用π的值_python如何调用math函数库求π值

热门文章

  1. matlab求两向量夹角_高中数学《平面向量的数量积》说课稿
  2. html5视频播放器脚本怎么用,HTML5 video标签(播放器)学习笔记(一):使用入门...
  3. python history没有定义_python AttributeError:'Tensor'对象没有属性'_keras_history'_python_酷徒编程知识库...
  4. 使用Synchronized块同步方法
  5. bug最后汇总-2018/08/03
  6. [Android] QPST,解BL锁,刷Recovery,备份系统,root,刷框架.
  7. 树莓派1 安装使用 ZeroTier
  8. Path和ClassPath差异
  9. 微信公众平台帐号通过昵称无法搜索到怎么办
  10. QTP自动化测试视频系列