0%

Flow based Models

本节将会介绍生成模型中非常典型的一类方法,流模型 。

NICE: Non-linear Independent Components Estimation

  • 对于一个数据分布 x,通过一个可逆映射 f(x), 可以变成另外一个分布y,则两者之间概率密度分布之间的关系为
  • 对于函数f有两个要求:

    • 可逆,且容易求其逆函数
    • 对应的雅可比行列式容易计算
  • NICE采用加性耦合层

    可以算出,对应的雅可比矩阵是下三角阵,且对角元素为1,故而行列式为1,采用多个耦合层相连,可以增加表达能力。

    但是上述存在一定问题,即使多次连接,第一部分仍然是恒等变换,故而作者提出交换顺序来进行耦合。

    NICE

  • 然而,正是由于模型是可逆的,因此最终z和x的维度是一致的,然而实际上,往往数据具有高维空间的低维流形,因此,引入尺度变换层,对于编码出来的每个维度的特征做尺度变换即

    其中s也是要训练优化的参数,可以识别出该维度的重要性,可以起到压缩流形的作用。

    此时行列式变为了 $\Pi_i s_i$

    实际上尺度变换层等价于将先验分布的方差(标准差)也作为训练参数,如果方差足够小,我们就可以认为该维度所表示的流形坍缩为一个点,从而总体流形的维度减1,暗含了降维的可能

  • 实验结果:

    test

REALNVP

  • REAL NVP是在NICE基础上进行改进的结果

  • 仿射耦合层

    此时,对应的雅可比行列式的值为$\Pi_i s(x_1)_i$, 注意,为了保持可逆性,一般将s各个元素约束为大于0.

  • 在NICE中,是交替进行混合信息流,REALNVP则是采用shuffle的方式,将信息充分耦合

    REALNVP

  • 引入卷积层,对于图像来说,随意shuffle会打乱空间之间的相关性,因此作者引入以下几种方式来进行分割

  • 多尺度结构: 启发于VGG网络,有点分形的味道

    scaleMulti

可以得到

并假设$\hat z_1, \hat z_3, \hat z_5$服从标准正态分布,相较于直接输出,条件概率输出具有更大的灵活性。

GLOW

  • GLOW模型是在NICE及REALNVP基础上改的,NICE和REALNVP中采用不同的方式打乱顺序,而注意到向量的置换操作,可以看作是向量乘一个置换矩阵得到的,GLOW中将置换矩阵作为一个可训练的参数矩阵,并因此引入了可逆$1\times1$卷积

  • 另一点是引入ActNorm, 也就是对于z进行缩放平移变换

    其中$\mu$和$\sigma$都是训练参数,在初始化的时候是数据的均值和方差

Variational inference with normalizing flows

  • Invertible Linear-Time Transformations(可逆线性变换层)planar flows

    其中h为线性变换, 则可知

    其中$u^T\psi(z)$是一个数。

  • 改变变换形式,将变换改为将$q_0$绕某一个参考点去变化,

MADE: Masked Autoencoder for Distribution Estimation

参考https://github.com/karpathy/pytorch-made

wavenet: a generative model for raw audio

可参考https://github.com/ibab/tensorflow-wavenet,其中causal conv可以表示为

Improved Variational Inference with Inverse Autoregressive Flow

  • 相比于normalizing flow中常见的planar nf采用mlp的形式,表达能力欠缺,且在更高维度下需要更长的链转换概率密度,因此不适应于高维空间。

  • 算法结构如下

    • 其中AutogressiveNN可以选择很多种,对于MLP类型的,可以选择MADE的形式对于卷积类型的,可采用pixel cnn中的形式,参考https://github.com/pclucas14/iaf-vae

Sylvestrer Normalizing flows for Variance Inference

  • 首先提出Sylvester determinant identity,对于$A\in R^{D\times M}, B\in R^{M\times D}$, 有

  • 对于形如(13)的形式,其中$A\in R^{D\times M}, B\in R^{M\times D}, b\in R^{M}, M<D$根据(1)式可以得到(14),从而降低计算量。

  • 需要解决的问题是,(12)式一般是不可逆的,且行列式不好计算,因此引入QR分解,考虑如下特殊形式

    下面证明可逆:如果$R^A, R^B$是上三角阵,且h是光滑有界的函数,且导数为正,则如果$R^A, R^B$对角元素满足$R^A_{ii}R^B_{ii}>-1/||h’||_{\infty}$,则(15)式可以保证是可逆的

Continuous Normalizing Flow

  • Neural ODE中提出CNF的概念

FFJORD: free form continuous dynamics for scalable reversible generative models

对于CNF,根据neural ode 中有

因此,对于增广状态有,

根据下述重要推论中的第二条,可知

  • 上述对$Tr(A)$估计中的variance渐进趋向于 $||A||_F^2$,为了减少Hutchinson估计器的variance,作者提出用降低维度的方式,设 $f=g\circ h(z)$,则有第二项是$D\times D$维的,第三项则是 $H\times H$维的,如果H是很小的,那么我们就可以减少估计器的方差。

GRU-ODE_Bayes

  • 特点:
    • 快速推断潜在随机过程的位置参数
    • 学习变量中的相关性
  • GRU-ODE包括两部分:
    • GRU-ODE:基于GRU的ODE模型,使得隐状态h能够沿时间传播
    • GRU-Bayes:通过观测数据来更新当前的因状态

GRU-ODE 推导

  • 对于基本GRU单元,其结构如图所示:

    因此,可得隐状态变化为

    可将隐状态微分方程变为

  • GRU-ODE 特性:

    • 有界性: 如果初始状态 $h(0)_j\in [-1, 1]$, 则$h(t)_j$则一直在此界内
    • 连续性: GRU-ODE是李普希兹连续的,且K=2
    • 支持各种数值求解器:例如欧拉解法,中值法等

GRU-bayes

  • 为了用观测值对隐状态进行更新, 并估计$Y(t)$的概率密度函数; 采用标准GRU模块并在[-1,1]内进行变换

  • 定义$f_{prep}$函数对于观测数据进行预处理:(通过隐状态h计算观测值概率密度函数的参数,假设是高斯函数)

    其中$h(t_-)$和 $h(t_+)$为GRU-Bayes前后的状态,因此,状态在此时会有一个跳跃。m是mask‘函数,结果中没有观测值的位置直接置0

  • 目标函数: $Loss_{pre} + \lambda Loss_{post}$

    其中第一项假设的是高斯分布;第二项损失中$p_{Bayes,j} \propto p_{pre,j}p_{obs,j}$, $p_{pre}$为GRU-Bayes之前的预测分布, $p_{post,j}$表示GRU-Bayes之后的预测分布。

  • $p_{Bayes,j} $计算:对于二项式和高斯分布,可以解析表示:实际上,往往观测值的方差$\sigma^2_{obs}<<\sigma^2_{pre}$,此时 $\mu_{bayes}=\mu_{obs}, \sigma_{bayes}^2 = \sigma^2_{obs}$

重要推论:

  • CNF中的结论

  • 假设p(u)是多元概率分布,均值为0,协方差为单位阵,则对于任意矩阵A,有

    证明如下

  • 证明恒等式