AutoEncoder, VAE and AAE

1、AutoEncoder

自编码器是一种特殊的神经网络架构,通过无监督方式训练模型来获取输入数据在低维空间的隐式表达(隐变量)。训练时,自编码器分为编码器解码器两部分,训练完成后仅使用编码器对数据进行编码,可作为下游任务的特征提取器。

自编码器可以理解成是一个回归任务,用输入数据自己来预测自己。自编码器一般中层会比较瘦,以使神经网络来构建高效的隐变量。自编码器由三个部分构成:

  • 编码器(Encoder): 编码器由一系列逐步递减的的layers构成,最后输出一个低维的隐变量(Latent variable)。
  • 隐变量(Latent variable): 压缩输入同时又最大化保留输入信息的低维向量。
  • 解码器(Decoder): 解码器基本就是编码架构的镜像,每层layer的神经元个数逐步递增,最终输出形状和输入形状一样。

通常我们有大量的无标签数据,只有少量的有标签数据。可以用这些无标签数据训练一个AutoEncoder,然后在有标签数据上,比如一个分类任务,我们可以接着训练Encoder部分(类似于finetune)+分类layer,这样往往比直接在有标签数据上训练模型的效果好。

2、Denosing AutoEncoder

首先,样本 � 被操作 �� 破坏为 �~ ,然后 �� 将 �~ 编码为隐变量 � ,接着 ��′ 将 � 解码为 � , � 和 � 具有相同的形状,用 ��(�,�) 来度量重构误差。最终的优化目标为:

