-
Component-by-Component 组件(auto-regressive model自回归模型)
从左上到右下一个pixel一个pixel生成的,最佳的生成的顺序无法找到。生成语音这种有顺序性的数据集效果稍微比较好,生成速度较慢。
-
Variational Autoencoder 变分自解码器
不是优化log-likelihood,而是去优化log-likelihood的lower bound,不知道下界与我们想要的差多少
-
GAN 生成对抗网络
不稳定的训练过程
-
flow
输入一个 z,生成器
通常假设z是从很简单的概率分布(e.g. 高斯分布)采样出来的,每次采样出来一个z,把z输入,$G$ 输出对应的x
x会形成一个非常复杂的概率分布
即生成器
常见生成器训练是最大化log-likelihood,也就是从
Flow-based model 直接优化目标函数。
现在有一个函数
函数
其中
假设现有输入输出为 $$ \begin{array}{c} {\left[\begin{array}{c} z_{1}+z_{2} \ 2 z_{1} \end{array}\right]=f\left(\left[\begin{array}{c} z_{1} \ z_{2} \end{array}\right]\right)} \end{array} \tag{1} $$
其
Eq. 1 的逆为
$$
\left[\begin{array}{c}
x_{2} / 2 \
x_{1}-x_{2} / 2
\end{array}\right]=f^{-1}\left(\left[\begin{array}{c}
x_{1} \
x_{2}
\end{array}\right]\right)
$$
其
方阵的行列式是提供有关矩阵信息的 scalar 标量。
- 2X2
2维中A的Determinant意义是面积
- 3X3
3维中A的Determinant意义是体积
根据**Eq. 2**推断有以下倒数性质: $$ \color{#FF3030}\begin{array}{l} \operatorname{det}(\mathrm{A})=1 / \operatorname{det}\left(A^{-1}\right) \ \operatorname{det}\left(J_{f}\right)=1 / \operatorname{det}\left(J_{f^{-1}}\right) \end{array} \tag{3} $$
假设有分布
Input的z上有$z^{'}$,
假设有均匀分布
假设有函数
底变为原来1的两倍2,则高变为原来1的一半1/2,那么两个分布之间的关系如下式子 $$ p\left(x^{\prime}\right)=\frac{1}{2} \pi\left(z^{\prime}\right) $$
现有不常规的概率分布
通过
现在假设把
假设
也就是蓝色方块面积被拉宽到绿色方块,因此两块面积相同
$$
p\left(x^{\prime}\right) \Delta x=\pi\left(z^{\prime}\right) \Delta z
$$
方程两边同时除以
现在
假设蓝色正方形的分布为
上图中
蓝色方块面积与
利用**Eq. 3**的性质转换:
其中 z 是输入(潜在向量),x 是输出,x = f(z)
生成器
如果输入为1000维的数据,他的雅克比矩阵size是1000*1000,计算行列式十分困难,因此需要设计架构使易于计算雅克比矩阵,且可计算
假设真实数据是 $1001003$ ,则输入数据的维度必须和其完全一致。这是flow-based model的一个问题。
由于
则有下式:
$$ \begin{array}{l} p_{1}\left(x^{i}\right)=\pi\left(z^{i}\right)\left(\left|\operatorname{det}\left(J_{G_{1}^{-1}}\right)\right|\right) \
p_{2}\left(x^{i}\right)=\pi\left(z^{i}\right)\left(\left|\operatorname{det}\left(J_{G_{1}^{-1}}\right)\right|\right)\left(\left|\operatorname{det}\left(J_{G_{2}^{-1}}\right)\right|\right) \
\vdots \
p_{K}\left(x^{i}\right)=\pi\left(z^{i}\right)\left(\left|\operatorname{det}\left(J_{G_{1}^{-1}}\right)\right|\right) \cdots\left(\left|\operatorname{det}\left(J_{G_{K}^{-1}}\right)\right|\right)
\end{array} $$ 两边取对数得: $$ \log p_{K}\left(x^{i}\right)=\log \pi\left(z^{i}\right)+\sum_{h=1}^{K} \log \left|\operatorname{det}\left(J_{G_{K}^{-1}}\right)\right| $$ 其中 $$ z^{i}=G_{1}^{-1}\left(\cdots G_{K}^{-1}\left(x^{i}\right)\right) $$
目标函数里边只有参数
训练时,从实际数据中采样一些
前项
后项
前项让
当
sample()就是直接在定义的正态分布(均值为mean,标准差std是1)上采样
rsample()不是在定义的正态分布上采样,而是先对标准正态分布
import torch
from torch.distributions import Normal
mean=torch.Tensor([0,2])
normal=Normal(mean,1)
c=normal.sample()
print("c:",c)
# c: tensor([-1.3362, 3.1730])
a=normal.rsample()
print("a:",a)
# a: tensor([ 0.0530, 2.8396])
print("clog_prob:",normal.log_prob(c).exp())
# clog_prob: tensor([ 0.1634, 0.2005])
NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION
RealNVP: DENSITY ESTIMATION USING Real NVP
input为D维的向量
那么实际训练时,输入变为
输入为
左上角矩阵,是单位矩阵。输入(浅绿)输出(浅蓝)完全相同。
右上角矩阵,是全零矩阵。输入(深绿)不会影响输出(浅蓝)。
左下角矩阵,是什么没影响。左上角为单位矩阵,右上角为是全零矩阵。则整个雅克比矩阵
右下角矩阵,是对角矩阵。由
因此整个雅克比矩阵的行列式为右下矩阵的对角元素之积,如下式: $$ \begin{array}{l} \operatorname{det}\left(J_{G}\right) &=\frac{\partial x_{d+1}}{\partial z_{d+1}} \frac{\partial x_{d+2}}{\partial z_{d+2}} \cdots \frac{\partial x_{D}}{\partial z_{D}} \ &=\beta_{d+1} \beta_{d+2} \cdots \beta_{D} \end{array} $$
把这些 coupling layer 叠加起来
但是有问题是,前
因此将其方向转一下,第一个 coupling layer 先复制前半部分,第二个 coupling layer 复制后半部分,第三个 coupling layer 再复制前半部分。如下图
怎么把image拆成两部分输入流模型?
-
image 里的 index 偶数部分直接复制,奇数部分通过
$x_{i>d}=\beta_{i} z_{i>d}+\gamma_{i}$ 变换 -
image 一般都有 rgb 三个channel,选 channel 复制,选其余 channel 通过变换
GLOW: Generative Flow with Invertible 1×1 Convolutions
输入为
有式
则其雅克比矩阵计算方式如下式: $$ \begin{aligned} &J_{f}=\left[\begin{array}{lll} \partial x_{1} / \partial z_{1} & \partial x_{1} / \partial z_{2} & \partial x_{1} / \partial z_{3} \ \partial x_{2} / \partial z_{1} & \partial x_{2} / \partial z_{2} & \partial x_{2} / \partial z_{3} \ \partial x_{3} / \partial z_{1} & \partial x_{3} / \partial z_{2} & \partial x_{3} / \partial z_{3} \end{array}\right]=\left[\begin{array}{lll} w_{11} & w_{12} & w_{13} \ w_{21} & w_{22} & w_{23} \ w_{31} & w_{32} & w_{33} \end{array}\right]=W \end{aligned} $$
为
全部的输入 z 和全部的输出 x。只有对角线的地方有一个
则灰色部分矩阵的行列式为:
$$
(\operatorname{det}(W))^{d\times d}
$$
如果
将照片通过
收集笑的脸的
https://mp.weixin.qq.com/s/oUQuHvy0lYco4HsocqvH3Q
标准化流能做什么?假设我们想生成人脸,但我们并不知道人脸图片在高维空间
再举一个例子,如果我们有一堆冷漠脸的图片,和一堆笑脸的图片,把多张冷漠脸通过逆标准化流,取平均得到一个向量z1,再把多张笑脸通过逆标准化流,取平均得到向量z2,用z2减去z1得到z3,z3应该就是在z空间中,从冷漠脸区域指向笑脸区域的向量,那我们现在把任意一个冷漠脸的人的图片x拿来通过逆标准化流得到z4,令z5 = z3 + z4,再通过标准化流应该就可以得到这个人笑脸样子的图片了!
一个矩阵的行列式的值表示的是该矩阵对空间所做的变换,将原来的空间放大或缩小了多少倍
比如二维空间在原点有一个边长为1的正方形a,对它做变换得到新的正方形b,$b=Wa$,$ W=\left[\begin{array}{ll}2 & 0 \ 0 & 2\end{array}\right] $,新的正方形边长被放大为原来的2倍,面积为原来的4倍,$det(W)=4$,
三维变为体积,更高维同理
互为逆变换的
假设有一变量
我们可以认为T在通过expand或contract R^D空间来使得pz变得和px相近。雅可比行列式detT的绝对值量化了原向量z附近的体积由于经过T变换后,体积相对变化的大小,即当z附近一块无穷小的体积dz,经过T后被map到了x附近的一块无穷小的体积dx处,那么detT等于dx除以dz,即映射后的体积是原来的几倍,因为dz中包含的概率等于dx中包含的概率,因此如果dz的体积被放大了,那么dx里的概率密度应该缩小
举个例子,假设随机变量
目标是使用简单的概率分布来建立我们想要的更为复杂更有表达能力的概率分布,使用的方法就是Normalizing Flow,flow的字面意思是一长串的
-
$x$ 与$u$ 必须维度相同,因为只有维度相同,下面的变换$T$ 才可能可逆 - 变换
$T$ 必须可逆,且$T$ 和$T$ 的逆必须可导 - 变换
$T$ 可以由多个符合条件2的变换$T_i$ 组合而成
从使用角度来说,一个flow-based model提供了两个操作,一是sampling,即从
两种操作有不同的计算要求,sampling需要能够sample from
https://mp.weixin.qq.com/s/XtlK3m-EHgFRKrtcwJHZCw
构建满足Lipschitz连续条件,且Lipschitz常数小于1的变换F
A为DxD的可逆矩阵,V、W为DxM的矩阵,M<D,有矩阵行列式引理如下 $$ \begin{equation} \operatorname{det}\left(\mathbf{A}+\mathbf{V} \mathbf{W}^{\top}\right)=\operatorname{det}\left(\mathbf{I}+\mathbf{W}^{\top} \mathbf{A}^{-1} \mathbf{V}\right) \operatorname{det} \mathbf{A} \end{equation} $$ 如果A是对角阵的话计算量从左式的 $ \mathcal{O}\left(D^{3}+D^{2} M\right) $ 降到了 $ \mathcal{O}\left(M^{3}+M^{2} D\right) $
Planar flow
Planar flow是一个单层神经网络,只有一个神经元w
$$
\begin{equation}
\begin{aligned} \mathbf{z}^{\prime} &=\mathbf{z}+\mathbf{v} \sigma\left(\mathbf{w}^{\top} \mathbf{z}+b\right) \ J_{f_{\phi}}(\mathbf{z}) &=\mathbf{I}+\sigma^{\prime}\left(\mathbf{w}^{\top} \mathbf{z}+b\right) \mathbf{v} \mathbf{w}^{\top} \ \operatorname{det} J_{f_{\phi}}(\mathbf{z}) &=1+\sigma^{\prime}\left(\mathbf{w}^{\top} \mathbf{z}+b\right) \mathbf{w}^{\top} \mathbf{v} \end{aligned}
\end{equation}
$$
Sylvester flow
将Planar flow推广到有M个神经元W就是Sylvester flow,$ \mathbf{V} \in \mathbb{R}^{D \times M}, \mathbf{W} \in \mathbb{R}^{D \times M}, \mathbf{b} \in \mathbb{R}^{M} $,S(z)是对角矩阵,元素是 $ \sigma^{\prime}\left(\mathbf{W}^{\top} \mathbf{z}+\mathbf{b}\right) $ 的对角线上的元素 $$ \begin{equation} \begin{aligned} \mathbf{z}^{\prime} &=\mathbf{z}+\mathbf{V} \sigma\left(\mathbf{W}^{\top} \mathbf{z}+\mathbf{b}\right) \ J_{f_{\phi}}(\mathbf{z}) &=\mathbf{I}+\mathbf{V} \mathbf{S}(\mathbf{z}) \mathbf{W}^{\top} \ \operatorname{det} J_{f_{\phi}}(\mathbf{z}) &=\operatorname{det}\left(\mathbf{I}+\mathbf{S}(\mathbf{z}) \mathbf{W}^{\top} \mathbf{V}\right) \end{aligned} \end{equation} $$
https://www.zhihu.com/question/376122890
流模型,是我们为了增加非线性能力,需要多个简单变换的复合来增强产生式模型对于分布的拟合能力,公式如下 $ T=T_{K} \circ \cdots \circ T_{1} $ 。由于简单变换
1.基础分布,就是我们转换前的那个分布,可以是高斯分布;用tensorflow框架可以设为base_dist()
2.双射函数,它由三部分构成:
①前向映射 $ x=T(u) $ ,用tf实现前向传播 X = bijector.forward(base_dist.sample())
②反向映射 $ u=T^{-1}(x) $ ,用tf实现评估函数 J = new_dist.log_prob(bijector.inverse(x)) + bijector.inverse_log_det_jacobian(x)
,x为样本,要是双射函数在求解log_prob中有可变的参数,我们就可以用一个优化器来学习参数,最终拟合真实数据。
③雅各比矩阵的逆对数行列式 $ \log \left(\mid \operatorname{det} J\left(T^{-1}(x) \mid\right)\right. $ ,用于评估转换后分布的对数密度。算法通过最大似然估计,把拟合真实数据的分布问题变成拟合变换后的概率的对数密度问题。
NICE RealNVP Glow WaveGlow FloWaveNet Flow++
下面我们讨论两个设计残差流的技术:收缩映射(contractive maps) 和 矩阵求逆引理(matrix determinant lemma)。
收缩映射的代表工作有Behrmann et al. (2019)[12],Miyato et al., (2018)[13]。收缩映射对$g_\phi$ 限制条件是,如果
形象地说contractive性质如下:找到映射F,套上距离函数后A和B的距离是逐渐拉近的,至少拉近因子L倍。我们称F满足李普希兹连续条件。
那么映射F也满足巴拿赫不动点定理Banach fixed-point theorem:如果
逆函数的计算公式也可以由上面推导得出,$ z_{*}=f_{\phi}^{-1}\left(z^{\prime}\right) $ ,其中求逆的速度由压缩因子L决定。我们将L视为获取表达力和计算速度的权衡因子,如下公式决定收敛速度,L越小,整个迭代到
$ \operatorname{map} F: \mathbb{R}^{D} \rightarrow \mathbb{R}^{D} $ is said to be contractive with respect to a distance function $ \delta $ if there exists a constant $ L<1 $ such that for any two inputs $ \mathrm{Z}{A} $ and $ \mathrm{Z}{B} $ we have:
$$
\begin{equation}
\delta(F(\mathbf{z} A), F(\mathbf{z} B)) \leq L \delta(\mathbf{z} A, \mathbf{z} B), \delta(\mathbf{z} k, \mathbf{z} *) \leq \frac{L^{k}}{1-L} \delta(\mathbf{z} 0, \mathbf{z} 1)
\end{equation}
$$
同上文所说,构建
所以通过收缩映射实现残差流是比较容易的,因为可以满足可逆性,逆运算速度快。但缺点是,直接计算雅克比行列式需要
不同于自回归流,其雅克比矩阵是稀疏的,残差流中的收缩映射技术中雅克比矩阵是稠密的,影响了计算效率的同时却允许所有的输入影响输出。因此,流模型表达能力十分强,可以拟合出较好的结果。不过也由于评估模型
流模型提供最基本的两个应用,概率密度计算与采样。此外还可以用在概率模型的建模,推断,监督学习和强化学习这些领域。
流模型不只在建模和推断具有表现,在构建下游任务中也具有很多应用场景,常见的做法是构建产生式模型和预测模型的混合模型。这里介绍监督学习和强化学习。
残差流类的模型,如 Invertible ResNet,被运用在分类任务中。第一篇论文(Gomez et al., 2017[33])作了工程上的改进,通过不需要存储反向传播的激活函数值来减少模型的内存占用。第二篇论文(Jacobsen et al. 2018[34])改进了模型的可解释性和深度学习机制的理解:可逆ResNet在ImageNet上可以训练到和标准ResNet一样的准确率,这一成果可能有助于我们理解在何种程度上丢弃怎样的信息,在深度学习领域至关重要。
混合模型的工作有(Nalisnick et al., 2019[35]),没有采用常见的ResNet架构,而是使用了雅克比行列式易求的架构,设计了联合密度。模型的结构在前
在流模型的发展中,一个里程碑的原理是概率链规则及其与雅克比行列式的体积变换关系。自回归流建立在这两个支柱之上,前者是其表达能力的基础,而后者提供了有效的实现。Banachxed point theorem提供了收缩映射残差流的数学基础,在未来流模型的设计中,残差流将遵守李普希茨连续的条件以不会违背不动点定理。
贯穿本文的是我们始终强调一些关键的实现,能够设计出成功的流模型。也许最重要的是在前向传播和反向传播中的雅克比行列式计算的限制。
展望未来,流模型和众多概率模型一样,存在许多障碍阻止其大范围的应用。但流模型不像其他概率模型采用近似推断策略,总是允许一些可求得解析解的计算甚至在高维度进行精确的采样。这些困难存在于,我们如何在保持精确密度计算和采样计算可处理性的同时设计更灵活,更具有表达力的转换?这是当前很多工作研究的对象,更多的理论研究需要拓展。了解流模型对有限样本和有限深度设置的近似能力将有助于从业者选择最适合给定应用的流类。
https://zhuanlan.zhihu.com/p/378198039
我粗浅将 normalizing flow 分为三类。
我比较关注这一类,因为这一类模型数学上更漂亮 (虽然另外两类更加popular, 这更说明了non-triangular flow比较困难) 。
这一类的思想是,利用线性代数/矩阵的性质使得 $ \operatorname{det} J_{f} $ 容易计算。举几个简单例子:
Planar flow: $ f(z)=z+u h\left(w^{\top} z+b\right) $, $ u, w $ 是向量,$b$ 是标量, $ h: \mathbb{R} \rightarrow \mathbb{R} $. 其 $ \operatorname{det} J_{f}(z)=1+u^{\top} w h^{\prime}\left(w^{\top} z+b\right) $.
Sylvester flow: planar flow 的矩阵推广。$ f(z)=z+A h\left(B^{\top} z+b\right) $, $ A, B $ 为 $ d \times m $ 矩阵,$ m \ll d, b $ 为向量, $ h: \mathbb{R} \rightarrow \mathbb{R} $. 其 $ \operatorname{det} J_{f}(z)=\operatorname{det}\left(I_{m}+\operatorname{diag}\left(h^{\prime}\left(B^{\top} z+b\right) B^{\top} A\right)\right) $ 只用计算一个 $ m \times m $ 矩阵的 determinant. Radial flow: $ f(z)=z+\frac{b}{a+\left|z-z_{0}\right|{2}}\left(z-z{0}\right) $, 以 $ z_{0} $ 为中心进行类似辐射的变换,其 $ \operatorname{det} J_{f}(z)=\left(1+\frac{b}{a\left|z-z_{0}\right|{2}}\right) I-\frac{b\left(z-z{0}\right)\left(z-z_{0}\right)^{\top}}{\left(a+\left|z-z_{0}\right|{2}\right)^{2}\left|z-z{0}\right|{2}} $. Householder flow: $ f(z)=z-2 v v^{\top} z, v $ 是单位反射向量,其 $ \operatorname{det} J{f}(z)=-1 $.
autoregressive, 自回归
这一类的思想是,$ f=\left(f^{1}, \cdots, f^{d}\right) $, 每一个 $ f^{i} $ 都只是 $ z_{1}, \cdots, z_{i} $ 的函数。那么,$ J_{f}(z) $ 将会是一个三角矩阵,这也是为什么被称为 triangular 的原因。由于三角矩阵的 determinant 是对角元乘积,我们有 $$ \begin{equation} \log \left|\operatorname{det} J_{f}(z)\right|=\sum_{i=1}^{d} \log \left|\frac{\partial f^{i}(z)}{\partial z_{i}}\right| \end{equation} $$ 因此很好计算。为了计算 $ f^{-1} $, 我们可以采取一类特殊的变换:
$$ \begin{equation} y_{1}=f^{1}\left(z_{1}\right)=\mu_{1}+\sigma_{1} z_{1} \y_{i}=f^{i}\left(z_{1: i}\right)=\mu\left(y_{1: i-1}\right)+\sigma\left(y_{1: i-1}\right) z_{i} \end{equation} $$ 那么逆可以如下计算
$$ \begin{equation} z_{i}=\frac{y_{i}-\mu\left(y_{1: i-1}\right)}{\sigma\left(y_{1: i-1}\right)} \Rightarrow z=\frac{y-\mu(y)}{\sigma(y)} \end{equation} $$ 这一类模型现在很多变体,本文就不展开了,经典的比如 Real-NVP, IAF, NAF, MAF 等等。WaveNet 也勉强算这一类吧。除此之外,有一类叫 coupling flow layers 的方法在自回归的框架上做了比较大的改动,有近似但不完全 triangular 的 Jacobian, 我也不展开了。
(Neural ODE) 这一类其实和上述 normalizing flow 有比较大的区别。之前讲的都是离散步数的,从 $ f_{1} $ 到 $ f_{T} $. 这一类将整个过程连续化,用微分方程 (ODE) 表示,代表作是 Neural ODE. 整个理论都有改动,包括 $ q_{y}(y) $ 的计算,逆映射的计算都不一样,还涉及数值 ODE 求解。因为差别较大,我先占个坑,有空再专门写写。
今天讨论 non-triangular flow 里面最简单的一类: planar flow. 我们想知道,堆积足够多的 planar layers 能否做到近似任意一个概率分布。这被称为生成模型的 universal approximation 问题,类似于神经网络的 universal approximation (区别下文会讲),是深度学习理论的一个非常基础底层的问题。
问题定义
我们考虑维度
对于一个简单的 latent distribution
我们用 $ f # q $ 表示
先说结论
在 1 维情况下,我在 The Expressive Power of a Class of Normalizing Flow Models 文章的 Section 3 中证明了 universal approximation. 高维情况下,无法证明 universal approximation, 没有完全证否但是说明了非常困难,这一部分就不展开了。完整的结果我写了一个 blog 展示,见 https://ucsdml.github.io/jekyll/update/2020/11/16/expressive-power-normalizing-flows.html.
相关工作
有一个非常重要的 related work, 标题是 ResNet with one-neuron hidden layers is a Universal Approximator. 该文章证明了在函数空间中,每一个 residual block 只有一个 neuron 的 ResNet 是 universal approximator. 其实,这种 ResNet 的定义几乎就是 planar flow 的定义,只有两点不同
- planar flow 需要每一个 planar layer 可逆
- planar flow 作用在概率密度上,因此是泛函而不是简单的函数
除此之外,两者的数学形式是一模一样的。但是,我们为什么不能直接将这个结果拿来用?有两点原因。
- 一个 function class 是 universal approximator 不代表它的可逆函数的子集也是 universal approximator.
- 举例:piecewise constant functions 是所有绝对连续函数的 universal approximator, 但是它没有可逆子集。由于在 resnet universal approximation 那篇论文里,实现 approximation 的方法是非可逆的,不能套用在其可逆子集上。
- 即使一个 function class 在函数空间不是 universal approximator, 不代表其在 transforming distribution 的泛函空间不是 universal approximator (也就是,有可能是 universal approximator).
- 举例:autoregressive flow 用到的 triangular maps, 可以通过 Knothe–Rosenblatt rearrangements 实现概率分布的任意 transformation (page 17, Optimal Transport, Old and New).
iResNet 是集大成之作,数学上简洁而又巧妙,推广了之前的 planar / Sylvester flow, 并且可以利用几乎所有现有的 ResNet 结构。
首先,我们简单回顾一下 ResNet 的定义,其由若干个形如 $ \mathrm{Id}+g $ 的函数堆积在一起,其中 $ \mathrm{Id} $ 是恒等映射,也被称为 skip connection,
我们再回顾 normalizing flow 的两个难点:可逆条件的满足/逆的求解,以及 likelihood / log-determinant of Jacobian 的计算。我们现在分别利用 ResNet 的框架解决这两个难点。这一章节参考了我很久以前写的一篇 blog (http://cseweb.ucsd.edu/~z4kong/files/Invertible_ResNet_Presentation.pdf).
我们增加一个简单的条件,令
$$ \begin{equation} \left|x^{n}-x^{0}\right| \leq \frac{\operatorname{Lip}(g)^{n}}{1-\operatorname{Lip}(g)}\left|x^{1}-x^{0}\right| \rightarrow 0 \end{equation} $$ 进一步,我们还能够证明
$$
\begin{equation}
\operatorname{Lip}(f) \leq 1+\operatorname{Lip}(g), \operatorname{Lip}\left(f^{-1}\right) \leq \frac{1}{1-\operatorname{Lip}(g)}
\end{equation}
$$
这样,我们便理论上解决了第一个难点,给出了求逆的算法以及理论保证。实际使用的时候,如何在 ResNet 中强制
首先,我们将所有的 conv 都看作是特殊的 fc 层,那么 residual block
接下来,当每一个 $ W_{i} $ 的谱范数 $ \left|W_{i}\right|{2} $ 小于1的时候,我们便能保证 $ \operatorname{Lip}(g)<1 $. 而使得一个矩阵的谱范数小于1,只需要每次 normalize 一下就好了,比如令 $ c=0.9 $, 然后 $ W{i} \leftarrow c W_{i} /\left|W_{i}\right|_{2} $.
在 normalizing flow 中,如果 $ z=f(x)=x+g(x) $, 那么 $ \log p_{x}(x)=\log p_{z}(z)+\log \operatorname{det} J_{f}(z) $, 其中 $ J_{f} $ 是
$$ \begin{equation} P S\left(J_{g}, n\right)=\sum_{k=1}^{n}(-1)^{k+1} \frac{\operatorname{Tr}\left(J_{g}^{k}\right)}{k} \end{equation} $$ 来估计 $\begin{equation} \log \operatorname{det} J_{f}=P S\left(J_{g}, \infty\right) \end{equation}$.
在这个框架下,有两个问题。
第一,$n$ 应该取多少。在实际中,$n=5\sim10$ 便能得到不错的精度。当然,我们也需要理论上的保证。我们令 $ e r r_{n}=\left|\log \operatorname{det} J_{f}-\operatorname{PS}\left(J_{g}, n\right)\right|
第二,$ J_{g}^{k} $ 的计算占用很多资源,因为矩阵 [公式] 的行/列数量为 residual block [公式] 的参数个数。我们利用一种矩阵迹的随即近似方法 (Hutchinson trace estimator): [公式]. 基于此,我们可以随机采样一个 [公式], 然后只需要更新向量 [公式], 便能够估计每一个 [公式]. 将这些方法结合起来,我们能写出如下 log-det estimator 的算法
Residual Flow (ResFlow) 在 iResNet 的基础上作了几点改动。
ResFlow 相比于 iResNet 最主要的改进是给出了一个无偏的 log-det estimator. 我们记 $ P S\left(J_{g}, \infty\right) $ 中的每一项为 $ \Delta_{k} $, 即 $ P S\left(J_{g}, \infty\right)=\sum_{k=1}^{\infty} \Delta_{k} $. 接下来,我们利用 Bernoulli 分布 $ \mathcal{B} $ 做一个小 trick. 令 $ b \sim \mathcal{B}(q)
$$ \begin{equation} \sum_{k=1}^{\infty} \Delta_{k}=\mathbb{E}{n \sim p(N)} \sum{k=1}^{n} \frac{\Delta_{k}}{p(N \geq k)} \end{equation} $$ 再代入 iResNet 中的 Hutchinson trace estimator,我们便得到一个无偏的 log-det estimator: $$ \begin{equation} \log \operatorname{det} J_{f} \approx \mathbb{E}{n \sim p(N), v \sim \mathcal{N}(0, I)} \sum{k=1}^{n} \frac{(-1)^{k+1}}{k} \frac{v^{\top} J_{g}^{k} v}{P(N \geq k)} \end{equation} $$
在优化 log-likelihood 的时候,我们需要计算 log-det Jacobian 相对于网络中所有参数的梯度 $ \nabla \log \operatorname{det} J_{f} $.
在 power series 中,便会产生一项 $ \nabla\left(v^{\top} J_{g}^{k} v\right)
由于梯度的计算涉及 $ \nabla J_{g} $ 是二阶导数,对于 Lipschitz-constrained 激活函数,会出现被称为是 saturation problem 的问题。
比如说,当 $ \mathrm{ELU}^{\prime}(z)=1 $ 的时候,其达到最大的 Lipschitz 常数,而此时其二阶导数为 0. 换言之,我们不能同时实现较大的 Lipschitz 常数和非退化的梯度。因此,我们需要一个更好的激活函数 $ \phi $, 满足
- $ \left|\phi^{\prime}(z)\right| \leq 1 $, 即 $ \operatorname{Lip}(\phi) \leq 1 $.
- 当 $ \left|\phi^{\prime}(z)\right| \approx 1 $ 的时候,$ \phi^{\prime \prime}(z) $ 不能渐近消失
本文提出 $ \phi(z)=\operatorname{LipSwish}(z)=\operatorname{Swish}(z) / \operatorname{Lip}( \operatorname{Swish} ) $ 激活函数,为 $ \operatorname{Swish}(z)=z \cdot \operatorname{sigmoid}(\beta z) $ 的 Lipschitz 版本,其中 $ \operatorname{Lip}(\operatorname{Swish}) \approx 1.1 $ 是一个常数。
iResNet 相比于其它的 normalizing flow 模型的特点对比如下图所示。由于其 free-form 的特点,逆和 likelihood 都需要通过算法近似,因此得不到解析的解。至于最后一个指标,在 iResNet 中 log-det estimator 不是无偏估计,这确实算一个缺点,这个问题在后续的 ResFlow 中被解决了。
iResNet 还有一个很有意思的特点,由于其在 ResNet 的基础上没有太大改动,只是增加了一个谱范数的 normalization, 因此在分类任务上,也能够接近 SOTA ResNet. 换言之,iResNet 在有监督的分类任务和无监督的生成任务都有很好的表现,这一点是十分有意义的。
ResFlow 将 iResNet 进一步完善,包括提供了 unbiased estimator. 其生成的质量也相比 iResNet 提升了不少,与 Glow 相当,因此能够被称为 normalizing flow 里的 SOTA, 但是仍然无法与其它模型相比较,甚至还不如更早的 DC-GAN 和 WGAN-GP. 我个人觉得 ResFlow 在数学上十分简洁而对网络结构无需太多限制,是很巧妙的工作,希望有一天能够看到这一类模型达到真正的 SOTA.
iResNet 和 ResFlow 模型,这两个模型的前向过程是一样的,只是 log-det estimator 不一样。ResNet 的表征能力很强,其 skip connection 能带来极大的 expressive power. 可以将 ResFlow 看作是 ResNet 的 invertible subset. 本文介绍对 ResFlow 的表征能力的研究,在文章 (Universal Approximation of Residual Flows in Maximum Mean Discrepancy) 证明了其具有一定 (但不是特别强) 的 universal approximation 性质。
对于 ResFlow 以及相关模型表征能力的理论研究已经有若干篇,大部分是负面的结果。在之前的文章中证明了 1 维上,其能实现 total variance distance 的 universal approximation (https://zhuanlan.zhihu.com/p/378644481 和 https://zhuanlan.zhihu.com/p/379880649). 除此之外,所有的结果都是负面的,即 ResFlow 不可能或者很难表达某些概率分布。