生成对抗网络(GAN)原理详记

前言

最近几天,入坑了生成对抗网络(GAN),主要是研读了缪茂文 潘志宏著写的《深入浅出GAN生成对抗网络原理剖析与Tensorflow实践》,这里把GAN一些基础的,必要的东西梳理一下。

一:什么是生成对抗网络(GAN)

1.GAN是什么

GAN网络结构是由生成器和判别器组成,训练过程中,生成器G不断的生成赝品,判别器D这识别生成器G生成的结果是真品还是赝品,两个网络相互对抗,生成器G努力生成出欺骗过判别器D的赝品,而判别器D努力识别出生成器G生成的赝品,往复循环,从而训练彼此

2.生成任务

GAN主要用于生成任务,所谓生成任务,就是通过输入一些随机噪声给生成模型,生成模型将这些噪声映射到真实数据的分布上。以图片生成为例,我们手上有大量的真实图片数据,这些数据在高维空间会存在一个特定的概率分布,我们会使用GAN训练一个生成模型,训练时,生成模型生成的图片的概率分布会逐渐的往真实的图片的概率分布靠近,从而,生成模型会生成与真实图片相似的图片。

3.GAN的数学描述

原论文给出了如下数学描述,假定用于生成的噪声分布是 p z ( z ) p_z(z) pz(z),真实数据分布是 p x ( x ) p_x(x) px(x),同时生成器和辨别器分别为G和D,则GAN的目标可以通过如下公式描述:请添加图片描述
D(x)表示x来源于真实数据的分布,理想情况下,D(x)=1,logD(x)=0。若是分类器不理想,则D(x)输出越小,logD(x)则会越小。G(z)表示噪声经过生成器后生成的样本,D(G(z))则是分类器认为生成样本属于真实样本的概率,理想情况下这个数值为0,但当性能越不好,D(G(z))越大,log(1-D(G(z)))就会越小。总而言之,后面两项期望的和越大,分类器识别能力越好。 再观察估值函数V(G,D)前面的min/max,就很明显了,最终的目标是求外面的minG,G的目标是让V最小,达到以假乱真的目的;而内部嵌套的maxD,则代表D是在G给定的情况下,最大化V,即给定生成器,得到识别能力最好的分辨器。

二:各类GAN

1.DCGAN

相较于原始GAN,DGGAN主要的区别是生成器和判别器使用了深层卷积网络,

(1) DCGAN网络结构

请添加图片描述

(2) DCGAN做了以下改进

(1)生成器和判别器使用带步长的过滤来代替池化层,加快模型收敛速度,但会降低网络的稳定性
(2)生成器和判别器使用Batch Normalization来加速模型收敛避免模型过拟合
(3)生成器中最后一层使用tanh作为激活函数,其余层使用relu作为激活函数
(4)判别器中所有层都使用Leaky ReLU作为激活函数
(3) Internal Convariate Shift 现象
随着网络加深,每层网络的参数更新会导致输出变化,层层叠加会出现高层不断重新计算参数去适应底层发生的变化,这种现象叫ICS现象

(4) BN的优势

BN可以缓解ICS问题,是训练网络是可以使用更大的学习速率,加快网络收敛
BN可以减少梯度爆炸和梯度弥散问题
BN减少了训练网络时对正则化的需要
BN的核心是:
BN操作保证神经网络节点间参数具有“伸缩不变性”
BN确保了神经网络中输入数据具有“伸缩不变性”

(5) DCGAN的损失函数与训练过程

判别器的损失:
(1)判别器给真实图片打的分与其期望分数(1)的差距D_L1
(2)判别器给生成图片打的分与其期望分数(0)的差距D_L2
(3)则生成器的总损失为 D_L1 + D_L2
生成器的损失:
(1)生成图片与真实图片的差距
(2)实际上,将该差距转化为
生成器期望判别器给自己生成图片打多少分与实际判别器打多少分的差距

2.条件生成对抗网络(CGAN)

(1)CGAN的输入

条件生成网络(CGAN)与DCGAN一个重要差别是,CGAN给生成器的输入除了一个随机噪声多了一个约束条件

