本文对GAN原理介绍,以及与其他几种改进的GAN,主要介绍两种改进GAN(为什么只有两种呢,因为最近只详细的看了这两个,来做点笔记(错了就帮忙指出一哈----我是一个小白))

目录

一、GAN

二、WGAN-GP

三、SRGAN


一、GAN

GAN(Generative Adversarial Network)是生成式对抗网络,是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。GAN主要由两个网络构成,生成网络G和判别网络D。其中生成网络G的思想就是将一个生成的随机噪声包装成一个逼真的样本,判别网络D就需要判断送入的样本是真实还是虚假的样本,以此来达到共同进步的的过程。在判别网络D对样本的识别能力不断上升的过程中,生成网络造假能力也不断提升,直到判别网络无法识别真实的图片和虚假的图片,那么这个网络就拟合了。

上图中,q(x)是真实图片的数据分布,z是一个随机噪声,通过生成网络G生成一张虚假的图片G(z) 去欺骗判别网络D,而判别网络D的目的就是将真实图片和虚假图片区分开来,这样G、D就构成了一个动态博弈的过程。

下面是论文中提到的GAN的损失函数:

  1. D(x)表示判别网络D判断真实图片是否真实的概率(因为x就是真实的,所以这个值越接近1越好),D(G(z))表示判别网络D判断生成网络G生成图片G(z)是真实图片的概率
  2. 生成网络G的目的是让自己生成的图片尽可能的接近真实的图片,即D(G(z))的值越大越好,此时V(D,G)会变小,所以式子中G是取最小
  3. 判别网络D的目的是尽可能的分别真实和虚假的图片,此时D(x)应该越大,D(G(z))应该越小,此时V(D,G)会变大,所以式子中D是取最大

其中GAN也有明显的缺点,就是不适合处理离散的数据,当图片较大时,简单的GAN的方法就不可控了,训练不稳定,容易产生梯度消失或者梯度爆炸的情况。

二、WGAN-GP

说到WGAN-GP就先说说WGAN,WGAN(Wasserstein GAN)是GAN的改进版,相比GAN来说:

  1. 判别器最后一层去掉sigmoid
  2. 生成器和判别器的loss不取log
  3. 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定的常数c
  4. 不要用基于动量的算法,推荐RMSProp,SGD也可

在WGAN中使用Wasserteion距离需要满足很强的连续性条件--lipschitz连续性,为了满足这个条件,采用强行将权重限制到一个范围的方式强行满足lipschitz连续性。在剪切之后,WGAN-GP论文中指出了这个方法的问题,如下图左边所示(从论文中截取下来的图片,有点不清晰):

在强行限制权重之后,导致WGAN存在很大的问题,判别器的loss希望尽可能的拉大真假样本之间的分数差,最后发现权重基本集中在限制的的两端,减少了参数的多样性,使判别器的神经网络学习到一个简单的映射函数,是一种巨大的浪费,再者就是这样很容易导致梯度消失或者梯度爆炸的情况,如果把阈值(就是clipping threshold)设置的小一点,每经过一个网络,梯度就会小很多,多层之后就会指数衰减;如果把阈值设置的大一点,每经过一层网络,梯度就会变大一点,多层之后就会形成梯度爆炸的情况。因此在WGAN之后,作者很快就提出了解决方案,即gradient penalty(梯度惩罚)。lipschitz限制是要求梯度不超过k值,而gradient penalty就是设置一个额外的loss项来实现梯度和k之间的联系,这就是梯度惩罚的核心。下面给出WGAN-GP论文中提到的损失函数:

损失函数的前面一项就是服从生成图片分布的期望和服从真实分布的期望,并在此过程中,希望尽可能的拉大真实图片的分数,尽可能的降低生成图片的分数。这里主要是后面一项的梯度惩罚,第三个期望的采样的样本空间是x^,但是这会产生维度灾难的问题,所以在论文中就提出了x^的样本空间的范围,以及一个取值在[0,1]之间的随机数(电脑上没有mathtype,公式就都是在论文上截取的):

其中x和x~是在真实图片和生成图片的分布,ε是一个在[0,1]之间的随机数,这样x^就取的是x和x~连线上的随机插值采样,这样就不会造成维度灾难。 λ 在论文中指出是一个常数,并且作者使 λ 固定在某一常数使得效果最佳。然后中括号里面的就是加惩罚,里面是一个非负数,如果非负数太大会导致L太大,所以在最小化L的时候(||啥啥啥||2)这一项不会太大,会在1的附近(这里提出的lispchitz限制指的是1-Lispchitz),这就稳住了梯度,保证了在判断生成图片是真实图片的概率值不会超过D(x)。

三、SRGAN

SRGAN(Super-Resolution GAN)是超分辨率生成式对抗网络,将低分辨率转化为高分辨率的过程就叫做超分辨率。SRGAN是一种基于GAN的网络,针对新的感知损失进行了优化,这里主要讲一哈损失部分。

这里作者就balabala说了一堆,总而言之就是说GAN比MSE要好,为自己后面感知损失的优化做一下铺垫。

这里是文中提到的方法,下面是给出的式子:

在训练的时候需要提供高分辨率图,这里作者采用先将HR图先降采样成LR,然后用LR取训练生成器,得到对应的HR,其中训练生成器的过程和训练前馈卷积神经网络一样,都是对其中的一些参数进行优化。

然后再来说一哈对抗网络结构,这里是采用交替优化D、G的方式,论文中给出的公式如下:

下面是网络的结构图:

生成网络(G网络):核心是中间的残差网络,k3n64s1是指卷积核为3*3,特征通道为64,步长为1。

判别网络(D网络):这里使用LeakyReLU作为激活函数。

