生成模型(二):基于流的生成模型(Flow-based Generative Model)

📅 2026/8/16 13:52:34
生成模型(二):基于流的生成模型(Flow-based Generative Model)
本文大纲如下到目前为止已经介绍了[[生成模型-GAN]]和[[生成模型-VAE]]。它们都没有明确地学习真实数据的概率密度函数p(\mathbf{x})其中\mathbf{x}\in \mathcal{D}, 因为很难。以带有潜变量的生成模型为例p(\mathbf{x}) \int p(\mathbf{x}\vert\mathbf{z})p(\mathbf{z})d\mathbf{z}几乎无法计算因为要遍历隐变量\mathbf{z}的所有可能值 这点是难以做到的。基于流的深度生成模型normalizing flows 解决了这个难题这是一个强大的密度估计的统计工具。对p(\mathbf{x})的良好估能有效地完成许多下游任务对未观察到的但现实的新数据点进行采样数据生成预测未来事件的罕见性密度估计推断潜在变量填补不完整的数据样本等等。生成模型种类下面是对GAN、VAE和基于流的生成模型之间区别的一个快速总结。生成对抗网络。GAN提供了一个聪明的解决方案将数据生成这一无监督的学习问题建模为有监督的问题。鉴别器模型学习从生成器模型产生的虚假样本中区分出真实数据。两个模型同时训练进行最大最小博弈。变量自动编码器。VAE通过最大化证据下限ELBO不明确地优化了数据的对数可能性。基于流的生成模型。基于流的生成模型是由一连串的可逆变换构建的。与其他两种不同该模型明确地学习了数据分布p(\mathbf{x})因此损失函数只是负对数似然。线性代数在进入基于流的生成模型之前我们应该理解两个关键概念雅各布矩阵行列式和变量变化规则。可以随意跳过。雅各布矩阵和行列式给定一个将n维输入向量\mathbf{x}映射到m维输出向量的函数\mathbf{f}: \mathbb{R}^n \mapsto \mathbb{R}^m这个函数的所有一阶偏导的矩阵被称为Jacobian矩阵\mathbf{J}其中第i行和第j列是\mathbf{J}_{ij} \frac{\partial f_i}{\partial x_j}。\mathbf{J} \begin{bmatrix} \frac{\partial f_1}{\partial x_1} \dots \frac{\partial f_1}{\partial x_n} \[6pt] \vdots \ddots \vdots \[6pt] \frac{\partial f_m}{\partial x_1} \dots \frac{\partial f_m}{\partial x_n} \[6pt] \end{bmatrix} \行列式是一个实数作为一个平方矩阵中所有元素的函数来计算。请注意行列式只存在于方形矩阵中。行列式的绝对值可以被认为是衡量矩阵的乘法对空间的扩张或收缩程度的标准。一个nxn矩阵M的行列式是:\det M \det \begin{bmatrix} a_{11} a_{12} \dots a_{1n} \ a_{21} a_{22} \dots a_{2n} \ \vdots \vdots \vdots \ a_{n1} a_{n2} \dots a_{nn} \ \end{bmatrix} \sum_{j_1 j_2 \dots j_n} (-1)^{\tau(j_1 j_2 \dots j_n)} a_{1j_1} a_{2j_2} \dots a_{nj_n} \其中j_1 j_2\dots j_n的下标是集合{1, 2, \dots, n}的所有置换所以总共有n项\tau(.)表示置换的特征。一个正方形矩阵M的行列式可以检测它是否可逆。如果det(M)0那么M是不可逆的一个具有线性依赖行或列的奇异矩阵或者任何行或列都是0否则如果det(M)\neq 0M是可逆的。乘积的行列式等同于行列式的乘积\det(AB) \det(A)\det(B)。Change of Variable Theorem让我们回顾一下变量变化定理从一个单变量的情况开始。给定一个随机变量z及其已知的概率密度函数z\sim\pi(z)我们想用单射函数xf(z)构造一个新的随机变量。该函数f是可逆的所以zf^{-1}(x)。现在的问题是如何推断新变量的未知概率密度函数px\begin{aligned} \int p(x)dx \int \pi(z)dz 1 \scriptstyle{\text{ ; Definition of probability distribution.}}\ p(x) \pi(z) \left\vert\frac{dz}{dx}\right\vert \pi(f^{-1}(x)) \left\vert\frac{d f^{-1}}{dx}\right\vert \pi(f^{-1}(x)) \vert (f^{-1})(x) \vert \end{aligned} \根据定义积分\int\pi(z)dz是无限个宽度为\Delta z的矩形之和。这样一个矩形在位置z的高度就是密度函数\pi(z)的值。当我们替代变量时z f^{-1}(x)得到\frac{\Delta z}{\Delta x} (f^{-1}(x))‘和\Delta z (f^{-1}(x))’ \Delta x。这里 \vert(f^{-1}(x))\vert表示分别在两个不同的变量坐标z和x中定义的矩形面积的比率。多变量版本也有类似的格式:\begin{aligned} \mathbf{z} \sim \pi(\mathbf{z}), \mathbf{x} f(\mathbf{z}), \mathbf{z} f^{-1}(\mathbf{x}) \ p(\mathbf{x}) \pi(\mathbf{z}) \left\vert \det \dfrac{d \mathbf{z}}{d \mathbf{x}} \right\vert \pi(f^{-1}(\mathbf{x})) \left\vert \det \dfrac{d f^{-1}}{d \mathbf{x}} \right\vert \end{aligned} \其中\det\frac{\partial f}{\partial\mathbf{z}}是函数f的雅各布行列式。Normalizing Flows由于我们需要在深度学习模型中运行反向传播希望后验概率p(\mathbf{z}\vert\mathbf{x})可以简单有效地计算出导数。这也是为什么高斯分布经常被用于隐变量生成模型尽管现实世界中的大多数分布比高斯分布要复杂得多。Normalizing FlowsNF模型用于更好和更强大的分布近似。NF通过应用一连串的可逆变换函数将一个简单的分布转变成一个复杂的分布。通过一连串的变换我们根据变量变化定理反复用新的变量来替代最终得到最终目标变量的概率分布。如图所示\begin{aligned} \mathbf{z}{i-1} \sim p{i-1}(\mathbf{z}{i-1}) \ \mathbf{z}i f_i(\mathbf{z}{i-1})\text{, 因此 }\mathbf{z}{i-1} f_i^{-1}(\mathbf{z}_i) \ p_i(\mathbf{z}i) p{i-1}(f_i^{-1}(\mathbf{z}_i)) \left\vert \det\dfrac{d f_i^{-1}}{d \mathbf{z}_i} \right\vert \end{aligned} \然后把方程转换成\mathbf{z}_i的函数这样就可以做推理。\begin{aligned} p_i(\mathbf{z}i) p{i-1}(f_i^{-1}(\mathbf{z}i)) \left\vert \det\dfrac{d f_i^{-1}}{d \mathbf{z}i} \right\vert \ p{i-1}(\mathbf{z}{i-1}) \left\vert \det \color{red}{\Big(\dfrac{d f_i}{d\mathbf{z}{i-1}}\Big)^{-1}} \right\vert \scriptstyle{\text{; According to the inverse func theorem.}} \ p{i-1}(\mathbf{z}{i-1}) \color{red}{\left\vert \det \dfrac{d f_i}{d\mathbf{z}{i-1}} \right\vert^{-1}} \scriptstyle{\text{; According to a property of Jacobians of invertible func.}} \ \log p_i(\mathbf{z}i) \log p{i-1}(\mathbf{z}{i-1}) - \log \left\vert \det \dfrac{d f_i}{d\mathbf{z}{i-1}} \right\vert \end{aligned} \关于反函数定理的说明。如果yf(x)和xf^{-1}(y)有:\dfrac{df^{-1}(y)}{dy} \dfrac{dx}{dy} (\dfrac{dy}{dx})^{-1} (\dfrac{df(x)}{dx})^{-1} \关于逆函数的雅各布式的说明。可逆矩阵的行列式是行列式的倒数\det(M^{-1}) (\det(M)){-1},因为\det(M)\det(M{-1}) \det(M\cdot M^{-1}) \det(I) 1。鉴于概率密度函数链我们知道每一对连续变量之间的关系。我们可以一步步展开输出\mathbf{x}的方程直到追溯到初始分布\mathbf{z}_0。\begin{aligned} \mathbf{x} \mathbf{z}K f_K \circ f{K-1} \circ \dots \circ f_1 (\mathbf{z}0) \ \log p(\mathbf{x}) \log \pi_K(\mathbf{z}K) \log \pi{K-1}(\mathbf{z}{K-1}) - \log\left\vert\det\dfrac{d f_K}{d \mathbf{z}{K-1}}\right\vert \ \log \pi{K-2}(\mathbf{z}{K-2}) - \log\left\vert\det\dfrac{d f{K-1}}{d\mathbf{z}{K-2}}\right\vert - \log\left\vert\det\dfrac{d f_K}{d\mathbf{z}{K-1}}\right\vert \ \dots \ \log \pi_0(\mathbf{z}0) - \sum{i1}^K \log\left\vert\det\dfrac{d f_i}{d\mathbf{z}_{i-1}}\right\vert \end{aligned} \随机变量\mathbf{z}i f_i(\mathbf{z}{i-1})所经过的路径是流由连续分布\pi_i形成的全链被称为归一化流。根据方程中的计算要求转换函数f_i应满足两个特性。可逆雅各比行列式容易计算Models with Normalizing Flows有了归一化流输入数据的精确对数似然\log p(\mathbf{x})就变得可操作了。因此基于流的生成模型的训练标准就是训练数据集\mathcal{D}上的负对数似然NLL。\mathcal{L}(\mathcal{D}) - \frac{1}{\vert\mathcal{D}\vert}\sum_{\mathbf{x} \in \mathcal{D}} \log p(\mathbf{x}) \RealNVPRealNVPReal-valued Non-Volume Preserving Dinh等人2017模型通过堆叠一连串的可逆双射变换函数来实现归一化流。在每个双射函数f: \mathbf{x} \mapsto \mathbf{y}被称为仿射耦合层(affine coupling layer)输入维度被分成两部分。前d维度保持不变。d1到D维度经历一个仿射变换系数和截距参数都是前d维度的函数。\begin{aligned} \mathbf{y}{1:d} \mathbf{x}{1:d} \ \mathbf{y}{d1:D} \mathbf{x}{d1:D} \odot \exp({s(\mathbf{x}{1:d})}) t(\mathbf{x}{1:d}) \end{aligned} \其中s(.)和t(.)是比例函数和平移函数都是进行\mathbb{R}^d \mapsto \mathbb{R}^{D-d}映射。 \odot \odot操作是点乘。现在让检查一下这个变换是否满足流变换的两个基本属性。[x] 条件1可逆\begin{cases} \mathbf{y}{1:d} \mathbf{x}{1:d} \ \mathbf{y}{d1:D} \mathbf{x}{d1:D} \odot \exp({s(\mathbf{x}{1:d})}) t(\mathbf{x}{1:d}) \end{cases} \Leftrightarrow \begin{cases} \mathbf{x}{1:d} \mathbf{y}{1:d} \ \mathbf{x}{d1:D} (\mathbf{y}{d1:D} - t(\mathbf{y}{1:d})) \odot \exp(-s(\mathbf{y}{1:d})) \end{cases} \[x] 条件2: 雅各比行列式容易计算雅各布矩阵是一个下三角矩阵。\mathbf{J} \begin{bmatrix} \mathbb{I}d \mathbf{0}{d\times(D-d)} \[5pt] \frac{\partial \mathbf{y}{d1:D}}{\partial \mathbf{x}{1:d}} \text{diag}(\exp(s(\mathbf{x}_{1:d}))) \end{bmatrix} \因此行列式只是对角线上的项的乘积。\det(\mathbf{J}) \prod_{j1}^{D-d}\exp(s(\mathbf{x}{1:d}))j \exp(\sum{j1}^{D-d} s(\mathbf{x}{1:d})_j) \由于a.计算f^-1不需要计算s或t的逆2. 计算雅各布行列式不涉及计算s或t这些函数可以是任意复杂的即s和t都可以用深度神经网络来建模。在仿射耦合层中一些维度保持不变。为了确保所有的输入都有机会被改变该模型在每一层中颠倒了顺序使不同的成分保持不变。按照这样的交替模式在一个转化层中保持相同的单元集在下一个转化层中总是被修改。BN被发现有助于训练具有非常深的耦合层堆栈的模型。此外RealNVP可以在多尺度架构下工作为大的输入建立一个更有效的模型。多尺度架构将几种采样操作应用于normal affine layers包括spatial checkerboard pattern masking, squeezing operation, 和 channel-wise masking。NICENICENon-linear Independent Component EstimationDinh, et al. 2015模型是realnvp的前身。NICE中的变换是不含系数项的仿射耦合层被称为加性耦合层。\begin{cases} \mathbf{y}{1:d} \mathbf{x}{1:d} \ \mathbf{y}{d1:D} \mathbf{x}{d1:D} m(\mathbf{x}{1:d}) \end{cases} \Leftrightarrow \begin{cases} \mathbf{x}{1:d} \mathbf{y}{1:d} \ \mathbf{x}{d1:D} \mathbf{y}{d1:D} - m(\mathbf{y}{1:d}) \end{cases} \GlowGlowGlowKingma and Dhariwal, 2018模型扩展了之前的模型NICE和RealNVP并通过用可逆的1x1卷积取代通道排序上的反向互换操作来简化架构。Glow中有三个子步骤。激活归一化简称actnorm 它对每个通道用比例和偏置参数进行仿射转换类似于批处理归一化但是对mini批处理大小为1进行处理。参数是可训练的但初始化后第一批的数据在actnorm后的平均值为0标准差为1。可逆的1x1 conv 在RealNVP流程的各层之间通道的顺序是相反的这样所有的数据维度都有机会被改变。输入和输出通道数量相等的1×1卷积可以对通道进行任何变换。假设有一个输入h\times w\times c张量的可逆1x1卷积\mathbf{h}与一个大小为c\times c的权重矩阵\mathbf{W}。输出是一个h\times w\times c张量标记为f \texttt{conv2d}(\mathbf{h}; \mathbf{W})。为了应用变量变化规则我们需要计算雅各布行列式\vert \det\partial f / \partial\mathbf{h}\vert。1x1卷积的输入和输出都可以看作是一个大小为h\times w的矩阵。\mathbf{x}{ij} (i1,\dots,h, j1,\dots,w)在\mathbf{h}中是一个c通道的向量每个item分别乘以权重矩阵\mathbf{W}得到输出矩阵中的相应条目\mathbf{y}{ij}。每个条目的导数为\partial\mathbf{x}{ij} W /\partial\mathbf{x}{ij} \mathbf{W} 总共有h \times w 这样的item。\log \left\vert\det \frac{\partial\texttt{conv2d}(\mathbf{h}; \mathbf{W})}{\partial\mathbf{h}}\right\vert \log (\vert\det\mathbf{W}\vert^{h \cdot w}\vert) h \cdot w \cdot \log \vert\det\mathbf{W}\vert \1x1卷积的逆取决于逆矩阵\mathbf{W}^{-1}。由于权重矩阵相对较小矩阵行列式和逆的计算量仍在控制之中。仿生耦合层 该设计与RealNVP相同。Models with Autoregressive Flows自回归约束是建立顺序数据模型的一种方式\mathbf{x} [x_1, \dots, x_D]每个输出只取决于过去观察到的数据但不取决于未来的数据。换句话说观察到x_i的概率是以x_1, \dots, x_{i-1}为条件的这些条件概率的乘积给我们观察到完整序列的概率。p(\mathbf{x}) \prod_{i1}^{D} p(x_i\vert x_1, \dots, x_{i-1}) \prod_{i1}^{D} p(x_i\vert x_{1:i-1}) \如何对条件密度进行建模? 可以是单变量高斯作为x_{1:i-1}的函数计算或者是以x_{1:i-1}为输入的多层神经网络。如果将归一化流中的流变换定为自回归模型向量变量中的每个维度都以之前的维度为条件这就是自回归流。本节从几个经典的自回归模型MADEPixelRNNWaveNet开始然后我们深入研究自回归流模型MAF和IAF。MADEMADEMasked Autoencoder for Distribution EstimationGermain等人2015可以在自动编码器中有效地利用自回归特性。当使用自动编码器预测条件概率时MADE不是将不同观察窗口D次的输入输入自动编码器而是通过乘以二进制掩码矩阵来去除某些隐藏单元的贡献这样每个输入维度在单次中只从以前的维度中按给定的顺序进行重建。在一个多层全连接神经网络中例如有L隐层其权重矩阵为\mathbf{W}^1, \dots, \mathbf{W}^L输出层的权重矩阵为\mathbf{V}。输出\hat{\mathbf{x}}有\hat{x}i p(x_i\vert x{1:i-1})。在没有任何掩码的情况下通过层的计算:\begin{aligned} \mathbf{h}^0 \mathbf{x} \ \mathbf{h}^l \text{activation}l(\mathbf{W}l\mathbf{h}^{l-1} \mathbf{b}^l) \ \hat{\mathbf{x}} \sigma(\mathbf{V}\mathbf{h}^L \mathbf{c}) \end{aligned} \为了消除层间的一些连接可以简单地将每个权重矩阵逐元乘以一个二进制掩码矩阵。每个隐藏节点被分配一个随机的连接整数;介于1和D-1之间l层中第k单元的分配值用m^l_k表示。二进制掩码矩阵是通过对两层中的两个节点的数值进行元素比较而确定的。\begin{aligned} \mathbf{h}^l \text{activation}l((\mathbf{W}l \color{red}{\odot \mathbf{M}{\mathbf{W}l}}) \mathbf{h}^{l-1} \mathbf{b}^l) \ \hat{\mathbf{x}} \sigma((\mathbf{V} \color{red}{\odot \mathbf{M}^{\mathbf{V}}}) \mathbf{h}^L \mathbf{c}) \ M{\mathbf{W}l}{k’, k} \mathbf{1}{m^l_{k’} \geq m^{l-1}k} \begin{cases} 1, \text{if } m^l{k’} \geq m^{l-1}k\ 0, \text{otherwise} \end{cases} \ M^{\mathbf{V}}{d, k} \mathbf{1}_{d \geq m^L_k} \begin{cases} 1, \text{if } d m^L_k\ 0, \text{otherwise} \end{cases} \end{aligned} \当前层中的单元只能与前一层中数字相同或更小的其他单元相连这种类型的依赖性很容易通过网络传播到输出层。一旦数字被分配给所有的神经元和层输入维度的排序就被固定了条件概率也随之产生。为了确保所有的隐藏单元都通过一些路径连接到输入和输出层m^l_k被采样为等于或大于前一层的最小连接整数\min_{k’} m_{k’}^{l-1}。MADE训练可以通过以下方式进一步促进:顺序无关的训练对输入维度进行shuffle使MADE能够对任何任意的顺序进行建模可以在运行时创建自回归模型的集合。连通性无关的训练为了避免模型被特定的连通性模式约束所束缚对每个训练的minibatch重新取样m^l_k。PixelRNNPixelRNNPixelRNNOord等人2016是一个用于图像的深度生成模型。图像是一次生成一个像素每个新的像素都是以之前像素为条件进行采样。考虑一个大小为n \times n的图像\mathbf{x} {x_1, \dots, x_{n^2}} 该模型从左上角开始生成像素从左到右从上到下。每个像素x_i都是通过以过去条件在同一行中它上面的像素或它左边的像素下的概率分布中取样的。这种背景的定义看起来很随意因为视觉注意力如何被关注到图像上是比较灵活的。但具有如此强烈假设的生成模型有不可思议的记过。一个可以捕获整个上下文的实现是 Diagonal BiLSTM。首先应用skewing操作将输入特征图的每一行相对于前一行偏移一个位置这样每一行的计算就可以被并行化。然后LSTM的状态是相对于当前像素和左边的像素计算的。\begin{aligned} \lbrack \mathbf{o}_i, \mathbf{f}_i, \mathbf{i}_i, \mathbf{g}i \rbrack \sigma(\mathbf{K}^{ss} \circledast \mathbf{h}{i-1} \mathbf{K}^{is} \circledast \mathbf{x}_i) \scriptstyle{\text{; }\sigma\scriptstyle{\text{ is tanh for g, but otherwise sigmoid; }}\circledast\scriptstyle{\text{ is convolution operation.}}} \ \mathbf{c}_i \mathbf{f}i \odot \mathbf{c}{i-1} \mathbf{i}_i \odot \mathbf{g}_i \scriptstyle{\text{; }}\odot\scriptstyle{\text{ is elementwise product.}}\ \mathbf{h}_i \mathbf{o}_i \odot \tanh(\mathbf{c}_i) \end{aligned} \其中\circledast表示卷积操作\odot是元素间的乘法。输入到状态的分量\mathbf{K}{is}是一个1x1的卷积而状态到状态的循环分量是用一个2x1的内核的列向卷积\mathbf{K}{ss}计算的。diagonal BiLSTM层能够处理无界的上下文但由于状态间的顺序依赖性计算成本很高。一个更快的实现方法是使用多个卷积层而不使用池来定义一个有界的上下文框。卷积核被屏蔽了因此看不到未来的上下文类似于MADE。这个卷积版本被称为PixelCNN。WaveNetWaveNet(Van Den Oord, et al. 2016)与PixelCNN非常相似但应用于一维音频信号。WaveNet由一叠因果卷积(causal convolution)组成这是一种注重排序的卷积操作在某个时间戳的预测只能消耗过去观察到的数据对未来没有依赖性。在PixelCNN中因果卷积是通过掩码卷积核实现的。在WaveNet中因果卷积只是将输出移到未来的若干个时间戳使输出与最后的输入元素保持一致。卷积层的一个很大的缺点是接受域的大小非常有限。输出很难依赖于几百或几千个时间段之前的输入这是对长序列建模的关键要求。因此WaveNet采用了扩张卷积dilated convolution。WaveNet使用门控激活单元作为非线性层因为人们发现它在为一维音频数据建模时明显比ReLU效果好。残差连接应用在门控激活后。\mathbf{z} \tanh(\mathbf{W}{f,k}\circledast\mathbf{x})\odot\sigma(\mathbf{W}{g,k}\circledast\mathbf{x}) \其中\mathbf{W}{f,k}和\mathbf{W}{g,k}分别是第k层的卷积滤波器和矩阵。Masked Autoregressive FlowMasked Autoregressive FlowMAFPapamakarios等人2017是一种归一化流其中转换层被构建为自回归神经网络。MAF与后面介绍的逆自回归流IAF非常相似。给定两个随机变量\mathbf{z} \sim \pi(\mathbf{z})和\mathbf{x} 的概率密度函数pi(\mathbf{z}) 已知 MAF 目标是学习 p(\mathbf{x}). MAF根据过去的维度\mathbf{x}_{1:i-1}生成x_i。条件概率是\mathbf{z}的仿射变换其中系数和截距是\mathbf{x}的观察部分的函数。数据生成产生一个新的\mathbf{x}:x_i \sim p(x_i\vert\mathbf{x}{1:i-1}) z_i \odot \sigma_i(\mathbf{x}{1:i-1}) \mu_i(\mathbf{x}_{1:i-1})\text{, 其中 }\mathbf{z} \sim \pi(\mathbf{z})密度估计给定一个已知的\mathbf{x}。p(\mathbf{x}) \prod_{i1}^D p(x_i\vert\mathbf{x}_{1:i-1})生成过程是连续的所以效率很慢。而密度估计只需要通过一次网络可以使用像MADE这样的架构。变换函数求逆不成问题雅各布行列式也很容易计算。Inverse Autoregressive Flow与MAF类似逆自回归流IAFKingma等人2016将目标变量的条件概率也建模为自回归模型但流向相反从而实现更高效的采样过程。首先让我们reverse MAF中的仿射变换。z_i \frac{x_i - \mu_i(\mathbf{x}{1:i-1})}{\sigma_i(\mathbf{x}{1:i-1})} -\frac{\mu_i(\mathbf{x}{1:i-1})}{\sigma_i(\mathbf{x}{1:i-1})} x_i \odot \frac{1}{\sigma_i(\mathbf{x}_{1:i-1})} \假设\begin{aligned} \tilde{\mathbf{x}} \mathbf{z}\text{, }\tilde{p}(.) \pi(.)\text{, }\tilde{\mathbf{x}} \sim \tilde{p}(\tilde{\mathbf{x}}) \ \tilde{\mathbf{z}} \mathbf{x} \text{, }\tilde{\pi}(.) p(.)\text{, }\tilde{\mathbf{z}} \sim \tilde{\pi}(\tilde{\mathbf{z}})\ \tilde{\mu}i(\tilde{\mathbf{z}}{1:i-1}) \tilde{\mu}i(\mathbf{x}{1:i-1}) -\frac{\mu_i(\mathbf{x}{1:i-1})}{\sigma_i(\mathbf{x}{1:i-1})} \ \tilde{\sigma}(\tilde{\mathbf{z}}{1:i-1}) \tilde{\sigma}(\mathbf{x}{1:i-1}) \frac{1}{\sigma_i(\mathbf{x}_{1:i-1})} \end{aligned} \可得\tilde{x}_i \sim p(\tilde{x}i\vert\tilde{\mathbf{z}}{1:i}) \tilde{z}_i \odot \tilde{\sigma}i(\tilde{\mathbf{z}}{1:i-1}) \tilde{\mu}i(\tilde{\mathbf{z}}{1:i-1}) \text{, 其中 }\tilde{\mathbf{z}} \sim \tilde{\pi}(\tilde{\mathbf{z}}) \IAF打算在\tilde{\mathbf{x}}已知的情况下估计\tilde{pi}(\tilde{\mathbf{z}})的概率密度函数。逆流也是一个自回归仿射变换与MAF相同但系数和截距是来自已知分布\tilde{pi}(\tilde{\mathbf{z}})的观察变量的自回归函数。各个元素\tilde{x}_i的计算并不相互依赖所以它们很容易并行化使用MADE只需一次。对于一个已知的\tilde{\mathbf{x}}的密度估计并不高效因为我们必须按顺序恢复\tilde{z}_i的值\tilde{z}_i (\tilde{x}_i - \tilde{\mu}i(\tilde{\mathbf{z}}{1:i-1}) / \tilde{\sigma}i(\tilde{\mathbf{z}}{1:i-1})因此一共是D次。VAE Flows在VAE中如果我们想把后验p(\mathbf{z}\vert\mathbf{x})建模为一个更复杂的分布而不是简单的高斯分布。直观地说我们可以使用归一化流来转换高斯以获得更好的密度近似。然后编码器将预测一组系数和截距(\mu_i, \sigma_i)它们都是输入\mathbf{x}的函数。具体详见 f-VAEs: Improve VAEs with Conditional Flows参考文献[1] Danilo Jimenez Rezende, and Shakir Mohamed. “Variational inference with normalizing flows. ICML 2015.[2] Normalizing Flows Tutorial, Part 1: Distributions and Determinants by Eric Jang.[3] Normalizing Flows Tutorial, Part 2: Modern Normalizing Flows by Eric Jang.[4] Normalizing Flows by Adam Kosiorek.[5] Laurent Dinh, Jascha Sohl-Dickstein, and Samy Bengio. “Density estimation using Real NVP. ICLR 2017.[6] Laurent Dinh, David Krueger, and Yoshua Bengio. “NICE: Non-linear independent components estimation. ICLR 2015 Workshop track.[7] Diederik P. Kingma, and Prafulla Dhariwal. “Glow: Generative flow with invertible 1x1 convolutions. arXiv:1807.03039 (2018).[8] Germain, Mathieu, Karol Gregor, Iain Murray, and Hugo Larochelle. “Made: Masked autoencoder for distribution estimation. ICML 2015.[9] Aaron van den Oord, Nal Kalchbrenner, and Koray Kavukcuoglu. “Pixel recurrent neural networks. ICML 2016.[10] Diederik P. Kingma, et al. “Improved variational inference with inverse autoregressive flow. NIPS. 2016.[11] George Papamakarios, Iain Murray, and Theo Pavlakou. “Masked autoregressive flow for density estimation. NIPS 2017.[12] Jianlin Su, and Guang Wu. “f-VAEs: Improve VAEs with Conditional Flows. arXiv:1809.05861 (2018).[13] Van Den Oord, Aaron, et al. “WaveNet: A generative model for raw audio. SSW. 2016.参考资料生成模型(三):Flow-based model李宏毅Flow-based model课程