生成器对应于认知器的逆过程。
这一切的起源都是当初一个极具启发性的思想:Sleep-wake algorithm——人睡眠时整理记忆做梦,是一个生成的过程,即通过最终的识别结果企图恢复接收到的刺激,当然,恢复得到的是梦境而已,那个梦中的视觉、听觉、触觉以及嗅觉等等全和现实有关却也无关。有关是认知层次的有关,无关是表现出的内容的无关。sleep时进行生成,wake时进行认知。这个过程交替进行就构成了sleep-wake算法。它是一个宽松模型,或者说是一个Monte Carlo采样的EM逼近训练过程。它不要求生成的内容和认知的输入严格一致,只要在总体上满足最低构建误差就行(类似于构建主义心理学所描述的学习过程)。
进入正题:
VAE的参考文献:【https://arxiv.org/pdf/1312.6114.pdf】
GAN的参考文献:【https://arxiv.org/pdf/1406.2661.pdf】
Glow参考文献:【https://arxiv.org/pdf/1807.03039.pdf】
VAE中计算源采样空间的分布和学习目标空间的分布的分布损失是通过计算KL散度来近似计算的,但由于无法确知目标分布的特性,实际上只能依靠mean和variance来计算两者之间的分布差异性的下限(ELBO,Evidence lower bound),这导致最终得到的生成模型的分布与实际分布的差异到底有多大,这种近似不是很靠谱。
GAN仅仅训练一个生成器和判别器,隐含状态的表征是未知的,无法控制。效果比VAE要好些,但很难训练。
Glow——可逆变换流则通过训练一个可逆的变换,将源空间映射到一个显式的表征:中间隐藏向量,由于这个过程是可逆的,因此,可以直接从这个中间表征逆向生成符合源空间的采样。
flow-based invertible model的训练难度在三者之间最低,得到的效果目前来说也是最好的。其弊端也许会慢慢的在被广泛应用中被挖掘出来。具体关于Glow的解释可以参见:https://www.colabug.com/3907098.html。
一图解释: