生成模型详解

一、生成模型的定义

  1. 给定的训练集 X = { x 1 , x 2 , . . . , x n } X =\{x^1,x^2,...,x^n\} X={x1,x2,...,xn}
  2. 隐变量 z z z满足 p ( z ) = N ( 0 , I ) p(z)= \mathcal{N} (0,I) p(z)=N(0,I)
  3. 定义一个条件分布 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz) θ \theta θ可以理解为生成模型的参数
  4. 训练好模型后,采样 z ∼ p ( z ) z{\sim}p(z) zp(z),利用 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)可以生成 x x x

注: p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)可以理解为“生成器”,把高斯 z z z映射到数据分布 x x x

二、四种代表生成模型

生成模型详解_第1张图片

1. VAE

注:Diffusion model的部分理论推导和VAE很相似

目的是能够得到真实数据的分布 p ( x ) p(x) p(x),这样就可以随意的生成数据。
借助隐变量 z z z描述 x x x的分布 p ( x ) p(x) p(x) p ( x ) = ∫ p ( x , z ) d z = ∫ p ( x ∣ z ) p ( z ) d z p(x) = \int p(x,z)dz = \int p(x|z)p(z)dz p(x)=p(x,z)dz=p(xz)p(z)dz

目标是最大化似然 p θ ( x ) p_{\theta}(x) pθ(x) p θ ( x ) p_{\theta}(x) pθ(x) = p θ ( z , x ) p θ ( z ∣ x ) \frac{p_{\theta}(z,x)}{p_{\theta}(z|x)} pθ(zx)pθ(z,x)= p θ ( z ) p θ ( x ∣ z ) p θ ( z ∣ x ) \frac{p_{\theta}(z)p_{\theta}(x|z)}{p_{\theta}(z|x)} pθ(zx)pθ(z)pθ(xz)

但是 p θ ( z ∣ x ) {p_{\theta}(z|x)} pθ(zx)是intractable的,通常我们都需要借助variational inference的技巧,采用 q ϕ ( z ∣ x ) {q_{\phi}(z|x)} qϕ(zx)去近似它。

将最大化似然 p θ ( x ) p_{\theta}(x) pθ(x)转化成使得 ELBO(变分下界)最大
模型似然 log ⁡ p θ ( x ) ≥ E L B O \log p_{\theta}(x) \geq ELBO logpθ(x)ELBO,
E L B O = E z ∼ q ϕ ( z ∣ x ) [ log ⁡ p θ ( x ∣ z ) + log ⁡ p ( z ) − log ⁡ q ϕ ( z ∣ x ) ] = E z ∼ q ϕ ( z ∣ x ) log ⁡ p θ ( x ∣ z ) − D K L ( q ϕ ( z ∣ x ) ∣ ∣ p ( z ) ) ELBO = \mathbb{E}_{z\sim q_{\phi}(z|x)} [\log p_{\theta}(x|z) + \log p(z) - \log q_{\phi}(z|x)] = \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x|z) - D_{KL}(q_{\phi}(z|x)||p(z)) ELBO=Ezqϕ(zx)[logpθ(xz)+logp(z)logqϕ(zx)]=Ezqϕ(zx)logpθ(xz)DKL(qϕ(zx)∣∣p(z))

p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)为decoder部分, q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)为encoder部分
模型的优化的loss为 L V A E ( θ , ϕ ) = − E L B O = D K L ( q ϕ ( z ∣ x ) ∣ ∣ p ( z ) ) − E z ∼ q ϕ ( z ∣ x ) log ⁡ p θ ( x ∣ z ) L_{VAE}(\theta,\phi) = -ELBO = D_{KL}(q_{\phi}(z|x)||p(z)) - \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x|z) LVAE(θ,ϕ)=ELBO=DKL(qϕ(zx)∣∣p(z))Ezqϕ(zx)logpθ(xz)

第一项为计算两个多元高斯分布的KL散度
第二项为重建误差(reconstruction error),因为正是给定下 z z z生成真实数据的似然,对于一个给定的训练样本 x i x^i xi,我们可以采用蒙特卡洛方法(Monte Carlo method)来估计这个数学期望,即从 q ϕ ( z ∣ x i ) q_{\phi}(z|x^i) qϕ(zxi)多次采样来估计 − E z ∼ q ϕ ( z ∣ x ) log ⁡ p θ ( x i ∣ z ) ≈ − 1 L ∑ l = 1 L log ⁡ p θ ( x i ∣ z ( i , l ) ) - \mathbb{E}_{z\sim q_{\phi}(z|x)} \log p_{\theta}(x^i|z) \approx -\frac{1}{L}\sum^{L}_{l=1}\log p_{\theta}(x^i|z^{(i,l)}) Ezqϕ(zx)logpθ(xiz)L1l=1Llogpθ(xiz(i,l))

