变分自编码器(VAE)(variational autoencoder)
/ vair-ee-AY-shun-ul AW-toh-en-koh-der /
变分自编码器是一种神经网络,它学会把数据压缩成一小组隐藏的旋钮,再把它重建回来——而最关键的是,靠拨弄那些旋钮去生成全新的样本。不妨把它想成:为人脸、手写数字、或分子,学出一个紧凑的「配方空间」。一个编码器把每个输入挤成寥寥几个数字(配方);一个解码器拿着配方,重建出一样貌似原物的东西。用成千上万张人脸训练它,日后你便能把自己编出的配方喂给解码器,凭空造出新的人脸。
使它「变分」、而非一个普通自编码器的,是它不把一个输入编码成单独一个点,而是编码成一小团模糊的云,并且温和地坚持让所有这些云堆叠成一个光滑、井然有序的空间。这份坚持正是回报所在:由于配方空间没有窟窿、没有古怪的缝隙,你可以挑一个随机的配方,或在两个真实配方之间平滑地滑动,解码器一路都会产出合情合理的结果——从一张脸到另一张脸的连续变形。在底层,这个「整洁空间」的目标,正是把变分推断用到一个潜变量模型上。
它为何重要:VAE曾是深度学习与概率之间一座早期而有原则的桥梁,而它那「光滑、可游走的潜空间」的思想,支撑着现代生成建模的大部分。它诚实的局限在于质量:经典的VAE往往产出模糊、被抹平的输出,因为那股让空间变整洁的压力,同时也压抑了锐利的细节。论原始图像的逼真度,扩散模型这类后来的方法已遥遥领先。VAE历久弥新的价值,在于概念上的清晰,以及一个性状良好的潜空间,而非顶尖的锐利度。
用手写数字训练一个VAE。每个数字被映射到一个小小二维配方空间里的一个点;这空间会自行整理,让1聚在一处、8聚在另一处,彼此之间过渡平滑。挑一个落在「3」区与「8」区正中间的点,把它解码,你就得到一个可信的混血字形——一半是三、一半是八。这种平滑的「居间」感,正是VAE的招牌。
VAE那整洁的潜空间,让你能在样本之间平滑变形——代价则是重建结果常常偏模糊。
别在图像质量上过度吹捧VAE:那项赋予它光滑、井然潜空间的正则化,同时也把它的输出推向模糊。它的强项在于有结构、可游走的表示,而更锐利的生成,则是扩散模型与基于GAN的方法的地盘。