论文地址:glow

终于开始总结流模型的最终成熟版--glow。数学原理跟NICE和RealNVP基本一致,主要是在网络模型上进行了优化。

一、论文概述

1、摘要部分指出了流模型吸引人的地方,对对数似然精确的计算和潜在变量精确的推断,以及训练和合成的并行性。glow模型在之前流模型的基础上采用了可逆的1 x 1卷积核对输入数据进行打乱,简化了网络模型。

2、在背景知识介绍上,主要介绍了流模型背后的数学原理,通过选取三角矩阵简化对雅克比行列式求值的难度。具体可以参考关于流模型的第一篇博客NICE

3、在第三部分具体介绍glow模型,单步流的第一步是Actnorm层,通过Acrnorm层对数据进行规范化处理,采用每个通道的缩放和偏差参数进行**,使得小批量的数据在**后具有零均值和单位方差,而且这两个参数可以进行训练。相当于对数据进行了预处理,避免网络性能的下降。

第二步是可逆的1x1卷积核,目的是采用矩阵乘法实现对各个维度数据的打乱,使信息混合得更加充分,同时采用1x1的卷积核使得参数矩阵可以训练。在其中还涉及到LU分解,使得计算更加方便。

第三步是仿射变换层,训练得出可逆的函数。

整体框架采取了RealNVP的多尺度结构。

论文笔记(六)【Glow: Generative Flow with Invertible 1 x 1 Convolutions】

在table1中给出了详细的数学公式:

论文笔记(六)【Glow: Generative Flow with Invertible 1 x 1 Convolutions】

4、实验部分 

首先是定性实验部分。比较了glow和RealNVP在传统数据集上的表现,Glow在量化指标BPD(bits/dim,压缩每个通道所需的比特数,越小越好)都优于RealNVP模型。同时在对数似然(越大越好)上与传统的生成模型(VAE和自回归模型)进行比较。

在实验中,耦合层采用三层卷积层,前两层采用ReLU**函数,第一层和最后一层是3x3的卷积核,中间一层是1x1的卷积核,每层都是512个通道数,所以输入和输出的大小相同,有利于进行深度训练。

在实验中对置换操作进行了比较,分别采取了直接反转(reverse)、固定(不参与训练)的随机置换(shuffle)、1x1可逆卷积核三种方式,同时在不同的耦合层进行实验。采用1x1可逆卷积核可以取得最低loss,而且收敛最快。

定量实验应该是属于glow的编码部分。

定性实验部分算是属于生成部分,主要是包括图像生成、插值和控制生成。插值部分通过将真实照片编码,对潜在变量进行线性插值生成图片,整个过程是比较顺滑的。控制生成是根据标签的差值(如微笑的平均潜在变量-不笑的平均潜在变量)进行控制,相当于很小程度的监督。

这里需要注意的是使用了退火参数(reduced-temperature),文章中是选取0.7效果比较好。

对于网络的深度L,文章中是选取6效果比较好。

二、感想

glow对潜在变量空间应用的潜力确实比较大,生成效果根据文章来看确实不错,接下来就需要自己来认真看一下源代码,进行实现,估计真正跑起来需要很多时间。

 

相关文章:

  • 2021-07-22
  • 2021-05-05
  • 2021-10-02
  • 2022-02-09
  • 2021-11-10
  • 2021-12-06
  • 2021-09-12
  • 2021-04-14
猜你喜欢
  • 2021-11-24
  • 2021-10-11
  • 2021-12-23
  • 2022-01-21
  • 2021-07-16
  • 2021-11-12
  • 2021-08-03
相关资源
相似解决方案