机器学习课程学习周报十七

news2024/10/20 7:51:29

机器学习课程学习周报十七

文章目录

  • 机器学习课程学习周报十七
    • 摘要
    • Abstract
    • 一、机器学习部分
      • 1. 变分推断/推理
      • 2. VAE
        • 2.1 Auto-Encoder的简单回顾
        • 2.2 为什么提出VAE
        • 2.3 VAE的数学原理
      • 3. Diffusion Model的数学原理
        • 3.1 Training算法和Sampling算法
        • 3.2 图像生成模型的本质
    • 总结

摘要

本周报主要探讨了变分推理(Variational Inference)的基本思想及其在机器学习中的应用,详细介绍了证据下界(ELBO)的推导过程。接着,讨论了变分自编码器(VAE)的原理及其在生成模型中的优势。最后,简要分析了扩散模型(Diffusion Model)的数学原理,并阐述了图像生成模型的本质。

Abstract

This report explores the fundamental concepts of Variational Inference and its applications in machine learning, with a detailed explanation of the derivation of the Evidence Lower Bound (ELBO). It then discusses the principles of Variational Autoencoders (VAE) and their advantages in generative models. Finally, it briefly analyzes the mathematical principles of the Diffusion Model and describes the essence of image generation models.

一、机器学习部分

1. 变分推断/推理

1.1 证据下界

变分推理variational inference)是贝叶斯学习中常用的、含有隐变量模型的学习和推理方法。变分推理和马尔可夫链蒙特卡罗法MCMC)属于不同的技巧。MCMC通过随机抽样的方法近似地计算模型的后验概率,变分推理则通过解析的方法计算模型的后验概率的近似值。

变分推理的基本想法如下。假设模型是联合概率分布 p ( x , z ) p(x,z) p(x,z),其中 x x x是观测变量(数据), z z z是隐变量,包括参数。目标是学习模型的后验概率分布 p ( z ∣ x ) p(z|x) p(zx),用模型进行概率推理。但这是一个复杂的分布,直接估计分布的参数很困难。所以考虑用概率分布 q ( z ) q(z) q(z)近似条件概率分布 p ( z ∣ x ) p(z|x) p(zx),用KL散度 D ( q ( z ) ∣ ∣ p ( z ∣ x ) ) D(q(z)||p(z|x)) D(q(z)∣∣p(zx))计算两者的相似度, q ( z ) q(z) q(z)称为变分分布variational distribution)。如果能找到与 p ( z ∣ x ) p(z|x) p(zx)在KL散度意义下最近的分布 q ∗ ( z ) {q^*}(z) q(z),则可以用这个分布近似 p ( z ∣ x ) p(z|x) p(zx)

p ( z ∣ x ) ≈ q ∗ ( z ) p(z|x) \approx {q^*}(z) p(zx)q(z)

KL散度可以写成以下的形式:

D ( q ( z ) ∣ ∣ p ( z ∣ x ) ) = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( z ∣ x ) ] = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( x , z ) p ( x ) ] = E q [ log ⁡ q ( z ) ] − E q [ log ⁡ p ( x , z ) ] + log ⁡ p ( x ) = log ⁡ p ( x ) − { E q [ log ⁡ p ( x , z ) ] − E q [ log ⁡ q ( z ) ] } \begin{array}{l}D(q(z)||p(z|x))\\ = {E_q}\left[ {\log q(z)} \right] - {E_q}\left[ {\log p(z|x)} \right]\\ = {E_q}\left[ {\log q(z)} \right] - {E_q}\left[ {\log \frac{{p(x,z)}}{{p(x)}}} \right]\\ = {E_q}\left[ {\log q(z)} \right] - {E_q}\left[ {\log p(x,z)} \right] + \log p(x)\\ = \log p(x) - \left\{ {{E_q}\left[ {\log p(x,z)} \right] - {E_q}\left[ {\log q(z)} \right]} \right\}\end{array} D(q(z)∣∣p(zx))=Eq[logq(z)]Eq[logp(zx)]=Eq[logq(z)]Eq[logp(x)p(x,z)]=Eq[logq(z)]Eq[logp(x,z)]+logp(x)=logp(x){Eq[logp(x,z)]Eq[logq(z)]}

注意到KL散度大于等于零,当且仅当两个分布一致时为零,上述最后一个等式称为(1)式,由此可知(1)式的右端第一项与第二项满足关系:

log ⁡ p ( x ) ≥ E q [ log ⁡ p ( x , z ) ] − E q [ log ⁡ q ( z ) ] \log p(x) \ge {E_q}\left[ {\log p(x,z)} \right] - {E_q}\left[ {\log q(z)} \right] logp(x)Eq[logp(x,z)]Eq[logq(z)]

上述不等式称为(2)式,(2)式右端是左端的下界,左端称为证据evidence),右端称为证据下界evidence lower bound, ELBO),证据下界记作:

L ( q ) = E q [ log ⁡ p ( x , z ) ] − E q [ log ⁡ q ( z ) ] L(q) = {E_q}\left[ {\log p(x,z)} \right] - {E_q}\left[ {\log q(z)} \right] L(q)=Eq[logp(x,z)]Eq[logq(z)]

