GAN基本概念(proposed in 2014)
例如:一个能够生成二次元图像的GAN
训练一个generator(G),输入一个vector,输出一个image
同时训练一个discriminator(D),输入一个image,输出一个score,评价image有多真实
两者相互对抗,目标是G生成出足以骗过well-trained D 的图片
训练过程
- 准备一个二次元图像库,随机sample一些vector
- 把vector输入G生成图片,固定G参数,训练D给图像库里真实图片的和G生成的图片分类
- 固定D,训练G使得随机向量生成的图片在D中获得高分
- 回到2-3的循环
- G即为所求
每个输入向量都代表一个输出图像,连续的输入可以得到在某个属性上连续的输出图像
GAN as structured learning
structure learning 代表着输出结构化信息的machine learning,包括图片,文本等
这类学习很难,因为信息空间太大,机器要学会创造没见过的sample,需要有大局观
传统的stuctured learning有bottom up(G)和top down (D)两个方向,结合起来就成为了GAN
G and D necessary?
只有G行不行?
变成了auto-encoder : input图片输入encoder得到vector(code),把vector输入decoder,得到图片,训练使得输入和输出的图片相同,问题是得到的decoder对于连续的输入向量不能得到正确的连续的输出(reasonable image)。
为了解决这个问题有了VAE(variational auto-encoder):encoder产生vector和每个dimension的bias。随机sample一组noise,与bias相乘,加到vector上去,然后再输入decoder,这样可以使decoder能够抵抗一些输入中的noise
但问题是,此处的pixel error充当loss可能会使得decoder牺牲语义来提高像素上的准确,比如像素的空间一致性难以保证,需要比GAN更大的网络。
只有D行不行?
穷举所有的图片,找到在D中得到高分的(给爷爬!)
好吧 假设真的有办法合理的穷举,那如何训练一个好的D,需要大量的假的图片,尽量覆盖图片空间中的所有区域,所以就先训练D,再穷举,再用穷举得到的图片训练D。。。开始循环
以上出现在一些早古graphical model方法中,bayesian network; markov random field之类的
个人猜想:信息的表象是无意义的,有意义的是发布者和接受者之间达成的共识,GAN模拟出了这一过程
评价指标
FID score:表示图有多真实,一般是个挺大的范围