热门文章> gan的模型 >

gan的模型

36氪企服点评小编
2021-11-30 16:50
754次阅读

一、质量提高方面—GAN的三种模型

(一)Wasserstein GAN(WGAN)

GAN的问题,曾在Wasserstein的一篇论文中得到充分表达,当真实样本和生成样本的交集不可度量时,就会出现问题。

其实真实样本和生成样本不能说绝对没有交集,而是它们的交集要么是空集要么是不可度量,因为它是一个低微的流形。

举例:在一个三维的立体空间中,有一个二维平面和另一个二维平面,它们的相交是一条直线,这条直线在三维空间中是没有体积的。现在假设是10000维的高维空间,我们刚才讲的图片属于低微流形,也就是10000维空间中一个低维的超平面而已。与随机向量产生的生成样本之间,是两个超平面,就算有交集,交集的体积也是0(这个体积是多维体积,而不是真实体积)。

这会使得我们的运算出问题,回顾上面的公式:有真实样本和生成样本的分布,它们之间的交集体积为0,那么X和G(Z)几乎没有可度量的重合部分,这样的数对真实样本来说,它的分布为0,对生成样本的分布来说,概率为0,两个必有一个为0。我们知道对数里面取0,就会是一个负无穷,这个时候就会产生问题,使得训练进行不下去。

这里,可以看成是log对真实样本分布和生成样本分布的求积分。计算过程中我们可以发现,这两个分布是没有交集的。对于特定X来说,要么分子为0,要么分母为0,最后计算都无法进行。

GAN研究方法综述

JS距离是基于KL距离的,使用的是两个分布÷2的公式。因为两个分布很有可能其中一个值为0,所以取平均数。计算发现,无论真实样本还是生成样本,两个值一个是1,另一个就是0,结果使得JS距离为一个常数。做深度学习和神经元网络模型训练,我们最不希望遇到一个不变的常量,因为如果遇到,意味着它要么是一个无用的参数,要么它就是最后我们计算出来的损的值,如果这个值是一个常量保持不变,也就意味着我们的梯度没有了。最后模型的训练就会出问题。

【WGAN给我们带来的启示】

1、不要使用基于KL距离或者JS距离的梯度。

WGAN的建议是EM距离,输入X样本,输出Y,Y并不是一个0~1之间的数,而是一个图片。这是WGAN一个创新的地方。

GAN研究方法综述

2、让生成样本集合和真实样本集合之间有可度量的重叠。

比如:给真实样本加噪音。这个噪音可以是高斯分布,也可以是平均分布。加噪音的原因是只有这样的样本,才和随机生成的样本之间有可度量的交集,才能产生梯度,有了梯度,就可以训练生成器和辨别器。

(二)Energy-Based GAN (EBGAN)

GAN研究方法综述

G指生成器,z代表随机向量,x代表真实样本。中间矩形框出的是辨别器,辨别器由Encoder和Decoder两部分组成。

这个模型输入的不管是真实样本还是假样本,都是图片,输出也是图片,比较两张图片是否一致。大家可能觉得奇怪,这不就是复制吗?是的,但在复制过程,先编码生成一维向量,然后一维向量经过解码,恢复图片,再与原始图片比较,如果是真实图片,我们希望两张图片完全一样;如果是生成图片,我们希望两张图片的差别越大越好。这改变了在最早GAN模型中用0和1区分真实样本与生成样本的做法,也避免了上面WGAN中发现的梯度为0的情况发生。

Encoder-Decoder中间会生成一个语义向量,这个语义向量图上没有画出来,但是非常重要。这个向量可以看成是输入向量的一个语义,因为照片之间进行图像操作非常困难,但是向量之间是可以加减乘除的,这样使得我们操作一个人脸改变他的表情,甚至变成另一张人脸的过程是平滑自然的。这就是这个语义向量做的事,如果没有Encoder-Decoder,这个事情就做不成。
GAN研究方法综述

EBGAN定义了一个D(X)函数:X经过Encoder编码,再经过Decoder解码后,得到一个X的预测值,我们希望这个预测值跟X是无差别的。

