GAN的全称是 Generative Adversarial Networks,中文名称是生成对抗网络。原始的GAN是一种无监督学习方法,巧妙的利用“博弈”的思想来学习生成式模型。

1 GAN的原理

  GAN的基本原理很简单,其由两个网络组成,一个是生成网络G(Generator) ,另外一个是判别网络D(Discriminator)。它们的功能分别是:

  生成网络G:负责生成图片,它接收一个随机的噪声 $z$,通过该噪声生成图片,将生成的图片记为 $G(z)$。

  判别网络D:负责判别一张图片是真实的图片还是由G生成的假的图片。其输入是一张图片 $x$ ,输出是0, 1值,0代表图片是由G生成的,1代表是真实图片。

  在训练过程中,生成网路G的目标是尽量生成真实的图片去欺骗判别网络D。而判别网络D的目标就是尽量把G生成的图片和真实的图片区分开来。这样G和D就构成了一个动态的博弈过程。这是GAN的基本思想。

  在最理想的状态下,G可以生成足以“以假乱真”的图片 $G(z)$。对于D来说,它难以判断G生成的图片究竟是不是真实的,因此 $D(G(z)) = 0.5$ (在这里我们输入的真实图片和生成的图片是各一半的)。此时得到的生成网络G就可以用来生成图片。

2 GAN损失函数

  从数学的角度上来看GAN,假设用于训练的真实图片数据是 $x$,图片数据的分布为 $p_{data}(x)$,生成网络G需要去学习到真实数据分布 $p_{data}(x)$。噪声 $z$ 的分布假设为$p_z(z)$,在这里 $p_z(z)$是已知的,而 $p_{data}(x)$ 是未知的。在理想的状态下$G(z)$ 的分布应该是尽可能接近$p_{data}(x)$,G将已知分布的$z$ 变量映射到位置分布 $x$ 变量上。

  根据交叉熵损失,可以构造下面的损失函数:

  $ V(D,G) = E_{x~p_{data}(x)} [ln D(x)] + E_{z~p_z(z)} [ln(1-D(G(z)))] $

  其实从损失函数中可以看出和逻辑回归的损失函数基本一样,唯一不一样的是负例的概率值为 $ 1-D(G(z))$。

  损失函数中加号的前一半是训练数据中的真实样本,后一半是从已知的噪声分布中取的样本。下面对这个损失函数详细描述:

  1)整个式子有两项构成。 $x$表示真实图片,$z$表示输入G网络的噪声,而$G(z)$ 表示G网络生成的图片。

  2)$D(x)$ 表示D网络判断真实图片是否真实的概率 ,即 $P(y=1 | x)$。而$D(G(z))$ 是D网络判断$G$生成的图片是否真实的概率。

  3)G的目的:G应该希望自己生成的图片越真实越好。也就是说G希望 $D(G(z))$ 尽可能大,即$P(G(z) = 1 | x)$,这时 $V(D, G)$ 尽可能小。

  4)D的目的:D的能力越强,$D(x)$ 就应该越大,$D(G(x))$应该越小(即假的图片都被识别为0)。因此D的目的和G的目的不同,D希望 $V(D, G)$ 越大越好。

3 GAN建模流程

  在实际训练中,使用梯度下降法,对D和G交替做优化,具体步骤如下:

  1)从已知的噪声分布 $p_z(z)$中选取一些样本

    ${z_1, z_2, ......, z_m}$

  2)从训练数据中选出同样个数的真实图片

    ${x_1, x_2, ......, x_m}$

  3)设判别器D的参数为 $\theta_d$,其损失函数的梯度为

    $ \nabla \frac{1}{m} \sum_{i=1}^m [lnD(x_i) + ln(1-D(G(Z_I)))] $

  4)设生成器G的参数为 $\theta_g$,其损失函数的梯度为

    $ \nabla \frac{1}{m} \sum_{i=1}^m [ln(1-D(G(Z_I)))] $

  在上面的步骤中,每更新一次D的参数,紧接着就更新一次G的参数,有时也可以在更新 $k$ 次D的参数,再更新一次G的参数。