KL散度的最小化可以通过证据下界的最大化实现,因为目标是求 q ( z ) q(z) q(z)使KL散度最小化,这时 log ⁡ p ( x ) \log p(x) logp(x)是常量。因此,变分推理变成求解证据下界最大化的问题。

变分推理可以从另一个角度理解。目标是通过证据 log ⁡ p ( x ) \log p(x) logp(x)的最大化,估计联合概率分布 p ( x , z ) p(x,z) p(x,z)。因为含有隐变量 z z z,直接对证据进行最大化困难,转而根据(2)式对证据下界进行最大化。如下图从 log ⁡ p ( x ) \log p(x) logp(x)的角度出发,可得到 log ⁡ p ( x ) = L ( q ) + K L ( q ∣ ∣ p ) \log p(x) = L(q) + KL(q||p) logp(x)=L(q)+KL(q∣∣p),因为 K L ( q ∣ ∣ p ) KL(q||p) KL(q∣∣p)一定大于等于零, log ⁡ p ( x ) \log p(x) logp(x)就是 L ( q ) L(q) L(q)上界upper bound),最大化证据 log ⁡ p ( x ) \log p(x) logp(x)就变为了最大化证据下界 L ( q ) L(q) L(q)。当 K L ( q ∣ ∣ p ) KL(q||p) KL(q∣∣p)等于零时,即 q q q p p p分布一致的时候有, log ⁡ p ( x ) = L ( q ) \log p(x) = L(q) logp(x)=L(q)
在这里插入图片描述

利用琴生不等式Jensen’s inequality),给出另一种证明方式:

在这里插入图片描述

上述的推导中有两点要说明的问题:

  • 连续型随机变量求期望就是积分,如: ∫ z ( p ( x , z ) q ( z ) q ( z ) ) d z = E q ( z ) [ p ( x , z ) q ( z ) ] \int_z {(\frac{{p(x,z)}}{{q(z)}}q(z))dz = {E_{q(z)}}[\frac{{p(x,z)}}{{q(z)}}]} z(q(z)p(x,z)q(z))dz=Eq(z)[q(z)p(x,z)]
  • q ( z ) {q(z)} q(z)是概率密度函数, p ( x , z ) q ( z ) {\frac{{p(x,z)}}{{q(z)}}} q(z)p(x,z)是随机变量函数, x x x是连续型随机变量,这是一个连续型随机变量函数的数学期望

在这里插入图片描述

目标就是通过不断地调整 q ( z ) {q(z)} q(z)的参数,学习模型的后验概率分布 p ( z ∣ x ) p(z|x) p(zx),以拟合原始较为复杂的分布 p ( x ) {p(x)} p(x)

1.2 q ( z ) {q(z)} q(z)的选取

对变分分布 q ( z ) q(z) q(z)要求是具有容易处理的形式,通常假设 q ( z ) q(z) q(z) z z z的所有分量都是互相独立的(实际是条件独立于参数),即满足:

q ( z ) = q ( z 1 ) q ( z 2 ) ⋯ q ( z n ) q(z) = q({z_1})q({z_2}) \cdots q({z_n}) q(z)=q(z1)q(z2)q(zn)

这时的变分分布称为平均场mean filed)。KL散度的最小化或证据下界最大化实际是在平均场的集合,即满足独立假设的分布集合 Q = { q ( z ) ∣ q ( z ) = ∏ i = 1 m q ( z i ) } Q = \{ q(z)|q(z) = \prod \limits_{i = 1}^m q(z{}_i)\} Q={q(z)q(z)=i=1mq(zi)}之中进行的。

q ( z ) {q(z)} q(z)代入证据下界 L ( q ) L(q) L(q)中,即:

L ( q ) = ∫ z q ( z ) log ⁡ p ( x , z ) d z − ∫ z q ( z ) log ⁡ q ( z ) d z = ∫ z ∏ i = 1 m q i ( z i ) log ⁡ ( p ( x , z ) ) d z − ∫ z ∏ i = 1 m q i ( z i ) ∑ i = 1 m log ⁡ ( q i ( z i ) ) d z \begin{array}{l}L(q)\\ = \int_z {q(z)} \log p(x,z)dz - \int_z {q(z)\log q(z)} dz\\ = \int_z { \prod \limits_{i = 1}^m } {q_i}({z_i})\log (p(x,z))dz - \int_z { \prod \limits_{i = 1}^m {q_i}({z_i})\sum\limits_{i = 1}^m {\log ({q_i}({z_i}))dz} } \end{array} L(q)=zq(z)logp(x,z)dzzq(z)logq(z)dz=zi=1mqi(zi)log(p(x,z))dzzi=1mqi(zi)i=1mlog(qi(zi))dz

