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

©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) 做的估计叫做非参数估计。

先给结论:

熵的最临近估计 是从

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值