(2)损失函数

请添加图片描述

(3)ColorGAN

colorGAN是一个经典的CGAN,ColorGAN的训练数据是彩色图片,
数据准备时,将彩色图片通过自适应阀值的方法获得对应的线条图片做为约束条件,然后再使用彩色图片的blur滤波的模糊图片作为颜色噪声

ColorGAN还可用于去除图片的马赛克,将原图片数据随机打码,打码的图片作为约束条件,然后通过blur滤波生成全模糊的图像作为噪声,就可以进行训练了。

ColorGAN与DCGAN还有一个较大不同点是,
ColorGAN的生成器的网络结构使用了U型网络
请添加图片描述

3.改进生成对抗网络

(1)传统GAN
  1. 传统的GAN,本质是最小化两个概率分布的 JS散点
  2. 使用JS散度表示概率分布距离,需要满足分布之间有重叠部分的要求,在高维环境中,GAN通常重叠部分可忽略的
  3. 当两分布没有任何重叠或重叠可忽略,JS散度恒为log2,梯度为恒0,会产生梯度消失问题
  4. 可以再开始的训练中,给输入叠加一个目标分布,使得两分布存在重叠部分,然后再缓慢去掉重叠,同时,也不要把判别器训练的太好
  5. 传统GAN会存在模式崩溃问题,直观表现是生成器生成的样本多样性不足
(2) Wasserstein GAN

Wasserstein GAN 是为解决传统GAN 遇到的梯度消失,训练梯度不稳定以及模式崩溃而提出的。
其本质就是用Wasserstein距离(EM距离)来替代JS散度。

GAN中使用EM距离,是在判别器的目标函数加一个 1-Lipschitz约束条件,如下图
请添加图片描述
Lipschitz函数定义如下
∣ ∣ f ( x 1 ) − f ( x 2 ) ∣ ∣ < = K ∣ ∣ x 1 − x 2 ∣ ∣ ||f(x_1)-f(x_2)|| <= K||x_1-x_2|| f(x1)f(x2)<=Kx1x2
当K = 1 时,Lipschitz函数就叫1-Lipschitz

WGAN论文没有直接解决如何使得判别器的目标函数服从1-Lipschitz约束,而是采用限制的方式是目标函数平滑,这种方式为 Weight Clipping

WGAN的改动有:

  1. 判别器最后一层去掉了sigmoid
  2. 生成器与判别器的损失不取log
  3. 训练判别器时,每次参数更新后的值限制在一个范围(-c,c)
  4. 不使用基于动量的梯度优化算法,改为RMSProp 或SGD
(3) Improved WGAN(WGAN-GP)

WGAN 使用了Weight Clipping,这会很容易会导致判别器的参数要么取极大值要么取极小值,从而导致判别器变成一个二值化网络,丧失了原本强大的拟合能力

同时Weight Clipping的限制范围若设得过大,可能会参数梯度爆炸问题,过小也可能会产生梯度消失问题

为此,WGAN-GP提出了gradient penalty(梯度惩罚)

在 WGAN或WGAN-GP中,通常是先训练K次判别器,再训练1次生成器

(4) SN GAN

gradient genalty只对生成数据分布与真实数据分布之间的空间做梯度惩罚,无法对整个空间的数据做惩罚,从而导致graident penalty正则化方式不稳定。
SN GAN 使用Spectral Normalization(光谱标准化),具有一下优势

  1. 以SN的方式让判别器满足Lipschitz约束,Lipschit的K是唯一要调的超参数
  2. 整体上,SN-GAN只改变判别器权值矩阵的最大奇异值,从而最大限度的保留原始信息
  3. 具体训练模型时,power iteration可加快训练速度

三:一些具体的GAN结构

1.循环一致性

此类型的,有cycleGAN,StarGAN,XGAN…

2.渐进增强式生成对抗网络

StackGAN
PGGAN

3.文本转图像

这一使用CGAN结构的GAN,输入的约束条件
可以使用Skip-Thought 来构建句子级别的语义向量来作为约束条件

