【论文阅读31】DDNF——深度微分同胚的Normalizing Flow

阅读文章Deep Diffeomorphic Normalizing Flows

感觉写得不错,但是引用量很少,我觉得是代码没有开源的缘故

Deep Diffeomorphic Normalizing Flows

心路历程

很长时间没有看过流模型了,这次也看到了许多之前没有接触过的概念,包括很多细节,本来打算这些细节将在文末实验部分单独一一列出,但是太累了不写了,需要的时候自己看看吧

另外文章中介绍了不少以往的模型,这些也不介绍了,以后见到慢慢补充

文献简介

  • 作者信息

    一作是微软的工程师Hadi Salman,看了看他的个人主页学术主页,这个人主要是做对抗攻防的,带一点稳健动力系统。其余作者来自弗吉尼亚大学和匹兹堡大学

  • 文献信息

    文献链接:https://arxiv.org/abs/1810.03256

    这篇文章18年挂出来,截至2021/01/12谷歌学术上的引用量是11

  • 文献简述

    这个文章有些意思,它提出了一种新的对流模型的建模DDNF,主要的思想是借用ODE中每个state可以看成流模型中隐变量的多次映射过程,即 $z_0\rightarrow z_1\rightarrow\cdots\rightarrow z_n$,那么隐变量的每一步更新看成ODE的积分过程,这个过程可以进一步反应在抽象出来的流形上,如下图所示:

我想把它对于流模型的建模步骤归纳为:

graph LR
A(DDNF
Deep Diffeomorphic Normalizing Flows) -->B(Idea
介绍微分同胚和ODE之间的关联) A -->C(DDNF的结构
主要是建模过程,模型设置) A -->D(Jacobi计算
泰勒展开以及行列式的迹估计) A -->E(正则引入
有两种方法改善模型效果,分别是测地正则和逆一致正则)

基本任务——对归纳偏执建模

写总结的时候发现还是要写像target一样的东西放在前面

对流的建模基本不变,即数据 $X=\{x_1,\cdots,x_N\}$,引入生成模型及其隐变量 $z$,目标是最大似然

现在给出归纳偏置,由于主要是建模隐变量 $z$,试图近似它的后验分布,那么本文假设的是最终的隐变量 $z$ 由一系列可逆变换 $\phi_k$ 作用在初始分布 $q_0$ 上得到,即

之后要写出对应的变分目标,具体的过程就是 $(3)$ 式概率密度函数分解,由

可得分解后的变分目标(其实不难,就是要写半天。。。)为

因此,DDNF的目标其实就是针对这一系列的可逆变换设计流模型,进一步引入微分同胚保持可逆和光滑性,而这恰好引入了ODE-Net的思想

Idea——微分同胚如何引入

这要联系ODE中连续流的概念,并结合美妙的黎曼几何。如文首所述:

主要的思想是借用ODE中每个state可以看成流模型中隐变量的多次映射过程,即 $z_0\rightarrow z_1\rightarrow\cdots\rightarrow z_n$,那么隐变量的每一步更新看成ODE的积分过程,这个过程可以进一步反应在抽象出来的流形上

具体设置为(细节拜拜,反之就是Hilbert空间假设,然后随便推导),每个可逆变换 $\phi_k:\Omega\rightarrow\Omega$,其中 $\Omega\subset\mathbb{R}^d$,就是切向量之间的映射,设 $\Omega$ 的切丛(从这里看出它把 $\Omega$ 直接看成带有内积的流形了,不妨当成黎曼流形就好)的完备化空间为 $V\overset{def}{=}H^s(\mathcal{T}\Omega)$,$s$ 代表切向量的几阶导存在,且都默认二次可积。总之,完备化+黎曼流形就瞎推了

那么关键来了,之前说隐变量的前进过程看成ODE上的积分过程,这需要切向量在流形上的平行移动(其实就是积分),所以先要模拟切向量,这里设其形式为一般的可随时间变化的切向量 $v(t,\cdot):[0,1]\rightarrow V$,应该是指流形上每一点处可以得到与时间相关的切向量。那么隐变量的每一步更新看成ODE的积分过程

这样,如果能用像ResNet之类的网络模拟一阶导 $v$,那么ResNet输出的就相当于积分后的方程,输出的是 $\phi_k$;那么再配合上RNN之类的结构把这一系列变换 $\phi_k$ 串起来,那就是整个流的建模过程了

