• [PyTorch][chapter 54][GAN- 1]


    前言:

            GAN playground: Experiment with Generative Adversarial Networks in your browser

             生成对抗网络(Generative Adversarial Nets,GAN)是一种基于对抗学习的深度生成模型,最早由Ian Goodfellow于2014年在《Generative Adversarial Nets》中提出.

    生成对抗网络(Generative Adversarial Network)由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机采样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实

    在线工具:

       GAN playground: Experiment with Generative Adversarial Networks in your browser 

    训练效果:

    目录:

    1.    简介
    2.    Generative Adversarial Nets 原理
    3.    损失函数
    4.     训练方法

        


    一 简介

              生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型,用来通过计算机生成数据,由Ian J. Goodfellow等人于2014年提出。模型通过框架中(至少)两个模块:


     

    Discriminative model:  鉴别模型 用于检测样本是来自于模型分布还是数据分布

    Generative model:       生成模型可以被认为类似于伪造者团队.  试图制造假货币并在未经检测的情况下使用,而判别模型是类似于警察,试图发现假币此游戏中的竞争驱动 两个团队都在改进他们的方法,直到赝品与真品难以区分。

    目前主要应用于样本数据生成、图像生成、图像修复、图像转换、文本生成等方向。


    二   Generative Adversarial Nets 原理

    目的:

                  学习一个生成器G,产生的数据分布p_g, 和训练集数据上面的分布

    p_r 一致,让鉴别器Discriminative model 无法分辨输入的数据x 到底是

    真实的,还是Generative model 产生的

           Generator model:

                 生成器模型,简单的多层感知器。

                 输入:

                    一个随机的噪声z \sim p_z(z)

                  输出:

                        x_g=G(z)

              Discriminative model:

                    输入:

                            Trainset 得到的 x_{data}或者 生成器得到的 x_g

                    输出:D(x)

                              D(x_{data}) 判别为1

                              D(x_g)     判别为0


    三  损失函数

       优化的目标函数是:

                             

        分为两部分

                Discriminative  model 优化目标

                 max_{D}V(D,G)=E_{x\sim P_{data}}[log D(x)]+E_{z \sim P_z(z)}[log(1-D(G(z))]

                鉴别器的目标是 : D(x)=1, D(G(z))=0

                                D(x)=1  真实输入,鉴别器输出概率为 D(x)=1

                                D(G(z))  Generator model 输入

                                               鉴别器输出概率为D(G(z))=0,最大化 1-D(G(z))

               Generator  model 优化目标:

                 min_{D}V(D,G)=E_{x\sim P_{data}}[log D(x)]+E_{z \sim P_z(z)}[log(1-D(G(z))]

                 前半部分不需要优化,希望生成的和真实的分布一样,让Discriminative  model

               D(G(z))=1最小化 1-D(G(z)) ,优化目标跟上面相反,所以称为Adversarial 


    四   训练方法

               生成器G  隐式地将概率分布p_g定义为 G(z) 样本的分布

    z \sim p_z时得到的G(z). 

    4.1 训练方法

     通过k次迭代,训练一个  Discriminative  model,

     再 训练一下 Generator model

         训练过程
              第一阶段:固定「生成器G」,训练「判别器G」。使用一个性能不错的判别器
             第二阶段:固定「判别器D」,训练「生成器G」。
             重复第一阶段、第二阶段。通过不断的循环,「生成器G」和「判别器D」的能力都越来越强。最终我们得到了一个效果非常好的「生成器G」,就可以用它来生成数据。
     

    4.2  优化的目标:

                  p_g=p_{data}

                  要使随机输入的数据分布和真实数据分布的概率一致

    ---------------------------待续----------------


    参考:

    GAN的Loss的比较研究(1)——传统GAN的Loss的理解1_传统gan损失函数_田神的博客-CSDN博客

    GAN的loss函数的解读 - 简书

    GAN模型总结_lreaderl的博客-CSDN博客

    GAN模型总结 - 知乎

    常用几种GAN——Loss的理解 - 知乎

  • 相关阅读:
    Spring实例化源码解析之ClassPathBeanDefinitionScanner(五)
    15:00面试,15:08就出来了,问的问题有点变态。。。
    CAN总线负载及CANoe查看总线负载率
    Mysql 三级等保安全加固
    yolov5 优化系列(三):修改损失函数
    设计模式【八】:组合模式
    交换综合实验
    android组件化页面跳转策略
    探索GitHub上的两个革命性开源项目
    IDEA中创建Java Web项目方法2
  • 原文地址:https://blog.csdn.net/chengxf2/article/details/132670339