VAE训练流程

基本概念的辨析

1. 维度

  • 维度的含义
    • 每一个独立的数据是一个维度。
    • 对于灰度图像,每个像素是一个维度。对于RGB三通道图像,每个像素是三个维度。
  • 具体示例
    • 对于一张28x28的灰度图像,每个像素点可以用一个数值(通常在0到255之间)表示。这张图像可以展平为一个784维的向量,是一组784维的数据:
      x = [ x 1 , x 2 , … , x 784 ] \mathbf{x} = [x_1, x_2, \ldots, x_{784}] x=[x1,x2,,x784]
    • 其中,每个 x i x_i xi 是图像中第 i i i 个像素的灰度值。

2. 样本

  • 样本的含义
    • 样本是数据集中具体的一组数据。对于图像数据集来说,一个样本就是一张具体的图片。
  • 具体示例
    • 在MNIST数据集中,每张28x28的手写数字图片就是一个样本。
    • 数据集中的样本可能是二维数组或矩阵形式表示的图像,也可以展平为一维向量进行处理。
    • 784维的一组数据构成一个样本,即一张展平的28x28图像。

3. 分布

  • 分布的含义
    • 分布描述的是随机变量(例如像素值)不同取值的概率分布情况。
    • 图像数据中的分布可以描述为多维分布,描述整个图像的像素值联合起来的概率分布。
    • 对图片的概率分布采样一个样本,得到的就是一个具体的图片。
  • 具体示例
    • 单个像素的分布:假设每个像素值服从某个概率分布(如高斯分布或均匀分布),那么可以表示为 p ( x i ) p(x_i) p(xi)
    • 多维高斯分布:假设整个图像的像素值服从一个多维高斯分布,可以用均值向量 μ \mu μ 和协方差矩阵 Σ \Sigma Σ 描述:
      p ( x ) = N ( x ∣ μ , Σ ) p(\mathbf{x}) = \mathcal{N}(\mathbf{x}|\mu, \Sigma) p(x)=N(xμ,Σ)
      其中, x \mathbf{x} x 是一个784维向量, μ \mu μ 是784维的均值向量, Σ \Sigma Σ 784 × 784 784 \times 784 784×784 的协方差矩阵。

这些概念对于理解深度学习中对图片数据的处理非常重要。

生成式模型原理的通俗介绍

生成模型,如变分自编码器(VAE)和Denoising Diffusion Probabilistic Models(DDPM),主要通过两个阶段实现其功能:训练和生成。在训练阶段,模型利用大量数据来学习数据的分布特征,这些特征被编码在模型参数中,如VAE中的 ϕ \phi ϕ θ \theta θ,或DDPM中的 θ \theta θ。学习过程涉及到对数据结构的理解和内部表示的建立。在生成阶段,模型使用这些学习到的参数,将随机的潜在变量或噪声转换成具有特定数据分布特征的新数据。这使得生成模型能够创造出与训练数据相似但又是全新的输出,表现出其强大的数据生成能力。这种方式使得生成模型在多媒体、艺术创作和其他需要内容生成的应用中尤为有用。

VAE简介

变分自编码器(VAE)通过将高维数据映射到低维隐空间,并保留数据的主要特征,实现了以下用途:

  1. 数据生成:从隐空间中采样,并通过解码器生成与训练数据分布相似的新数据。
  2. 数据压缩:将高维数据压缩到低维隐变量表示,有效地捕捉数据的主要特征。
  3. 缺失数据填补:基于隐空间表示填补缺失的数据部分。
  4. 数据去噪:从噪声数据中恢复出干净的原始数据。

对于映射到低维隐空间的理解

  • 每个样本 x i x_i xi对应一个特定的隐变量分布 z i z_i zi,这个隐变量的均值和方差由样本 x i x_i xi 决定。它的维度低于 x i x_i xi
  • 隐变量空间的维度是固定的(例如10维),不随输入样本的维度变化。
  • 总体隐变量分布是一个和 z i z_i zi相同形式的分布,但其均值和方差是由整个样本集 x x x 决定的,反映了数据集的整体特征。

所以,虽然每个样本都有其特定的隐变量分布,但整个样本集的隐变量仍然可以看作是位于一个固定维度的潜在空间中,这个空间的结构由整个数据集的特性决定。

训练流程