后记

本文许多内容是《深入浅出GAN生成对抗网络原理剖析与Tensorflow实践》摘抄的内容
同时,也用paddlepaddle复现了 DCGAN和ColorGAN。
开源链接如下:
https://gitee.com/lingcb/dcgan
https://gitee.com/lingcb/color-gan

  • 5
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《计算机系统结构》是一本被广泛应用于计算机科学领域的教材,第二版郑纬民pdf版充分展现了计算机系统的内部结构和组成原理。本书通过对计算机硬件各部分之间的联系及控制流程的分析,挖掘了计算机系统中的思想精髓,深入阐述了CPU、存储器、输入输出设备等硬件组件及它们之间的交互作用。 首先,本书详细介绍了计算机的编码和数据表示方式,解释了计算机之间如何进行数据交换。其次,本书分析了计算机存储器的层次结构,包括高速缓存、主存储器和辅助存储器,并详细阐释了它们的运作方式及互相之间的协作关系。此外,本书还介绍了计算机系统的输入输出设备,包括中断系统和外设控制器,以及如何实现通过总线连接这些设备和CPU。 除此之外,本书还重点介绍了计算机的指令集体系结构。本书通过分析指令集,详细阐述了汇编语言程序设计、CPU运行过程,以及如何在计算机系统中实现不同的指令。最后,本书详记了计算机系统中一些重要的问题,例如异常处理、性能提升和宕机恢复等。 总之,第二版郑纬民pdf版的《计算机系统结构》全面而简明地展示了计算机系统的内部结构及组成原理,是一本学习计算机系统和体系结构的优秀教材。它不仅涵盖了知识点所有重要领域,而且简明易懂、容易理解。 ### 回答2: 《计算机系统结构第二版郑纬民pdf》是一本非常权威的计算机系统结构教材,该书作者郑纬民是华南理工大学计算机学院的教授,他在计算机系统结构方面有着丰富的研究和教学经验。 该书主要内容包括计算机系统结构的基础知识、指令系统、CPU的设计、处理器性能评测、存储器层次结构、输入输出系统、总线和互联、多处理器系统等方面的内容。这些内容既包括基础知识,也包括高级技术,深入浅出,通俗易懂,能够使读者对计算机系统结构有一个相对完整的认识和掌握。 此外,该书还引入了一些先进的技术和实现,如超标量、动态调度、多核处理器等,使读者对计算机系统结构的理解更加全面深入。同时,该书还提供了大量的实际案例、练习和作业,可以帮助读者更好地理解和掌握计算机系统结构的相关知识。 综上所述,该书是一本非常实用的计算机系统结构教材,深入浅出,引入了许多先进技术和实现,学习后可以帮助读者全面掌握计算机系统结构的相关知识和技术。值得计算机系统结构专业的学生、研究人员、IT从业人员和对计算机系统结构感兴趣的人士阅读学习。 ### 回答3: 《计算机系统结构第二版郑纬民pdf》是一本涵盖计算机系统结构基础知识和应用领域的经典教材。这本书中全面而深入地讲解了计算机硬件体系结构、指令系统、流水线技术、存储器层次、输入输出系统、中断和异常处理等内容。通过本书的学习,读者可以深入了解计算机体系结构的基本设计元素和实现技术,理解计算机硬件实现的基本原理和方法。 在《计算机系统结构第二版郑纬民pdf》中,作者通过讲解计算机体系结构的基本概念,加深读者对计算机硬件实现的认识和理解。同时,作者还通过实例和案例,将抽象概念转化为具体的应用,让读者可以更好地了解计算机体系结构在实际工程中的应用。 此外,本书还介绍了一些常见的计算机体系结构的优化技术,如流水线、并行处理、超标量、超流水等,使读者可以更好地掌握由计算机系统结构与功能要求之间的协调所形成的关键技术。 总之,《计算机系统结构第二版郑纬民pdf》是一本对计算机系统结构基础知识和应用领域进行全面深入讲解的书籍,是一本值得广大读者深入研读和掌握的经典教材。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值