∫ z ∏ i = 1 m q i ( z i ) log ⁡ ( p ( x , z ) ) d z \int_z { \prod \limits_{i = 1}^m } {q_i}({z_i})\log (p(x,z))dz zi=1mqi(zi)log(p(x,z))dz作为part1,并将 ∫ z ∏ i = 1 m q i ( z i ) ∑ i = 1 m log ⁡ ( q i ( z i ) ) d z \int_z { \prod \limits_{i = 1}^m {q_i}({z_i})\sum\limits_{i = 1}^m {\log ({q_i}({z_i}))dz} } zi=1mqi(zi)i=1mlog(qi(zi))dz作为part2

接下来就是解part1part2的问题

在这里插入图片描述
在这里插入图片描述

总结起来,变分推理有以下几个步骤:(1)定义变分分布 q ( z ) q(z) q(z);(2)推导其证据下界表达式;(3)用最优化方法对证据下界进行优化,如坐标上升,得到最优分布 q ∗ ( z ) {q^*}(z) q(z),作为后验分布 p ( z ∣ x ) p(z|x) p(zx)的近似。

2. VAE

2.1 Auto-Encoder的简单回顾

自编码器Auto-Encoder)属于self-supervised learning(自监督学习)其中的一种方法。
在这里插入图片描述

自编码器中包含一个编码器和一个解码器。编码器可能读入一张图片,图片是一种维度非常高的向量,编码器能将高维度的向量压缩为低维度的向量,编码器通常有降维的作用。而解码器的网络架构可能更类似于GAN中的生成器,解码器要输入通过编码器得到的低维向量,生成一张图片。而训练的目标是要将解码器得到的输出图片与编码器的输入图片越接近越好,这个任务也叫做重构reconstruction)。

2.2 为什么提出VAE

VAEVariational Auto Encoder变分自编码器
在这里插入图片描述

图片左边部分是Auto Encoder的简单例子:我们把一张满月的图片经过Encoder后得到编码code,这个编码code被decoder 后又转换为满月图,弦月图也是如此,注意它们直接的一对一关系。图片右边部分是VAE的简单例子,在编码code中添加一些噪声noise,这样可以让在满月对应noise范围内的code都可以转换为满月,弦月对应的noise 范围内的code也能转换成弦月。
但当我们在code中进行采样时,在不是满月和弦月对应的noise的code中采样时,decoder出来的图片可能是介于满月和弦月之间的图。也就是说,VAE产生了输入数据中不包含的数据,(可以认为产生了含有某种特定信息的新的数据),而Auto Encoder只能产生尽可能接近或者就是以前的数据(当数据简单时,编码解码损耗少时)。图片左边那个问号的意思是当对Auto Encoder中的code进行随机采样时,它介于满月与弦月之间的数据,decoder后可能会输出什么?可能会输出满月,可能会输出弦月,但是最有可能输出的是奇奇怪怪的图片。

在这里插入图片描述

上面这张图就是VAE的模型架构,我们先粗略地领会一下这个模型的设计思想。在Auto Encoder中,编码器是直接产生一个编码code的,就是上图红色部分的 ( m 1 , m 2 , m 3 ) ({m_1},{m_2},{m_3}) (m1,m2,m3)。但是在VAE中,为了给编码添加合适的噪声,编码器会输出两个编码,一个是原有编码 ( m 1 , m 2 , m 3 ) ({m_1},{m_2},{m_3}) (m1,m2,m3),另外一个是控制噪声干扰程度的编码 ( σ 1 , σ 2 , σ 3 ) ({\sigma _1},{\sigma _2},{\sigma _3}) (σ1,σ2,σ3),第二个编码其实很好理解,就是为随机噪声编码 ( e 1 , e 2 , e 3 ) ({e_1},{e_2},{e_3}) (e1,e2,e3)分配权重,然后加上 exp ⁡ ( σ i ) \exp ({\sigma _i}) exp(σi)的目的是为了保证这个分配的权重是个正值,最后将原编码与噪声编码相加,就得到了VAE在code层的输出结果 ( c 1 , c 2 , c 3 ) ({c_1},{c_2},{c_3}) (c1,c2,c3),其它网络架构都与Deep Auto-encoder无异。
在损失函数方面,除了Auto Encoder中的reconstruction error,VAE还增加了上图黄色部分需要minimize的对象:

∑ i = 1 3 ( exp ⁡ ( σ i ) − ( 1 + σ i ) + ( m i ) 2 ) \sum\limits_{i = 1}^3 {(\exp ({\sigma _i}) - (1 + {\sigma _i}) + {{({m_i})}^2})} i=13(exp(σi)(1+σi)+(mi)2)

这同样是必要的部分,因为如果不加的话,整个模型就会出现问题:为了保证生成图片的质量越高,编码器肯定希望噪声对自身生成图片的干扰越小,于是分配给噪声的权重越小,这样只需要将 ( σ 1 , σ 2 , σ 3 ) ({\sigma _1},{\sigma _2},{\sigma _3}) (σ1,σ2,σ3)赋为接近于无穷大的值就好了。所以,黄色部分的损失函数就有限制编码器走这样极端路径的作用。从 e σ i − ( 1 + σ i ) {e^{{\sigma _i}}} - (1 + {\sigma _i}) eσi(1+σi)的表达式可以看出,在 σ i = 0 {\sigma _i} = 0 σi=0处取得最小值0,于是 ( σ 1 , σ 2 , σ 3 ) ({\sigma _1},{\sigma _2},{\sigma _3}) (σ1,σ2,σ3)就会避免被赋值为负无穷大。