arg⁡min�,�′��[��(�,��′(��(��(�))]

DAE能提取到更鲁棒性的编码向量:

3、Generative AutoEncoder

AE和DAE的目标是编码,训练完成后只保留编码器,编码器将输入样本编码为低维空间中的向量。下面介绍两种生成式的模型,训练完成后只保留生成器,生成器从先验分布 �(�) 中采样,然后生成为和训练样本相似的数据。

记 � 是输入, � 是 � 经过编码器后得到的隐变量, �(�|�) 是隐变量分布, �(�|�) 是解码分布, �(�) 是 � 的先验分布, ��(�) 是样本分布, �(�) 是 � 的真实分布。自编码器的编分布 �(�|�) 在隐变量 � 上定义的聚合后验分布如下:

�(�)=∫��(�|�)��(�)��

为了让模型具有生成能力,我们可以用 �(�) 来约束 �(�) 。一旦训练过程完成,自动编码器的解码器将定义一个生成模型,该模型将 �(�) 的先验分布映射到数据分布。这样,我们可以从已知的分布 �(�) 采样向量 � 来生成数据,从而替代了从真实的未知分布 �(�) 采样。 对于 �(�|�) ,编码器有下面两种候选方案:

高斯后验:这里我们假设 �(�|�) 是一个高斯分布,其均值和方差由编码器网络预测: ��∼�(μ�(�),σ�(�)) 。在这种情况下, �(�) 中的随机性来自编码器输出端的数据分布和高斯分布的随机性。我们可以使用重参数化技巧通过编码器网络进行反向传播。Variational AutoEncoder(VAE)就是这样的策略。

确定性:我们假设 �(�|�) 是 � 的确定性函数。在这种情况下,编码器类似于标准自动编码器的编码器, �(�) 中随机性的唯一来源是数据分布 �(�) 。Adversarial Autoencoders(AAE)就是这样的策略。

3.1、VAE

VAEs define intractable density function with latent z:
�(�)=∫�(�)�(�|�)��

下面考虑 (�,�) 的联合分布,编码过程可以表示为:

�(�,�)=�(�)�(�|�)

解码过程可以表示为:

�(�)�(�|�)=�(�,�)

因此我们的目标是使原始分布 �(�,�) 和重构分布 �(�,�) 之间的误差尽量小,用KL散度来度量它们之间的距离:

��(�(�,�)‖�(�,�))=∬�(�,�)ln⁡�(�,�)�(�,�)����=∬�(�)�(�|�)ln⁡�(�)�(�|�)�(�)�(�|�)����=∫��(�)∫��(�|�)[ln⁡�(�)+ln⁡�(�|�)�(�)−ln⁡�(�|�)]����=∫�(�)ln⁡�(�)��+∫��(�)∫��(�|�)ln⁡�(�|�)�(�)����−∫��(�)∫��(�|�)ln⁡�(�|�)����=−�(�)+∫��(�)��(�(�|�)‖�(�))��−∫��(�)∫��(�|�)ln⁡�(�|�)����

其中 −�(�) 是一个常数。给定 � , ��(�(�|�)‖�(�)) 度量了编码分布 �(�|�) 和先验分布 �(�) 之间的误差,称为正则项; −∫��(�|�)ln⁡�(�|�)�� 度量了生成模型的误差,称为重构误差。 ��(�(�|�)‖�(�)) 比较小的时候,意味着 �(�|�) 没有区分度,这个时候 −∫��(�|�)ln⁡�(�|�)�� 就会比较大。 ��(�(�|�)‖�(�)) 比较大的时候,意味着 �(�|�) 充分包含了 � 的信息,这个时候解码损失 −∫��(�|�)ln⁡�(�|�)�� 就会比较小。因此 ��(�(�,�)‖�(�,�)) 包含了两方面的损失,这两方面的损失是此起彼伏,相互对抗的。GAN也是生成和判别在相互对抗,与GAN不同,VAE在一个损失函数中同时包含了这两步,而GAN的生成和判别这两步是交替进行的。

计算正则项:

假设 �(�) 是标准正态分布, �(�|�)∼�(μ(�),σ(�)) ,那么正则项就是:

��(�(�|�)‖�(�))=12(�(�)2+�(�)2−ln⁡�(�)2−1)

计算重构误差:

生成模型 �(�|�) 该选什么分布呢?论文《Auto-Encoding Variational Bayes》给出了两种候选方案:伯努利分布和正态分布。对于二值输入数据 � ,decoder输出层可以用sigmoid函数激活,然后用交叉熵作为损失函数,这对应于 �(�|�) 为伯努利分布;而对于一般数据,我们用MSE作为损失函数,这对应于 �(�|�) 为固定方差的正态分布。

参考:变分自编码器(二):从贝叶斯观点出发 - 科学空间|Scientific Spaces

解码器


分布 � 中包含两部分信息:一部分是变化的,对于不同的输入 � ,latent vector � 不一样,这就是变化的那部分;还有一部分是不变的,这部分信息储存在decoder的网络结构和参数中。

3.2、AAE

我们可以用 �(�) 来约束 �(�) ,从而达到从 �(�) 生成样本的目标。VAE通过KL散度来度量 �(�) 和 �(�) 的误差。 AAE选用了另外一条路——确定性编码,并借鉴了GAN中的对抗思想。AAE的自动编码器和对抗网络(GAN)在两个阶段(重建阶段和正则化阶段)发挥作用。在重构阶段,自编码器更新编码器(Encoder)和解码器(Decoder),以最小化输入数据的重构误差。在正则化阶段,对抗网络首先更新其判别网络(Discriminator),以区分真实样本(使用先验 �(�) 生成)和生成样本(自动编码器计算的隐藏向量 �(�|�) )。然后对抗网络更新其生成器(Encoder)(它也是自动编码器的编码器)以混淆判别网络。

3.3、VAE、AAE和GAN的比较

VAE和AAE都是希望通过一种显式(explicit)的方法找到真实样本的概率密度,并通过最小化对数似函数的来得到最优解。VAE的latent code �(�|�) 是一个高斯分布,VAE的Encoder拟合的是这个高斯分布的均值和方差。AAE的latent code �(�|�) 确定性的,通过Encoder直接得到。

在生成阶段,VAE和AAE的重构损失是pixel level (CV领域) 或token level 的(NLP领域),各个pixel或token的损失是独立的,没有考虑全局相似性,有点“形似”的意思;GAN的重构损失是一个判别器,反映的是生成样本与真实样本的概率流型之间的距离,让判别器区分不出来“真”和“假”,有点像“神似”。从这个角度来讲,GAN的生成应该比VAE的生成更多样化一些,VAE的生成更保守一些。 从这个角度来讲,我们也可以对比AutoEncoder的编码器和对比学习的编码器,AutoEncoder通过“形似”的pixels level loss来度量编码的好坏,而Contrastive Learning通过“神似”的contrastive loss来度量编码的好坏。

VAE是pointwise loss,一个典型的特征就是pointwise loss常常会脱离数据流形面,因此看起来生成的图片会模糊
GAN是分布匹配的loss,更能贴近流行面,看起来就会清晰
但分布匹配的难度较大,一个例子就是经常发生mode collapse问题,小分布丢失,而pointwise loss就没有这个问题,可以用于做初始化或做纠正,因此发展了一系列GAN+VAE的工作。
pointwise的判断不是有没有sum,是每个数据点是否独立计算、同等影响,算likelihood就是了。
来源

AutoEncoder直接对真实图片和生成图片进行像素级别的监督,GAN通过学习一个判别器来让真实图片和生成图片的整体判断趋于一致。正是由于度量方式的不同,导致AutoEncoder和GAN之间各有优缺点,AutoEncoder由于中间的latent code是由输入图片编码产生的,导致latent code编码和图片对应性更强,生成图像 更加规则,又由于像素级别的监督,无法更好的关注全局信息,导致生成图片 模糊;而GAN由于随机输入和图片对应性弱,导致生成图像 容易跑偏,又由于判别器是对图像整体进行判断的,生成图片连续性更强,可以生成 更加清晰的图片。
来源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值