小白手把手带你入门GAN(生成对抗网络)--前言

1 篇文章 0 订阅
1 篇文章 0 订阅

微信公众号:小白算法
关注可了解更多算法,并能领取免费资料。问题或建议,请公众号留言;

说在前面

本人主修图像处理方向,目前研究生在读。在接触到GAN时被它所惊艳到,在图像处理方面或图像生成等方向,我觉得可以处理更多的事情。而网上对GAN的资料有限,我将斗胆把自己所学的GAN知识分享出来。将零零碎碎学到的GAN知识组建起来,希望多少能给与在摸索GAN或者图像处理、图像生成的小伙伴一点帮助。当然原理部分将借鉴网上资料,以及加上一点自己的见解。今天的文章限于篇幅将会主要集中在原理部分,想继续学习的朋友可以加我们上面的公众号,或者在简书账号:小白算法可以等待更新。近期会有一些自己做的项目以及代码更新出来,敬请期待。

今天的GAN前言部分将借鉴台湾大学李宏毅教授的授课PPT,个人觉得他讲的比较浅显易懂,并遵循着中国学生思考方式。

一、从一个小故事开始说起

男朋友摄影技能进化史

讲生成对抗网络之前,先提一个题外故事叫“男朋友摄影技能培养的成长历程”。这个故事包含了今天的网络算法的思想所在。如果了解到这个“男朋友摄影师”的成长历程故事。就可以了解生成式对抗网络的工作原理。

GAN的种类

好了,我们暂且把故事与网络的联系放一下。现在来对GAN来进行简单介绍。GAN在2014年由Ian Goodfollow提出这个模型后,后面爆发了大量的GAN网络模型的,截止2017年底有接近三百多篇称为GAN的文章出来。研究人员把自己制作的GAN网络模型从A-Z基本命名了一遍,如果大家以后要是创作出新的模型,恐怕都没有什么好名字来命名了。

二、GAN能做什么呢?

GAN基本在各个领域都可以使用,基本可以看成一个通用模型。语音,文字生成,图像生成,包括在三维成像都有稳定的模型。

GAN现阶段的一些应用1

GAN现阶段的一些应用2

三、GAN的原理与开头小故事的联系

这个时候我们可以联系到刚刚开始讲的故事了。分为判别器与生成器,相互博弈。有两个神经网络,生成网络我们就可以看成故事里的男朋友,当一次输入一个随机向量时,生成了一个不知道什么东西的图片。然后这里,判别网络也就是故事里的女朋友,进行对比,发现这个生成的图片与自己理想的照片还是差很远,然后判别网络就把这个生成的图片判别为0,属于最垃圾的那种。然后生成网络开始训练,每一次学的一个特征显示在生成图像上,最后和这个理想图像相差无几。

GAN与女朋友头像的故事

四、生成器(Generator)

生成器就是一个神经网络,或看成一个函数,低维度的向量生成一个高维度的向量。训练完成后的生成器,输入向量每一个元素可以对应图片的一个象征,如图

随机向量的每一个元素代表着生成图像的特征

生成器就可以看成 简单看成一个神经网络,或者看成一个函数。输入一个随机向量,我们就能得到一个输出图像。而这个向量的元素如何与我们的图像特征构建联系,后面白话完整个算法的时候,将给与这个问题答案。

五、判别器(Discriminator)

下面再来讲一下判别器,判别器就可以看成一个打分器。输入为图片,输出的为一个标量,一般是0-1的标量。假如我们输入一张真实图片,放入判别器打分1.0,然后输入一张生成图片打分0.1。

判别器就是一个打分器

判别器也就是一个神经网络,也可以等效看成一个函数。我们输入一个图片,得到相应的得分。

讲完判别器,我们可以综合来看整个GAN的网络模型作用。

这里,第一代生成器,生成的图片经过第一代判别器,很容易与真实图片区分出来。而当生成器按照判别网络的那个标准去训练了第二代网络,这时,第一代判别网络不能再区分真实图片和生成图片了。于是判别网络再从真实图片与假图中学习分类,将两者区别开来,训练出第二代的判别网络。然后不断迭代优化,直到假图完全与真图相同。这里第二代生成器只能骗过第一代判别器,第三代生成器只能骗过第二代判别器。所以两个网络对抗的原因也就是,两个网络不断的优化过程。
第二代生成器可以骗过前一代的判别器

六、白话GAN算法

还是用之前的网络模型讲解算法,先初始化两个网络,进入训练迭代:
**第一步:**固定住G(Generator)网络,不让它进行训练,只训练D(Discriminator)网络,让它将真实图片和假图片分类开来。这里就是将真实图片标记为1,假图标记为0 。
第一步固定G网络(参数固定,不训练G网络),只训练D网络,让D将生成的假图片分类成0,而从数据集里选择出的图片分类为1

**第二步:**固定住D网络,训练G网络。让生成器学会去欺骗判别器。其实这里我们也可以将两个网络看成一个大网络,生成图片这里看成大网络的隐藏层,只是不同的是。每次训练只能训练其中一部分的层数。
第二步固定D网络,训练G网络。让G网络学习去欺骗判别器D,使得让判别器的得分上升
其实这里我们也可以将两个网络看成一个大网络,生成图片这里看成大网络的隐藏层,只是不同的是,每次训练只能训练其中一部分的网络(要么训练G网络,要么训练D网络,不能同时一起训练)。

如果举得这个例子没有明白算法过程,也可以参考论文描述的算法过程。
参考:论文中的算法步骤
初始化D,G网络的所有参数,在每一步迭代中,从数据集中选取一部分样品{x1…xm},然后再产生m个随机向量,高斯分布,经过初始化的生成网络得到数据{X1,…XM}。我们这里用最大化评价函数V来更新判别器参数theta数据。这个过程就是D的学习过程,然后我们再固定住D网络,训练生成网络的参数。

生成结果
最终二次元头像生成结果

总结

其实讲到这里我们还没有回答之前那个问题–**向量的元素如何与我们的图像特征构建联系的?**这个问题,在大多数的GAN论文中都以“解释性差”给我们回避了答案。包括到后来出现的info-GAN加入训练一个隐藏向量c就是用来更好的解释这个问题。
不过依据我个人理解,这个随机向量最终与图像特征联系上,是因为两个网络在相互博弈的过程,就已经让自己的网络层训练的特征与随机向量元素所产生了联系,训练过程也就是特征总结的过程。

如果想了解更多有趣的深度学习算法,你可以选择关注**“小白算法”公众号,我们每周都会有新的算法介绍,并有相关学习资料赠送。有任何建议,也可以给我们留言。
本周赠送
《机器学习-周志华》一书,只需回复219**就可以获取。想获得更多福利,关注公众号后续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值