chapter 8 GAN和DCGAN入门

本章主要讲述两部分内容:1)GAN,DCGAN的工作原理;2)DCGAN在tensorflow中的实现;

一、GAN 和 DCGAN 的工作原理

(一)GAN的工作原理

GAN(Generative Adversarial Networks),意为“对抗生成网络”,属于“无监督学习”的一种,可以用来生成不同类型的数据,本章,以生成图片为例,介绍GAN工作原理,及在tensorflow中的实现。
GAN由两个网络构成:(1)G:代表生成网络,它接收一个随机噪声z,通过该噪声生成图片(生成网络是一个“反卷积神经网络”,它的input类似于一个全连接层,它的output为一个image。经过生成网络,相当于是一个由简化繁的过程,这与CNN刚好相反,CNN是由繁(image)化简(fully connected layer)的过程);(2)D:代表判别网络,它是一个“卷积网络”,用来判断Input image是否为真实图片,输出为概率值,理想情况下,如果Input image为real,则P=1,否则P=0。
在训练的过程中,G应尽可能的生成能够以假乱真的图片,而D应能够尽量把G生成的图片和真实图片区别开来,这样,G和D就构成了一个动态的博弈。
这场博弈最理想的结果是,G足以生成能够以假乱真的图片G(z),而D很难判别其是否为真实图片,此时D(G(z))=0.5。此时得到了一个生成式的模型G,他可以用来生成图片。

下面用数学化的语言来描述上述过程:
令:真实图片数据的分布为Pdata(x),它是G能够学习到的真实数据分布;令:噪声z的分布为P(z),P(z)是已知的,而Pdata(x)是未知的;
在理想情况下,G(z)的数据分布应尽可能的接近Pdata(x),即G将已知分布的z变量映射到了未知分布的x变量;

根据交叉熵,我们可以构造GAN的损失函数,如下:
V(D,G) = Ex~Pdata(x) [lnD(x)] + Ez~p(z) [ln(1-D(G(z)))]
Ex~Pdata(x):指直接在训练数据x中取的真实样本;
Ez~p(z):指从已知的噪声分布中取得样本;
对于生成网络G而言,它希望能够生成尽可能以假乱真的图片,因此,它希望V尽可能的小;
对于判别网络D而言,它希望自己的判别能力非常强,因此,他希望V尽可能的大;
那么如何来训练G,D网络呢?我们可以对D,G网络进行交叉训练,具体步骤如下:
step1:从已知的噪声分布P(z)中,选出一些样本{z1,z2,…}
step2:从训练数据中选出同等数量的样本{x1,x2,…}
step3:设D的参数为theta_d,通过梯度下降法,求V关于theta_d的导数,对theta_d更新时,加上该导数;
step4:设G的参数为theta_g,通过梯度下降法,求V关于theta_g的导数,对theta_g更新时,减去该导数;
上述过程,每更新一次theta_d,就接着更新一次theta_g。或者更新若干次theta_d,然后接着更新一次theta_g。具体由实际情况决定。
训练完成后,可以从P(z)中随机取出一个噪声z,经过G以后,即可生成一个近似服从Pdata(x)分布的图片。
以上即为GAN的工作原理;
注:GAN并未对G,D的网络结构做规定,上述“粗线部分”,为DCGAN的定义。

(二)DCGAN的工作原理

DCGAN与GAN的工作原理类似,唯一不同的是,DCGAN中的G,D网络,规定采用深度卷积网络,而GAN中对于G,D网络结构并未作明确规定。
以下为DCGAN中G网络的结构图:

下图为DCGAN的工作原理:

关于DCGAN中,D,G网络的一些细节处理,见下图:

在这里插入图片描述
使用DCGAN网络,可以做很多有趣的事情,除了生成图像以外。还可以对其进行反向利用:将smile_woman的输入噪声 z,减去woman的输入噪声z’,在加上男性的输入噪声z’',将其输入G后,就可以得到一个smile_man,如下图所示:

二、在tensorflow中用DCGAN生成图像

本小节主要是对DCGAN实战code的解析,具体参见:
main.py 训练 or 使用pretrained model的入口文件;
model.py 用于构建DCGAN网络;
download.py 下载training data;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sarah ฅʕ•̫͡•ʔฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值