赞
踩
之前老早就听说了GAN,然后对这个方法还不是很了解,想在今后的论文中应用它。因此来学习下李宏毅讲的GAN,记个笔记。视频地址
之前的神经网络的模型大多是给定x,然后通过Nertwork来给定一个y。
但是Generation是给定X和一个简单分布的Z(如高斯分布),然后通过Network 给出一个y的分布,此时这个Network就叫做Generator。
为什么我们需要一个关于y的分布结果,主要是用于有创造力的工作。
(李老师老二次元了QAQ)
首先通过例子来引出GAN,李老师举的例子是动漫人物脸的生成。首先是Generator:
其中的Unconditional generation指的是不用前文提到的x,而只用z的部分来生成y。这里其实生成的y就是一个高纬的向量(如64x64x3),而一张图片刚好就是一个高纬的向量,然后稍微的整理一下就行了。
z通常是一个低纬度的向量,维度一般是自己定义的。然后图中是通过Normal Distribution的方式来采样得到z的,然后generator根据不同的z生成不同的y。至于是要采用Normal Distribution 还是Guass Distribution,不同的Distribution都可以,虽然有差异,但是只要保证你的Generator能够识别这样的分布就行了。
然后就是Discriminator:
Discriminator是一个评判者,这里的输入是一张图片,然后输出是对这个图片的真实性的一个打分。因此Discriminator是一个神经网络,是一个函数,模型是自己定义的。
下面就是举的例子,打分越高说明图片更像是动漫人物。
枯叶蝶和波波鸟之间的一种相互进化的思想。
比如第一代Generator先是产生的任意的图片,然后第一代Discriminator如发现这些图像没有眼睛。然而第二代的Generator要做的就是产生有眼睛的图像然后骗过第一代的Discriminator。然后第一代的Discriminator也会进化,比如发现了还有头发等。然后第三代Generator就产生头发来骗过第二代的Discriminator,如此循环往复,直到Generator产生很像动漫人物的图像。
Adversarial:这里应该说,Generator和Discriminator是亦敌亦友的关系。
第一步:固定Generator的参数,训练Discriminator的参数。主要的方式就是通过Generator产生的图像和本身拥有的Darabase的图像来训练Discriminator.,主要是让Discriminator学会给真实的图像打高分,给虚假的图像打低分。比如像图中那样,真实的都标记为1,假的都标记为0。那么就可以用分类或者回归的方式来解决这个问题。
第二步:固定Discriminator的参数,训练Generator的参数。简单来说可以把Generator和Discriminator两个网络合成一个网络,输入就是如Normal Distribution采样的向量,输出的是一个打分。目的就是最大化打分,只是说这里只更新Generator的参数。
形象的说就是让Generator去骗过Discriminator。
接下来就是不断的重复上述的过程。
李老师做的:
李老师助教做的:
2019 StyleGAN
生成不存在的人:
产生不存在的其他东西
本文只是介绍了GAN的基本概念,介绍了GAN的一些基本思想。值得一说的是,不管是Generator还是Discriminator,它们都是神经网络,至于定义成什么样的框架,什么样的结构需要我们自己来把握。下一篇将介绍一些相关的理论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。