苏剑林作者广州火焰信息科技有限公司单位NLP,神经网络研究方向

BiGAN-QP:简单清晰的编码 & 生成模型

前不久笔者通过直接在对偶空间中分析的思路,提出了一个称为 GAN-QP 的对抗模型框架,它的特点是可以从理论上证明既不会梯度消失,又不需要 L 约束,使得生成模型的搭建和训练都得到简化。

GAN-QP 是一个对抗框架,所以理论上原来所有的 GAN 任务都可以往上面试试。前面不用L约束又不会梯度消失的GAN,了解一下?一文中我们只尝试了标准的随机生成任务,而这篇文章中我们尝试既有生成器、又有编码器的情况:BiGAN-QP

BiGAN与BiGAN-QP

注意这是 BiGAN,不是前段时间很火的 BigGAN,BiGAN 是双向 GAN(Bidirectional GAN),提出于 Adversarial Feature Learning [1] 一文,同期还有一篇非常相似的文章叫做Adversarially Learned Inference [2],提出了叫做 ALI 的模型,跟 BiGAN 差不多。

总的来说,它们都是往普通的 GAN 模型中加入了编码器,使得模型既能够具有普通 GAN 的随机生成功能,又具有编码器的功能,可以用来提取有效的特征。把 GAN-QP 这种对抗模式用到 BiGAN 中,就得到了 BiGAN-QP。 

话不多说,先来上效果图(左边是原图,右边是重构):

▲ BiGAN-QP重构效果图

这是将 256 x 256 x 3 的图片降维到 256 维度,然后再重构出来的。可以看到,整体的重构效果是不错的,没有普通自编码器的模糊感。有一些细节缺失,相比 IntroVAE [3] 是差了一点,不过这是模型架构和调参的问题了,并不是我擅长的。不管怎样,这个效果图应该可以表明 BiGAN-QP 是可以跑通的,而且效果还行。

本文内容已经更新到 GAN-QP 的原论文,读者可以长按识别下方二维码下载最新版本。

BiGAN-QP简明推导

其实相比 GAN,BiGAN 的推导非常简单,只需要将原来的单输入 x 换成双输入 (x,z) 就行了。同样,有了 GAN-QP 基础的话,所谓 BiGAN-QP,也是非常简单的。具体来说,原来 GAN-QP 是这样的:

现在变成了:

理论上就这样行了,这就是 BiGAN-QP。但实际上这样很难学习到一个好的双向映射,因为这相当于从无数可能的映射中自动搜索出一个双向映射,比较困难。所以我们还需要一些“引导项”,我们用两个 mse 误差作为引导项:

其实生成器的三项 loss 都很直观,ΔT 是生成的图像更加真实,是希望能重构隐变量空间,是希望能重构显变量空间。后两项不能太大,尤其是最后一项,太大会导致图像的模糊。

其中这两个正则项可以看成是 G(z) 与 z 的互信息、x 与 E(x) 的互信息的一个上界,因此从信息的角度看,这两个正则项是希望 x,z 之间的互信息越大越好。相关的讨论可以参考 InfoGAN [4]论文,这两个正则项代表着它也属于 InfoGAN 的特例。所以完整来说,这应该是一个 Bi-Info-GAN-QP。 

互信息项可以在一定程度上稳定 GAN 的训练过程,减少模型坍缩(mode collapse)的可能性,因为一旦模型坍缩,那么互信息就不会大了。换句话说,如果模型坍缩,那么重构就不大可能了,重构 loss 会很大。

实验表明,再做一些小的调整,效果会更好。这个小的调整源于:两个 mse 项耦合起来还是过于强大了(loss 的具体值不一定大,但是梯度很大),导致模型还是有生成模糊图像的倾向,所以需要停止掉一半的梯度,变为:

Gng 和 Eng 指的是强行让这部分的梯度为 0,一般的框架都有这个算子,直接调用即可。这就是本文最终的 BiGAN-QP 模型。

代码与效果图

代码也已经补充到 Github 了:https://github.com/bojone/gan-qp/tree/master/bigan-qp

再来一些效果图(左边是原图,右边是重构):

