条件生成模型 (conditional generation)

        我们之前讲的 GAN 中的生 成器,它没有输入任何的条件,它只是输入一个随机的分布,然后产生出来一张图片。我们现 在想要更进一步的是希望可以操控生成器的输出,我们给它一个条件x,让他根据条件x跟 输入z 来产生输出y。那这样的条件型生成器有什么样的应用呢?比如可以做文字对图片的 生成,那如果要做文字对图片的生成,它其实是一个监督学习的问题,我们需要一些有标签的 数据,需要去搜集一些人脸图片,然后这些人脸都要有文字的描述。比如这个样本是红眼睛、 黑头发,另一个是黄头发、有黑眼圈等等标签的样本,才能够训练这种条件型生成器。所以在 文字变图像这样的任务里面,我们的条件x就是一段文字。我们希望输入一段文字,然后生 成器就可以产生出来一张图片,这张图片就是这段文字所描述的图片。那一段文字怎么输入 给生成器呢,其实依赖于你自己。以前会用RNN把它读过去,然后得到一个向量,再丢到生 成器中。今天也许你可以把它丢到一个Transformer 的编码器中,然后得到一个向量,再丢 到生成器中,只要能够让生成器读一段文字就行。我们期待的模型是输入“红眼睛”,然后机器 就可以画一个红眼睛的角色,而且每次画出来的角色都不一样。那这个画出来什么样的角色, 取决于你采样到到什么样的z。采样到不一样的z,就会画出不一样的角色,但是这个角色都 是红眼睛的。那这个就是条件型生成的应用,文字变图像。

        具体怎么做条件型的GAN呢?我们现在的生成器有两个输入,一个是正态分布中采样 出来的z,另一个是条件x也就是一段文字,然后它会产生出来一个y,也就是一张图片。同 时,我们需要一个判别器。如果按照我们过去介绍的知识,判别器就是使用一张图片y当作输 入,输出一个数值,这个数值代表输入的图片多像真实的图片。训练这个判别器的方法就是, 如果看到真实的图片就输出1,如果看到生成的图片就输出0。这样就可以训练判别器,然后 判别器跟生成器反复训练。

        但是这样的方法没办法真的解条件型的GAN的问题,因为如果我们只有训练这个判别 器,只会将y当做输入的话,那生成器会学到的东西就是,只要产生出来的图片y好,但是跟 输入完全没有任何关系,因为对生成器来说它只要产生清晰的图片就可以骗过判别器了。它 何必要去管输入的文字叙述是什么呢,所以直接就无视这个条件x,直接产生一个图片骗过判别器就结束了。但这显然不是我们要的,所以在条件型的GAN里面,就要做有点不一样的 设计,也就是判别器不是只吃图片y,同时还要吃条件x。同时判别器输出的数值不只是看y 好不好,还要看y 跟x配不配。如果y跟x配不上,那就要给一个很低的分数,如果y跟 x 配上,那就要给一个很高的分数。我们需要文字和图像成对的数据来训练判别器,所以条件 型的GAN,一般的训练是需要这个成对的标注数据的。所以当看到这些真正的成对数据,就 给它1分,看到红色眼睛但是文字叙述是黑色头发,就给它0分,看到黑色头发但是文字叙 述是红色眼睛,也给它0分,这样就可以训练判别器了,如图1所示。

图1 条件型GAN

        那其实在实际操作中,只是拿这样的负样本对和正样本对来训练判别器,得到的结果往 往不够好。往往还需要加上一种不好的状况:已经产生好的图片但是文字叙述配不上的状况。 所以通常会把我们的训练数据拿出来,然后故意把文字跟图片乱配,或者故意配一些错的,然 后告诉判别器看到这种状况,也是要输出不匹配。用这样子的数据,才有办法把判别器训练 好。然后生成器跟判别器反复的训练,最后才会得到好的结果,这个就是条件型的GAN。

        在目前的例子里面都是看一段文字产生图片,当然条件型的GAN的应用不只看一段文 字产生图片,比如也可以看一张图片产生其他图片。比如,给GAN房屋的设计图,然后让 生成器直接把房屋产生出来,或者给它黑白的图片然后让它把颜色着上,或者给它素描的图, 让它把它变成实景实物,再或者给它白天的图片,让它变成晚上的图片,给它起雾的图片,让 它变成没有雾的图片等等。那像这样子的应用,叫做图像翻译,也就是输入一张图片,然后产 生出来另外一张图片,也叫做Pix2pix。那跟刚才讲的从文字产生图像也没有什么不同,现在 只是从图像产生图像,把文字的部分用图像取代掉而已。所以其中同样要产生生成器,产生一 张图片,然后要产生判别器,判别器要输入两张图片,然后输出一个数值。其中可以用监督学 习的方法,训练一个图片生成图片的生成器,但是可能生成的结果图片非常地模糊,原因在于 同样的输入可能对应到不一样的输出。生成器学到的就是把不同的可能平均起来,结果变成 一个模糊的结果。所以这个时候我们的判别器它是输入是一张照片和输入条件,同时看图片 和条件看有没有匹配来决定它的输出。另外,如果单纯用GAN的话它有一个小问题,它产生 出来的图片比较真实,但是与此同时它的创造力、想像力过度丰富,会产生一些输入没有的东 西。所以如果要做到最好往往就是GAN跟监督学习同时使用,就是说你的生成器不只要骗 过判别器,同时你的生成器还要产生出来的图片跟标准答案越像越好。

        条件型GAN还有很多应用,比如给GAN听一段声音,然后产生一个对应的图片。比如 说给它听一段狗叫声,GAN可以画出一只狗。这个应用的原理跟刚才讲的文字变图像是一样 的,只是输入的条件变成声音而已。对于标签的成对数据就是声音和图像成对的数据,这个并 没有很难搜集,因为可以爬到大量的影片,影片里面有图像有画面也有声音,并且每一帧是一 一对应的,所以可以用这样的数据来训练。另外条件型GAN还可以产生会动的图片,比如给 GAN 一张蒙娜丽莎的画像,然后就可以让蒙娜丽莎开始讲话等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值