PiexlRNN/CNN
使用概率链式法则计算一张图片出现的概率,其中每一项为给定前i-1个像素点后第i个像素点的条件概率分布。此分布通过RNN(LSTM)/CNN来建模,再通过最大化图片x的似然学习RNN/CNN的参数。
无论是PiexlRNN还是PixelCNN,预测时都需要从左上角开始逐个像素点地生成图片,因此预测阶段都比较慢。
变分自编码器(Variational Auto-Encoder,VAE)
自编码器:输入图像通过卷积层(编码器)生成潜在变量,解卷积层(解码器)将潜在变量还原回原始图像。通过减小输入和输出图像的误差,达到非监督学习的目的。
自编码器只能依靠通过原始图像产生潜在变量,而不能随意产生合理的潜在变量。而变分自编码器对编码器添加约束,迫使其产生服从单位高斯分布的潜在变量。那么就可以从单位高斯分布中采样出一个潜在向量,并将其传到解码器,从而生成新的图像。
由于采样操作对 μ 和 σ 是不可导,导致无法进行反向传播。为了解决这个问题,需要用到重参数化的一个技巧:生成一个均值向量一个标准差向量,而非直接生成实值向量。在计算解码网络的误差时,我们只需从标准差中取样,再加上均值向量,就能得到我们的潜在向量。
优点:可直接把生成的图像同原始图像进行对比,这是GAN做不到的。
不足:直接采用均方误差而非对抗网络,所以网络倾向于生成更为模糊的图像。
生成对抗网络(GAN)
GAN有两个主要组成部分,生成器(Generator)和判别器(Discriminator)。生成网络采用随机输入,尝试输出数据样本。生成器产生一个数据,将其送入判别器网络。鉴别网络的任务是接收真实数据或者生成数据,并尝试预测输入是真实还是生成的。
循环k次更新判别器之后,使用较小的学习率来更新一次生成器的参数,训练生成器使其尽可能减小生成样本与真实样本之间的差距。最终理想情况是使得判别器无法判断样本来自于生成器输出还是真实输出。
参考资料: