第 15 章介绍了生成对抗网络(GANs)。这些生成模型通过深度网络处理潜在变量来生成新的样本。GANs 的训练原则是让样本与真实数据难以区分。然而,它们并没有定义在数据样本上的分布,因此不容易评估新样本属于同一数据集的概率。
本章将讨论标准化流(Normalizing Flows)。这种方法通过深度网络将简单的分布转化为复杂的分布,从而学习概率模型。标准化流不仅能从该分布采样,还能计算新样本的概率。但它们需要特定的架构设计,即每个网络层都必须是可逆的,这意味着数据转换能够双向进行。
标准化流(Normalizing Flows)是概率生成模型,它们通过拟合训练数据来建立概率分布(见图 14.2b)。考虑建模一维分布 Pr(x)。标准化流以一个简单、易于处理的基础分布 Pr(z) 作为起点,这个分布基于潜变量 z,并应用函数 x = f[z,φ]。这里的参数 φ 被选定,目的是使得 Pr(x) 达到期望的分布(见图 16.1)。生成新的样本
图 16.1 概率分布的转换。a) 基本分布是定义在潜变量 z 上的标准正态分布。b) 该变量经过函数 x = f[z, φ] 转换为新变量 x,进而 c) 形成新的分布。要从该模型抽样,我们需要从基本分布中抽取 z 值(图 (a) 示意了两个抽样过程,分别用绿色和棕色箭头表示)。这些值经过函数 f[z, φ] 的转换,如图 (b) 中的虚线箭头所示,生成 x 的值,在图 (c) 中以箭头形式显示。
衡量数据点 x 的概率更为复杂。设想应用函数 f[z, φ] 到具有已知密度 Pr(z) 的随机变量 z。当函数拉伸其输入的区域时,概率密度会减少;当函数压缩其输入的区域时,概率密度则会增加,以保证新分布下的面积总和为一。函数 f[z,φ] 拉伸或压缩输入的程度,依赖于其梯度的大小。若输入的微小变化导致输出变化较大,则函数发生拉伸;若导致输出变化较小,则发生压缩(见图 16.2)。
更具体地说,数据 x 在变换后的分布下的概率为: $$ Pr(x|\phi) = \left| \frac{\partial f(z, \phi)}{\partial z} \right|^{-1} \cdot Pr(z), \tag{16.1} $$
其中
图 16.2 分布的转换。基本分布(青色,底部)通过一个函数(蓝色曲线,右上)转换,形成模型分布(橙色,左侧)。将基本分布划分为等间隔(灰色垂直线),变换后相邻间隔之间的概率质量保持不变。当青色阴影区域通过梯度大于一的函数部分时,该区域被拉伸;因此,橙色阴影区域的高度降低,以保持面积不变。在其他位置(例如,z = −2),梯度小于一,模型分布相对于基本分布有所增加。
为了从分布中抽样,我们需要使用正向映射
正向映射有时也被称作生成方向。基础密度通常设为标准正态分布。相应地,由于反向映射将关于
图 16.3 逆映射(归一化方向)。如果函数可逆,则可以将模型分布逆转回原始基本分布。模型分布下 x 点的概率部分依赖于基本分布下等效 z 点的概率(参见方程 16.1)。
为了学习这个分布,我们需要找到参数
其中,我们假定数据在第一行是独立同分布的,并且第三行使用了方程 16.1 的似然定义。
前一节通过转换一个简单的基础密度
设想对一个随机变量
根据方程 16.1 的类比,这个分布下的样本似然度为:
这里
在实际应用中,正向映射
反向映射(即规范化方向)则是通过按相反顺序应用每个层的逆
基础密度
正向映射的雅可比可以表达为:
其中
通过对方程 16.5 应用同样的规则,可以找到反向映射的雅可比的绝对行列式,它是正向映射中绝对行列式的倒数。
使用负对数似然标准,我们用数据集
其中
图 16.4 深度神经网络的正向和逆向映射。基本分布(左侧)通过网络层 f1[•, φ1]、f2[•, φ2] 等逐渐转换,形成模型分布。每层都是可逆的,可以认为是通过这些层的逆过程逐渐将模型分布“流动”回基本分布。
标准化流理论本身是直观的。但要实际应用,我们的神经网络层
- 网络层整体上必须具有足够的表达能力,能将多元标准正态分布映射到任意密度函数。
- 网络层需可逆,即每层都应定义从任一输入点到输出点的唯一双射关系。如果多个输入映射到同一个输出,则逆映射将不明确。
- 每层的逆映射必须能够高效计算。鉴于我们在训练过程中需要反复评估似然性,故此过程必须有闭式解或快速算法。
- 无论正向还是逆向映射,都必须能高效计算雅可比行列式。
这些要求确保了标准化流在实践中的可行性和效率。
接下来,我们将介绍用于这些模型的各种可逆网络层或流类型。首先考虑的是线性流和逐元素流。这些流易于逆向计算,并且可以计算它们的雅可比行列式,但它们对于描述基础密度的任意转换表达能力不足。然而,它们是构建更具表达性的耦合流、自回归流和残差流的基础。
线性流的形式为
如果
一种既通用又易于逆运算、能高效计算雅可比行列式的线性流可以通过直接基于 LU 分解来参数化,即:
其中
然而,线性流的表达能力有限。当应用于正态分布输入
鉴于线性流表达能力的限制,我们转向非线性流,其中最基本的是逐元素流。逐元素流通过对输入的每个元素应用带参数
逐元素流的雅可比
这里的
这里的参数
尽管逐元素流是非线性的,但它们不混合输入维度,无法产生变量间的相关性。若与混合维度的线性流交替使用,能够实现更为复杂的变换。实际上,逐元素流常作为更复杂结构,如耦合流的组成部分。
图 16.5 分段线性映射。可以通过将输入域 h ∈ [0, 1] 分为 K 个等大小的区域(此处 K = 5)来创建一个可逆的分段线性映射 h′ = f[h, φ]。每个区域都有一个参数为 φ_k 的斜率。a) 当这些参数均为正且和为一时,b) 该函数将是可逆的,并能将输出映射到 h′ ∈ [0, 1] 的输出域。
耦合流通过将输入
其中
若
耦合流的逆映射和雅可比都能高效计算,但它仅调整第二部分参数,这一调整依赖于第一部分。为了达到更广泛的变换效果,层间通过置换矩阵随机打乱
图 16.6 耦合流。a) 输入(橙色向量)被划分为 h_1 和 h_2。输出的第一部分 h′_1(青色向量)是 h_1 的副本。输出 h′_2 由对 h_2 应用可逆变换 g[•, φ] 产生,其中参数 φ 是 h1 的一个(不必可逆)函数。b) 在逆映射中,h_1 = h′_1。这允许我们计算 φ[h_1] 参数,然后应用逆变换 g^−1[h′_2, φ] 来恢复 h_2。
自回归流是对耦合流的泛化,它把每个输入维度处理为独立的“块”(图 16.7)。这种方法根据输入
这里的函数
通过使用带有适当掩码的网络,可以并行计算输出
反向变换的效率较低。考虑如下的前向映射:
这需要按照耦合流的类似原理,顺序反向进行:
因为
图 16.7 自回归流。输入 h(橙色列)和输出 h′(青色列)被拆分为各自的维度(这里是四个维度)。a) 输出 h′_1 是输入 h_1 的一个可逆变换。输出 h′_2 是输入 h_2 的一个可逆函数,其参数取决于 h_1。输出 h′_3 是输入 h_3 的一个可逆函数,其参数依赖于先前的输入 h_1 和 h_2,以此类推。由于输出间无相互依赖,它们可以并行计算。b) 使用类似耦合流的方法计算自回归流的逆,但需注意计算 h_2 时必须知道 h_1,计算 h3 时必须知道 h_1 和 h_2,依此类推,因此逆过程不能并行执行。
掩码自回归流是在规范化(逆向)过程中定义的,目的是为了高效评估似然值,从而学习模型。然而,在正向过程中进行采样时,每一层的每个变量都必须逐个计算,导致速度较慢。使用自回归流进行正向(生成性)变换可以高效采样,但计算似然值(和训练)则较慢。这种流称为逆自回归流(inverse autoregressive flow)。
一个技巧是构建一个掩码自回归流来学习分布(即教师),然后利用它来训练一个可以高效采样的逆自回归流(即学生)。这种方法需要一种新的标准化流形式,它基于另一个函数学习,而不是依赖于一组样本(参见第 16.5.3 节)。
残差流受到残差网络设计的启发,将输入分为两部分
其中,$f_1[\cdot, \phi_1]$ 和
如同耦合流,通过将输入分块,限制了可以表示的变换类型。因此,为了使变量能够以任意方式混合,需要在各层之间进行输入置换。
虽然这种公式可以较容易地进行反转,但对于一般的函数
图 16.8 残差流。通过将输入拆分为 h_1 和 h_2 并建立两个残差层来计算一个可逆函数。在第一层,处理 h_2 并加上 h_1。在第二层,再次处理结果并加上 h_2。b) 在反向操作中,函数计算顺序相反,加法变为减法。
利用残差网络的另一种方法是采用 Banach 不动点定理(Banach fixed point theorem)或 收缩映射定理(contraction mapping theorem),这些定理指出每个收缩映射都有一个不动点。收缩映射
其中
我们可以利用这一定理来求逆形如
的方程,前提是
如果我们确保
雅可比行列式不容易直接计算,但可以通过一系列技巧近似计算其对数值。 $$ \begin{align} \log \left[ I + \frac{\partial f(h, \phi)}{\partial h} \right] &= \text{trace} \left[ \log \left( I + \frac{\partial f(h, \phi)}{\partial h} \right) \right] \ &= \sum_{k=1}^{\infty} (-1)^{k-1} \text{trace} \left[ \left( \frac{\partial f(h, \phi)}{\partial h} \right)^k \right], \end{align} \tag{16.22} $$
其中利用了
即便是截断该级数,计算各项的迹值仍然计算量大。因此,我们采用 Hutchinson 迹估计器(Hutchinson's trace estimator)来进行近似。考虑均值为 0 且方差为 I 的正态随机变量
其中第一行成立因为
通过这种方法,我们可以近似地计算泰勒级数幂次的迹,并估算对数概率(方程 16.22)。
图 16.9 收缩映射。若函数处处的绝对斜率小于一,则该函数的迭代会收敛到固定点 f[z] = z。a) 从 z_0 开始,我们计算 z_1 = f[z_0],然后将 z_1 重新传入函数并迭代。最终,此过程会收敛到 f[z] = z 的点(即函数与虚线对角恒等线交汇处)。b) 通过观察固定点 y^∗ − f[z](橙线与虚线恒等线的交点),可以用来反转形如 y = z + f[z] 的方程,找到 y^∗ = z + f[z] 的解。
在正规化流模型中,潜变量空间 z 必须与数据空间 x 的尺寸相同,但我们知道,自然数据集往往可以由更少的底层变量描述。因此,在某个阶段,我们需要引入这些变量,但让它们穿越整个网络是效率低下的。这催生了多尺度流(图 16.10)的理念。
在生成过程中,多尺度流将潜向量分割为
图 16.10 多尺度流。在正规化流中,潜在空间 z 的大小必须与模型密度相等。但是,它可以被分成几个部分,这些部分可以在不同的层次逐渐引入,从而加快密度估计和抽样速度。对于逆过程,黑色箭头方向反转,且每块的最后部分跳过剩余处理步骤。例如,f^{−1}_3[•, φ_3] 仅作用于前三块,而第四块直接成为 z_4 并根据基本密度进行评估。
现在,我们讨论正规化流的三个应用场景。首先是建模概率密度,其次是用于图像合成的 GLOW 模型,最后是使用正规化流来近似其他分布。
本书讨论的四种生成模型中,只有正规化流能够精确计算新样本的对数似然值。生成对抗网络(GAN)不具有概率特性,变分自编码器(VAE)和扩散模型则只能提供似然的下界。图 16.11 展示了在两个简单问题中使用 i-ResNet 估计的概率分布。密度估计的一项应用是异常检测,即用正规化流模型描述干净数据集的分布。低概率的新样本会被标记为离群点。然而,需要谨慎,因为高概率的离群点也可能存在,这些点不属于典型集(参见图 8.13)。
图 16.11 建模密度。a) 二维玩具数据样本。b) 利用 iResNet 建模得到的密度。c–d) 第二个示例。摘自 Behrmann et al. (2019)。
生成流模型 GLOW 是一种正规化流模型,能够生成高保真度的图像(见图 16.12),采用了本章提到的许多概念。这一模型在规范化方向上更易于理解。GLOW 以一个包含 RGB 图像的 256×256×3 张量开始,使用耦合层进行处理,其中通道被分为两部分。第二部分在每个空间位置经过不同的仿射变换,这些变换的参数由运行在另一半通道上的 2D 卷积神经网络计算。耦合层与 1×1 卷积层交替进行,后者通过 LU 分解进行参数化,从而混合各通道。
为了降低分辨率,系统会周期性地将每个 2×2 区域合并为一个位置,并将通道数量增加四倍。GLOW 作为一种多尺度流,其部分通道会周期性地被移除,并加入到潜向量 z 中。由于图像是离散的(RGB 值被量化),在输入中加入噪声以防止训练似然值无限增加,这个过程称为去量化。
为了生成更逼真的图像,GLOW 模型从提高到正次幂的基础密度中采样。这种方法倾向于选择更接近密度中心而不是边缘的样本,类似于 GAN 中的截断技巧(见图 15.10)。但是,这些样本的质量并不如 GAN 或扩散模型生成的样本。目前尚不清楚这是否由于可逆层相关的基本限制,还是因为对这一目标的研究投入较少。
图 16.13 展示了使用 GLOW 进行插值的例子。通过对两个真实图像在规范化方向进行转换,计算得到两个潜向量。这些潜向量之间的中间点通过线性插值计算得出,并通过生成方向的网络映射回图像空间,生成了一系列在两个真实图像之间逼真过渡的图像。
图 16.12 基于 CelebA HQ 数据集(Karras et al., 2018)训练的 GLOW 模型样本。这些样本质量较好,虽然与 GANs 和扩散模型相比,GLOW 的结果稍逊一筹。摘自 Kingma & Dhariwal (2018)。
图 16.13 使用 GLOW 模型的插值。左右两边的图像是真实的人物照片。中间的图像是通过将真实图像映射到潜空间进行插值,然后将插值结果映射回图像空间而生成的。摘自 Kingma & Dhariwal (2018)。
正规化流还能学习生成样本,这些样本近似于一个易于评估却难以从中抽样的现有密度。在这种情境下,我们把正规化流
为了进展,我们从“学生”模型生成样本
这种方法与通常使用正规化流构建概率模型
正规化流可以利用这种技巧在变分自编码器(VAE)中建模后验(参见第 17 章)。
图 16.14 近似密度模型。a) 训练数据。b) 通常,我们调整流模型的参数,以最小化训练数据与流模型之间的 KL 散度,这相当于执行最大似然拟合(参见第 5.7 节)。c) 或者,我们可以调整流参数 φ,以将流样本 xi = f[zi , φ] 与目标密度之间的 KL 散度最小化。
正规化流把基础分布(通常是正态分布)转变为新的密度。其优势在于能够精确计算样本的似然值并生成新样本。但它们的一个架构限制是每一层必须可逆;我们需要用正向变换生成样本,用反向变换计算似然值。
确保可以高效估计雅可比行列式对于评估似然值也很关键;为了学习密度,这个过程需要反复执行。即便雅可比行列式不能高效估计,可逆层本身依然有用,因为它们能将训练一个 K 层网络的内存需求从 O[K] 降低到 O[1]。本章回顾了可逆网络层或流动。我们讨论了线性流和元素级流,这些流简单但表达能力有限。接着,我们探讨了更复杂的流类型,如耦合流、自回归流和残差流。最后,我们展示了正规化流如何用于估计似然值、生成及插值图像和近似其他分布。
归一化流最早由 Rezende & Mohamed (2015) 提出,其思想基础还包括 Tabak & Vanden-Eijnden (2010)、Tabak & Turner (2013) 和 Rippel & Adams (2013) 的研究。关于归一化流的综述可参见 Kobyzev 等 (2020) 和 Papamakarios 等 (2021) 的工作。Kobyzev 等 (2020) 对多种归一化流方法进行了定量比较,并认为当时 Flow++ 模型(一种引入了新型元素级变换和其他创新的耦合流模型)表现最佳。
可逆网络层:可逆层可以减少反向传播算法的内存需求,因为在反向传播时可以重新计算前向传播过程中的激活值,无需存储。除了本章讨论的常规网络层和残差层(Gomez 等, 2017; Jacobsen 等, 2018),图神经网络(Li 等, 2021a)、循环神经网络(MacKay 等, 2018)、掩蔽卷积(Song 等, 2019)、U-Net(Brügger 等, 2019; Etmann 等, 2020)以及 Transformer(Mangalam 等, 2022)等领域也开发了可逆层。
径向和平面流:归一化流的初始论文(Rezende & Mohamed, 2015)介绍了平面流(沿特定维度压缩或扩展分布)和径向流(围绕特定点压缩或扩展)。这些流的逆过程不易计算,但对于近似难以快速采样的分布或只能评估到未知缩放因子的似然,它们非常有用(图 16.14)。
应用:归一化流的应用范围广泛,包括图像生成(Ho 等, 2019; Kingma & Dhariwal, 2018)、噪声建模(Abdelhamed 等, 2019)、视频生成(Kumar 等, 2019b)、音频生成(Esling 等, 2019; Kim 等, 2018; Prenger 等, 2019)、图生成(Madhawa 等, 2019)、图像分类(Kim 等, 2021; Mackowiak 等, 2021)、图像隐写(Lu 等, 2021)、超分辨率(Yu 等, 2020; Wolf 等, 2021; Liang 等, 2021)、风格转换(An 等, 2021)、运动风格转换(Wen 等, 2021)、3D 形状建模(Paschalidou 等, 2021)、压缩(Zhang 等, 2021b)、sRGB 到 RAW 图像转换(Xing 等, 2021)、去噪(Liu 等, 2021b)、异常检测(Yu 等, 2021)、图像到图像转换(Ardizzone 等, 2020)、细胞显微图像合成(Yang 等, 2021)以及光传输模拟(Müller 等, 2019b)。对于处理图像数据的应用,在学习前需加入噪声,因为输入数据是量化且离散的(参见 Theis 等, 2016)。
Rezende & Mohamed (2015) 利用归一化流对 VAEs 中的后验进行建模。Abdal 等 (2021) 通过归一化流来建模 StyleGAN 潜在空间中的属性分布,并据此改变真实图像中的指定属性。Wolf 等 (2021) 则用归一化流学习噪声输入图像与干净图像之间的关系,进而生成可用于训练去噪或超分辨率模型的噪声数据。
归一化流还在物理(Kanwar 等, 2020; Köhler 等, 2020; Noé 等, 2019; Wirnsberger 等, 2020; Wong 等, 2020)、自然语言处理(Tran 等, 2019; Ziegler & Rush, 2019; Zhou 等, 2019; He 等, 2018; Jin 等, 2019)和强化学习(Schroecker 等, 2019; Haarnoja 等, 2018a; Mazoure 等, 2020; Ward 等, 2019; Touati 等, 2020)领域找到了广泛应用。
线性流:对角线性流能够实现类似 Batch-Norm(Dinh 等, 2016)和 ActNorm(Kingma & Dhariwal, 2018)的规范化转换。Tomczak & Welling (2016) 研究了结合三角矩阵和使用 Householder 变换参数化的正交变换。Kingma & Dhariwal (2018) 提出了第 16.5.2 节所述的 LU 参数化方法。Hoogeboom 等 (2019b) 建议使用 QR 分解,避免了预设置换矩阵的需求。卷积作为线性变换(图 10.4),在深度学习中被广泛应用,但计算其逆和行列式并不直观。Kingma & Dhariwal (2018) 使用 1×1 卷积,实质上是在每个位置独立应用的完整线性变换。Zheng 等 (2017) 提出了仅限于一维卷积的 ConvFlow。Hoogeboom 等 (2019b) 为二维卷积建模提供了更通用的解决方案,方法包括堆叠掩蔽自回归卷积或在傅立叶域操作。
逐元素流和耦合函数:逐元素流通过使用相同的函数独立变换每个变量来工作,每个变量有其参数。这些流也可以形成耦合流和自回归流中的耦合函数,其中参数由前面的变量决定。为保证函数的可逆性,必须保证这些函数是单调的。
加性耦合函数(Dinh 等, 2015)只向变量添加一个偏移量。仿射耦合函数则对变量进行缩放并添加偏移量,这一方法被 Dinh 等 (2015)、Dinh 等 (2016)、Kingma & Dhariwal (2018)、Kingma 等 (2016) 和 Papamakarios 等 (2017) 所采用。Ziegler & Rush (2019) 提出了非线性平方流,即用五个参数的多项式之比构成的可逆函数。连续混合 CDF(Ho 等, 2019)通过基于 K logistics 混合物的累积密度函数 (CDF) 应用单调变换,然后经过逆逻辑 sigmoid 函数处理,并进行缩放和偏移。
分段线性耦合函数(图 16.5)由 Müller 等 (2019b) 开发。此后,基于三次样条(Durkan 等, 2019a)和有理二次样条(Durkan 等, 2019b)的系统被提出。Huang 等 (2018a) 引入了神经自回归流,其函数由能产生单调函数的神经网络表示。一个必要条件是所有权重均为正,且激活函数是单调的。由于训练所有权重为正的网络较难,因此提出了无约束单调神经网络(Wehenkel & Louppe, 2019),它们建模严格正的函数,并通过数值积分获得单调函数。Jaini 等 (2019) 根据所有正单变量多项式均为多项式平方和的原理,构建了可以闭式积分的正函数。Dinh 等 (2019) 进一步探讨了分段单调耦合函数。
耦合流:Dinh 等 (2015) 首次引入了耦合流,其中将维度分为两半(图 16.6)。Dinh 等 (2016) 推出的 RealNVP 通过交替选取像素或通道块来分割图像输入。Das 等 (2019) 根据导数的大小选择特征进行传播。Dinh 等 (2016) 将逐步引入维度的多尺度流视为耦合流,其中参数 φ 不依赖于数据的另一半。Kruse 等 (2021) 提出了耦合流的层次化表述,递归地将每个分区一分为二。GLOW(图 16.12–16.13)由 Kingma & Dhariwal (2018) 设计,并采用耦合流,同样适用于 NICE(Dinh 等, 2015)、RealNVP(Dinh 等, 2016)、FloWaveNet(Kim 等, 2018)、WaveGlOW(Prenger 等, 2019)和 Flow++(Ho 等, 2019)。
自回归流:Kingma 等 (2016) 在归一化流研究中采用了自回归模型。Germain 等 (2015) 开发了一种遮蔽前面变量的通用方法,Papamakarios 等 (2017) 利用该方法在遮蔽自回归流中同时计算所有输出。Kingma 等 (2016) 推出了逆自回归流。Parallel WaveNet(Van den Oord 等, 2018)将 WaveNet(Van den Oord 等, 2016)转化为逆自回归流,以加速音频生成的采样过程(参见图 16.14c–d)。
残差流:残差流基于残差网络(He 等, 2016a)。RevNets(Gomez 等, 2017)和 iRevNets(Jacobsen 等, 2018)将输入分为两部分(图 16.8),每部分通过一个残差网络。这些网络虽可逆,但雅可比行列式不易计算。残差连接被视为普通微分方程的离散化,这一观点催生了不同的可逆架构(Chang 等, 2018, 2019a)。Behrmann 等 (2019) 提出,若网络的 Lipschitz 常数小于一,可通过固定点迭代反转网络,进而开发了 iResNet,可以用 Hutchinson 的迹估计器(Hutchinson, 1989)估计雅可比的对数行列式。Chen 等 (2019) 使用俄罗斯轮盘赌估计器消除方程中功率级数截断引起的偏差。
无穷小流:如果将残差网络视作普通微分方程(ODE)的离散化,那么直接用 ODE 表示变量变化成为下一步合逻辑的发展。Chen 等 (2018e) 探索了神经 ODE,利用标准方法进行 ODE 的前向和后向传播。此时,计算似然不再需要雅可比,因为可以通过另一个 ODE 表示,其中对数概率的变化与前向传播的导数的迹相关。Grathwohl 等 (2019) 使用 Hutchinson 估计器估计迹,并进一步简化了这一过程。Finlay 等 (2020) 在损失函数中添加了正则化项以简化训练,而 Dupont 等 (2019) 扩展了表达形式,使神经 ODE 能表示更广泛的微分同胚类。Tzen & Raginsky (2019) 和 Peluchetti & Favaro (2020) 将 ODE 替换为随机微分方程。
通用性:通用性指归一化流能够任意精确地模拟任何概率分布的能力。某些流(如平面流、逐元素流)不具备这种属性。当耦合函数为神经单调网络(Huang 等, 2018a)、基于单调多项式(Jaini 等, 2020)或基于样条(Kobyzev 等, 2020)时,自回归流被证明具有通用性。对于 D 维,D 个耦合流可以构成自回归流。分成两部分 h1 和 h2 的过程说明,在任一层,h2 仅依赖于先前变量(图 16.6)。因此,每层将 h1 增加一个单位,可以实现自回归流,从而达到通用性。目前尚不清楚耦合流是否能在少于 D 层的情况下实现通用性,但实践中它们(如 GLOW)表现良好,无需诱导的自回归结构。
其他研究:归一化流的研究热点包括离散流(Hoogeboom 等, 2019a; Tran 等, 2019)、非欧几里得流形上的归一化流(Gemici 等, 2016; Wang & Wang, 2019)及等变流(Köhler 等, 2020; Rezende 等, 2019),后者旨在创建对变换族不变的密度。
问题 16.1 考虑用函数
问题 16.2 考虑将标准正态分布:
通过函数变换:
求变换后的分布
问题 16.3 写出逆映射
问题 16.4 手动求解以下矩阵的逆和行列式:
问题 16.5 假设随机变量
问题 16.6 若
问题 16.7 Leaky ReLU 定义为:
求 leaky ReLU 的逆函数表达式。对于多元变量
求雅可比的逆绝对行列式
问题 16.8 考虑对输入
问题 16.9 考虑基于等间隔区间中平方根函数的锥形组合构建逐元素流:
其中
问题 16.10 对残差流的前向映射的雅可比结构进行绘图(指出哪些元素为零),当
问题 16.11 写出方程 16.25 中 KL 散度的表达式。为何只能估计概率