5.GAN(Generative Adversarial Network)2014年的
适者生存,不断进化
The evolution of generation
这里的Generator没有看过real image,所以它产生的图片是和原有的real image完全不一样的。一代一代更新generate的参数,通过Discriminator(鉴别器)
GAN-Discriminator的训练
先用Generator生成一些图片,Generator和VAE的decoder结构差不多,输入不同的向量,得到的图片也就不一样,然后和真实图片放在一起。
然后输入到Discriminator中,做一个二分类的训练,让其分辨出假图片(0)和真图片(1)
GAN-Generator的训练
刚开始,随机生成一个向量,并输入到Generator中,然后Generator生成一个图片,Discriminator会给出这个图片是真实图片的概率,例如:0.87
然后调节(tuning)Generator的参数,使得Generator的输入在Discriminator的判断越接近1越好。
调整方式:
把两个都看成一个大的NN:Generator +Discriminator=a network
然后使用梯度下降更新Generator的参数。 Using gradient descent to find the parameters of generator。
需要注意的是,调节Generator的参数的同时,要把Discriminator的参数固定住。
GAN-Toy Example
Demo:http://cs.stanford.edu/people/karpathy/gan/
这里的z是一个均匀分布,绿色和蓝色是Generator和Discriminator生成的分布,黑色是实际数据。
上面是训练的过程,注意绿色的分布逐渐向黑色分布靠拢,当然如果参数设置不好,会靠过头,偏向左边。注意看下面的z到x的箭头指向。
例子:CIFAR10的数据集
有一个问题;
就是Discriminator准确率的问题,现在还没有好的办法去解决这个问题。
当然类,gan这个网络仍然存在着很多的问题。