1. 前向传播

  • 输入真实样本 x x x
  • 编码器(通常是一个神经网络)接收 x x x 并输出潜在变量 z z z 的均值 μ ϕ ( x ) \mu_\phi(x) μϕ(x) 和方差 σ ϕ 2 ( x ) \sigma_\phi^2(x) σϕ2(x)
  • 对于每一个样本 x ( ℓ ) x^{(\ell)} x(),会生产一个对应的隐编码 z z z的高斯分布 q ϕ ( z ∣ x ( ℓ ) ) = N ( z ∣ μ ϕ ( x ( ℓ ) ) , σ ϕ 2 ( x ( ℓ ) ) I ) q_\phi(z|x^{(\ell)})=\mathcal{N}(z|\mu_\phi(x^{(\ell)}),\sigma^2_\phi(x^{(\ell)})I) qϕ(zx())=N(zμϕ(x()),σϕ2(x())I) 。从中可采样潜在变量 z ( ℓ ) z^{(\ell)} z()

2. 重建

  • 解码器(通常是另一个神经网络)接收采样得到的潜在变量 z ( ℓ ) z^{(\ell)} z() 并输出重建样本 x ( ℓ ) ^ = decode θ ( z ( ℓ ) ) \hat{x^{(\ell)}} = \text{decode}_\theta(z^{(\ell)}) x()^=decodeθ(z())。(这是一个样本而非一个分布。因为重建出来的是一张确定的图片)重建样本 x ( ℓ ) ^ \hat{x^{(\ell)}} x()^ 是在 z z z 空间取样后重建的。
  • 这个重建过程与解码器的参数 θ \theta θ有关,参数 θ \theta θ 决定了 decode θ ( z ( ℓ ) ) \text{decode}_\theta(z^{(\ell)}) decodeθ(z())(即 x ( ℓ ) ^ \hat{x^{(\ell)}} x()^ )的值。

3.优化目标

变分推理的核心目标是通过优化变分分布 q ( z ∣ x ) q(z|x) q(zx) 来近似复杂的后验分布 p ( z ∣ x ) p(z|x) p(zx) ,从而使得对数据分布 p ( x ) p(x) p(x)的逼近更加准确(贝叶斯公式)。这种逼近能提高模型对数据的表达能力,确保在特定任务中的表现更好和更准确。
这个目标可以通过最大化证据下界(ELBO)实现,公式如下:
ELBO = E q ( z ∣ x ) [ log ⁡ p ( x ∣ z ) ] − KL ( q ( z ∣ x ) ∣ ∣ p ( z ) ) \text{ELBO} = \mathbb{E}_{q(z|x)} [\log p(x|z)] - \text{KL}(q(z|x) || p(z)) ELBO=Eq(zx)[logp(xz)]KL(q(zx)∣∣p(z))

ELBO包括两个部分:

  1. 重建误差项(Reconstruction Error Term)

    • 作用:重建误差项的优化使得从潜在变量 z z z重建的 x x x尽可能接近原始输入数据 x x x
    • 解释:这一部分通过期望似然 E q ( z ∣ x ) [ log ⁡ p ( x ∣ z ) ] \mathbb{E}_{q(z|x)} [\log p(x|z)] Eq(zx)[logp(xz)]来度量。这意味着我们希望从 z z z生成的 x x x与真实的 x x x之间的差异最小。
    • 结果:最大化这一项能够让变分分布 q ( z ∣ x ) q(z|x) q(zx)最接近真实的后验分布 p ( z ∣ x ) p(z|x) p(zx),使得潜在变量 z z z能够很好地保留输入数据 x x x的信息,从而实现精确的重建。
  2. KL散度项(KL Divergence Term)

    • 作用:KL散度项的优化使得变分分布 q ( z ∣ x ) q(z|x) q(zx)接近先验分布 p ( z ) p(z) p(z)
    • 解释:这一部分通过KL散度 − KL ( q ( z ∣ x ) ∣ ∣ p ( z ) ) -\text{KL}(q(z|x) || p(z)) KL(q(zx)∣∣p(z))来度量。这意味着我们希望 q ( z ∣ x ) q(z|x) q(zx)不要偏离 p ( z ) p(z) p(z)太远。
    • 结果:最大化这一项(最小化KL散度项)有助于正则化模型,防止过拟合,提高模型的泛化能力。这确保了即使在训练数据之外,模型也能表现良好。