2.3 VAE的数学原理

对于生成模型而言,主流的理论模型可以分为隐马尔可夫模型HMM、朴素贝叶斯模型NB和高斯混合模型GMM,而VAE的理论基础就是高斯混合模型。高斯混合模型的基本概念已经在机器学习课程学习周报十四中介绍过了。

在这里插入图片描述

什么是高斯混合模型呢?就是说,任何一个数据的分布,都可以看作是若干高斯分布的叠加。如图所示,如果 P ( x ) P(x) P(x)代表一种分布的话,存在一种拆分方法能让它表示成图中若干浅蓝色曲线对应的高斯分布的叠加。这种拆分方法已经证明出,当拆分的数量达到512时,其叠加的分布相对于原始分布而言,误差是非常非常小的了。于是我们可以利用这一理论模型去考虑如何给数据进行编码。一种最直接的思路是,直接用每一组高斯分布的参数作为一个编码值实现编码。

如上图所示, m m m代表着编码维度上的编号,譬如实现一个512维的编码, m m m的取值范围就是1,2,3……512。 m m m会服从于一个概率分布 P ( m ) P(m) P(m)(多项式分布)。现在编码的对应关系是,每采样一个 m m m,其对应到一个小的高斯分布 N ( μ m , Σ m ) N({\mu ^m},{\Sigma ^m}) N(μm,Σm) P ( x ) P(x) P(x)就可以等价为所有的这些高斯分布的叠加,即:

P ( x ) = ∑ m P ( m ) P ( x ∣ m ) P(x) = \sum\limits_m {P(m)} P(x|m) P(x)=mP(m)P(xm)

其中, m ∼ P ( m ) m \sim P(m) mP(m) x ∣ m ∼ N ( μ m , Σ m ) x|m \sim N({\mu ^m},{\Sigma ^m}) xmN(μm,Σm)

上述的这种编码方式是非常简单粗暴的,它是离散的、有大量失真区域的编码方式。于是我们需要对目前的编码方式进行改进,使得它成为连续有效的编码。

在这里插入图片描述

现在我们的编码换成一个连续变量 z z z,我们规定 z z z服从正态分布 N ( 0 , 1 ) N(0,1) N(0,1)(实际上并不一定要选用 N ( 0 , 1 ) N(0,1) N(0,1),其他的连续分布都是可行的)。每对于一个采样 z z z,会有两个函数 μ \mu μ σ \sigma σ,分别决定 z z z对应到的高斯分布的均值和方差,然后在积分域上所有的高斯分布的累加就成为了原始分布 P ( x ) P(x) P(x),即:

P ( x ) = ∫ z P ( z ) P ( x ∣ z ) d z P(x) = \int\limits_z {P(z)} P(x|z)dz P(x)=zP(z)P(xz)dz

其中, z ∼ N ( 0 , 1 ) z \sim N(0,1) zN(0,1) x ∣ z ∼ N ( μ ( z ) , σ ( z ) ) x|z \sim N(\mu (z),\sigma (z)) xzN(μ(z),σ(z))

在这里插入图片描述

接下来就可以通过最大似然估计求解这个式子, L L L l o g log log后连乘变为连加,即 L = ∑ x log ⁡ P ( x ) L = \sum\limits_x {\log } P(x) L=xlogP(x)。由于 P ( z ) P(z) P(z)是已知的, P ( x ∣ z ) P(x|z) P(xz)未知,而 x ∣ z ∼ N ( μ ( z ) , σ ( z ) ) x|z \sim N(\mu (z),\sigma (z)) xzN(μ(z),σ(z)),于是我们真正需要求解的,是 μ \mu μ σ \sigma σ两个函数的表达式。又因为 P ( x ) P(x) P(x)通常非常复杂,导致 μ \mu μ σ \sigma σ难以计算,我们需要引入两个神经网络来帮助我们求解。

第一个网络是Decoder,它是求解 μ \mu μ σ \sigma σ两个函数的,这等价于求解 P ( x ∣ z ) P(x|z) P(xz),因为 x ∣ z ∼ N ( μ ( z ) , σ ( z ) ) x|z \sim N(\mu (z),\sigma (z)) xzN(μ(z),σ(z))

在这里插入图片描述

第二个网络是Encoder,它求解的结果是 q ( z ∣ x ) q(z|x) q(zx) q q q可以代表任何分布。
在这里插入图片描述

值得注意的是,这里引入第二个神经网络Encoder的目的是,辅助第一个Decoder求解 P ( x ∣ z ) P(x|z) P(xz),这也是整个VAE理论中最精妙的部分,这里的连续变量 z z z也是我们常说的隐变量。

在这里插入图片描述

