首页 / 资讯中心 / 文章详情

生成式对抗网络GAN(Generative Adversarial Network)

生成式对抗网络GAN(Generative Adversarial Network) ★ FEATURED ARTICLE
network作为generator生成更加复杂的distribution应该怎么做这是我们这节课要讨论的问题generative model适用于哪些场景呢简单来说就是输出需要一些“创造力的时候例如绘画聊天机器人等在normal distribution中vector的数量并不多可能50-100左右但是可以生成具有相当大维度的图片discriminator可以用来判断输出的图片的好坏对GAN的输出结果进行评价generator会根据discriminator不断修改自己的输出能力但是discriminator也会不断提升自己的判断能力最终形成了对抗的样子也就是adversarial下面详细介绍这两个network的训练过程首先对两个模型进行初始化先用一些简单的vector作为generator,然后用一些正确的图片输入用于discriminatordiscriminator就是训练用来判断正确图片与生成图片的不同可以使用分类方法好的作为1不好的作为0也可以作为回归问题来做该步骤是固定G更新D第二部固定D更新G让生成器去欺骗已经学好的D之后重复以上两个步骤我们的目标是尽量减少PG和Pdata之间的差异可以用Div实现我们在进行divergence需要先获得生成器生成的sample和真实数据的sample下面就是discriminator的任务将真实值Pdata的得分改成越大越好将生成器生成的值PG得分越小越好下面的V函数就相当于cross entropy前面加了负号那么cross entropy越小V函数的值越大所以也要尽量缩小cross entropy的值计算交叉熵时真样本靠近1假样本靠近0得出的值越小而计算图中的V时真样本靠近1假样本靠近0计算得出的值反而越大详细解析为什么要采用这样的写法来计算V下图可以直观的展示divergence和discriminator生成之间的关系之前我们总是想找到divergence的表示方法现在发现maxVD,G就和divergence有关所以可以直接替换不同的divergence如何设计他们对应的objective function?但是一般来说即使把divergence训练的很好了但是GAN的总体模型效果可能还是不行训练GAN的一些小tips一JS divergence可能带来什么问题有两个局限1真实值和生成值可能都是高纬度中的很小的一部分重叠部分可能被忽略不计 2我们在sample的时候如果数量不够也可能导致重叠的部分很少两个分布如果没有重叠算出的结果永远是log2,如果没有重叠分类器的训练结果正确率总是得到100%没有任何意义由此我们换一个计算divergence的方式引入wasserstein distance这个概念类似于推土机P是我们生产的Q 是我们需要靠拢的真实值wasserstein distance就是这两个中间相差的距离有时候P和Q会变得更加复杂所以我们需要穷举所有情况来找到最好的回到之前的例子WGAN用wasserstein distance代替JS divergence计算公式如下注意其中的D不可以是很复杂的function,需要是一个比较平滑的function因此我们对Dfunction做了限制那么使得D function函数更平滑的方法有哪些呢WGAN要求判别器critic满足 1-Lipschitz连续梯度的范数不能超过1保证Wasserstein距离可以被正确估计。下面三个都是用来强制满足这个约束的方案SN方法目前看训练效果最好但是不是有WGAN就一定特别好trainGAN为什么这么难训练因为只要其中一者不再进步训练结果没有改善另外一者也跟着停下来无法改善generator 和 discriminator需要相互匹配GAN在处理Sequence问题会遇到的问题如果Decoder发生了微小的变化但是由于generator每次是选择最大值产生的微小参数变化可能并不会影响最终的输出所以最后discriminator的得分也就无变化这样无法去微分和我们之前所说的梯度消失的问题类似所以很长一段时间用GAN来生成Sequence文字是非常困难的更多的生成模型但是一般还是GAN产生的结果最好其他可能的解决办法直接输入图片向量但是向量顺序要按照特殊的方式排列进行训练最终直接输出图片相关的文章如下那么我们如何来评定一个generator的好坏呢方法一对于人脸可以用生成generator去辨识人脸例如对于有一千张人脸的数据集一个辨识出九百张一个辨识出三百张可以看到辨识出九百张的效果更好方法二对于多张图像内容的图片可以使用图像分类器对结果进行分类如果分类的结果越陡峭不平坦说明生成图像特征明显很好分类说明生成图片的效果越好但是方法二需要警惕一种Mode Collapse现象的发生这种现象是指生成图像开始围绕一个图像打转多样化越来越弱目前还没有特别好的方法一般出现mode collapse现象就会停下来使用之前训练好的model还有一个可能的问题被称作——Mode Dropping那么如何来查看生成图片的多样性呢同样可以借助imager classifier来进行统计对生成的图片进行分类然后取均值如果结果平坦则是正常如果出现陡峭的结果则是不正常某一类别出现很多次说明生成图片结果相似我们可以用IS来判断生成图片的质量但是人脸由于只有一个类别并不适合哟用这个方法来判断但是quality我们一般是针对一张图片进行CNN分类判断生成的组别越陡峭说明效果越好diversity是所有图片分类取均值结果越平坦效果越好FID可以弥补上面所说无法辨识人脸的情况它的特点在于把输入到softmax之前的向量进行判别我们在生成人脸时可以同时看辨识人脸的数量和FID值这样可以使结果更准确有时候FID很低人脸分数也不错但是GAN的效果还是不行因为和真实数据的人脸一摸一样我们需要的是新生成的人脸这时候我们就需要计算两者的相似度conditional generator GAN例如文本生成图片我们要输入文字和sample的Z一起输入当然它本身也要有相关的标签库在conditional GAN中generator和discriminator两者应该如何设计generator的输入会增加附属条件x那么discriminator就不能把图片质量作为判断生成好坏的单一指标还要看是否满足x条件如果两者都满足才能得到高分所以如果出现文字和图片成对的资料就给1分如果不匹配就给0分还有一种情况就是生成的图片很好但是文字不匹配这种情况也不能打高分我们在一开始训练discriminator时就要告知这一细节其他应用图片生成图片图像产生图像的处理流程GAN在unsupervised无监督数据上的应用——Cycle GAN我们想要将显示的人脸转化为二次元的人脸但是没有成对的训练数据那么应该怎么做呢前面的模型都是在成对的数据的条件下完成的、如果只是使用一个generator,生成一个二次元图像我们无法验证准确率有多高因为没有成对的数据给我们检验这种情况在使用一个generator将生成的二次元图像恢复成现实图片这样可以实现检验形成cycle,同样y也要进行类似的检验处理类似的模型多种不同形式的数据相互转化StarGAN其他的示例模型文字循环转换不同形式数据转换的其他应用
阅读完成 · 觉得有帮助?
咨询建站