Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

彭博作者

漫谈生成模型,从AE到CVAE-GAN

关于作者:彭博,人工智能、量化交易、区块链领域的资深技术专家,有 20 年以上的研发经验。在人工智能与信息科技方面,对深度学习机器学习、计算机图形学、智能硬件等有较为深入的研究;在量化交易方面,曾在全球最大的外汇对冲基金负责程序化交易,对市场的微观和宏观行为有较为深入的理解;在区块链方面,对智能合约、DApp 开发和自动交易有较为深入的实践。知乎上科技领域的大 V,在专栏撰有大量技术文章。

本文内容节选自《深度卷积网络:原理与实践》第 8.5 节。

大家对于 GAN 都已经很熟悉了,但 GAN 的训练目前仍然存在模式坍塌等等难题。目前还有其他采用深度网络的生成模型方法,例如 AE,它们的思想可互补,提高生成图像的质量和稳定性,典型的例子是 CVAE-GAN。在此我们对这些方法做简介。

自编码器:从AE到VAE

自编码器(auto-encoder,AE)是经典的生成模型方法,其架构如下图所示。

AE 可分为两个网络: 

  • 编码(encoder)网络,负责从 x 到 z,可称为 E;

  • 解码(decoder)网络,负责从 z 到 x,可称为 G,因为它和 GAN 中的生成网络都是从 z 到 x。

可将从 x 到 z 看成是压缩信息的过程,从 z 到 x 看成是解压缩的过程。例如,如果 x 是 64*64 的彩色图像,那么它有 3*64*64=12288 维。而 z 往往只有 50 到 200 维。 

AE 和 GAN 的区别在于,AE 中没有更先进的判别网络(D 网络),AE 的优化目标只是让 x 和 G(E(x)) 尽量在像素上接近。如本书的前文所述,这并不是个好目标,因此 AE 生成的图像往往很模糊,例如 AE 和 GAN 在 Fashion-MNIST 数据集的效果对比如下图所示。

不过,AE 相对于 GAN 也有长处,就是生成的图像更均匀,光滑,训练过程更稳定。因此研究人员提出了多种将 AE 和 GAN 结合的方法,后文会介绍的 CVAE-GAN 是效果出色的例子。 

