Understanding Deep Learning—扩散部分
注:《 Understanding Deep Learning 》by Simon J.D. Prince。本文用于记录基于个人理解的翻译内容
简单梳理:
乘法公式: p(A,B)=p(A|B)p(B)
扩撒模型的encoder概率图可以描述为:
decoder过程为:
由于在计算时的条件独立性假设,这是一条马尔可夫链,那么当前状态之和上一状态有关,所以对于联合概率 p(z_{1:T},x)=p(z_{1:T}|x)p(x)=p(z_1|x)\prod_{t=2}^{T}p(z_t|z_{t-1})p(x)
在训练时,一个一个计算 p(z_t|z_{t-1}) 非常的耗时,由于高斯分布的性质,可以给出一个近似的 q(z_t|x) 来获取时间步t的采样
由于encoder是人为给定的,所以我们已经知道了 p(z_t|z_{t-1}) ,我们需要的是反向的decoder能知道 q(z_{t-1}|z_t) ,这样我们才能对任意一个sample的 z_T 计算出一个需要的 x 。由条件概率公式 q(z_{t-1}|z_t)=\frac{q(z_t|z_{t-1})q(z_{t-1})}{q(z_t)} 所以我们还需要知道 q(z_t) ,然而我们没有办法直接计算出 q(z_t) ,就像我们不知道 p(x) 一样。然而我们知道初始的数据 x ,我们加入 x ,就能得到 q(z_{t-1}|z_t,x)=\frac{q(z_t|z_{t-1},x)q(z_{t-1}|x)}{q(z_t|x)} ,我们可以计算 q(z_t|x) ,而 q(z_t|z_{t-1},x)=q(z_t|z_{t-1}) ,这样就可以得到近似的 q(z_{t-1}|z_t)
第18章:扩散模型
18.1:概述
一个扩散模型由编码器和解码器两部分组成,编码器负责将样本数据 x 映射成隐空间的向量 z_1, z_2, ...z_T 。解码器则实现反向过程:由 z_T 开始一步一步映射回 z_{T-1},...,z_1 ,最后映射回 x 。 在编码器和解码器中,相邻变量之间的映射是随机的,而不是确定性的。
在上述过程中,编码器是确定的(即不需要通过网络参数学习),只需不断将白噪音加入数据中,有限步后潜在变量的条件分布 q(z_T|x) 和边际分布 q(x_T) 趋于标准正态分布。由于此过程是预先指定的,因此所有学习的参数都在解码器中。解码器通过构建的网络来学习相邻两步的向量之间 P_r(x) 如何添加的噪声,进而反向逐步去除噪声还原真实的数据。对于生成任务,通过在 q(z_T) 分布抽取样本传递给解码器实现。
18.2:编码器(前向过程)
如图18.2,前向过程中,通过公式
得到中间变量 z_1, ..., z_T 。其中 \epsilon_{t} 是从标准正态分布中提取的噪声。超参数 {\beta_t} \in[0, 1] 确定噪声混合的速度,称为噪声调度(noise schedule)。可以等价地写成:
在有限步T后, q(z_T|x)=q(z_T) 变成标准正态分布。由 x 确定的 z_1, ...,z_T 的联合概率分布满足
18.2. 1:扩散核 q(z_t|x)
当t很大时,逐步来生成 z_t 并通过网络学习是非常耗时,下面介绍 q(z_t|x) 的近似分布,可以通过初始的 x 直接计算 z_t
由公式18.1先得到 z_1, z_2
再将1式代入到2式中
后两项均为标准正态分布中的噪声,则由公式两项和为一个均值为0, 方差为 1-({1-\beta_2})(1-\beta_1) 的高斯噪声,则上式等价于
类推到第t次有
其中 \alpha_t=\prod_{s=1}^{t}1-\beta_s 。
对于任何初始数据 x ,变量 z_t 以已知的均值和方差正态分布。因此,如果我们不关心通过中间变量的演化历史,那么很容易通过分布 q(z_t|x) 得到 z_t 。
18.2.2:边缘分布 q(z_t)
边缘分布 q(z_t) 是在给定初始分布 P_r(x) 和每个起点的可能扩散路径的情况下观察到 z_t 值的概率,它可以通过考虑联合分布 q(z_1:z_t) 并边缘化除 zt 之外的所有变量来计算
由公式18.8,对于每一个 z_t 都可由初始 P_r(x) 直接得到:
因此,如果我们从数据分布 P_r(x) 中重复采样,并将扩散核 q(z_t|x) 叠加到每个样本上,结果就是边缘分布 q(z_t) (图 18.4)。但是,边缘分布不能直接计算,因为我们不知道原始数据分布 P_r(x)
18.2.3 条件分布 q(z_{t-1}|z_t)
我们将条件概率 q(z_t|z_{t-1}) 定义为混合过程(等式 18.2)。应用贝叶斯公式:
然而我们无法计算边缘分布 q(z_{t-1}) 。这符合我们的直觉;我们在每个阶段都将原始数据示例与噪声混合,除非我们知道起点,否则无法逆转这种情况。对于这个简单的一维示例,可以从数值上评估这些分布(图 18.5)。通常,它们的形式很复杂,但在许多情况下,它们很接近于正态分布。这很重要,因为当我们构建解码器时,我们将使用正态分布来近似逆过程。
18.2.4 边缘扩散分布 q(z_{t-1}|z_t,x)
有一个与编码器相关的最终分布需要考虑。我们注意到,我们无法找到条件分布 q(z_{t-1}|z_t) ,因为我们不知道边际分布 q(z_t) 。然而,如果我们知道起始变量 x ,那么我们可以计算 q(z_{t-1}|x) ,根据贝叶斯公式可以计算:
由于前向过程是一个马尔可夫过程,因此 q(z_{t}|z_{t-1},x) 等价于 q(z_{t}|z_{t-1})
根据高斯分布的特性:
上式可以写为:
注意,方程 18.12、18.13 和 18.14 中的比例常数需要消除,因为最终结果已经是正确归一化的概率分布。
18.3 编码器(反向过程)
当我们学习了一个扩散模型以后,要实现反向将 z_{t} 映射到 z_{t-1} 的过程,所以我们需要得到分布 p(z_{t-1}|z_t)