利用 ∫ z q ( z ∣ x ) d z = 1 \int_z {q(z|x)dz}= 1 zq(zx)dz=1,推导出 log ⁡ P ( x ) \log P(x) logP(x)的下界。这样一来,原本根据 P ( x ) = ∫ z P ( z ) P ( x ∣ z ) d z P(x) = \int\limits_z {P(z)} P(x|z)dz P(x)=zP(z)P(xz)dz,需要求 P ( x ∣ z ) P(x|z) P(xz)使 log ⁡ P ( x ) \log P(x) logP(x)最大,现在引入 q ( z ∣ x ) {q(z|x)} q(zx),就变成了同时求 P ( x ∣ z ) P(x|z) P(xz) q ( z ∣ x ) {q(z|x)} q(zx)使得 log ⁡ P ( x ) \log P(x) logP(x)最大。

在这里插入图片描述

当固定住 P ( x ∣ z ) P(x|z) P(xz)时,因为 log ⁡ P ( x ) \log P(x) logP(x)只与 P ( x ∣ z ) P(x|z) P(xz)有关,所以 log ⁡ P ( x ) \log P(x) logP(x)的值是不会变的。此时去调节 q ( z ∣ x ) {q(z|x)} q(zx),使得 L b {L_b} Lb越来越高,同时KL散度越来越小,当我们调节到 q ( z ∣ x ) {q(z|x)} q(zx) P ( z ∣ x ) P(z|x) P(zx)完全一致时,KL散度就消失为0, L b {L_b} Lb log ⁡ P ( x ) \log P(x) logP(x)完全一致。由此可以得出,不论 log ⁡ P ( x ) \log P(x) logP(x)的值如何,我们总能够通过调节使得 L b {L_b} Lb等于 log ⁡ P ( x ) \log P(x) logP(x),又因为 L b {L_b} Lb log ⁡ P ( x ) \log P(x) logP(x)的下界,所以求解Maximum log ⁡ P ( x ) \log P(x) logP(x)等价为求解Maximum L b {L_b} Lb
在这里插入图片描述

根据上图,进一步推导,求解Maximum L b {L_b} Lb,等价于求解 K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) KL(q(z|x)||P(z)) KL(q(zx)∣∣P(z))的最小值和 ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z \int_z {q(z|x)\log P(x|z)dz} zq(zx)logP(xz)dz的最大值。

第一项, − K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) - KL(q(z|x)||P(z)) KL(q(zx)∣∣P(z))的展开式刚好等于上面介绍的损失函数

∑ i = 1 J ( exp ⁡ ( σ i ) − ( 1 + σ i ) + ( m i ) 2 ) \sum\limits_{i = 1}^J {(\exp ({\sigma _i}) - (1 + {\sigma _i}) + {{({m_i})}^2})} i=1J(exp(σi)(1+σi)+(mi)2)

具体的展开过程来自VAE论文中的Appendix B。于是,第一项式子就是VAE模型架构中的第二个损失函数的由来。

第二项可以写成期望的形式:

M a x i m u m ( ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z ) = M a x i m u m ( E q ( z ∣ x ) [ log ⁡ P ( x ∣ z ) ] ) \begin{array}{l}Maximum(\int_z {q(z|x)\log P(x|z)dz} )\\ = Maximum({E_{q(z|x)}}[\log P(x|z)])\end{array} Maximum(zq(zx)logP(xz)dz)=Maximum(Eq(zx)[logP(xz)])

上述的这个期望,也就是表明在给定 q ( z ∣ x ) {q(z|x)} q(zx)(编码器输出)的情况下 P ( x ∣ z ) {P(x|z)} P(xz)(解码器输出)的值尽可能高,这其实就是一个类似于Auto-Encoder的损失函数(方差忽略不计的话),因此这个式子就是VAE模型架构中的第一个损失函数的由来。

3. Diffusion Model的数学原理

3.1 Training算法和Sampling算法

在这里插入图片描述

Diffusion Model直观上的理解分为上图的两个步骤:Forward Process和Reverse Process。在Forward Process中,不断地增加噪声到原图片中,直到看不出原来的图片。在Reverse Process中,不断从噪点图去噪,直到产生原来完整的图片。

在这里插入图片描述

而实际算法与直观上的理解稍有不同,Algorithm 1是训练的过程,Algorithm 2是采样也是推理的过程。上图截取于论文:Denoising Diffusion Probabilistic Models

先来看Algorithm 1 Training:
在这里插入图片描述

第1步和第6步的意思是,重复第2到第5行的算法过程,直到收敛(converged)。

第2步: x 0 {x_0} x0是一张干净的图片,一般也是想要生成的图片,是从收集到的数据集中抽出来的

第3步: t t t是从1到 T T T范围的均匀分布中采样出的一个整数

第4步: ε \varepsilon ε是从正态分布(Normal Distribution)中采样得到的噪声,这个多元正态分布满足均值为0,协方差矩阵为单位矩阵,每个维度上的方差都是1。从图片的角度来看就是一张噪点图。

