跳转至

深度生成模型基础

教材:《深度生成模型》,Jakub M.Tomczak著,王冠译。

第二章 自回归模型

2.1 简介

一、深度生成模型的关键——乘法法则与加法法则

1.【定义1】乘法法则
引入随机变量\(x, y\),设其联合分布为\(p(x, y)\),乘积法则:
\(p(x, y) = p(x|y)p(y) = p(y|x)p(x)\)
【理解】
①乘法法则将联合分布表述为一个边缘分布与一个条件分布的乘积。
②乘法法则提供了联合分布的两种分布方式。
2.【定义2】加法法则
\(p(x) =\sum_{y}p(x, y)\)(离散形式)
\(p(x) = \int_{-\infty}^{\infty}p(x, y)dy\)(连续形式)
【理解】
给定变量的联合分布,若需计算关于一个变量的边缘分布,则必须对另一个变量作积分/求和。

二、高维随机变量的分布建模

1.问题描述
给定高维随机变量\(\mathbf{x} \in {\chi}^D\),其中\(\chi = \{0, 1, \cdots, 255\}\),或\(\chi = \mathbb{R}\),目的是对\(p(\mathbf{x})\)建模。
2.使用乘积法则分解联合分布
\(p(\mathbf{x}) = p(x_1) \Pi_{d = 2}^{D}p(x_{d}|\mathbf{x}_{<d})\)
其中:\(\mathbf{x}_{<d} = [x_1, x_2, \cdots, x_{d - 1}]^T\)
3.乘积法则的问题
·为所有的条件分布\(p(x_{d}|\mathbf{x}_{<d})\)单独建模不可行,否则会获得\(D\)个单独的模型,且每个模型的复杂度均会随着条件变化而增加。

2.2 由神经网络参数化的自回归模型

自回归模型的目的:为解决\(D\)个单独模型的复杂度,在一定假设下,为各个条件分布引入一个单独、共享的模型。

一、有限记忆

1.基本思想:假设每个变量最多只依赖于不超过两个变量,这两个变量仅依赖于不超过两个前序变量。
2.公式:\(p(\mathbf{x}) = p(x_1)p(x_2|x_1)\Pi_{d = 3}^{D}p(x_d|x_{d - 1}, x_{d - 2})\)
3.神经网络建模
·使用小型MLP,输入\(x_{d - 1}, x_{d - 2}\),预测\(x_{d}\)的分布。
·模型输出\(x_{d}, \theta_{d}\)的类别分布概率值。
·MLP结构:\([x_{d - 1}, x_{d - 2}]\rightarrow Linear(2, M) \rightarrow RELU \rightarrow Linear(M, 256) \rightarrow Softmax \rightarrow \theta_{d}\)
·\(M\)为隐藏单位的数目。
【理解】
①使用单独、共享的MLP预测\(\theta_{d}\)的概率,非线性模型,需训练的权重相对较少,参数化更为容易。
②不足:有限记忆。
③实际问题中,往往不清楚先验中,条件概率需使用多少个变量,并且要理解数据的复杂模式,关键在于学习长距离统计信息。

二、基于循环神经网络的长距离记忆