AE 的重要发展是 VAE(Variational Auto-Encoder,变分自编码器,https://arxiv.org/pdf/1312.6114)。它能解决 AE 的一个缺点:AE 的 G 只能保证将由 x 生成的 z 还原为 x。如果我们随机生成 1 个 z,经过 AE 的 G 后往往不会得到有效的图像。 

而 VAE 可让 E 生成的 z 尽量符合某个指定分布,例如标准差为 1 的多维正态分布。那么此时只需从这个分布采样出 z,就能通过 G 得到有效的图像。具体而言,这是通过一个参数化技巧(reparameterization trick)实现,可参阅 VAE 的原始论文。 

举例,对于 MNIST 数据集,如果要求 z 是 2 维的,最终效果如下图所示。

可见,无论选取怎样的 z 坐标,都能得到较为合理的数字图像。

逐点生成:PixelRNN和PixelCNN系列

由 Google 提出的 PixelRNN(https://arxiv.org/abs/1601.06759)和 PixelCNN(https://arxiv.org/abs/1606.05328)是生成模型的另一种思路。

它的方法非常直接:从左到右,从上到下,逐步生成一个个像素,最终生成整张图像。如果读者对于循环神经网络(RNN)熟悉,会意识到这是一个很适合 RNN 的问题。

基本原理如下图所示,以之前生成的像素作为输入,输出对于下一个像素的值的统计分布的预测,然后从分布采样出下一个像素。

可以想象,它会很适合生成小图。例如下图中是它生成的珊瑚礁图像,色彩很鲜艳。

而它的缺点无疑就是速度,以及目前仍然难以生成大图。于是读者可能会问,是否可构建出 PixelGAN?答案是肯定的(https://arxiv.org/abs/1706.00531)。

最后,Pixel 系列的思想尤其适合生成音频和文字,例如 WaveNet(https://deepmind.com/blog/wavenet-generative-model-raw-audio/),它用此前生成的音频采样作为输入,生成下一个采样,不断重复此过程,最终可生成高质量的语音和音乐,如下图所示。

将VAE和GAN结合:CVAE-GAN

CVAE-GAN 架构的论文是《 CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training》(https://arxiv.org/pdf/1703.10155v1.pdf),其中 C 代表能用分类作为输入,生成指定分类的图像。它在各个分类上生成的图像效果都相当好,如下图所示。

上述图像都是由 CVAE-GAN 生成。它有 4 大组件,对应到 4 个神经网络,互为补充,互相促进: 

  • E:编码器(Encoder),输入图像 x,输出编码 z。

    如果还给定了类别 c,那么生成的 z 就会质量更高,即更随机,因为可移除c中已包含的信息。

  • G:生成器(Generator)。输入编码 z,输出图像 x。

    如果还给定了类别 c,那么就会生成属于类别 c 的图像。

  • C:分类器(Classifier)。输入图像 x,输出所属类别 c。这是我们的老朋友。

  • D:辨别器(Discriminator)。输入图像 x,判断它的真实度。

我们先看如果只使用部分组件会是怎样。首先是 CVAE,如下图所示:

然后是 CGAN,其中 y 代表对于真实度的判别,如下图所示: 

它们的效果如下图所示。

可见: 

  • CVAE 生成的图像中规中矩,但是模糊。

  • CGAN 生成的图像清晰,但有时会有明显错误。

所以 AE 和 GAN 的方法刚好是互补。 

CVAE-GAN 的架构如下图所示:

其中的 G 有 3 个主要目标: 

  • 对于从 x 生成的 z,G 应能还原出接近 x 的 x'(像素上的接近)。这来自 AE 的思想。

  • G 生成的图像应可由 D 鉴别为属于真实图像。这来自 GAN 的思想。

  • G 生成的图像应可由 C 鉴别为属于 c 类别。这与 InfoGAN 的思想有些相似。

最终得到的 z 可相当好地刻画图像。例如,同样的 z 在不同 c 下的效果如下图所示。

这里的不同 c,代表不同的明星。相同的 z,代表其他的一切语义特征(如表情,角度,光照等等)都一模一样。

于是,通过保持 z,改变 c,可轻松实现真实的换脸效果,如下图所示。

CVAE-GAN 在语义插值上的效果也很出色,如下图所示。

由于 CVAE-GAN 生成的样本质量很高,还可用于增强训练样本集,使其他模型(如图像分类网络)得到更好的效果。

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

入门CVAE-GAN生成模型
2
相关数据
区块链技术

区块链是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。 中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即“创世区块”。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

变分自编码器技术

变分自编码器可用于对先验数据分布进行建模。从名字上就可以看出,它包括两部分:编码器和解码器。编码器将数据分布的高级特征映射到数据的低级表征,低级表征叫作本征向量(latent vector)。解码器吸收数据的低级表征,然后输出同样数据的高级表征。变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成。在自动编码器中,需要输入一张图片,然后将一张图片编码之后得到一个隐含向量,这比原始方法的随机取一个随机噪声更好,因为这包含着原图片的信息,然后隐含向量解码得到与原图片对应的照片。但是这样其实并不能任意生成图片,因为没有办法自己去构造隐藏向量,所以它需要通过一张图片输入编码才知道得到的隐含向量是什么,这时就可以通过变分自动编码器来解决这个问题。解决办法就是在编码过程给它增加一些限制,迫使其生成的隐含向量能够粗略的遵循一个标准正态分布,这就是其与一般的自动编码器最大的不同。这样生成一张新图片就比较容易,只需要给它一个标准正态分布的随机隐含向量,这样通过解码器就能够生成想要的图片,而不需要给它一张原始图片先编码。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

信息生成对抗网络技术

GAN的一个变种

推荐文章
暂无评论
暂无评论~