最后再声明,上述建模过程说得很轻巧,看起来也比较合理,那有没有理论保证,你这个就一定行呢?有的,参考原文第3页左下角部分,大概就是

  • 前人结论:
    • 若 $v$ 充分光滑,那 $\phi$ 就相当于微分同胚
    • 这样的flow中的Jacobi行列式总是非负的(为0不就gg,估计有trick处理,阈值截断什么的
  • 原作者总结的性质:
    • 一系列微分同胚 $\phi_k$ 保持代数运算,它们在代数群上✅
    • 假定空间存在合适的内积,那就成为黎曼流形,进一步可以引入测地线概念,引入测地正则✅

网络结构——RNN+ResNet(ODE-Net)

这个部分本来以为挺难,但是读完了发现文章中图2真是一图胜千言。我解读了三次此网络,前两次应该都错了!后一次就是总结出来的┭┮﹏┭┮

首先,观察最下面的图,这就是整个流的建模过程,即通过 $K$ 个可逆微分同胚变换,$\{\phi_{k}\}_k$ ,它把初始化的隐变量 $z_0$,逐步映射到最终目标隐变量 $z_K$。因此,最下面的图中每个block都是在流形上某点$z_k$处切空间中进行积分的过程。且注意到在每个切空间 $T_{z_k}\Omega$中,切向量都是不同的,因此每步变换中的切向量或者说速率不同!

其次,如上图中间的图表示,中间的图整个是一个积分过程,表示一步可逆变换 $z_{k+1}=\phi_{k+1}(z_k)$。整体是RNN模型,其中有 $T$ 个block,指的是 $T$ 个ResNet block,$T$ 指的是从 $z_k$ 到 $z_{k+1}$ 的积分过程中离散近似的小区间数目,RNN就是把这离散的过程叠加循环起来。且为了方便,建模时考虑使用不随时间变化的stationary向量场,即每个block使用相同的向量场,图中记为 $v^k$ 是很合理的。此时,整个一步积分是自治方程 $(8)$ 的求解过程,,解出来其实是指映射 $\phi^{v_k}=exp(v^k(t,\cdot))=exp(v^k(\cdot))$,如果考虑实验中的近似手段 $T$ 个block的结果叠加,那就是 $\phi^{v_k}=exp(v^k(\cdot)/T)^T$

最后是最上面的模型,即具体一步积分中一个小区间的近似过程,为一个ResNet block,其中使用多少层,每层宽度多少是可以调整的。我记的没错的话,本文实验多使用的结构只有两层,每层只有两个神经元,目的是验证即使结构简单,其表达能力也很强,这将会验证基于ODE的微分同胚流的模型是优异的


这样模型就讲完了,下面介绍为什么使用ResNet的结构,计算Jacobi会用到,但是这和以前我看的不一样,我记得以前看过哪篇文章,用ResNet的结构会使Jacobi呈现行列式为1的形式,进一步微调使之变化(好像是这样,忘了)。这里计算Jacobi不太一样

本文的思路是借用ResNet中恒等映射的存在作泰勒展开近似估计Jacobi行列式:

其中最后一步我没有推出来,现在不推了,日后需要再搞。只知道是在 $B=0$ 处二阶泰勒展开,三次及三次以上都近似忽略掉,然后用迹估计的方法即可

所以使用ResNet的结构并引入泰勒展开,目的是降低Jacobi计算的复杂度,一般来说根据模型结构,有 $T$ 个Jacobi的行列式需要计算,所以计算复杂度可看成 $\mathcal{O}(Td^3)$,而转化为 $(15)$ 式后,除了矩阵 $\mathcal{J}v$ 的存储外,迹的计算复杂度只有 $\mathcal{O}(d)$,而近似方法中需要 $M$ 常数次采样,因此最终复杂度由 $\mathcal{O}(Td^3)$ 降低到 $\mathcal{O}(Md)$,的确是比较大的进步!

微分同胚流的其它亮点

流的逆简易计算

流的逆一般需要好求,这往往需要对网络的结构进行限制,本文表示,由于限定每一个可逆映射中的切向量是stationary的,所以求解出来直接就是指数映射,所以逆回去的时候也指数逆回去就好了,即 $\phi^{v_k}=exp(v^k(\cdot)/T)^T$ 逆为 $(\phi^{v_k})^{-1}=exp(-v^k(\cdot)/T)^T$

两种正则有效

在最后,本文指出可以引入正则增强模型的性能,有两种:

  • 测地正则,即 $v_0$ 和 $v_K$ 的测地距离尽可能小,原理大概就是测地线喵喵咪

    其中 $G$ 是黎曼流形的度规矩阵,实际操作的时候用欧氏空间的单位阵即可

  • 逆正则,即逆回去得到的 $\phi^{-1}(z_K)$ 与初始的变量 $z_0$ 要恢复好

实验简介

文章的一个不错的地方是实验很充足,我都看了,但是不想写细节了,细节也忘了,需要的时候再回顾吧,写累死了。。。

有哪些有意思的实验:

  • 文中图7,模拟数据验证性能可以逼近分布
  • 文中图4和图6,分别是toy和真实数据中变量分布的逼近,与其它几个模型对比,优势体现在不需要ResNet太多层等
  • 文中图5和图8,两种正则的效果,看起来不错
  • 文中表1,MNIST和Omniglot数据上的实验,大模型套的VAE,DDNF用来建模隐变量,似乎效果不错,只是说的好少?

优缺点简析

模型优点(根据原文所述):

  • 所提的微分同胚流 $f$ 保持了微分同胚的性质,$f$ 可逆,且 $f$ 与 $f^{-1}$ 都光滑
  • 流的建模引入ODE的概念,流的部分变化过程由可与时间相关的向量场 $v(t,\cdot)$ 完成,此向量场由ResNet模拟
  • 流的建模还引入了RNN来近似整个流的变化,结构使得似然推断还行,流的逆易求,隐变量的概率密度也好算
  • 流的建模没有对网络结构有特殊设计
  • 实验充足,据文章说competitive with SOTA
  • 黎曼几何有更多的认识么?

模型缺点:

  • 文章说代码将会开源,这都2021了我搜不到,迷惑
  • 其实还是有很多估计,现在还能记起来的有,ODE积分的离散估计;stationary切向量的使用(但是不用这个就没有指数性质);泰勒展开中只近似到2阶项;Jacobi计算时迹的估计

参考文献

[1] Hadi Salman, Payman Yadollahpour, Tom Fletcher, and Kayhan Batmanghelich. Deep diffeomorphic normalizing flows. arXiv e-prints, page arXiv:1810.03256, 2018.