1.目的:解决MLP建模的短距离记忆问题。
2.公式:\(p({x}_{d}|\mathbf{x}_{<d}) = p(x_{d}|RNN(x_{d - 1}, h_{d - 1}))\),其中\(h_{d} = RNN(x_{d - 1}, h_{d - 1}\)
【理解】
\(h_{d}\)是隐藏语境,起记忆作用,能实现长距离依赖关系。
3.循环神经网络的问题
·序列化计算,速度慢。
·若设置不合适,如权重矩阵的特征值大于或小于\(1\),则循环神经网络会产生梯度爆炸或梯度消失问题,从而无法学习长距离依赖关系。
4.循环神经网络的训练方式
·梯度裁剪(Gradient Clipping)
·梯度正则化(Gradient Regularization)
·正交权重(Orthogonal Weight)

三、基于卷积神经网络的长距离记忆

1.作用:替代RNN,为长距离依赖关系建模,叠加一维卷积层以处理序列数据。
2.CNN的优点
·卷积内核共享,参数化过程高效。
·处理过程并行,极大地提高运算速度。
·叠加更多卷积层,有效卷积核大小随着网络深度增大。
3.因果卷积
·卷积层仅依赖于至今的最后\(k\)个输入。
·\(A\)型因果卷积:不包含当下的输入。
·\(B\)型因果卷积:包含当下的输入。
·第一卷积层必须使用\(A\)型输入,原因是最终输出的概率值\(\theta_{d}\)不依赖于\(x_{d}\)
4.空洞卷积
·设置卷积空洞,以防止卷积核过于庞大。
5.一维因果卷积实现

class CausalConv1d(nn.Module):
    def __init__(self, in_channels, out_channels, dilation, kernel_size, A=False, **kwargs):
        super(CausalConv1d, self).__init__(**kwargs)
        self.in_channels = in_channels
        self.out_channels = out_channels
        self.dilation = dilation
        self.kernel_size = kernel_size
        self.A = A # causal convolution type (A: Doesn't contain the current input)
        self.padding = (kernel_size - 1) * dilation + A * 1 # 
        self.conv1d = nn.Conv1d(in_channels, out_channels, kernel_size, dilation=dilation)

    def forward(self, x: torch.Tensor):
        x = F.pad(input=x, pad=(self.padding, 0)) 
        # when padding 1d data, the pad parameter means: (pad_left, pad_right)  
        conv1d_out = self.conv1d(x)
        # determine whether to delete the last element, according to the type of causal conv
        if self.A:
            return conv1d_out[:, :, :-1]
        else:
            return conv1d_out
6.因果卷积(CausalConv)实验结果与评价
(1)优点
·一维因果卷积比起RNN更适合对序列数据进行建模,取得更好的结果,比RNN更能有效学习长距离依赖关系。
·无需担心梯度爆炸、梯度消失问题。
·因果卷积被广泛认为是参数化自回归模型的完美方法,在音频处理的WaveNet、图像处理的PixelCNN等模型上均得到了运用。
(2)缺点——抽样
·对新的目标进行抽样时,需要对所有位置进行迭代,迭代计算概率和样本值。

四、自回归模型实现

1.图像概率分布建模公式
\(p(x_{d}|\mathbf{x}_{\le d}) = Categorial(x_{d}|\theta_{d}(\mathbf{x}_{\le d})) = \Pi_{i = 1}^{L}(\theta_{d, l})^{I_{x_d = l}}\)
·\(\theta_{d}(\mathbf{x}_{\le d})\):基于一维因果卷积,使用Softmax作为最后一层所得的输出结果。\(\sum_{l = 1}^L\theta_{d, l} = 1\)
2.模型架构
·多个一维因果卷积层叠加。
·中间使用非线性激活函数。
·第一层设置为\(A\)CausalConv1D,以使用\(x_{d}\)预测\(\theta_{d}\)
3.目标函数
·由于自回归模型是基于似然的模型,故对于\(N\)个独立同分布的数据点\(D = {x_1, \cdots, x_N}\),目的是取最大化的对数。
·公式推导:
\(ln p(D) \newline= ln\Pi_{n}p(x_n) \newline= \sum_{n}lnp(x_n) \newline= \sum_{n}ln\Pi_{d}p(x_{n, d} | \mathbf{x}_{n, \leq d}) \newline= \sum_{n}\sum_{d}lnp(x_{n, d} | \mathbf{x}_{n, \leq d}) \newline= \sum_{n}(\sum_{d}ln Categorial(x_{d}|\theta_{d}(\mathbf{x}_{\le d}))) \newline = \sum_{n}(\sum_{d}(\sum_{l = 1}^{L}[x_{d} = l]ln\theta_{d} (x_{\leq d})))\)

第三章 流模型

3.1 连续随机变量的流模型

一、简介

1.自回归方式回顾
(1)作用
·直接为\(\mathbf{x}\)的分布进行建模。
(2)优势
·可以学习长距离统计信息,从而估计密度分布的能力很强。
(3)缺点
·使用自回归进行参数化,抽样过程缓慢。
·缺少隐式表征层,无法了解和利用内部的数据特征,很难应用于压缩、度量学习等应用场景。
2.流模型思想举例
【例1】
给定随机变量\(z \in \mathbb{R}\),其中\(\pi(z) = \mathscr{N}(z|0, 1)\)。考虑新的随机变量:\(x = 0.75 + 1\),问:\(x, p(x)\)的分布是什么?
【解】
\(f\)可逆(双射)的前提下,可使用变量替换方程:\(p(x) = \pi(z = f^{-1}(x))|\frac{\partial f^{-1}(x)}{\partial x}|\)
本例中,\(f^{-1}(x) = \frac{x - 1}{0.75}\)
\(p(x) = \pi (z = f^{-1}(x))|\frac{\partial f^{-1}(x)}{\partial x}| \newline = \frac{1}{\sqrt{2\pi \cdot 0.75^2}}e^{\frac{-(x - 1)^2}{0.75^2}}\)
即:\(p(x) = N(x|1, 0.75)\)
【注】
\(|\frac{\partial f^{-1}(x)}{\partial x}|\)负责在变换\(f\)后对分布\(\pi (z)\)进行归一化,抵消了\(f\)造成的可能的体积改变。
3.高维连续随机变量的替换方程
\(p(\mathbf{x}) = \pi(z = f^{-1}(\mathbf{x}))|\mathbf{J}_f(x)|^{-1}\)
其中:\(\mathbf{J}_f(x)\)表示函数\(f\)的雅可比(Jacobi)矩阵。

二、深度生成网络中的变量替换

1.基本思想
·通过利用变量替换,为复杂、高维度的图像、音频或其他数据源的分布建模。
2.数学表达
·从一个已知分布(常用高斯分布)\(\pi (z_0) = \mathscr{N}(x|0, \mathbf{I})\)出发,运用一系列可逆变换\(f_1, \cdots, f_K\)(设其复合变换为\(f\)),以获得灵活的数据分布:
\(p(x) = \pi(z_0 = f^{-1}(x))\Pi_{i = 1}^{K}|\mathbf{J}_{f_i}(z_{i - 1})|^{-1}\)
·分布\(p(x)\)的对数:
\(lnp(x) = ln\mathscr{N}(z_0 = f^{-1}(x)|0, I) - \sum_{i = 1}^{K}ln|\mathbf{J}_{f_i}(z_{i - 1})|\)
【理解】
·第一部分:\(0\)\(f^{-1}(x)\)之间的平均平方误差加上常数。
·第二部分:确保分布被正确地归一化,惩罚体积变化,可视为可逆变换\(f_i\)的一种正则化。
3.使用神经网络对可逆变换建模
·变换是可逆的,因此需选取可逆的神经网络,以对变换进行建模。
·对于任意的可逆变换序列,\(\sum_{i = 1}^{K}ln|\mathbf{J}_{f_i}(z_{i - 1})|\)在计算上难以处理。
·神经网络的性质:可逆,且雅可比行列式的对数相对容易计算
4.(归一化)流模型
·由神经网络构建的一类可逆、且具有易处理的雅可比行列式的模型的统称。
5.流模型举例
·平面归一化流
·Sylvester归一化流
·残差流
·可逆DenseNets
·实值非体积不变(RealNVP, Real-Valued Non-Volume Presercing)流

三、构建RealNVP的组件

[注]先阅读完整RealNVP论文有助于理解以下原理与代码。
·原论文链接
·论文阅读笔记链接 模型设计目标:对于输入\(\mathbb{x}\),应构造可逆,且Jacobi行列式相对容易计算的转换函数\(f\)
1.耦合层(Coupling Layer)
(1)向量分割
\(\mathbf{x} = [\mathbf{x}_{a}, \mathbf{x}_{b}]\)
其中:\(\mathbf{x}_a = \mathbf{x}_{1:d}, \mathbf{x}_b = \mathbf{x}_{d + 1:D}\)
(2)变换定义
\(\mathbf{y}_a = \mathbf{x}_a\)
\(\mathbf{y}_b = exp(s(\mathbf{x})_a)\odot\mathbf{x}_{b} + t(\mathbf{x}_{a})\)
其中:\(\odot\)表示Hadamard乘积(两矩阵逐元素相乘),\(t, s\)分别表示转移(transition)和缩放(scaling)。
(3)变换对应的Jacobi矩阵
\(\mathbf{J} = \begin{bmatrix} \mathbb{I}_{d \times d} \ \mathbf{0}_{d \times{D - d}} \\ \frac{\partial \mathbf{y}_b}{\partial \mathbf{x}_{a}} \ diag(e^{s(\mathbf{x}_a)})\end{bmatrix}\)
从而有:\(det(\mathbf{J}) = \Pi_{j = 1}^{D - d}exp(s(\mathbf{x}_{a}))_j = exp(\sum_{j = 1}^{D - d}s(\mathbf{x}_{a})_j)\)
(4)总结
·耦合层是一个强大、灵活的转换,并且具有易于处理的Jacobi行列式。
·上述变换只处理了一半输入,因此需进行适当的附加转换,调换\(\mathbf{y}_a, \mathbf{y}_b\)的顺序,与耦合层一起使用。
2.置换层(Permutation Layer)
·作用:将\(\mathbf{y} = [\mathbf{y}_{a}, \mathbf{y}_b]\)置换为\(\mathbf{y} = [\mathbf{y}_{b}, \mathbf{y}_a]\)
·特点:置换体积不变,即Jacobi行列式恒为\(1\)
·应用:每个耦合层后均可应用置换层,以颠倒变换的顺序。
3.解量化
(1)向量的离散、连续性质
·流模型:假设\(\mathbf{x}\)是实值随机变量形成的向量。
·实际运用:许多对象往往是离散的,如图像像素通常表示为\(\mathbf{x} \in \{0, 1, \cdots, 255\}\)中的整数。
(2)均匀解量化(Uniform Dequantization)
·对于\(\forall \mathbf{y} \in {0, 1, \cdots, 255}^{D}\),添加均匀噪声\(\mathbf{u} \in [-0.5, 0.5]^D\),从而可对\(\mathbf{y} = \mathbf{x} + \mathbf{u}\)应用密度估计。

四、流模型(RealNVP)实践

1.训练目标
·理论训练目标:
\(lnp(x) = ln\mathscr{N}(z_0 = f^{-1}(x)|0, I) - \sum_{i = 1}^{K}ln|\mathbf{J}_{f_i}(z_{i - 1})|\)
·由于各耦合层变换行列式为\(det(\mathbf{J}) = \Pi_{j = 1}^{D - d}exp(s(\mathbf{x}_{a}))_j = exp(\sum_{j = 1}^{D - d}s(\mathbf{x}_{a})_j)\),置换层行列式恒为\(1\),实际训练目标:
\(lnp(x) = ln\mathscr{N}(z_0 = f^{-1}(x)|0, I) - \sum_{i = 1}^{K}(\sum_{j = 1}^{D - d}s_k(\mathbf{x}_{a}^{k})_j)\)
其中:\(s_{k}\)是第\(k\)个耦合层的缩放网络,\(x_{a}^{k}\)表示第\(k\)个耦合层的输入。
2.对数高斯分布计算
·\(ln\mathscr{N}(z_0 = f^{-1}(x)|0, I) = -const - \frac{1}{2}||f^{-1}(x)||^2\)
其中,\(const = \frac{D}{2}\)为标准高斯函数的归一化常量,\(\frac{1}{2}||f^{-1}(x)||^2 = MSE(0, f^{-1}(x))\)

五、RealNVP代码

第四章 隐变量模型

4.1 简介

一、概率分布建模回顾

1.针对数据概率分布\(p(\mathbf{x})\)进行建模,第二、三章分别介绍了自回归模型流模型
2.共性:直接对似然函数进行建模。
3.自回归模型
·对分布进行分解
·运用参数化条件分布\(p(x_d|\mathbf{x}_{\lt d})\)
4.流模型
·使用神经网络,实现可逆的变量变换公式

二、隐变量模型

1.低维隐变量的意义
·数据中,某些低维度因素对于一整个数据的生成极其重要。确定这些因素后,添加细节即可生成数据。
2.隐变量生成过程 (1)设待生成的高维对象\(\mathbf{x} \in \mathbf{X}^D\)低维隐变量\(\mathbf{z} \in \mathbf{Z}^M\),其中\(\mathbf{Z}^M\)低维流形
(2)生成过程
·首先对低维隐变量进行采样\(\mathbf{z} \sim p(\mathbf{z})\)
·然后,从条件分布\(p(\mathbf{x} | \mathbf{z})\)采样,获得待生成数据\(\mathbf{x}\)
3.隐变量模型中的似然函数计算
·隐变量模型:引入隐变量\(\mathbf{z}\),将联合分布分解为:\(p(\mathbf{x}, \mathbf{z}) = p(\mathbf{x}|\mathbf{z})p(\mathbf{z})\)
·训练时,后验分布\(p(\mathbf{x}|\mathbf{z})\)难以计算,故应该对未知部分进行求和抵消(sum out)或边缘抵消(marginalize out)。
·边缘似然函数\(p(\mathbf{x}) = \int p(\mathbf{x}|\mathbf{z})p(\mathbf{z})d\mathbf{z}\)
·上述积分的计算有两种方式:近似推断变分推断

4.3 变分自动编码器——非线性隐变量模型的变分推理

一、变分自动编码器原理

边缘似然函数:\(p(\mathbf{x}) = \int p(\mathbf{x}|\mathbf{z})p(\mathbf{z})d\mathbf{z}\)
模型设计目标:对上述边缘似然函数进行尽可能好的近似。
1.蒙特卡洛近似——最简单的近似方法
(1)思想
·使用若干来自先验的样本\(\mathbf{z}_k \sim p(\mathbf{z})\),对\(p(\mathbf{x})\)进行近似。
(2)近似计算公式 \(p(\mathbf{x}) = \int p(\mathbf{x}|\mathbf{z})p(\mathbf{z})d\mathbf{z} \newline = \mathbb{E}_{\mathbf{z} \sim p(\mathbf{z})}[p(\mathbf{x}|\mathbf{z})] \newline \approx \frac{1}{K}\sum_{k}p(\mathbf{x}|\mathbf{z}_k)\)
(3)问题——维度灾难
·为了覆盖足够的空间,需要的样本数量\(M\)指数级增长
·若\(\mathbf{z}\)维度较高,样本太少,则近似推断效果不佳
2.变分推断
(1)变分分布族(正态分布)
·由神经网络\(\phi, \{q_{\phi}(\mathbf{z})\}\)参数化。
·\(\phi = \{\mu, \sigma^2\}\)
·该分布将非零概率质量分配给所有的\(\mathbf{z} \in \mathbf{Z}^M\)
(2)边缘分布的对数近似
·变分下界推导过程
\(lnp(\mathbf{x}) = ln\int p(\mathbf{x}|\mathbf{z})p(\mathbf{z})d\mathbf{z}(使用全概率公式,对条件分布进行积分) \newline = ln\int \frac{q_{\phi}(\mathbf{z})}{q_{\phi}(\mathbf{z})} p(\mathbf{x}|\mathbf{z})p(\mathbf{z})d\mathbf{z}(添项) \newline = ln \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z})}[\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{q_{\phi}(\mathbf{z})}](对z的分布进行变换) \newline \geq \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z})}ln [\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{q_{\phi}(\mathbf{z})}](运用Jensen不等式,将对数符号移入期望内部) \newline = \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z})}[lnp(\mathbf{x}|\mathbf{z}) + lnp(\mathbf{z}) - ln q_{\phi}(\mathbf{z})] \newline = \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z})}[lnp(\mathbf{x}|\mathbf{z})] - \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z})}[lnq_{\phi}(\mathbf{z}) - lnp(\mathbf{z})](拆项)\)
(3)均摊变分后验
·考虑到均摊变分后验,即\(\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{x})\),而不是对于每个\(\mathbf{x}\)都分别有一个\(q_{\phi}(\mathbf{z})\),则有:
\(lnp(x) \geq \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{z})}[lnp(\mathbf{x}|\mathbf{z})] - \mathbb{E}_{z \sim q_{\phi}(\mathbf{z})}[lnq_{\phi}(\mathbf{z}|\mathbf{x}) - lnp(\mathbf{z})](证据下界)\)
·均摊的意义:只需训练单一的模型,即可返回给定输入的分布参数。
(4)获得的模型
·随机编码器\(q_{\phi}(\mathbf{z} | \mathbf{x})\)
·随机解码器\(p(\mathbf{x} | \mathbf{z})\)
·“随机”:编码器、解码器均为概率分布,与确定性自动编码器有所区别。
·对证据下界的理解:\(\mathbb{E}_{z \sim q_{\phi}(\mathbf{z})}[lnq_{\phi}(\mathbf{z}|\mathbf{x}) - lnp(\mathbf{z})]\)为惩罚项,即\(lnq_{\phi}(\mathbf{z}|\mathbf{x}), lnp(\mathbf{z})\)之间的KL散度,表示随机编码器的概率分布\(q_{\phi}(\mathbf{z} | \mathbf{x})\)应尽量接近高斯分布。
(5)证据下界的另一种推导
TODO
·\(ln p(x) = \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{x})}[lnp(\mathbf{x} | \mathbf{z})] - KL[q_{\phi}(\mathbf{z}|\mathbf{x}) || p(\mathbf{z})] + KL[q_{\phi}(\mathbf{z}|\mathbf{x})||p(\mathbf{z}|\mathbf{x})]\)
·上述公式中:前两项即为之前推导得到的证据下界,后一项表示变分后验与真实后验之间的差距。
·真实后验是未知的;根据KL散度恒为非负的性质,舍弃该项即得证据下界。
·\(KL[q_{\phi}(\mathbf{z}|\mathbf{x})||p(\mathbf{z}|\mathbf{x})]\)表明了证据下界与真实对数似然之间的差距。若\(q_{\phi}(\mathbf{z}|\mathbf{x})\)\(p(\mathbf{z}|\mathbf{x})\)的近似程度较好,则模型效果较好;若后验过于简单,则证据下界只能是对数似然的松散下界,可能降低VAE质量。

