Generative Adversarial Network(生成对抗网络)

这篇具有很好参考价值的文章主要介绍了Generative Adversarial Network(生成对抗网络)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Generative Adversarial Network(生成对抗网络)

Basic Idea of GAN

GAN as structured learning

Can Generator learn by itself

Can Discriminator generate

Theory behind GAN

Conditional GAN


Generative Adversarial Network(生成对抗网络)

Basic Idea of GAN

  • Generation(生成器)

 Generation是一个neural network,它的输入是一个vector,它的输出是一个更高维的vector,以图片生成为例,输出就是一张图片,其中每个维度的值代表生成图片的某种特征。

Generative Adversarial Network(生成对抗网络)

Generative Adversarial Network(生成对抗网络)

  • Discriminator(判别器)

Discriminator也是一个neural network,它的输入是一张图片,输出是一个scalar,scalar的数值越大说明这张图片越像真实的图片。

Generative Adversarial Network(生成对抗网络)

  • Generation和Discriminator两者的关系

举了鸟和蝴蝶例子说明Generation和Discriminator之间的关系是相互对抗,相互提高。然后提出两个问题:

  1. Generator为什么不自己学,还需要Discriminator来指导。
  2. Discriminator为什么不自己直接做。
  • Algorithm(算法说明)

首先要随机初始化generator 、discriminator的参数;

然后在每一个training iteration要做两件事:

1. 固定generator的参数,然后只训练discriminator。

将generator生成的图片与从database sample出来的图片放入discriminator中训练,如果是generator生成的图片就给低分,从database sample出来的图片就给高分。

Generative Adversarial Network(生成对抗网络)

2. 固定discriminator的参数,然后只训练generator。

把generator生成的图片当做discriminator的输入,训练目标是让输出越大越好。

Generative Adversarial Network(生成对抗网络)

具体算法如下:

训练D(固定G):

  1. 首先从database中抽取m个样本。
  2. 从一个分布中抽取m个vector z。
  3. 将z输入generator,生成m张图片Generative Adversarial Network(生成对抗网络)
  4. 计算损失,最大化损失。

训练G(固定D):

  1. 随机产生m个噪声,通过generator得到图片G(z);
  2. 然后经过discriminator得到D(G(z)),更改G中的参数,使得它的得分越高越好。

Generative Adversarial Network(生成对抗网络)

GAN as structured learning

结构化学习的输入和输出多种多样,可以是序列(sequence)到序列,序列到矩阵(matrix),矩阵到图(graph),图到树(tree)等。例如,机器翻译、语音识别、聊天机器人、文本转图像等。GAN也是结构化学习的一种。

  • Structured Learning面临的挑战
  1. One-shot/Zero-shot Learning:比如在分类任务中,有些类别没有数据或者有很少的数据。
  2. 机器需要创造新的东西。如果把每个可能的输出都视为一个“class”,由于输出空间很大,大多数“class”都没有训练数据,也,这就导致了机器必须在testing时创造新的东西。
  3. 机器需要有规划的概念,要有大局观。因为输出组件具有依赖性,所以应全局考虑它们。
  • Structured Learning Approach

传统的structured learning主要有两种做法:Bottom up 和 Top down。

Bottom up:机器逐个产生object的component。

Top down:从整体来评价产生的component的好坏。

Generator可以视为是一个Bottom Up的方法,discriminator可以视为是一个Top Down的方法,把这两个方法结合起来就是GAN。

Generative Adversarial Network(生成对抗网络)

Can Generator learn by itself

可以用监督学习的方法来对generator进行训练,但是还会存在一个问题:表示图片的code从哪里来。如果随机产生,训练起来可能非常困难。因为如果两种图片很像,它们输入vector差异很大的话,就很难去训练。

Generative Adversarial Network(生成对抗网络)

可以通过训练一个encoder,得到相应的code。但是存在的问题就是:Vector a 输出结果是向左的1,vector b 输出结果是向右的1。若把a、b平均作为输入,则输出不一定是数字,可以使用VAE来解决这个问题。

Generative Adversarial Network(生成对抗网络)

  • VAE (Variational Auto-Encoder,变分编码器)

VAE不仅产生一个code还会产生每一个维度的方差;然后将方差和正态分布中抽取的噪声进行相乘,之后加上code上去,就相当于加上noise的code。

Generative Adversarial Network(生成对抗网络)

  • VAE的缺陷

在生成图片时,不是单纯的让生成结果与真实结果越接近越好,还要保证整幅图片符合现实规律。

Generative Adversarial Network(生成对抗网络)

