对抗生成网络(GAN)原理解析及扩展应用(付论文)

论文阅读

总结:

这篇文章其实提出的是一种框架,只不过用多层感知器来实现一下,就得到了生成对抗网络这个特例。现在大多数的网络是判别模型,生成模型也有,比如受限玻尔兹曼机等。但是这些模型都要用到马尔可夫链,这是一个无监督学习的过程,只要有输入就可以,但是马尔可夫过程的计算量很大。GAN用监督学习实现了生成网络,不需要用马尔可夫链,用BP就可以训练。GAN最重要的就是可以生成高质量图像(按文本生成图像、提高图片分辨率等),而且这个生成网络不需要用到马尔可夫链,只需要正常的监督学习中的BP就可以实现。

原理:

生成式对抗网络是一种博弈的思想,比如两个人掰手腕,大家都想赢,力气大的人多往自己这边掰一点,力气小的人就多受一点损失。在生成式对抗网络中,有两个网络模型:生成模型(G)和判别模型(D)

生成模型:生成假样本。可以看做是一个造假团队,希望造出的假钞不被发现。也就是希望生成的样本越能以假乱真越好,目的是让判别模型辨认不出样本的真假。也就是说希望判别网络输出的值在1附近。
判别模型:判断样本的真假。相当于警察,要找出假钞。学习的目的是判断样本是来自模型分布(真样本)还是数据分布(加样本),希望能准确判断样本的真假。也就是希望自己输出的值在1或0附近。

之所以叫“对抗网络”,就是因为G和D之间存在对抗的关系:G希望生成以假乱真的样本;D希望把G生成的假样本准确揪出来。G可以看作一个造假币的,希望自己造出的假币能不被发现,甚至被认为是真的。D可以看作是警察,希望能把假钱揪出来。这样两者就能在相互较量中共同进步,直到真假难分为止(判别模型的输出在0.5附近)。
在这里插入图片描述
蓝色线代表的是判别分布。黑色线代表真实数据分布,绿色代表生成数据分布。x=G(z)。朝上的箭头表示的是G如何将非均匀分布的pg作用在转换后的样本上。可以看到G在pg高密度的区域收缩,在低密度的区域发散。
(a)pg和pdata相似,D是个部分准确的分类器。
(b)在算法内循环中训练D来判别样本
(c)是在更新一次G之后D的梯度引导着G向更有可能被分类为真是样本的方向移动
(d)是若干步之后D和G都没法提高了,且D的值是二分之一.

训练:

生成模型可以看作样本生成器,它的输入是一组噪声,输出是一个逼真的样本。判别模型可以看作01分类器(而分类器),它的输入是样本图片,输出是一个标量(0-1之间的数)D和G的训练是关于值函数V(G,D)的最小最大化问题: m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))] minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

其中,p_z(z)是噪声变量,G(z;θg)表示数据空间的映射,D(x;θd)用来输出一个单独的标量。D(x)表示x是真实样本的概率
训练的方法单独 交替 迭代训练。不能一味进行内循环对D进行优化,因为样本比较少,这样会造成过拟合。所以这个时候应该让D和G交替优化。优化K次D之后优化一次G。只要G的优化足够缓慢,就能让D一直在最优值附近。
在这里插入图片描述

训练生成器的时候:

首先,我们有一个生成模型,用这个模型生成很多假样本。而真样本一直存在,这时候我们可以给他们定义标签。给所有真样本标签定为1,假样本标签定为0。在这里不考虑真假表标签内部的分类问题,比如真样本里有张三的脸也有李四的脸。首先对生成模型进行训练。
生成模型的损失函数 ( 1 − y ) l o g ( 1 − D ( G ( z ) ) ) (1-y)log(1-D(G(z))) 1ylog(1D(G(z)))

那如何生成假样本呢:假设我们现在的数据集是一个二维的高斯混合模型,那么这么noise就是x轴上我们随机输入的点,经过生成模型映射可以将x轴上的点映射到高斯混合模型上的点(将低维的映射为高维的)。当我们的数据集是图片的时候,那么我们输入的随机噪声其实就是相当于低维的数据,经过生成模型G的映射就变成了一张生成的图片G(x)。

假设现在生成模型训练好了,现在我们要把真的样本和假的传到判别模型中,让判别模型判断真假。这时候,我们要把所有假样本的标签也设为1。这样,如果判别模型的真实输出和期望输出差的很多,那说明生成的假样本不够“真”。这样产生的误差传递再次传递到生成模型中,就可以让生成模型进行学习,从而提高造假能力。但是在这里要注意的是,误差不能用于改变判别模型中的参数。这些误差只能一直向前传传传传到生成模型,更新生成模型的参数。

判别模型损失函数 − ( ( 1 − y ) l o g ( 1 − D ( G ( z ) ) ) + y l o g D ( x ) ) -((1-y)log(1-D(G(z)))+ylogD(x)) ((1y)log(1D(G(z)))+ylogD(x))

这是一个普通二分类问题交叉熵损失函数公式中取个对数是为了让最后数值差异较大,不然D(x)是0-1之间的数差异很小。所以只要看D(x)的大小就可以了。

应用:

1、生成高质量图像

Generative Adversarial Text to Image Synthesis(2016 ICML)
根据文本生成图像,直接把单词和字符转换成图像像素

Generative Visual Manipulation on the Natural Image Manifold(2016 ECCV)
伯克利和 Adobe 开发的新的深度学习图像编辑工具。只要给出线条,就可以生成图像。

2、半监督学习

Unsupervised and Semi-supervised Learning with Categorical Generative Adversarial Networks(2015 ICLR)

Adversarial Training Methods for Semi-Supervised Text Classification(2017 ICLR)
论文由卡内基梅隆大学发表。作者研究了如何利用GAN来实现半监督分类问题

3、图像修补

Context Encoders: Feature Learning by Inpainting(2016 CVPR)
利用深度学习技术,通过基于上下文像素预测驱动的无监督的视觉特征的学习算法,利用周围的图像信息来推断缺失的图像。

Generative face completion(2017 CVPR)
人脸修复。输入一个有缺失的人脸图像,得到完整的人脸图像

Generative Image Inpainting with Contextual Attention(2018 CVPR)
文章提出了一种新的基于深度生成模型的方法,该方法不仅可以合成新的图像结构,还可以在网络训练期间明确利用周围的图像特征作为参考,以便做出更好的预测。

4、重识别

Pose-Normalized Image Generation for Person Re-identification(2018 ECCV)
ReID的其中一个难点就是姿态的不同,为了克服这个问题,论文使用GAN造出了一系列标准的姿态图片。

5、语义分割

Semantic Segmentation using Adversarial Networks(2016 CVPR)
Adversarial Deep Structural Networks for Mammographic Mass Segmentation(2017 CVPR)

6、物体检测

Perceptual generative adversarial networks for small object detection(2017 CVPR)
A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection(2017 CVPR)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值