第5步:先看 α ˉ t x 0 + 1 − α ˉ t ε {\sqrt {{{\bar \alpha }_t}} {x_0} + \sqrt {1 - {{\bar \alpha }_t}} \varepsilon } αˉt x0+1αˉt ε,这是 x 0 {x_0} x0 ε \varepsilon ε的加权和,其中权重 α ˉ t {{{\bar \alpha }_t}} αˉt是事先定义好的 α ˉ 1 , α ˉ 2 , ⋯   , α ˉ T {{\bar \alpha }_1},{{\bar \alpha }_2}, \cdots ,{{\bar \alpha }_T} αˉ1,αˉ2,,αˉT α ˉ 1 {{\bar \alpha }_1} αˉ1 α ˉ T {{\bar \alpha }_T} αˉT的值是逐渐变小的,表明这个加权和中噪声 1 − α ˉ t ε {\sqrt {1 - {{\bar \alpha }_t}} \varepsilon} 1αˉt ε占的比例更大, α ˉ t x 0 + 1 − α ˉ t ε {\sqrt {{{\bar \alpha }_t}} {x_0} + \sqrt {1 - {{\bar \alpha }_t}} \varepsilon } αˉt x0+1αˉt ε就是一张加上噪声的图片(Noisy image)。接下来, ε θ ( ∗ , t ) {\varepsilon _\theta }(*,t) εθ(,t)表示的是噪声预测器(Noise predictor),其接受两个参数,一个是图片,另一个是 t t t。最后计算 ε − ε θ ( i m a g e , t ) \varepsilon - {\varepsilon _\theta }(image,t) εεθ(image,t),相当于是用Target Noise减去Noise predictor的结果。

在这里插入图片描述

Algorithm 1 Training 的直观流程如上。
在这里插入图片描述

再来看Algorithm 2 Sampling:

这部分是推理的过程,也是Reverse Process。

第1步, x T {x_T} xT是从正态分布中采样得到的噪声图。

第2步和第5步表示,进入T步的循环,重复第3到第4步的算法过程。

第3步,当 t > 1 t > 1 t>1时, z z z从正态分布中采样得到一张噪声图,在最后一步 t = 1 t = 1 t=1时, z = 0 z = 0 z=0,便不再采样新的噪声了。

第4步, x t {x_t} xt是上个去噪步骤结束后得到的图片,其减去预测噪声器预测出的噪声并乘上一个权重,差再乘上一个权重,即 1 α t ( x t − 1 − α t 1 − α ˉ t ε θ ( x t , t ) ) \frac{1}{{\sqrt {{\alpha _t}} }}\left( {{x_t} - \frac{{1 - {\alpha _t}}}{{\sqrt {1 - {{\bar \alpha }_t}} }}{\varepsilon _\theta }({x_t},t)} \right) αt 1(xt1αˉt 1αtεθ(xt,t)),最后再加上 z z z这个噪声。整个迭代的计算表达式为: x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ε θ ( x t , t ) ) + σ t z {x_{t - 1}} = \frac{1}{{\sqrt {{\alpha _t}} }}\left( {{x_t} - \frac{{1 - {\alpha _t}}}{{\sqrt {1 - {{\bar \alpha }_t}} }}{\varepsilon _\theta }({x_t},t)} \right) + {\sigma _t}z xt1=αt 1(xt1αˉt 1αtεθ(xt,t))+σtz α 1 , α 2 , ⋯   , α T {\alpha _1},{\alpha _2}, \cdots ,{\alpha _T} α1,α2,,αT α ˉ 1 , α ˉ 2 , ⋯   , α ˉ T {{\bar \alpha }_1},{{\bar \alpha }_2}, \cdots ,{{\bar \alpha }_T} αˉ1,αˉ2,,αˉT同样都是事先准备好的。

为什么加噪和去噪的过程要这样设置呢?

下篇博客再说明。Diffusion模型涉及VAE的思想,VAE又包含了变分推断的思想,因此想搞明白Diffusion模型的具体原理,还有很多要学习的地方,力求做到融会贯通。

3.2 图像生成模型的本质

从图像生成模型共同的目标来看,从一个已知的分布(如高斯分布)中采样出一个向量,输入到生成模型 G ( z ) G(z) G(z)中,输出的是一张图片 x x x。重复以上过程,即使我们采样的分布是一个简单的分布,最后生成图片的这个分布会是一个非常复杂的分布。而我们希望的是这个生成模型产生的分布要与真实的图片分布(Real Image)越接近越好,这是图像生成模型的目标本质。

在这里插入图片描述

现在的生成模型一般会多添加条件(condition)进行指导生成,本质上并没有区别。以文字为例,“一只在奔跑的狗”,此时生成模型的目标变为产生各式各样的“一只在奔跑的狗”,但本质仍是要让生成狗的图片分布与实际狗的图片分布越接近越好。

在这里插入图片描述

因此,接下来的数学推导中,以不包含condition为前提,只讨论一般的生成,使证明更加简洁。

为了生成模型产生的分布与真实数据的分布越接近越好,主要使用的方法是极大似然估计Maximum Likelihood Estimation)。这个问题我在机器学习课程学习周报十一中,探讨GAN的原理时已经证明过:极大似然估计等价于最小化KL散度,极大似然估计求生成模型的参数 θ \theta θ,就是在最小化生成分布与真实分布之间的差异。