2. GAN和Flow-based Model

GAN和Flow-based Model,都是只需要一个“生成器”,先采样高斯噪声,然后用“生成器”把这个高斯噪声映射到数据分布就可以,而且只关心生成。

但是GAN和Flow-based Model也有别的缺陷,比如GAN还需要额外训练判别器,这导致训练很困难;而Flow-based Model需要模型是可逆函数,不能随便用一个图像分类or分割领域的SOTA神经网络,这也导致模型表达能力受限。

3. Diffusion model

只需要训练“生成器”,训练目标函数简单,而且不需要训练别的网络(判别器/后验分布等),并且这个生成器没啥限制,可以随便选表达能力极强的神经网络。

前向和反向是两条马尔可夫链。

  • 前向过程(加噪过程)
    1、前者通常是手工设计的,目的是将任何数据分布转换为简单的先验分布(例如,标准高斯)
    2、定义: q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t |x_{t-1}) = \mathcal{N}(x_t;\sqrt{1- \beta_t}x_{t-1},\beta_t\mathcal{I}) q(xtxt1)=N(xt;1βt xt1,βtI)
    原图 x 0 x_0 x0,通过不断的高斯采样噪声,得到 x t x_t xt。当 t t t趋近无穷, x T x_T xT得到的就是标准的高斯噪声,均值为0,方差为1。
    3、任意时刻的 x t x_t xt能通过 x 0 x_0 x0 β \beta β表示,假设 α t = 1 − β t \alpha_t = 1-\beta_t αt=1βt,并且 α ‾ t = ∏ i = 1 T α i \overline\alpha_t =\prod^T_{i=1}\alpha_i αt=i=1Tαi,展开 x t x_t xt可以得到: x t = α ‾ t x 0 + 1 − α ‾ t z ‾ t x_t=\sqrt{\overline\alpha_t}x_0+\sqrt{1-\overline\alpha_t}\overline{z}_t xt=αt x0+1αt zt

  • 反向过程(去噪过程)
    1、利用 x t x_t xt,使用一个深度学习模型(U-net,参数为 θ \theta θ),去计算出 x t − 1 x_{t-1} xt1
    2、定义: p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , ∑ θ ( x t , t ) ) p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\sum_\theta(x_t,t)) pθ(xt1xt)=N(xt1;μθ(xt,t),θ(xt,t))

  • 推理过程
    最大化 p θ ( x ) p_{\theta}(x) pθ(x),求解和VAE类似,区别就是 x 0 x_0 x0到隐变量 z z z的后验变成 x 0 x_0 x0 x t − 1 x_{t-1} xt1的后验。和VAE的推导下界类似
    在这里插入图片描述
    完全展开后,优化的目标为
    在这里插入图片描述

    其中由于 q ( x t − 1 ∣ x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) q(x_{t-1}|x_t,x_0)=q(x_{t}|x_{t-1},x_0)\frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)} q(xt1xt,x0)=q(xtxt1,x0)q(xtx0)q(xt1x0),可推导其分布如下:
    在这里插入图片描述

这个推导用于采样生成的噪声计算得到 x t − 1 x_{t-1} xt1的均值

生成模型详解_第2张图片

再看一下优化的目标,没有参数的部分可以直接忽略,即 L T L_T LT。而 L t − 1 L_{t-1} Lt1根据多元高斯分布的KL散度求解等价于下面的式子
在这里插入图片描述
最后把式子(7)的均值代进(8)的左边,将 x t x_t xt通过 x 0 x_0 x0进行表示,可得最终的优化目标
在这里插入图片描述
最后得到的简化后的loss如下:
在这里插入图片描述
可以理解为拉近每一时刻对应的前向和后向两个噪声分布。

  • 训练过程和采样过程(生成数据)
    生成模型详解_第3张图片

上面是discrete model (DDPM) 最先提出的形式

下面是continuous model (SDE) 完善理论框架
首次揭示了diffusion model的连续版本对应的数学背景,并且将统计机器学习中的denoising score matching方法与DDPM中的去噪训练统一起来。
生成模型详解_第4张图片

你可能感兴趣的:(AIGC,算法,人工智能)