GAN原理

GAN 原理

GAN由两个部分组成

  1. Generator 尝试生成看起来可信的数据,产生的数据变为不正确的(negative)的数据
  2. Discriminator 则尝试将generator 生成的看起来可信实则不可信的数据与真正的数据进行对比,病对generator进行penalize。

generator在开始的几次训练中会生成明显不对的数据,随着训练的进行,generator距离具备可以产生骗过discriminator的能力越来越近。
最后 generator 具备了能够产生骗过discriminator的数据的能力,

截图来自 google developers
在这里插入图片描述
在这里插入图片描述

The Discriminator

GAN 中的Discriminator只是一个分类器。 它试图将真实数据与generator创建的数据区分开来。 它可以使用适合其分类数据类型的任何网络架构。

Discriminator 使用 back propagation来进行训练。当discriminator loss或者win,则对其进行训练。在这里插入图片描述

Discriminator的训练数据来源:

  1. 真实数据,比如人类的真实照片等等。discriminator使用这些instance作为正面例子。
  2. 由generator产生的捏造的数据集。discriminator使用这些实例作为negative的例子。

During discriminator training:

  1. Discriminator 尝试分辨generator传来的真实的数据和捏造的数据。
  2. Discriminator loss 惩罚discriminator,因为其将一个正确的实例辨别为fake或者将fake的实例鉴定为正确的,discriminator通过back propagation更新 weights(权重)。

GAN中的Generator部分

  1. 通过吸收discriminator的反馈,GAN中的Generator尝试学习创建fake的数据,学习如何是的discriminator将他的输出鉴定为正确的。
  2. 相比较discriminator,Generator的训练需要Generator和discriminator 更紧密的结合(integration)。

GAN中为Generator 训练的部分包括:

  1. 随机的输入 random input
  2. Generator的网络,他将随机的输入转化为数据实例
  3. Discriminator的网络,尝试辨别由generator产生的数据
  4. Discriminator的输出
  5. Generator loss,如果其生成的数据未能骗过discriminator,则惩罚generator

Random Input

Gan 使用random noise作为input,接着Generator将其noise转变为有意义的输出。我们可以使用GAN来生成很多种类的数据,在其目标的分布中的各种位置。
实验表明输入的noise的在输入中的分布并没有过大的影响,所以我们可以选择一些容易取样的数据,比如uniform distribution. 为了便利,noise取样的空间常常比输出的空间要小。

使用discriminator来训练generator

为了训练神经网络,我们改变网络的权重以减少其输出的错误或损失。然而,在GAN 中,生成器与我们试图影响的Loss没有直接联系。 Generator向discriminator输入数据,discriminator产生我们尝试影响的输出。如果generator产生了discriminator鉴别为fake的sample,Generator的loss会惩罚Generator。

Backpropagation中必须包含一个额外的网络块。 Backpropagation通过计算weight对输出的影响,在正确的方向上调整每个weight——如果改变weight,输出将如何变化。 但是generator的weight的影响,取决于它输入数据的discriminator的权重的影响。 所以backpropagation从最终的输出开始,通过discriminator流回generator。

我们用以下过程训练生成器:

  1. 采样随机噪声。
  2. 从采样的随机噪声中产生生成器输出。
  3. discriminator对Generator的输出 判断其real或者fake。
  4. 计算discriminator分类的损失。
  5. 通过discriminator和generator反向传播以获得梯度。
  6. 使用梯度更改的generator的权重。

这是生成器训练的一次迭代。 在下一节中,我们将看到如何兼顾生成器和鉴别器的训练。

GAN 的训练

因为 GAN 包含两个单独训练的网络,所以它的训练算法必须解决两个复杂问题:

  1. GAN 必须兼顾两种不同的训练(Generator和Discriminator)。
  2. GAN 收敛(convergence)很难识别。

交替训练

Generator和Discriminator有不同的训练过程。 那么我们如何训练 GAN 作为一个整体呢?

