1 Introduction

一小节中讲到了 Latent Variable Model(LVM),VAE。其主要思想就是将隐变量扩充 在上 高维连续的分布,来增强模型的表达能力。而 LVM 模型中的核心困难是 P(X) 计算不出来,因为 P(X)=ZP(XZ)P(Z)dZ,P(X)=\int_{Z} P(X \mid Z) P(Z) d Z,ZZ 的维度过高 P(X)P(X) 算不出来。而根据 Bayesian 公式:
P(ZX)=P(Z)P(XZ)P(X) P(Z \mid X)=\frac{P(Z) P(X \mid Z)}{P(X)}
所以导致 P(ZX)P(Z \mid X) 无法计算。而 VAE\operatorname{VAE} 那章介绍了近似推断的方法, 使用一个简单分布 Qϕ(ZX)Q_{\phi}(Z \mid X) 来近
P(ZX),P(Z \mid X), 其中还使用重参数化技巧来用一个神经网络来代替分布。 而在 VAE 中通过优化变分下界 ELBO 来达到最终优化的目的,而不是直接对 Log 似然函数进行 优化。所以当然会有误差了。那么这将启发我们,可不可以绕过这个 intractable 的 P(Z),使模型变
得 tractable。

2 Flow based Model

什么是flow model 呢?首先用一张图来进行表示:
33 流模型
可以用一个简单的例子来简单的介绍 Flow model。X 可以代表是当前的自己,人是比较复杂的, 所以 XPX(X)X \rightarrow P_{X}(X) 计算非常困难。而一般昨天的我 ZkPZk(Zk),Z_{k} \rightarrow P_{Z_{k}}\left(Z_{k}\right), 比今天要简单一点,但是很有可 能,昨天的我依然很复杂,无法计算。那么,就不但的往前推,到了刚出生的时候 Zo,这时肯定是非常筒单的, Z0PZ0(Z0)Z_{0} \rightarrow P_{Z_{0}}\left(Z_{0}\right) 婴儿的世界里是非黑即白的,此时的分布很筒单,可以被假设性 N(0,I)\mathcal{N}(0, I) 。而 这个过程:
PZ0(Z0)PZ1(Z1)PZ2(Z2)PZk(Zk)PX(X) P_{Z_{0}}\left(Z_{0}\right) \rightarrow P_{Z_{1}}\left(Z_{1}\right) \rightarrow P_{Z_{2}}\left(Z_{2}\right) \cdots \rightarrow P_{Z_{k}}\left(Z_{k}\right) \rightarrow P_{X}(X)
就被称为“流”。因为流模型中初始分布是很簡单的。极大似然估计中求的是:arg max P(X)P(X) 。那么下 一个问題就是如何建立 X 和 Z 之间的关系,将 argmaxP(X)arg max P(X) 转换成求关于 P(Zo)P(Z_{o}) 的函数。

3 Change of Variables

假设 X=f(Z),Z,XRpX=f(Z), Z, X \in \mathbb{R}^{p} 。而 ZPZ(Z),XPX(X);fZ \sim P_{Z}(Z), X \sim P_{X}(X) ; f 是一个光滑可逆的函数。
那么可以得到:
ZPZ(Z)dZ=1=XPX(X)dX \int_{Z} P_{Z}(Z) d Z=1=\int_{X} P_{X}(X) d X

根据不定积分的性质可以得到:
PZ(Z)dZ=PX(X)dXPX(X)=dZdXPZ(Z) \begin{array}{c} \left|P_{Z}(Z) d Z\right|=\left|P_{X}(X) d X\right| \\ \\ P_{X}(X)=\left|\frac{d Z}{d X} P_{Z}(Z)\right| \end{array}
X=f(Z)X=f(Z)ff 是光滑可逆的,所以 Z=f1(X),Z=f^{-1}(X), 那么有
PX(X)=f1(X)XPZ(Z) P_{X}(X)=\left|\frac{\partial f^{-1}(X)}{\partial X}\right| P_{Z}(Z)
但是实际上 Z 和 X 都是高维变量,所以 f1(X)X\frac{\partial f^{-1}(X)}{\partial X} 是一个 Jacobian Matrix。熟悉矩阵的朋友应该知道,矩阵代表了一个变换,而矩阵行列式的值则代表了变换的尺度。而在计算中我们关注的是矩阵变换的尺度,所以,
PX(X)=det(f1(X)X)PZ(Z) P_{X}(X)=\left|\operatorname{det}\left(\frac{\partial f^{-1}(X)}{\partial X}\right)\right| P_{Z}(Z)
而最终的目的是想将 PX(X)P_{X}(X) 完全用一个 ZZ 为自变量的函数来表达,所以要将 f1(X)X\left|\frac{\partial f^{-1}(X)}{\partial X}\right|ZZ 来表示。 下面先写结论
PX(X)=det(f1(X)X)PZ(Z)=det(f1(Z)Z)1PZ(Z) \begin{aligned} P_{X}(X) &=\left|\operatorname{det}\left(\frac{\partial f^{-1}(X)}{\partial X}\right)\right| P_{Z}(Z) \\ &=\left|\operatorname{det}\left(\frac{\partial f^{-1}(Z)}{\partial Z}\right)\right|^{-1} P_{Z}(Z) \end{aligned}
这个结论是怎么来的呢?我们来看一个简单的例子,如下图所
33 流模型

