非常详细的GAN(生成对抗网络)原理解读

GAN

  1. 什么是生成?

    生成就是模型通过学习一些数据,然后生成类似的数据

  2. GAN原理

    GAN是如何生成图片?GAN有两个网络,一个是generator(生成图片的网络),还有一个是discriminator(判别网络)。

    在我们训练过程当中,生成网络G的目标就是尽量生成真实的图片去"欺骗"网络D。

    网络D的目标就是区分生成的图片与真实的图片。

    这样就构成的一个"博弈过程"。

    在最理想的情况下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。

    开发者自述:我是这样学习 GAN 的

    如图,首先有一个Generator v1,它生成一些很差的图片,然后有一个Discriminator v1

    ,它能准确的把生成的图片,和真实的图片分类。

    换一句话说,这个Discriminator就相当于一个二分类器,对生成的图片输出0,对真实的图片输出1.

    接着,开始训练出Generator v2,它能生成稍好一点的图片,能够让Discriminator v1认为这些生成的图片是真实的图片。然后会训练出 Discriminator v2,它能准确的识别出真实的图片,和 Generator v2 生成的图片。以此类推,会有三代,四代。。。n 代的 generator 和 discriminator,最后 discriminator 无法分辨生成的图片和真实图片,这个网络就拟合了。

  3. GAN数学描述

    根据paper Generative Adversarial Networks 中的公式

    img

    • 整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。
    • D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。
    • 真实图片集的分布Pdata(x),x 是一个真实图片,可以想象成一个向量,这个向量集合的分布就是 Pdata。
    • G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。
    • D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)
  4. GAN训练

    起初有一个 G0 和 D0,先训练 D0 找到

    开发者自述:我是这样学习 GAN 的

    然后固定 D0 开始训练 G0, 训练的过程都可以使用 gradient descent,以此类推,训练 D1,G1,D2,G2,…

    但是这里有个问题就是,你可能在 D0* 的位置取到了:

    开发者自述:我是这样学习 GAN 的

    然后更新 G0 为 G1,可能:

    开发者自述:我是这样学习 GAN 的

    但是并不保证会出现一个新的点 D1* 使得

    开发者自述:我是这样学习 GAN 的

    这样更新 G 就没达到它原来应该要的效果,如图:

    开发者自述:我是这样学习 GAN 的

    为避免上述情况,我们并不需要更新G太多。

    我们还需要设定两个 loss function,一个是 D 的 loss,一个是 G 的 loss。

    下图是完整的GAN训练流程:

    开发者自述:我是这样学习 GAN 的

如果本文对你有帮助,欢迎点赞、订阅以及star我的项目。
你的支持是我创作的最大动力!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值