稍微的开一个新坑,一样也是入门教程(所以教程的内容不会是从入门到精通,而是从入门到入土)。主要是为了完成数据挖掘的课程设计,而后就把挖掘榔头挖到了GAN网络这里来了。固然,我也是新手上路,若有任何问题,欢迎在评论区留言。git
生成式对抗网络是20年来机器学习领域最酷的想法。 ——Yann LeCungithub
GAN网络全称generative adversarial network,翻译为生成式对抗网络,是一种机器学习方法。由Ian J. Goodfello
等人于2014年在Generative Adversarial Nets 论文中提出。其中在GAN网络中,有两个模型——生成模型( generative model G),判别模型(discriminative model D)。网络
a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that a sample came from the training data rather than Gdom
咱们以生成图片为例子,本教程的最终的目标是实现使用GAN网络生成动漫头像。机器学习
G就是一个生成图片的网络,它接受一个随机的噪声\(z\),而后经过这个噪声生成图片,生成的数据记作\(G(z)\)。学习
D是一个判别网络,判别一张图片是否是“真实的”(是不是捏造的)。它的输入参数是\(x\),\(x\)表明一张图片,输出\(D(x)\)表明\(x\)为真实图片的几率,若是为1,就表明绝逼是真实的图片,而输出为0,就表明不多是真实的图片。spa
在训练的过程当中,生成网络G的目标就是生成假的图片去骗过判别网络D,而判别网络D的目标就是可以分辨出某一张图片是否是由\(G\)生成的。这就变成了一个博弈的过程。同时G和D的能力也在训练的过程当中逐渐提升。在最理想的状况下, 则就是\(D(G(z)) = 0.5\)。翻译
看到一个比较形象的说法:一个生成器(“艺术家”)学习创造看起来真实的图像,而判别器(“艺术评论家”)学习区分真假图像。训练过程当中,生成器在生成逼真图像方面逐渐变强,而判别器在辨别这些图像的能力上逐渐变强。当判别器再也不可以区分真实图片和伪造图片时,训练过程达到平衡。设计
所以,在训练的过程当中,咱们会对判别器和生成器进行学习。code
首先咱们初始化生成器 G,而后输入一组随机向量(Randomly sample a vactor),生成器会根据输入的向量产生一些图片,咱们把这些图片标注成 0(假图片)。同时把已有训练集中真实的图片标注成 1(真图片)。二者同时丢进判别器 D 中,以此来训练判别器 D。使得当输入是真图片的时候,判别器给高分(分数接近于1),而输入假图片的时候,判别器给低分(接近于 0 )。
了解深度学习的同窗应该就知道了,咱们有标记为1的真实图片和标注为0的假的图片,这个时候,咱们就能够很轻易的对\(D\)进行训练(有了\(x\)和\(y\))。
针对于\(D\)咱们有标记为1和0的数据,所以咱们能够对其进行训练。那么对于生成器,有\(x\)(也就是随机噪声\(z\)),那么\(y\)在哪里呢?
对于生成器,咱们的目的是使得其可以生成真实的图片,换句话说,咱们是但愿生成的图片可以骗过\(D\)。那么如何经过判别器来产生所谓的\(y\)??咱们能够这样作:
咱们经过随机向量(噪声数据)经由生成网络产生一组假图片,咱们将这些假图片都标记为 1(也就是说,人为的把假的图片看成真实的),而后将这些假图片输入到判别器中,判别器在对这些图片进行判别的时候,会发现这些图片是假的图片,而后给出低分,这样就产生了偏差(由于标记的为1,可是判别器给了低分)。
所以,在训练生成器的时候,这个网络是串接的。而在训练生成器的时候,一个很重要的操做就是保持判别器网络的参数不发生改变,只是把偏差一直方向传播,传到生成网络那块后更新生成网络的参数,这样就完成了生成网络的训练了。
在完成生成器的训练以后,咱们又能够产生新的假的图片去对判别器进行训练。咱们把这个过程称做为单独交替训练。同时要定义一个迭代次数,交替迭代到必定次数后中止便可。
GAN网络的入门介绍就到这里,下一篇博客将会对GAN网络的原理进行介绍。数据挖掘杀我!!!