概念介绍
生成模型
生成式模型,给一个概念,然后扩展它的细节。
判别模型例子:幼儿园老师给小朋友2张图片,让他们分辨猫和狗。
生成模型例子:老师告诉小朋友猫和狗的概念,让他们画出来。这个要求就更高了。
MLE
变分子编码器 VAE
绿色部分其实就是图像的压缩。保存了图像的大部分信息。
如果我们自己随便写一个向量来代替绿色训练出来的向量,那么生成的图片将没有任何语义特征。有人就想,如何给假定一个向量,然后可以输出图片呢?这就是自编吗器的由来。
z是高维的,每一维都符合高斯分布。也就是当我们可以生成一个符合的高斯分布,那么从高斯分布抽样出的样本,再decoder解码,就会是一张有语义特征的图片。
所以当我们要学习encoder时候,我们就要去学习隐变量,也就是去学习原来分布的参数(注意,这里是每一维的高斯参数,每一维是不同的高斯分布)。这就是机器学习的本质,用样本数据,去拟合原始数据的分布。
由上图,我们可以举个例子,在警察办案的时候,总是根据人物的特征描述,来画出嫌疑人的样貌。这里就是学习原始图片每一维度的高斯分布进行encoder,最后每一个维度都有一个框架,在这个框架里进行的VAE,最终decoder出来的图片,才是和原图差不多的。
这就通过VAE,增加了训练样本数据。
相对熵是说P(X)和Q(X)差异有多大。如果他们一样,KL散度为0.
JS散度是KL的变体,是对称的。
z那里是reparameterization。就是在0~1分布抽样。
GAN 对抗生成网络
伪造的图片和真实图片分别放进去,让模型判断谁是真的,谁是假的。
判别器希望可以分清真假样本图片。但是生成器却希望它造出来的图片,判别器鉴别不出来。
那么如何让第2代生成器骗过第1代判别器呢?
将第2代的生成器和第1代的判别器连接到一个NN网络中,并且让第2代产生的图片在第1代判别器中,预测为1.
一开始第1代的判别器,可能判别第2代生成器的图片是能叛别出来的,比如0.13.但是由于我们给y设置为1,它的网络就会误认为分对了。这样,通过多次训练,第一代的判别器就无法分别出来了。这时,我们将训练好的第2代生成器生成的图片,当作第2代生成样本图片。
注意,判别器网络参数不能动,只能改变生成器网络参数。
这里为什么用log,是可以将0-1空间,映射到负无穷到0.这样目标函数的范围就大了,差异的凸显了。
关于纳什均衡,是博弈论的知识。所以GAN本质上就是一个零和博弈。
最后蓝线平了,说明判别器最后已经无法判断生成的图片和真实的图片了,只能猜了。
常见改进GAN
DCGAN
可以达到一些有趣的效果,给女士戴墨镜。GAN有很多有趣的玩法。
WGAN
不能让判别器很快的达到最优,这样训练不下去。得给生成器一个成长的空间。不然就会崩掉。
注意KL是因为不平衡,才采用的JS。所以他们两个有密切的关系。所以损失函数KL是正,JS是负,目标函数可以说是不明确,损失函数不稳定。也就没法学习了。
SRGAN
LR低分辨率图像,HR高分辨率的图像。
SRGAN就是生成和原图一样的图片。
超分辨率的GAN。
k是kernel,n是特征图的数量。