二、VAE的组件

1.组件
·随机编码器(均摊变分后验):\(q_{\phi}(\mathbf{z}|\mathbf{x})\)
·随机解码器(条件似然):\(p(\mathbf{x}|\mathbf{z})\)
·先验(边缘分布):\(p(\mathbf{z})\)
·目标为证据下界ELBO(对数似然函数\(lnp(\mathbf{x})\)的下界):
2.VAE的关键问题
·分布的参数化
·期望值的计算:\(lnp(x) \geq \mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{x})}[lnp(\mathbf{x}|\mathbf{z})] - \mathbb{E}_{z \sim q_{\phi}(\mathbf{z})}[lnq_{\phi}(\mathbf{z}|\mathbf{x}) - lnp(\mathbf{z})]\)
3.分布的参数化
①解码器的参数化
·对于离散值的数据而言,可使用类别分布进行参数化:\(p_{\theta}(\mathbf{x}|\mathbf{z}) = Categorial(\mathbf{x} | \theta(\mathbf{z}))\)
·概率:\(\theta(\mathbf{z}) = Softmax(NN(\mathbf{z}))\)
②隐变量分布的参数化
·\(\mathbf{z}\in \mathbb{R}^M\)视为连续随机变量。
·针对编码器(变分后验)使用高斯分布:\(q_{\phi}(\mathbf{z}|\mathbf{x}) = N(\mathbf{z} | \mu_{\phi}(\mathbf{x}), diag[\sigma_{\phi}^2(\mathbf{x})])\)(高斯分布的均值\(\mu_{\phi}(\mathbf{x})\)、方差\(diag[\sigma_{\phi}^2(\mathbf{x})]\))均由神经网络进行预测)
·针对隐变量分布(先验)使用高斯分布:\(p(\mathbf{z}) = N(\mathbf{z} | 0, I)\)
4.重新参数化与证据下界计算
·使用\(z = \mu + \epsilon\sigma, \epsilon \in N(0, 1)\)\(z\)所属的分布进行重参数化,使得随机性仅仅来自于\(p(\epsilon) \sim N(0, 1)\),大幅降低梯度的方差。