在这个过程,我们希望真实样本的输入与输出之间的误差D(x)越小越好,生成样本的输入与输出之间的误差D(G(z))越大越好,整个公式就是判别器的损失函数Lost。m-D(G(z))指里面的数如果小于0,整个值就取0;如果大于0数,则这个数是几就取几。这么做的原因是,如果不加m-函数的限制,D(G(z))可以变成无穷大,前加负号就变成无穷小,Lost函数本来就希望无穷小,最后就会没有最小值。用梯度下降法对这个Lost求梯度是没有意义的,用这样的所谓梯度去优化模型,肯定没有结果。所以大家在做模型时,一定要注意:可以对函数求极值,条件是这个极值能达到,而且这个极值不是正无穷也不是负无穷。

另外,把-的误差改成+的误差,就是对生成器的优化。

(三)Boundary-Equilibrium GAN(BEGAN)

BEGAN模型,D函数就是之前的D函数,t指的是计算过程中第几轮训练,不断进行优化。

GAN研究方法综述

小结

对GAN的研究分为两个方向,一个是试图使GAN的精度提高,使生成的图片越像照片;第二个是令它的功能更强大。上面主要讲的是第一个方向,这里再强调一下,GAN在质量提高这条线上的模型,远不止上文介绍的三个。下面我们讲第二个方向,GAN的应用很强,从功能上,我们有哪些模型可以考虑。

二、功能方面—GAN的三种模型

(一)CGAN-条件生成式对抗网络

这个模型的样本是带有标签的,比如输入一个样本,同时需要带上性别标签,表示要求生成一张男人/女人的照片。这个模型是对原始GAN的一个扩展。

对判别器的训练:真实样本和标签,同时输入到判别器,输出要么是0要么是1。

对生成器的训练:随机向量和标签,同时输入生成器,然后标签和生成样本同时输入判别器。从输入的结构角度看出,真实样本的输入由真实样本和标签组成,而假样本的输入也是由假样本与标签组成,这个训练GAN模型的提高是一个比较大的进步。
GAN研究方法综述

(二)Pix2Pix模型

这个模型同时也是一个应用,它的功能是手画一个鞋子或者包的线条,可以变成一个真实的鞋或者包的图片。这个模型的输入过程与上文CGAN一样,唯一区别是不需要随机向量,只需要把简笔画作为生成器的输入。

GAN研究方法综述

但是Pix2Pix在训练时,需要简笔画与真实样本,必须是成对的。比如简笔画是鞋子的线条,照片就需要是那张鞋子的照片,成对输入。然而样本的收集非常难,现在95%以上的时间、精力和费用都在样本的收集上,所以要简笔画与真实照片配对,非常不容易。这是Pix2Pix模型的一个重大缺陷。为解决这个缺陷,提出了CycleGAN的概念。

(三)CycleGAN

以上文简笔画为例,CycleGAN只需要两类,一类是简笔画,一类是照片,不需要一一配对,其它功能与Pix2Pix完全一致。但是取消了配对的限制,使得对样本收集的负担大大减轻。CycleGAN模型的结构,它有两个判别器,两个生成器。其中,B判别器和B生成器是为B图片做一个GAN模型,A判别器和A生成器是为A图片做一个GAN模型。

GAN研究方法综述

【CycleGAN的训练步骤】

第一步,用A的真实样本训练A判别器,用B的真实样本训练B判别器,使得判别器对两类不同真实样本,分别都判别为1,这是从最早普通GAN模型扩展出来的。

GAN研究方法综述

第二步,B真实样本输入A生成器,输出假的A样本A’,然后通过A判别器,输出为0;第二条路径是A真实样本输入B生成器,输出假的B样本B’,再通过B判别器,输出为0。

第三步,B真实样本经过A生成器,生成假的A样本A’,再经过B生成器,生成假的B样本B’,目的是使假的B样本与B真实样本误差最小。注意:B’与B之间的误差,所产生的梯度应该去训练A生成器,而不是B生成器,因为B生成器输入的是A样本,与这条路径没有关系,所以梯度不应该影响B生成器,而应该优化A生成器。

GAN研究方法综述

第四步,对A样本重复第三步骤,期望A’与A一致。如果不一致,产生的梯度用来训练B生成器,与A生成器无关。这是很巧妙的一个结构。

GAN研究方法综述

(本文来源于:Boolan首席AI咨询师—方林老师)

[免责声明]

文章标题: gan的模型

文章内容为网站编辑整理发布,仅供学习与参考,不代表本网站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时沟通。发送邮件至36dianping@36kr.com,我们会在3个工作日内处理。

消息通知
咨询入驻
商务合作