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

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

  • 前言
  • 一:什么是生成对抗网络(GAN)
      • 1.GAN是什么
      • 2.生成任务
      • 3.GAN的数学描述
  • 二:各类GAN
      • 1.DCGAN
          • (1) DCGAN网络结构
          • (2) DCGAN做了以下改进
          • (4) BN的优势
          • (5) DCGAN的损失函数与训练过程
      • 2.条件生成对抗网络(CGAN)
          • (1)CGAN的输入
          • (2)损失函数
          • (3)ColorGAN
      • 3.改进生成对抗网络
          • (1)传统GAN
          • (2) Wasserstein GAN
          • (3) Improved WGAN(WGAN-GP)
          • (4) SN GAN
  • 三:一些具体的GAN结构
      • 1.循环一致性
      • 2.渐进增强式生成对抗网络
      • 3.文本转图像
  • 后记

前言

最近几天,入坑了生成对抗网络(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网络结构

生成对抗网络(GAN)原理详记_第1张图片

(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)损失函数

生成对抗网络(GAN)原理详记_第2张图片

(3)ColorGAN

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

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

ColorGAN与DCGAN还有一个较大不同点是,
ColorGAN的生成器的网络结构使用了U型网络
生成对抗网络(GAN)原理详记_第3张图片

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约束条件,如下图
生成对抗网络(GAN)原理详记_第4张图片
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

你可能感兴趣的:(GAN生成对抗,生成对抗网络,计算机视觉,深度学习)