在这里插入图片描述

其中 P θ ( x ) {P_\theta }(x) Pθ(x)表示生成分布的概率密度, P d a t a ( x ) {P_{data}}(x) Pdata(x)表示真实数据分布的概率密度, x 1 , x 2 , … , x m {x^1},{x^2}, \ldots ,{x^m} x1,x2,,xm是从真实数据分布中采样得到的样本。

第1步, ∏ i = 1 m P θ ( x i ) \prod \limits_{i = 1}^m {P_\theta }({x^i}) i=1mPθ(xi)取对数变为 log ⁡ ∏ i = 1 m P θ ( x i ) \log \prod \limits_{i = 1}^m {P_\theta }({x^i}) logi=1mPθ(xi),是极大似然估计中非常自然的做法,一是能利用对数的性质将连乘变成连加,二是取对数不影响找整体表达式最大时的 θ \theta θ值。

第2步,其中的近似可以用上一次周报中的蒙特卡罗法之数学期望估计来解释。

在这里插入图片描述

蒙特卡罗法表明了真实数据的采样方式,利用大数定理可以用样本均值近似估计数学期望,翻过来也是,用数学期望近似样本均值。这里的均值并没有写成 1 m ∑ i = 1 m log ⁡ P θ ( x i ) \frac{1}{m}\sum\limits_{i = 1}^m {\log } {P_\theta }({x^i}) m1i=1mlogPθ(xi),但因为这里是求 arg ⁡ max ⁡ θ \arg \mathop{\max }\limits_\theta argθmax,添上或缺少 1 m \frac{1}{m} m1并不影响,即:

arg ⁡ max ⁡ θ ( ∑ i = 1 m log ⁡ P θ ( x i ) ) ≈ arg ⁡ max ⁡ θ ( m ⋅ E x ∼ P d a t a [ log ⁡ P θ ( x ) ] ) = arg ⁡ max ⁡ θ ( E x ∼ P d a t a [ log ⁡ P θ ( x ) ] ) \arg \mathop{\max }\limits_\theta (\sum\limits_{i = 1}^m {\log } {P_\theta }({x^i})) \approx \arg \mathop{\max }\limits_\theta (m \cdot {E_{x \sim {P_{data}}}}\left[ {\log {P_\theta }(x)} \right]) = \arg \mathop{\max }\limits_\theta ({E_{x \sim {P_{data}}}}\left[ {\log {P_\theta }(x)} \right]) argθmax(i=1mlogPθ(xi))argθmax(mExPdata[logPθ(x)])=argθmax(ExPdata[logPθ(x)])

第3步,可以参考蒙特卡罗法用于积分的计算。函数 h ( x ) h(x) h(x)可分解为 f ( x ) p ( x ) f(x)p(x) f(x)p(x) f ( x ) p ( x ) f(x)p(x) f(x)p(x)的积分就是数学期望: ∫ x f ( x ) p ( x ) d x = E p ( x ) [ f ( x ) ] \int\limits_x {f(x)p(x)dx} = {E_{p(x)}}\left[ {f(x)} \right] xf(x)p(x)dx=Ep(x)[f(x)]

在这里插入图片描述

倒过来,在推导中由第2步到第3步就可得到:

arg ⁡ max ⁡ θ ( E x ∼ P d a t a [ log ⁡ P θ ( x ) ] ) = arg ⁡ max ⁡ θ ∫ x P d a t a ( x ) log ⁡ P θ ( x ) d x \arg \mathop{\max }\limits_\theta ({E_{x \sim {P_{data}}}}\left[ {\log {P_\theta }(x)} \right]) = \arg \mathop{\max }\limits_\theta \int\limits_x {{P_{data}}(x)} \log {P_\theta }(x)dx argθmax(ExPdata[logPθ(x)])=argθmaxxPdata(x)logPθ(x)dx

第3步及第4步,凑出交叉熵-熵的形式,得到KL散度,如下图:
在这里插入图片描述

总结

本次周报通过对变分推理、变分自编码器以及扩散模型的深入分析,尝试理解复杂生成模型的数学原理。Diffusion模型涉及VAE的思想,VAE又包含了变分推断的思想,因此想搞明白Diffusion模型的具体原理,还有很多要学习的地方,力求将模型学习与之前学习的机器学习算法思想做到融会贯通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2219127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用:注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

开源的存储引擎--cantian

cantian 上次稼先社会活动之后,在北京签售的时候见到了三位参天的核心人物。我有感于他们的热情、务实和坦诚,我觉得还应该在深入的做一些事情。至少可以安装体验一下,做做推广。毕竟现在务实的产品不多了,很多都是浮躁的宣传。为…

从一个事故中理解 Redis(几乎)所有知识点