假设Layer L-1的值是给定的,则Layer L每一个dimension的输出都是独立的,无法相互影响。因此只有在L后面在加几个隐藏层,才可以调整第L层的神经元输出。也就是说,VAE要想获得GAN的效果,它的网络要比GAN要深才行。

Generative Adversarial Network(生成对抗网络)

下图中绿色是目标,蓝色是VAE学习的结果。VAE在做一些离散的目标效果不好。

Generative Adversarial Network(生成对抗网络)

Can Discriminator generate

Discriminator就是给定一个输入,输出一个分数。对discriminator来说,要考虑component和component之间的联系就比较容易。比如有一个滤波器,它会去检索有没有独立的像素点,有的话就是低分。

Generative Adversarial Network(生成对抗网络)

假如有一个discriminator,它能够鉴别图片的好坏,就可以用这个discriminator去生成图片。穷举所有的输入x,比较discriminator给出的分数,找到分数最高的就是discriminator的生成结果。

  • 训练discriminator
  1. 首先给定一些正样本,随机产生一些负样本。
  2. 在每一个iteration里面,训练出discriminator能够鉴别正负样本。
  3. 然后用训练出来的discriminator生成图片当做负样本。
  4. 开始迭代。

Generative Adversarial Network(生成对抗网络)

从可视化和概率的角度来看一下整个过程。蓝色的是discriminator生成图片的分布,绿色的是真实图片分布。训练discriminator给绿色的高分,蓝色的低分。然后寻找discriminator除了真实图片之外,得分最大高的地方把它变成负样反复迭代,最终正样本和负样本就会重合在一起。

Generative Adversarial Network(生成对抗网络)

  • Generator v.s. Discriminator

generator:很容易生成图片,但是它不考虑component之间的联系。只学到了目标的表象,没有学到精神。

Discriminator:能够考虑大局,但是很难生成图片。

  • Generator + Discriminator

Generator就是取代了这个argmax的过程。GAN的优点如下:

从discriminator来看,利用generator去生成样本,去求解argmax问题,更加有效。

从generator来看,虽然在生成图片过程中的像素之间依然没有联系,但是它的图片好坏是由有大局观的discriminator来判断的。从而能够学到有大局观的generator。

Theory behind GAN

假如要生成一些人脸图,实际上就是想要找到一个分布,从这个分布内sample出来的图片像是人脸,分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。

Generative Adversarial Network(生成对抗网络)

在GAN之前用的是Maximum Likelihood Estimation。

  • Maximum Likelihood Estimation(最大似然估计)

最大似然估计的思想是,假设数据的分布是 Generative Adversarial Network(生成对抗网络) ,定义一个分布为Generative Adversarial Network(生成对抗网络) ,求得一组参数θ,使得Generative Adversarial Network(生成对抗网络)Generative Adversarial Network(生成对抗网络) 越接近越好。具体步骤如下:

  1. Generative Adversarial Network(生成对抗网络) 中sample出一些样本;
  2. 对于sample出来的样本,可以计算出它们的likelihood;
  3. 计算总分likelihood L,并找到一组参数Generative Adversarial Network(生成对抗网络)  使得L最大。

Generative Adversarial Network(生成对抗网络)

  • MLE=Minimize KL Divergence

最大似然估计就相当于最小化的KL散度。

Generative Adversarial Network(生成对抗网络)

如果使用最大似然估计,采用高斯混合模型定义PGGenerative Adversarial Network(生成对抗网络)  ,生成的图片会非常模糊,现在使用generator产生PGGenerative Adversarial Network(生成对抗网络) 。优化的目标就是使PGGenerative Adversarial Network(生成对抗网络)PdataGenerative Adversarial Network(生成对抗网络) 越接近越好,即使得G*Generative Adversarial Network(生成对抗网络) 越小越好,但是不知道PGGenerative Adversarial Network(生成对抗网络)PdataGenerative Adversarial Network(生成对抗网络) 的公式。

Generative Adversarial Network(生成对抗网络)

虽然不知道PGGenerative Adversarial Network(生成对抗网络)PdataGenerative Adversarial Network(生成对抗网络) 的公式,但是可以从这两个分布中做sample。可以用Discriminator来衡量PGGenerative Adversarial Network(生成对抗网络)PdataGenerative Adversarial Network(生成对抗网络) 的Divergence。训练出来的maxV(G,D)Generative Adversarial Network(生成对抗网络) 就相当于JS divergence。

Generative Adversarial Network(生成对抗网络)

  1. 证明过程

要求V(G,D)的最大值,就是求Generative Adversarial Network(生成对抗网络) 的最大值。

