首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成对抗网络GAN系列(一)--- Generative Adversarial Nets(原始GAN)

生成对抗网络GAN系列(一)--- Generative Adversarial Nets(原始GAN)

作者头像
TeeyoHuang
发布2019-05-26 08:43:22
1.3K0
发布2019-05-26 08:43:22
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434508

GAN网络系列之(一) --- Generative Adversarial Nets

---文末附代码

论文链接:https://arxiv.org/abs/1406.2661

1.简述

作者提出了一个通过对抗过程估计生成模型的新框架,在新框架中同时训练两个模型:一个用来捕获数据分布的生成模型G,和一个用来估计样本来自训练数据而不是G的概率的判别模型DG的训练过程是最大化D产生错误的概率

2.核心思想

生成模型G可以被认为是一个造假团队,试图生产假币并在不被发现的情况下使用它,而判别模型类似于警察,试图查获假币。在这个游戏中的竞争驱使两个团队都在改进他们的方法(生产出的假币越来越真,警察的识别能力也越来越强),直到真假难分为止。

3.具体实现

·为了学习生成器关于数据x上的分布pg, 我们定义输入噪声的先验变量Pz(z),然后使用G(z;θg)来代表数据空间的映射。

·这里G是一个由含有参数θg 的多层感知机表示的可微函数。也就是生成器。

·我们再定义了一个多层感知机D(x;θd)用来输出一个单独的标量。也就是判别器。

·D(x) 代表x 来自于真实数据分布而不是Pg的概率

·训练D来最大化分配正确标签给不管是来自于训练样例还是G生成的样例的概率.

我们同时训练G来最小化log(1−D(G(z))):

在实际的操作中:Rather than training G to minimize log(1 - D(G(z))) we can train G to maximize log D(G(z)).

因为换成这一项能够提供更强的梯度

算法如下:

这里要注意G网络和D网络是分开训练的,也就是训练D网络的时候,尽管会有G(z)作为输入,但是梯度不用回传进G网络,这时候把G(z)看作一个固定的输入即可。

在理论上,这个极小化极大问题的全局最优解为Pg=Pdata

4.示例结果:

这是由输入噪音经过Generator之后生成的图像,可以看到已经很逼近mnist原始数据集了

5.代码

pytorch实现代码:https://github.com/TeeyoHuang/Generative-Adversarial-Nets-pytorch

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GAN网络系列之(一) --- Generative Adversarial Nets
    • ---文末附代码
      • 1.简述
        • 2.核心思想
          • 3.具体实现
            • 算法如下:
          • 4.示例结果:
            • 5.代码
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档