三、VAE的网络架构

1.编码器网络
·概率分布:\(q_{\phi}(\mathbf{z} | \mathbf{x}) = N(\mathbf{z}|\mu_{\phi}(\mathbf{x}), \sigma_{\phi}^2(\mathbf{x}))\)
·输入:原始图像\(\mathbf{x} \in X^D\)
·输出:隐变量\(z\)的条件均值\(\mu \in \mathbb{R}^M\)、条件方差的对数\(log\sigma^2 \in \mathbb{R}^M\)
·网络:\(x \in X^D\rightarrow Linear(D, 256)\rightarrow LeakyReLU\rightarrow Linear(256, 2M)\rightarrow split\rightarrow \mu \in \mathbb{R}^M, log\sigma^2 \in \mathbb{R}^M\)
[注]方差必须非负,取对数可以解除非负性约束。
2.解码器网络
·概率分布:\(z \in \mathbb{R}^M\)
·输入:隐变量\(z \in \mathbb{R}^M\)
·输出:每个像素值分别取每个离散值的概率\(\theta \in [0, 1]^{D \times L}\),其中\(D\)为图像维度,\(L\)为像素可能取的离散值的个数(如:像素点在\([0, 256]\)间取整数值,则\(L = 257\))。
·网络:\(z \in \mathbb{R}^M \rightarrow Linear(M, 256) \rightarrow LeakyReLU \rightarrow Linear(256, DL)\rightarrow reshape \rightarrow Softmax\rightarrow \theta \in [0, 1]^{D \times L}\)
3.证据下界
·证据下界数学公式:\(\mathbb{E}_{\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{x})}[ln\space Categorial \space p(\mathbf{x}|\theta(\mathbf{z}))] - \mathbb{E}_{z \sim q_{\phi}(\mathbf{z})}[lnN(z_{\phi}|\mu_{\phi}(\mathbf{x}_n), \sigma_{\phi}^2(\mathbf{x}_n)) - lnN(z_{\phi}|0, I)]\)
·证据下界需要最大化,但DL框架默认对损失函数最小化。因此,需要对上述公式添加符号。对于数据集\(D = \{\mathbf{x}_n\}_{n = 1}^N\),最小化目标为:
\(-ELBO(D; \theta, \phi) = \sum_{n = 1}^N-\{\ln\space Categorial \space p(\mathbf{x}|\theta(\mathbf{z})) - [lnN(z_{\phi}|\mu_{\phi}(\mathbf{x}_n), \sigma_{\phi}^2(\mathbf{x}_n)) - lnN(z_{\phi}|0, I)]\}\)