如图所示, y=f(x),x=f1(y)y=f(x), x=f^{-1}(y) 。那么有
dydx=f(x)x,dxdy=f1(y)y \frac{d y}{d x}=\frac{\partial f(x)}{\partial x}, \frac{d x}{d y}=\frac{\partial f^{-1}(y)}{\partial y}
而,
f(x)xf1(y)y=1 \frac{\partial f(x)}{\partial x} \frac{\partial f^{-1}(y)}{\partial y}=1
在本文举的例子中,
(f1)(a)=bcac(f)(b)=acbc \begin{aligned} \left(f^{-1}\right)^{\prime}(a) &=\frac{b-c}{a-c} \\ (f)^{\prime}(b) &=\frac{a-c}{b-c} \end{aligned}
很显然有 (f1)(a)f(b)=1.\left(f^{-1}\right)^{\prime}(a) f^{\prime}(b)=1 . 这就是 change of variables theorem。我们可以得到两个变量之间关于 映射 ff 的转换为:
PX(X)=det(f1(Z)Z)1PZ(Z) P_{X}(X)=\left|\operatorname{det}\left(\frac{\partial f^{-1}(Z)}{\partial Z}\right)\right|^{-1} P_{Z}(Z)

么,当训练完成之后,从 P(Z) 中采样比较筒单,通过上述公式,就叶以得到P(X),P(X), 所以 P(X)P(X) 是可求解的。如何学习呢?其实并不难,通过极大似然估计可以得到:
logPX(X)=logdet(f1(Z)Z)1+logPZ(Z) \log P_{X}(X)=\log \left|\operatorname{det}\left(\frac{\partial f^{-1}(Z)}{\partial Z}\right)\right|^{-1}+\log P_{Z}(Z)
那么:
logPX(X)X=logdet(f1(Z)Z)1+logPZ(Z)ZZX=logdet(f1(Z)Z)1+logPZ(Z)Zf1(X)X \begin{aligned} \frac{\partial \log P_{X}(X)}{\partial X} &=\frac{\partial \log \left|\operatorname{det}\left(\frac{\partial f^{-1}(Z)}{\partial Z}\right)\right|^{-1}+\log P_{Z}(Z)}{\partial Z} \frac{\partial Z}{\partial X} \\ &=\frac{\partial \log \left|\operatorname{det}\left(\frac{\partial f^{-1}(Z)}{\partial Z}\right)\right|^{-1}+\log P_{Z}(Z)}{\partial Z} \frac{\partial f^{-1}(X)}{\partial X} \end{aligned}
由于f 的逆很要求,上述梯度的计算还是比较简单的。然而,关于大矩阵行列式的计算并不美丽。后
续有很多针对这点的改进方法,有兴趣的同学自行查看flow based 的论文。
[1] ICLR 2015 NICE-Non-linear Independent Components Estimation
[2] ICLR 2017 Density estimation using Real NVP
[3] 2018 Glow: Generative Flow with Invertible 1×1 Convolutions

4 小结

本章主要介绍的是流模型的主要思想,在Latent Variable Model 经常会遇到后验过于复杂无法求解的问题。流模型绕开了这个部分,对更简单的分布建模,然后建立原分布与简单分布之间的映射关系。个人觉得Stein 变分梯度下降就有点流模型的影子在里面。在建立映射关系是用到了重要的change of variables theorem,并之后介绍了变化后的目标函数和梯度求解方法。

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2021-11-07
  • 2021-10-05
  • 2021-11-04
  • 2021-12-23
猜你喜欢
  • 2021-11-04
  • 2022-12-23
  • 2021-08-12
  • 2021-10-05
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案