生成对抗网络(GAN)的更多相关文章

  1. 用MXNet实现mnist的生成对抗网络(GAN)

    用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...

  2. TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成

    生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...

  3. 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...

  4. 生成对抗网络GAN介绍

    GAN原理 生成对抗网络GAN由生成器和判别器两部分组成: 判别器是常规的神经网络分类器,一半时间判别器接收来自训练数据中的真实图像,另一半时间收到来自生成器中的虚假图像.训练判别器使得对于真实图像, ...

  5. 生成对抗网络(GAN)

    基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...

  6. 深度学习-生成对抗网络GAN笔记

    生成对抗网络(GAN)由2个重要的部分构成: 生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器 判别器D(Discriminator):判断这张图像是真实的 ...

  7. 深度学习框架PyTorch一书的学习-第七章-生成对抗网络(GAN)

    参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter7-GAN生成动漫头像 GAN解决了非监督学习中的著名问题:给定一批样本,训 ...

  8. 科普 | ​生成对抗网络(GAN)的发展史

    来源:https://en.wikipedia.org/wiki/Edmond_de_Belamy 五年前,Generative Adversarial Networks(GANs)在深度学习领域掀起 ...

  9. 利用tensorflow训练简单的生成对抗网络GAN

    对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(di ...

  10. 原始的生成对抗网络GAN

    论文地址:https://arxiv.org/pdf/1406.2661.pdf 1.简介: GAN的两个模型 判别模型:就是图中右半部分的网络,直观来看就是一个简单的神经网络结构,输入就是一副图像, ...

随机推荐

  1. 理解Promise的三种姿势

    译者按: 对于Promise,也许你会用了,却并不理解:也许你理解了,却只可意会不可言传.这篇博客将从3个简单的视角理解Promise,应该对你有所帮助. 原文: Three ways of unde ...

  2. CSS字体样式属性

    font-size 字号大小 一般推荐使用相对长度(px ,em),不推荐使用绝对长度(in,cmm,mm,pt) font-family 字体 1.可以同时指定多个字体,中间用英文状态的逗号隔开,英 ...

  3. cf1132E. Knapsack(搜索)

    题意 题目链接 Sol 看了status里面最短的代码..感觉自己真是菜的一批..直接爆搜居然可以过?..但是现在还没终测所以可能会fst.. #include<bits/stdc++.h> ...

  4. Vivox9怎么录制屏幕

    手机怎么录屏是很多手机党一直提出的问题,而且经常发生录制的视频没有声音的现象,现在就给大家推荐一款软件,不仅能完美的录制视频,而且还可以完整的将视频声音录制下来,下面看看Vivox9怎么录制屏幕吧! ...

  5. Nginx 图片服务器

    文件服务器:后台如果是集群,每次请求都会到不同的服务器,所以每台服务器的图片文件等都要做同步处理,才能保证每次用户不管访问到哪台服务器都能获取一样的资源.这种做法开销会很大,专门使用 nginx 作为 ...

  6. Nginx 限制并发连接和并发请求数配置

    Nginx限制并发连接和并发请求数配置   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...

  7. Android 彩色Toast实现

    Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast. Github:https://github.com/imcloudfloating/Desi ...

  8. git 入门教程之安装 git

    安装 git git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行,根据自身环境选择安装. Linux 系统 linux 系统安装软件大致有两种途径,一种是利用 ...

  9. 测者的性测试手册:SWAP的监控

    swap是什么 swap是磁盘上的一块区域,可以使一个磁盘分区,也可以是一个文件,也可能是一个两种的组合.当物理内存资源紧张的时候,操作系统(Linux)会将一些不常访问的数据放到swap里.为其他常 ...

  10. ERP承接新后台优惠规则问题

    一.后台在哪配置优惠规则? 1.设置优惠时间段: 2.添加优惠活动: 关于自动和手动: 自动:创建后,ERP同步数据后即生效.     点餐,活动会自动生效,自动计算金额. 手动:创建后,ERP需要手 ...