Generative Adversarial Network(生成对抗网络)

因为Generative Adversarial Network(生成对抗网络)Generative Adversarial Network(生成对抗网络) 都是固定的,所以设为常数,然后通过求导求出最大值。

Generative Adversarial Network(生成对抗网络)

将求出的D* 回带入V(G,D),然后化简。

Generative Adversarial Network(生成对抗网络)

Generative Adversarial Network(生成对抗网络)

Generator 的训练目标就是,找到一个G* 去最小化Generative Adversarial Network(生成对抗网络)Generative Adversarial Network(生成对抗网络) 之间的差异,即Generative Adversarial Network(生成对抗网络) ,由于不知道Generative Adversarial Network(生成对抗网络)Generative Adversarial Network(生成对抗网络) 的具体公式,所以无法直接计算divergence。于是通过一个discriminator来计算两个分布之间的差异,Generative Adversarial Network(生成对抗网络) 。所以最终优化目标为Generative Adversarial Network(生成对抗网络)

 文章来源地址https://www.toymoban.com/news/detail-494556.html

Generative Adversarial Network(生成对抗网络)

 首先训练D,多训练几次直至收敛;之后训练G:其中第一项是与生成器无关的,由于G不能训练太多,否则会导致D无法evaluate JS,所以update一次就好。

Generative Adversarial Network(生成对抗网络)

  • In practice

理论上V是要取期望值,但是实际上是不可能的,只能用样本的均值进行估计。

Generative Adversarial Network(生成对抗网络)

论文原文在实作的时候把Generative Adversarial Network(生成对抗网络) 换成Generative Adversarial Network(生成对抗网络) ,蓝色曲线刚开始的值很大,适合做梯度下降。其实后来实验证明两种结果都差不多。

Generative Adversarial Network(生成对抗网络)

Conditional GAN

  • Text-to-Image

对于根据文字生成图像的问题,传统的做法就是训练一个NN,然后输入一段文字,输出对应一个图片,输出图片与目标图片越接近越好。存在的问题就是,比如火车对应的图片有很多张,如果用传统的NN来训练,模型会产生多张图像的平均,结果就会很模糊。

Generative Adversarial Network(生成对抗网络)

  • Conditional GAN

Conditional GAN与普通GAN的区别在于输入加入了一个额外的condition,并且在训练的时候使得输出的结果拟合这个 condition。

Generative Adversarial Network(生成对抗网络)

此时的discriminator的输入是generator的输出和conditional vector,此时discriminator有两个任务:

  1. 判断图片质量的好坏(图片是否是真实图片)。
  2. 图片是否和输入条件匹配。
  • Generative Adversarial Network(生成对抗网络)
  • Algorithm

训练D(固定G):

  1. 首先从database中抽取m个样本,每个样本都是一对条件和图片。
  2. 从一个分布中抽取m个vector z;然后每个vector都加上条件,表示为(c,z)。
  3. 将(c,z)输入generator,生成m张图片xGenerative Adversarial Network(生成对抗网络) (条件+图片)。
  4. 从database中随机选取m个真实图片 xGenerative Adversarial Network(生成对抗网络)
  5. 计算损失,最大化损失。

训练G(固定D):

  1. 随机产生m个噪声,随机从database中抽取m个条件;
  2. 通过generator得到G(C,Z),然后经过discriminator得到D(G(C,Z)),更改G中的参数,使得它的得分越高越好。

Generative Adversarial Network(生成对抗网络)

具体设计条件GAN判别器,有两种方式:

  1. 图片x经过一个网络变成一个code,条件经过一个网络也变成一个code;把这两种code组合在一输入到网络里面,输出一个分数。
  2. 首先让图片经过一个网络,输出一个分数(用于判断图片是否真实),同时这个网络也输出一个code,这个code和条件结合起来输入到另外一个网络里,也输出一个分数(图片和文字是否匹配)。

Generative Adversarial Network(生成对抗网络)

  • Stack GAN(叠加生成对抗网络)

第一个网络生成小的图片,第二个网络生成大的图片。

Generative Adversarial Network(生成对抗网络)

  • Image-to-image

传统做法存在的问题就是产生的图片很模糊,是因为它是许多张图片的平均。

Generative Adversarial Network(生成对抗网络)

Conditional GAN的做法就是,generator的输入一张图片和noise z,输出一张图片,discriminator会输入产生的image和input,输出一个scalar。通过算法的迭代,生成下面第三张图片,看起来很清晰,但和真实的图片还是有差异。所以提出了GAN+close,对generator生成的image加上限制,使得生成的image与真实对象越接近越好,得到第四张图片。

