【李弘毅MLDS18】GAN 1,introduction

首先是介绍GAN的基本信息

其实GAN是一种生成算法,比如在图像的世界中就是,输入一个向量,之后GAN神经网络就会用这个向量去生成一张图片,在句子生成的世界就是输入一个向量,利用GAN神经网络去生成新的一个句子。在向量不同的情况下,生成的东西也是不同的。

但是这种无条件的生成是没什么意义的,我们以后会学习Conditional GAN,这个的作用是给你一句话,之后应用GAN去生成一个图片或者给神经网络一个图片,之后会生成一个类似的图片。这个我们下次再讨论。

举个例子,输入一个向量,之后进入这个generator(这个可以是一个神经网络,也可以是一个方法),之后就可以生成一个高维度的向量,也就是一个图片。其中生成的高维度向量中的每一个维度就代表图片中的一个特征,比如说第一个维度表示头发的长度,我们将其从0.1调到3,就从一个短头发的到一个长头发的。倒数第二个维度表示头发蓝色的程度,从2.4到5.4,就表示头发真的越来越蓝,最后一个维度表示嘴巴张开的程度。generator的输入时一个向量,而输出时一个图片。

GAN的另一个部分就是Discriminator,他输入时一张图片,输出时一个标量。如果这个generator如果生成一个很真实的图片,那么D就会给予一个比较高的分数(scalar),如果是一个不真实的图片,那么就会给一个比较低的分数。

举个例子就是生成二次元头像,第一排生成两个图片比较好,这时候分数就比较高,第二排生成的图片很模糊,分数就比较低。

其实GAN是一个generator和Discriminator都越来越强的过程。G想变强生成越来越精准的图片,而D想变得更强,从而得到火眼金睛更好的察觉出假图片的漏洞。就好像枯叶蝶(相当于G)和鸟儿(相当于D)的进化过程,最初G是很弱的,可以被D识别,这时候G发生进化,一代的D就无法识别出G,从此以后D也开始进化,可以发现二代的G,这时候G也进化,进化为三代的G,循回往复,G和D都越来越高明,所以生成图片越来越真。

举个例子:生成二次元头像,首先有一个真正头像的数据库,第一代的G生成了一个模糊不清的图片P1,这时候第一代D看到P1,并且和真实的做对比,识别出这个P1是一个假的,这时候就要升级G,升级为G2,G2生成的图片P2再一次的传送给D,这时候D也升级了,D和真实的做对比,发现P2的不足,一直这样迭代,最后就有了清晰的图像。

G和D就像是天敌和猎食者之间的关系,所以叫做生成对抗网络。当然G和D也有别的关系的解读。

其实很多时候也有人说G和D像是学生和老师的关系。

接下来介绍一下GAN的演算法,显示初始化一个database,初试话一个G网络和一个D网络(参数是随机的),之后在每一个训练的回合中都要更新G和D。

先是固定G,去更新D:传入G的向量,G会根据这些向量来生成图片,之后传入D,同时在数据库中的图片也会抽样一些给D。D要做的就是给真实的图片较高的分数,而给G生成的图片较低的分数。

第二步要做的就是固定住D,来更新G。其实就是刚才D给定一个分数以后,固定住D,之后更新G,让D给予G更高的分数。一般来说G和D是一个大的神经网络,大的神经网络有很多层,只是G是前面一半层数,D是后面一半层数。可以想像,这个大的神经网络就是输入一些向量,之后输出一些数值。先是固定后面的G,更新前面的D,之后就是固定住D,之后更新G。

我们来看一下程式:前面蓝色的部分是训练D,后面红色的部分是寻来你G

训练D:先是在数据库中抽样m张图片,之后在噪声集合中抽样m份,用噪声在G中生成m份图片。之后再给D,让D更新参数。更新的公式的意思就是,让真实图片的D值大,让G生成的图片的D值变小,使用梯度上升的方法进行更新。

训练G:再 抽样一堆noise,之后更新参数,参数是为了生成图片的D值越大越好。所以也是梯度上升。

之后在每一个训练的回合都要更新一次。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值