GAN和VAE都out了?理解基于流的生成模型(flow-based): Glow,RealNVP和NICE,David 9的挖坑贴

生成模型一直以来让人沉醉,不仅因为支持许多有意思的应用落地,而且模型超预期的创造力总是让许多学者和厂商得以“秀肌肉”:

OpenAI Glow模型生成样本样例,在隐空间控制图像渐变

了解基于流的生成模型(flow-based)前,先回顾目前主流的两类生成模型GAN和VAE,David 9文章早已介绍过

VAE与GAN结构比较

GAN简单粗暴,用两个深度网络(判别器D和生成器G)交替学习使得生成器G可以模拟现实生成样本,但是缺陷也是明显的:GAN不能直接了当地给出一个样本的隐分布的表征(你可以生成一个明星,但是你无法马上生成一个“微笑的”或“年轻的”明星),即,你很难用隐变量随意操纵生成的样本,你只知道生成的是任意样本(除非你重新设计GAN,像我们以前谈到的cGAN或者FaderNetworks等等。。)

VAE思路就完全不同,它继承了古老的贝叶斯理论,相信一切的创造可以用抽样后验概率来缔造。

你想创造新样本?好的,但是真实分布空间X 太复杂了,我们先意淫一个后验空间Z吧:

来自论文:DENSITY ESTIMATION USING REAL NVP

只要X空间Z空间是可以相互映射转换,从一个简单Z空间中抽样随机变量z,就能从z生成在X空间中的真实样本x 。注意:VAE不仅是encoderdecoder的简单组合,最终的样本表征不是用深度网络层直接拿出一层隐层,而是用随机变量z去抽样,使随机变量z的空间分布模拟这个隐层分布。这样,VAE的encoder隐层就赋予了Z空间分布的表征意义。但是VAE的表征意义仅仅是针对单个样本的,z没有包含高层语义(比如我要控制生成“微笑的”明星),另外VAE模型本身也难以优化。

知道了GAN和VAE的缺陷,再来了解基于流的生成模型(Glow,RealNVP和NICE)就更自然。

基于流的生成模型两大卖点是:

...阅读更多...加入David9的星球群阅读所有文章:

加入David9的星球群,获得通行密码 , 阅读全文

发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

《GAN和VAE都out了?理解基于流的生成模型(flow-based): Glow,RealNVP和NICE,David 9的挖坑贴》上有2条评论

  1. 我想问一下作者,如何更新可逆转换函数f呢,从代码上来看,可逆函数f是随机初始化的,模型根据极大似然来更新f,具体过程是怎样的?

    1. 具体代码我也是草草过了一下,在optim.py文件中作者定义了一些最优化方式(包括EMA,adam)做更新,可以仔细看看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注