▲ BiGAN-QP重构效果图2

可以看到,重构并不模糊,而且很重要的一个特点是:因为是降维重构,模型并不是(也无法做到)学会了一个逐像素对应的一一映射,而是一个整体看上去差不多的清晰的重构结果。

比如我们看到第一行的第一张和最后一行的第二张,模型基本上把人重构出来了,但有趣的是眼镜,我们发现模型确实也重构了眼镜但是换了另外一个“款式”的眼镜。我们甚至可以认为,模型已经学到了“眼镜”这个概念,只不过是降维重构隐变量的表达能力有限,所以尽管模型知道那是眼镜,但不能重构出一模一样的眼镜出来,就只好换一款常见的眼睛了。

这是普通的 VAE 所要求的“逐点一一对应重构”所无法实现的,“逐点一一对应重构”也是造成 VAE 模糊的主要原因了。如果要完全可逆重构,只有像 Glow 那样的可逆模型才有可能做到了。

另外,又有编码器又有生成器,我们就可以玩玩真实图片的隐变量插值了(左一、右一是真实图片,左二、右二是重构图片,其余是插值图):

▲ BiGAN-QP真实图片插值

还可以看看 BiGAN-QP 眼中的相似图片(算出所有真实图片的隐变量,然后用欧氏距离或者 cos 值算相似度,下图为欧氏距离的结果),第一行为输入,后两行为相似图片:

▲ BiGAN-QP眼中的相似欢迎使用与分享

前面已经提到,GAN-QP 是一个理论完备的对抗框架,理论上所有的 GAN 任务都可以尝试一下。所以,如果读着您手头上正好有 GAN 任务,不妨尝试一下,然后你就可以去掉 L 约束,去掉谱归一化甚至去掉很多正则项,还不用担心梯度消失了。GAN-QP 就是笔者致力于去掉 GAN 各种超参数所得的结果。

如果你有新的基于 GAN-QP 的应用结果,欢迎在此分享。

参考文献

[1] Donahue, Jeff, Krähenbühl, Philipp, and Darrell, Trevor. Adversarial feature learning. In ICLR, 2017.

[2] Dumoulin, Vincent, Belghazi, Ishmael, Poole, Ben, Mastropietro, Olivier, Lamb, Alex, Arjovsky, Martin, and Courville, Aaron. Adversarially learned inference. In ICLR, 2017.

[3] H Huang, R He, Z Sun, T Tan. IntroVAE: Introspective Variational Autoencoders for Photographic Image Synthesis. Advances in Neural Information Processing Systems, 52-63.

[4] X Chen, Y Duan, R Houthooft, J Schulman, I Sutskever, P Abbeel. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets. In NIPS 2016.

PaperWeekly
PaperWeekly

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

理论生成对抗网络GAN
2
相关数据
自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

模式崩塌技术

mode collapse指的是GAN训练时可能出现的一种现象。具体来说,给定了一个z,当z发生变化的时候,对应的G(z)没有变化,那么在这个局部,GAN就发生了mode collapse,也就是不能产生连续变化的样本,从而样本多样性不足。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

插值技术

数学的数值分析领域中,内插或称插值(英语:interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程或方法。求解科学和工程的问题时,通常有许多数据点借由采样、实验等方法获得,这些数据可能代表了有限个数值函数,其中自变量的值。而根据这些数据,我们往往希望得到一个连续的函数(也就是曲线);或者更密集的离散方程与已知数据互相吻合,这个过程叫做拟合。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

生成模型技术

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

对抗学习推理技术

对抗学习推理(ALI)模型是一个深度定向生成模型,它利用对抗过程共同学习一个生成网络和一个推理网络。 这个模型构成了一种将高效推理与生成对抗网络(GAN)框架相结合的新方法。

隐变量技术

在统计学中,隐变量或潜变量指的是不可观测的随机变量。隐变量可以通过使用数学模型依据观测得的数据被推断出来。

信息生成对抗网络技术

GAN的一个变种

对抗特征学习技术

利用生成对抗网络(GAN)进行无监督特征学习的方法

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