4. 计算重建误差(使用蒙特卡洛法):

  • 使用蒙特卡洛方法对潜在变量 z z z 进行采样并重建,从而计算期望值:
    E q ϕ ( z ∣ x ) [ log ⁡ p θ ( x ∣ z ) ] ≈ 1 L ∑ ℓ = 1 L log ⁡ p θ ( x ( ℓ ) ∣ z ( ℓ ) ) \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] \approx \frac{1}{L} \sum_{\ell=1}^L \log p_\theta(x^{(\ell)}|z^{(\ell)}) Eqϕ(zx)[logpθ(xz)]L1=1Llogpθ(x()z())
    这个公式表示在 x x x生成的 z z z的分布中采样,再由采样值重建 x x x并计算误差的过程。
    其中 x ( ℓ ) x^{(\ell)} x() 是训练数据集中的第 ℓ \ell 个样本, z ( ℓ ) z^{(\ell)} z() x ( ℓ ) x^{(\ell)} x() 经过编码器产生的 z z z分布中的一个采样值, z ( ℓ ) ∼ N ( z ∣ μ ϕ ( x ( ℓ ) ) , σ ϕ 2 ( x ( ℓ ) ) I ) z^{(\ell)} \sim \mathcal{N}(z|\mu_\phi(x^{(\ell)}), \sigma^2_\phi(x^{(\ell)})I) z()N(zμϕ(x()),σϕ2(x())I)
    log ⁡ p θ ( x ( ℓ ) ∣ z ( ℓ ) ) \log p_\theta(x^{(\ell)}|z^{(\ell)}) logpθ(x()z()) 可用下面的公式计算:
    log ⁡ p θ ( x ∣ z ) = − ∥ x − x ^ ∥ 2 2 σ dec 2 \log p_\theta(\mathbf{x}|\mathbf{z}) = -\frac{\|\mathbf{x} - \hat{\mathbf{x}}\|^2}{2\sigma_{\text{dec}}^2} logpθ(xz)=2σdec2xx^2

    这一项越大说明由 x ( ℓ ) x^{(\ell)} x() 产生的 z ( ℓ ) z^{(\ell)} z() 经过解码器恢复 x ( ℓ ) x^{(\ell)} x() 的误差越小,解码器越好。

5. 计算先验匹配

D KL ( q ϕ ( z ∣ x ( ℓ ) ) ∥ p ( z ) ) = 1 2 ( ( σ ϕ 2 ( x ( ℓ ) ) ) d + μ ϕ ( x ( ℓ ) ) T μ ϕ ( x ( ℓ ) ) − d − log ⁡ ( σ ϕ 2 ( x ( ℓ ) ) ) ) D_{\text{KL}}(q_\phi(z|x^{(\ell)}) \| p(z)) = \frac{1}{2} \left( (\sigma_\phi^2(x^{(\ell)}))^d + \mu_\phi(x^{(\ell)})^T \mu_\phi(x^{(\ell)}) - d - \log(\sigma_\phi^2(x^{(\ell)})) \right) DKL(qϕ(zx())p(z))=21((σϕ2(x()))d+μϕ(x())Tμϕ(x())dlog(σϕ2(x())))

  • 这一项越小说明生成的 z z z 越接近先验分布 p ( z ) p(z) p(z)(是一个零均值单位方差的高斯分布),编码器越好。

6. 计算损失函数

  • 损失函数可以表示为:(一般情况下,第一项可以加一个超参数 α \alpha α 来控制)
    L ( ϕ , θ ; x ) = α D KL ( q ϕ ( z ∣ x ) ∥ p ( z ) ) − E q ϕ ( z ∣ x ) [ log ⁡ p θ ( x ∣ z ) ] \mathcal{L}(\phi, \theta; x) = \alpha D_{\text{KL}}(q_\phi(z|x) \| p(z)) - \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] L(ϕ,θ;x)=αDKL(qϕ(zx)p(z))Eqϕ(zx)[logpθ(xz)]

7. 反向传播和参数更新

  • 通过反向传播算法计算损失函数相对于模型参数 ϕ \phi ϕ θ \theta θ 的梯度。注意,在采样步骤需要使用重参数技巧,不然梯度会断掉。
  • 使用梯度下降法或其变种(如Adam优化器)更新模型参数:
    • ϕ ← ϕ − η ∂ L ∂ ϕ \phi \leftarrow \phi - \eta \frac{\partial \mathcal{L}}{\partial \phi} ϕϕηϕL
    • θ ← θ − η ∂ L ∂ θ \theta \leftarrow \theta - \eta \frac{\partial \mathcal{L}}{\partial \theta} θθηθL
      其中 η \eta η 是学习率。

以上步骤重复进行,直到模型收敛或达到预设的训练迭代次数。通过这种方式,VAE模型能够逐步优化其参数,使得重建误差最小化,KL散度最小化,从而在训练数据上表现良好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值