GAN生成对抗网络是近几年来最酷的技术,可以做到影像生成。
GAN中的生成器是输入任意一个向量,输出一张图像。输入向量的每个值可能代表着输入图像的某个特征。
GAN不但有生成器,还有一个判别器。输入一张图像,然后对这张图像进行评价这张图像是否真实。
生成器和判别器不断对抗而进化,生成器为了骗过生成器而不断生成更逼真的图像,而判别器也会不断进化使得能够判断出生成器生成的图片。
首先初始化生成器和判别器的参数,用判别器生成一批图像。
然后固定主生成器的参数,训练判别器,要求判别器对于真实的图像给出的分数尽可能高,而对于生成器生成的图像分数尽可能低。
然后固定住判别器的参数,训练生成器,使得生成器输出图像尽可能分数高。
假如没有判别器的时候,其实也可以做到图像生成,这就是自动编码器,首先输入图像,然后经过一个网络训练输出一个向量,这就是编码。然后再训练一个网络,他可以根据生成的编码还原出真实图像,而我们训练的目标就是还原图像和原图像尽可能接近,这个过程就是解码。而这个Decoder,其实就是一个生成器。
自动编码器却存在一些问题,例如一个向左的1的编码和一个向右的1的编码取平均并不一定是一个正的1,因为神经网络是非线性的,产生的结果可能是非线性的,为了解决这种问题,就有了变分编码器。