GAN 的训练是交替进行的:

  1. Discriminator训练一个或多个epoch。
  2. Generator训练一个或多个epoch。
  3. 重复步骤 1 和 2 继续训练Generator和Discriminator网络。
    我们在Discriminator训练阶段保持Generator不变。 由于Discriminator训练试图弄清楚如何区分真实数据和假数据,因此它必须学习如何识别Generator的缺陷。

同样,我们在Generator训练阶段保持Discriminator不变。 否则Generator将试图击中移动目标并且可能永远不会收敛(convergence)。

正是这种反复的训练让 GAN 能够解决其他棘手的生成问题。 我们从一个简单的分类问题开始,在困难的生成问题中立足。 相反,如果你不能训练一个分类器来区分真实数据和生成数据之间的差异,即使对于初始随机Generator输出,你也无法开始 GAN 训练。

收敛(convergence)
随着Generator通过训练得到改进,Discriminator的性能会变差,因为Discriminator无法轻易区分真假。 如果Generator的训练完全成功,则Discriminator的准确率为 50%。

这种进展对 GAN 的整体收敛(convergence)提出了一个问题:Discriminator反馈随着时间的推移变得不那么有意义。 如果 GAN 继续训练超过判别器给出完全随机反馈的点,那么Generator就会开始使用垃圾反馈进行训练,其自身的质量可能会崩溃。

对于 GAN,收敛(convergence)通常是一个短暂的状态,而不是稳定的状态。

Loss function 损失函数

GAN的损失函数主要有2种

  1. Minimax:
    E x [ l o g ( D ( x ) ) ] + E z [ l o g ( 1 − D ( G ( z ) ) ) ] E_{x}[log(D(x))] + E_{z}[log(1-D(G(z)))] Ex[log(D(x))]+Ez[log(1D(G(z)))]
    在这个函数中:
  2. D(x) 是discriminator对真实数据实例 x 为真实概率的估计。
  3. Ex 是所有真实数据实例的期望值。
  4. G(z) 是给定噪声 z 时generator的输出。
  5. D(G(z)) 是discriminator对假实例为真概率的估计。
  6. E z E_z Ez 是generator的所有随机输入的期望值(实际上,是所有生成的假实例 G(z) 的期望值)。
    该公式源自真实分布和生成分布之间的交叉熵。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CycleGAN是一种用于图像转换的深度学习模型,它可以将一个域中的图像转换成另一个域中的图像,而无需配对的训练数据。CycleGAN原理基于对抗生成网络(GAN)和循环一致性损失。 CycleGAN的核心思想是通过两个生成器和两个判别器来实现图像转换。其中,一个生成器将一个域中的图像转换为另一个域中的图像,而另一个生成器则将转换后的图像再转回原始域。两个判别器分别用于判断生成的图像是否真实以及转换前后的图像是否一致。 具体来说,CycleGAN的训练过程如下: 1. 生成器G将域A中的图像转换为域B中的图像,生成器F将域B中的图像转换回域A中。 2. 判别器D_A用于判断域A中的图像和生成器F生成的图像的真实性,判别器D_B用于判断域B中的图像和生成器G生成的图像的真实性。 3. 通过对抗训练,生成器G和判别器D_A共同学习,使得生成的图像能够以假乱真地欺骗判别器D_A。 4. 同样地,生成器F和判别器D_B也进行对抗训练,使得生成的图像能够以假乱真地欺骗判别器D_B。 5. 为了保持图像转换的一致性,CycleGAN引入了循环一致性损失。即将一个图像通过生成器G转换为域B中的图像,再通过生成器F转换回域A中的图像,应该与原始图像尽可能接近。同样地,将一个图像通过生成器F转换为域A中的图像,再通过生成器G转换回域B中的图像,也应该与原始图像尽可能接近。 6. 最终的目标是使生成器G和生成器F能够同时实现高质量的图像转换和循环一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值