Normalizing Flows
封面图片来自链接。
Brief Introduction
生成模型的目标是构建参数化模型
Flow 模型最早由 NICE[1]提出,后续有许多改进,如 Real-NVP[2], Glow[3], Flow++[4]等。值得一提的是,将 Flow 模型时间连续化可得到连续归一化流 CNF[5]. CNF 可以用 ODE 描述,与 Score-based Models 和 Diffusion Models 有密切的联系,代表工作包括近年的 Rectified Flow[6]和 Flow Matching[7]等。不过本文的内容主要集中在离散时间的 NICE, Real-NVP,Glow 和 Flow++ 上。
Change of Variables
Flow 模型希望构建一个可逆非线性变换
根据概率论的知识,有变量替换公式 (change of variables):
进一步地,当训练完成后,由于
NICE
NICE 的核心设计是 additive coupling layer. 首先将数据
在这样的设计下,可逆性非常容易满足:
可以看见,上分支始终是直接复制前一层,最终也没有发生改变,这不是我们希望的。为此,只需要相邻两层交换上下分支就可以解决这个问题:
堆叠多层 coupling layers 显然并不改变可逆性,且 Jacobian 行列式是每一层 Jacobian 行列式的累乘:
Real NVP
Real NVP 是 NICE 作者的续作,将 NICE 中的 additive coupling layer 改进为了 affine coupling layer. 首先将数据
在这样的设计下,容易知道其逆变换为:
数据划分操作可以由 mask 表示,作者设计了针对图像的两种 masking 方式——棋盘式和通道式,如图所示:
棋盘式 masking 以坐标交替的方式做划分,而通道式 masking 将前一半通道和后一般通道划分成两组。另外,上图还同时展示了压缩操作,将
另外,为了减少计算开销,作者还引入了多尺度架构设计:
其中 stacked coupling layers 表示若干 affine coupling layer 的堆叠,每经过一个 stage 后保留一半输出,另一半继续变换,从而减少参数量和计算量。
Glow
尽管 NICE 和 Real NVP 理论非常吸引人,但是生成效果其实不是很好,而 OpenAI 提出的 Glow 大大提高了 Flow 模型的生成效果。
Glow 的网络架构如下图所示:
可以看见,Glow 整体遵循了与 Real NVP 类似的多尺度架构;另外,在每一个 flow 块中,除了 affine coupling layer 以外,Glow 新引入了两个层—— actnorm 层和可逆 1x1 卷积层。对于输入的图像数据
Glow 的三个核心组件的逆变换和对数 Jacobian 行列式如下表所示:
虽然 Glow 的效果非常不错,但是据说所需计算量极其巨大,OpenAI 用了 40 个 GPU,对于 CelebA-HQ 数据集 (256x256) 训练了 4000 个 epochs……
References
- Dinh, Laurent, David Krueger, and Yoshua Bengio. Nice: Non-linear independent components estimation. arXiv preprint arXiv:1410.8516 (2014). ↩︎
- Dinh, Laurent, Jascha Sohl-Dickstein, and Samy Bengio. Density estimation using real nvp. arXiv preprint arXiv:1605.08803 (2016). ↩︎
- Kingma, Durk P., and Prafulla Dhariwal. Glow: Generative flow with invertible 1x1 convolutions. Advances in neural information processing systems 31 (2018). ↩︎
- Ho, Jonathan, Xi Chen, Aravind Srinivas, Yan Duan, and Pieter Abbeel. Flow++: Improving flow-based generative models with variational dequantization and architecture design. In International conference on machine learning, pp. 2722-2730. PMLR, 2019. ↩︎
- Chen, Ricky TQ, Yulia Rubanova, Jesse Bettencourt, and David K. Duvenaud. Neural ordinary differential equations. Advances in neural information processing systems 31 (2018). ↩︎
- Liu, Xingchao, Chengyue Gong, and Qiang Liu. Flow straight and fast: Learning to generate and transfer data with rectified flow. arXiv preprint arXiv:2209.03003 (2022). ↩︎
- Lipman, Yaron, Ricky TQ Chen, Heli Ben-Hamu, Maximilian Nickel, and Matt Le. Flow matching for generative modeling. arXiv preprint arXiv:2210.02747 (2022). ↩︎