[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 

训练效果:

[PyTorch][chapter 54][GAN- 1]_第1张图片

目录:

    1: 简介

     2:  Generative Adversarial Nets 原理

     3: 损失函数

     


一 简介

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

   生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。目前主要应用于样本数据生成、图像生成、图像修复、图像转换、文本生成等方向。
 

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

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


二   Generative Adversarial Nets 原理

[PyTorch][chapter 54][GAN- 1]_第2张图片

      目的:

              学习一个生成器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

[PyTorch][chapter 54][GAN- 1]_第3张图片

     训练过程
          第一阶段:固定「生成器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的理解 - 知乎

你可能感兴趣的:(pytorch,生成对抗网络,人工智能)