接下来就是SRGAN的创新点了,感知损失函数,文中给出的公式如下:

这里的感知损失有两部分组成:内容损失和对抗损失。采用加权的方式得到感知损失。

首先是内容损失,文中介绍了像素方式计算的MSE损失,说大部分做图像超分辨率的都用MSE作为损失函数来进行优化,这样虽然能够得到较高的PSNR(即信噪比),但是以这种方式生成的图片存在高频细节的缺失问题。因此作者根据其他人用预训练19层VGG网络的ReLU激活层来定义VGG loss的描述,并指出在激活后的第 i 个最大池化层之前的第 j 个卷积获得的特征图是给定的,然后将生成图像和参考高分图像特征表示之间的欧氏距离定义为VGG loss,下面是文中给出的公式:

第二个是对抗损失,作者将GAN中生成器对感知损失的影响通过对抗损失(adversarial loss)体现出来。这一部分损失函数使网络通过“欺骗”判别网络从而偏向生成更接近自然图像的输出。 下面是文中给出的式子:

大致就是这么多了,剩下的有待继续学习。。。

GAN原理总结以及对比相关推荐

  1. 各种GAN原理总结及对比

    最近试着玩了多种GAN,今天我们主要总结下常用的GAN包括DCGAN,WGAN,WGAN-GP,LSGAN-BEGAN,SRGAN的详细原理介绍以及他们对GAN的主要改进,并推荐了一些Github代码 ...

  2. 深度学习之生成对抗网络(2)GAN原理

    深度学习之生成对抗网络(2)GAN原理 1. 网络结构 生成网络G(z)\text{G}(\boldsymbol z)G(z) 判别网络D(x)\text{D}(\boldsymbol x)D(x) ...

  3. GAN原理及简单mnist生成图片

    简单学习一下GAN,主要是为了扩增数据集,目前手上数据太少,一个类别30张图片进行数据增强(旋转,反转等)后的数据量也远远不够,因此试图采用GAN来进行生成数据,添加生成的数据再进行检测和分类不知道能 ...

  4. 图解 生成对抗网络GAN 原理 超详解

    生成对抗网络 一.背景 一般而言,深度学习模型可以分为判别式模型与生成式模型.由于反向传播(Back propagation, BP).Dropout等算法的发明,判别式模型得到了迅速发展.然而,由于 ...

  5. GAN原理及Pytorch框架实现GAN(比较容易理解)

    目录 1.初识GAN 什么是GAN? GAN应用场景 2.GAN原理结构 (1)生成对抗网络子网络 (2)结构图 (1)生成器 (2)判别器 (3)训练技巧 3.GAN网络模型选择 (1)生成模型 ( ...

  6. [转帖]LCD与LED的区别之背光原理与优缺点对比介绍

    LCD与LED的区别之背光原理与优缺点对比介绍 http://m.elecfans.com/article/620376.html 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...

  7. #教计算机学画卡通人物#生成式对抗神经网络GAN原理、Tensorflow搭建网络生成卡通人脸

    生成式对抗神经网络GAN原理.Tensorflow搭建网络生成卡通人脸 下面这张图是我教计算机学画画,计算机学会之后画出来的,具体实现在下面. ▲以下是对GAN形象化地表述 ●赵某不务正业.游手好闲, ...

  8. 深入浅出 GAN·原理篇文字版(完整)

    深入浅出 GAN·原理篇文字版(完整)|干货 机翼技术 百家号 05-29 02:02 导语 这次的内容主要是想梳理 GAN 从 NIPS 2014 被提出,到 2017年5月,都有哪些重要的从原理和 ...

  9. 【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!

    有三上个月出版了新书<生成对抗网络GAN:原理与实践>,Generative Adversarial Networks(中文名生成对抗网络,简称GAN)自从被提出来后,其发展就非常迅猛,几 ...

最新文章

  1. Oracle TNS协议中数据包的内部结构
  2. Nature:最强癌基因找到了,居然不在染色体上 | 华人领衔最新研究
  3. Python 技术篇-PyQt5动画功能演示,组件移动、尺寸改变动画演示
  4. java使用集合模拟斗地主洗牌发牌案例
  5. 大数运算(1)——大数储存
  6. react-natvie-fetch-blob使用
  7. layui横向时间线_炒股一生只买一种股票:股价K线形成这样后,必然有一波拉升...
  8. 三菱plc 毕设_PLC漏型和源型输入有何不同?
  9. java抽象类的字段_java打印出继承体系的类(包括抽象类)、接口、域字段
  10. 关于Android屏幕适配
  11. arch linux安装和dwm窗口管理器安装
  12. json文件格式转换为png文件格式
  13. Windows2008 R2配置FTP教程
  14. 唯一索引(unique index)的创建和使用
  15. QCC3040---AppDevice module
  16. 数显之家快讯:【SHIO世硕心语】一个人成功之前,需要失去五样东西!
  17. Linux下定时函数timerfd_xxx()的使用
  18. Dubbo超详细学习笔记
  19. 公众号获取永久图片media_id
  20. SAP PP模块各功能块介绍

热门文章

  1. 小米上市,那些年错过了的可以暴富的工作机会
  2. 头条号三农领域原创视频日赚1000,自媒体领域选择哪个好?
  3. vivoNEX来了,高科技能否驱散手机冬天的寒冷?
  4. 每日一个小技巧:如何去水印而不损图片?赶紧学起来
  5. mybatis条件语句中带数组参数
  6. 2023大数据开发就业前景怎么样?
  7. 2021-09-15 如何退出微信小程序
  8. 学生选课系统——数据库应用项目
  9. Playdom宣布收买社交游戏公司dianlv
  10. CSS3动画(简单动画的实现,如旋转等)