Follow

长文,关于VAE和GAN,为什么神经网络可以创造未存在过的人脸 

VAE,即variational autoencoder。先讲autoencoder,虽然叫autorncoder但是其实包含了编码器encoder和解码器decoder,是对称的。对于一系列类似的数据,例如图片,虽然数据量很大但是其实是符合一定分布规律的,信息量远小于数据量。编码器的目的就是把数据量为n维的数据压缩成更小的k维特征。这k维特征尽可能包含了原始数据里的所有信息,只需要用对应的解码器,就可以转换回原来的数据。在训练的过程中,数据通过编码器压缩再通过解码器解压,然后最小化重建后数据和原始数据的差,训练好了以后,就只有编码器被用作特征提取的工具,用于进一步的例如图像分类等应用中,故称为autoencoder。

垃圾是放错地方的资源,有一天解码器也被拿出来:你既然可以从k维特征向量恢复出一整张图片,那我给你一个随机生成的k维特征向量,看看你能生成什么。然而实际结果显示,autoencoder虽然可以“记住”
见过的照片,但是生成新图像的能力很差。于是有了variational autoencoder。VAE在令k维特征中的每个值变成了符合高斯分布的概率值,于是对概率的改变可以让图片信息也有相应的平滑的改变,例如某个控制性别的维度,从0到1可以从一个男性的人脸开始,生成越来越女性化的人脸。

那么VAE其实还是有很多统计假设的,而且我们要判断它生成的效果如何,也需要评估它生成的数据和原始数据的差距大不大。于是有人丢掉所有统计假设,并且把这个评估真(原始数据)假(生成数据)差异的判别器也放进来一起训练,创造了GAN,生成对抗神经网络。GAN有两个部分,生成器和判别器。生成器从一些随机的k维向量出发,用上采样网络合成大很多的n维数据,判别器就负责判断合成出来的图片是真是假。一开始合成出来的都是意义不明的无规律结果,很简单的判别器就可以分辨出来。生成器发现一些生成的方向,比如有成块的色块,可以骗过判别器,它就会往这个方向合成更多的图片,而判别器发现被骗过去了,就会找到更复杂的特征来区分真假。如此反复,直到生成器生成的结果,判别器已经判断不出真假了,这就算是训练好了。这样训练出来的生成器,可以生成非常逼真,即使是人眼也很难分辨的图片,但是是不存在的。

点击链接,查看当下最先进的神经网络生成的不存在的人脸,每刷新一次就有一张新的:thispersondoesnotexist.com/

当然如果你想要二次元老婆也可以看这个:thiswaifudoesnotexist.net/

· · Web · 1 · 5 · 10

@konatasick 昨晚是自己复习的时候写了一下总结没想到还有不少人转发了(还多了两个粉)其实平时基本都是碎碎念很少写这些,不过会尽量多写一点,这篇估计会整理一下多放点图发公众号

Sign in to participate in the conversation
alive.bar

你好,欢迎使用 alive.bar 社交媒体实例。 alive.bar 仅仅是一个服务器位于美国的网站,它使用了「长毛象(Mastodon)」服务。