Generative Adversarial Network(生成对抗网络)

  • Speech Enhancement(语音增强)

这里和image-to-image原理类似,都是把G的输入和输出作为D的输入。

Generative Adversarial Network(生成对抗网络)

  • Video Generation

Video Generation能够根据影片的前几帧产生后几帧。conditional 为之前几帧的图片。

Generative Adversarial Network(生成对抗网络)

 

到了这里,关于Generative Adversarial Network(生成对抗网络)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GAN(Generative Adversarial Nets (生成对抗网络))

    一、GAN 1、应用 GAN的应用十分广泛,如图像生成、图像转换、风格迁移、图像修复等等。 2、简介 生成式对抗网络是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model,G)和判别模型(Discriminative Model,D)的互相

    2024年02月04日
    浏览(37)
  • 生成对抗网络 – Generative Adversarial Networks | GAN

    目录 生成对抗网络 GAN 的基本原理 非大白话版本 第一阶段:固定「判别器D」,训练「生成器G」

    2024年04月15日
    浏览(45)
  • 深度学习7:生成对抗网络 – Generative Adversarial Networks | GAN

    生成对抗网络 – GAN 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频。我们手机里的照片处理软件中就会使用到它。 目录 生成对抗网络 GAN 的基本原理 大白话版本 非大白话版本 第一阶段:固定「判别器D」,训练「生成器G」 第二阶段:固定

    2024年02月11日
    浏览(57)
  • AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)

    我们已经学习了如何构建生成对抗网络 (Generative Adversarial Net, GAN) 以从给定的训练集中生成逼真图像。但是,我们无法控制想要生成的图像类型,例如控制模型生成男性或女性的面部图像;我们可以从潜空间中随机采样一个点,但是不能预知给定潜变量能够生成什么样的图像

    2024年02月04日
    浏览(49)
  • GAN(Generative Adversarial Network)作为深度学习领域中的一种生成模型,近年来在图像、音频等多种模态数据上取得了良好的效果。其核心思想就是通过博弈论中的对抗训练方式

    作者:禅与计算机程序设计艺术 GAN(Generative Adversarial Network)作为深度学习领域中的一种生成模型,近年来在图像、音频等多种模态数据上取得了良好的效果。其核心思想就是通过博弈论中的对抗训练方式,让两个网络(一个生成网络G和一个判别网络D)互相竞争,不断提升

    2024年02月07日
    浏览(48)
  • Generative Adversarial Network

    Goodfellow, 2014年 文献阅读笔记--GAN--Generative Adversarial NetworkGAN的原始论文-组会讲解_gan英文论文_Flying Warrior的博客-CSDN博客 启发:如何看两个数据是否来自同一个分布? 在统计中,two sample test。训练一个二分类的分类器,如果能分开这两个数据,说明来自不同的分布;反之来

    2024年02月16日
    浏览(59)
  • VQGAN(Vector Quantized Generative Adversarial Network)模型简介

    论文:Taming Transformers for High-Resolution Image Synthesis VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型,可以将图像或文本转换为高质量的图像。该模型是由 OpenAI 研究团队在 2021 年发布的。 VQGAN 模型使用了两个核心部分:Vector Quantization (VQ) 和 GAN。其中 VQ 是

    2024年02月08日
    浏览(43)
  • AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

    我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。 GAN 的模型架构和训练过程具有很高的灵活性,通过改进 GAN 架构设计和训练过程,研究人员提出了多种不同的网络架构,本节中,我们将介绍 ProGAN ( Progressive Growing Generative Adversarial Net

    2024年04月09日
    浏览(41)
  • AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

    StyleGAN ( Style-Based Generative Adversarial Network ) 是于 2018 年提出的一种生成对抗网络 ( Generative Adversarial Network , GAN ) 架构,该架构建立在 ProGAN 基础之上。实际上, StyleGAN 与 ProGAN 的判别器是相同的,只有生成器发生了变化。本节中,我们将介绍 StyleGAN ( Style-Based Generative Adversari

    2024年04月11日
    浏览(51)
  • 论文阅读:FusionGAN: A generative adversarial network for infrared and visible image fusion

    @article{ma2019fusiongan, title={FusionGAN: A generative adversarial network for infrared and visible image fusion}, author={Ma, Jiayi and Yu, Wei and Liang, Pengwei and Li, Chang and Jiang, Junjun}, journal={Information fusion}, volume={48}, pages={11–26}, year={2019}, publisher={Elsevier} } [论文下载地址] Image fusion, infrared image, visible image

    2024年01月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包