作者:看破 一、简单回顾 事故回溯总结一句话: (1)因为大 KEY 调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用 100%。   (2&#xff…

如何安装MySql

一.卸载MySql 1.1安装版 进入“控制面板”,将有关“mysql”的一切都删除,再到“C:\ProgramData”中,将“mysql”文件夹删除。 1.2压缩版 先在cmd中停止mysql服务 net stop mysql8 再删除解压“mysql”文件夹即可 二.安装MySql 2.2安装版…

RabbitMQ进阶_可靠性

文章目录 一、 发送者的可靠性1.1、 生产者重试机制1.2、 生产者确认机制1.2.1、确认机制理论1.2.2、确认机制实现1.2.2.1、定义ReturnCallback1.2.2.2、定义ConfirmCallback 二、 MQ的可靠性2.1、 数据持久化2.1.1、 交换机持久化2.1.2、 队列持久化2.1.3、 消息持久化 2.2、 …

端点物联网学习资源合集

端点物联网 学习资源合集 导航 1. 物联网实战--入门篇 文章链接 简介:物联网是一个包罗万象的行业和方向,知识碎片严重,本系列文章通过 边学边用 的思想,逐步建立学习者的信心和兴趣,从而进行更深入透彻的学习和探索…

IDEA如何用maven打包(界面和命令两种方式)

前言 我们在使用IDEA开发时,如果是springboot项目的话,一般是用maven来管理我们的依赖的。然后,当我们开发完成之后,就需要打包部署了。 那么,我们应该如何打包呢? 如何打包(jar包&#xff09…

scrapy案例——链家租房数据的爬取

案例需求: 1.使用scrapy爬虫技术爬取链家租房网站(成都租房信息_成都出租房源|房屋出租价格【成都贝壳租房】 )的数据(包括标题、价格和链接) 2.利用XPath进行数据解析 3.保存为本地json文件 分析: 请…

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem 题目大意 按顺序给定n个点 ( x i , y i ) (x_i,y_i) (xi​,yi​) 求按顺序走过这n个点并回到原点的总距离 任意两点之间的距离是欧几里得距离 思路 按照题意模拟即可,时间…

GPTLink 源码快速搭建 ChatGPT 商用站点

GPTLink 源码快速搭建 ChatGPT 商用站点,基于PHP(Hyperf) Vue开发的,可以通过docker轻松部署,并且有一个支持PC和移动端的完美UI控制台。该项目提供了许多强大的功能,包括自定义付费套餐、一键导出对话、任务拉客和用户管理等等。…

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关 粒子采集部分 粒子采集的部分我们可以理解为,在已知粒子的情况下,对图片进行渲染的一个正向的过程。 空间坐标(x,y,z)发射的光线通过相机模型成为图片上…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性(Atomicity) 一致性(Consistency) 持久性(Durability) 隔离性(Isolation) 5. MySQL VS Oracle …

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统,功能带有卡密生成和添加黑名单等,源码放在我的网盘里已经两年之久,由于玖逸现在已经跑路了所以现在发出来分享给大家,需要的可以自己拿去而开,反正功能也不是很多具体的自己…

免费字体二次贩卖;刮刮乐模拟器;小报童 | 生活周刊 #4

Raycast 的两款在线工具 Raycast 公司出品,必属精品,之前的代码转图片工具,交互和颜值都做得很漂亮 现在又新出了一个 图标制作器,一键制作美观好看的图标 猫啃网 没想到像【汇文明朝体】这样免费的字体都被人拿来当成【打字机字…

C# WinForm 用名字name字符串查找子控件

工作上遇到界面控件太多,需要对一些控件批量处理。虽然可以用代码批量控制,但要么是建立数组集合把所有要处理的控件放进去循环处理,要么是一个一个列出来修改属性。 但我大多数要求改的控件命名上是有规律的,所有只需要循环拼接字…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中,我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如,我们介绍了以下案例: Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

卸载 Git

目录 打开 Geek找到 Git右键卸载 Git卸载完成等待扫描注册表点击完成清除Git在本地的配置文件 打开 Geek 找到 Git 右键卸载 Git 卸载完成 等待扫描注册表 点击完成 已经删除完毕 清除Git在本地的配置文件 进入 C:\Users\用户名 删除框起来的配置文件 👇 源码资料…

【移动安全】OWASP MASTG 移动应用程序安全测试指南

OWASP 是 Open Web Application Security Project MASTG 是 Mobile Application Security Testing Guide 移动应用程序安全测试指南 英文网站:https://mas.owasp.org/MASTG/ 中文网站:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/owasp-mobile-…

Docker本地镜像发布到Docker Registry私有仓库

1. 私有仓库 私有库可以部署在本地或私有云环境中,我们可以控制镜像的访问权限。相比公共仓库,私有库提供了更高的安全性和更快的访问速度。此外,私有库还支持自定义,你可以根据自己的需求来配置仓库。 私有仓库解决方案 Harbo…

递归神经网络解释(RNN)

Recurrent Neural Network (RNN) 如今,不同的机器学习技术用于处理不同类型的数据。最难处理和预测的数据类型之一是顺序数据。顺序数据与其他类型的数据不同,因为虽然可以假设典型数据集的所有特征都是与顺序无关的,但不能假设顺序数据集是无关的。为了处理这种类型的数据…