【AIGC】2020-NIPS-去噪扩散概率模型

news2024/12/24 8:23:34

2020-NIPS-Denoising Diffusion Probabilistic Models

去噪扩散概率模型

作者:Jonathan Ho,Ajay Jain,Pieter Abbeel
单位:UC Berkeley
论文地址:2020-NIPS-Denoising Diffusion Probabilistic Models

摘要

 我们使用扩散概率模型呈现了高质量的图像合成结果,扩散概率模型是一类受非平衡热力学启发的潜在变量模型。我们的最佳结果是通过对加权变分界限进行训练获得的,该界限是根据扩散概率模型与与朗之万动力学匹配的去噪分数之间的新联系而设计的,并且我们的模型自然地承认渐进式有损解压缩方案,该方案可以解释为自回归解码的泛化。在无条件 CIFAR10 数据集上,我们获得了 9.46 的初始分数和 3.17 的最先进的 FID 分数。在 256x256 LSUN 上,我们获得了与 ProgressiveGAN 类似的样本质量。我们的实现可在 https://github.com/hojonathanho/diffusion 上找到。

1. 引言

 各种深度生成模型最近在各种数据模态中都展示了高质量的样本。生成对抗网络(GAN)、自回归模型、流和变分自动编码器(VAE)合成了引人注目的图像和音频样本 [14, 27, 3, 58, 38, 25, 10, 32, 44, 57, 26, 33, 45],并且基于能量的建模和评分匹配方面取得了显着的进步,产生了与 GAN 相当的图像 [11, 55]。

图 1

图 1:CelebA-HQ 256×256(左)和无条件 CIFAR10(右)上生成的样本。

 本文介绍了扩散概率模型的进展 [53]。扩散概率模型(为简便起见,我们将其称为 “扩散模型”)是一个参数化的马尔可夫链,使用变分推理进行训练,以在有限时间后产生与数据匹配的样本。学习此链的转换可以逆转扩散过程,这是一个马尔可夫链,它会在与采样相反的方向上逐渐向数据添加噪声,直到信号被破坏。当扩散由少量高斯噪声组成时,将采样链转换也设置为条件高斯就足够了,从而可以实现特别简单的神经网络参数化。

图 2

图 2:本文考虑的有向图模型。

 扩散模型定义简单,训练效率高,但据我们所知,尚无证据表明它们能够生成高质量样本。我们表明,扩散模型实际上能够生成高质量样本,有时甚至比其他类型的生成模型的已发表结果更好(第 4 节)。此外,我们表明,扩散模型的某种参数化与训练期间多个噪声水平上的去噪分数匹配以及采样期间退火朗之万动力学具有等价性(第 3.2 节)[55, 61]。我们使用此参数化获得了最佳样本质量结果(第 4.2 节),因此我们认为这种等价性是我们的主要贡献之一。

尽管我们的模型具有良好的样本质量,但与其他基于似然的模型相比,我们的模型的对数似然并不具有竞争力(但是,我们的模型的对数似然确实比据报道的退火重要性抽样(annealed importance sampling)对基于能量(energy based)的模型和分数匹配产生的大估计值(the large estimates)要好 [11, 55])。我们发现,我们模型的大多数无损代码长度都用于描述难以察觉的图像细节(第 4.3 节)。我们用有损压缩(lossy compression)的语言对这一现象进行了更精细的分析,并表明扩散模型的采样过程是一种渐进式解码,类似于自回归解码,其位排序极大地概括了自回归模型通常可能实现的功能。

2. 背景

 扩散模型 [53] 是形式为 p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta\left(x_0\right):=\int p_\theta\left(\mathbf{x}_{0:T}\right)d\mathbf{x}_{1:T} pθ(x0):=pθ(x0:T)dx1:T 的隐变量模型,其中 x 1 ,   ⋯   ,   x T \mathbf{x}_1,\ \cdots,\ \mathbf{x}_T x1, , xT 是与数据 x 0 ∼ q ( x 0 ) \mathbf{x}_0\sim q\left(\mathbf{x}_0\right) x0q(x0) 同维的隐变量。联合分布 p θ ( x 0 : T ) p_\theta\left(\mathbf{x}_{0:T}\right) pθ(x0:T) 被称为逆过程,它被定义为一个马尔可夫链,具有从 p ( x T ) = N ( x T ; 0 ; I ) p\left(\mathbf{x}_T\right)=\mathcal{N}\left(\mathbf{x}_T;\mathbf{0};\mathbf{I}\right) p(xT)=N(xT;0;I) 开始的学习高斯转移(Gaussian transitions):

公式 1

扩散模型与其他类型的潜在变量模型的区别在于,近似后验 q ( x 1 : T | x 0 ) q\left(\mathbf{x}_{1:T}\middle|\mathbf{x}_0\right) q(x1:Tx0)(称为前向过程或扩散过程)固定在马尔可夫链上,该链根据方差表(variance schedule)逐渐将高斯噪声添加到数据中 β 1 ,   ⋯   ,   β T \beta_1,\ \cdots,\ \beta_T β1, , βT

公式 2

训练是通过优化负对数似然的通常变分界限(variational bound)来进行的

公式 3

前向过程方差 β t \beta_t βt 可以通过重新参数化 [33] 来学习,也可以作为超参数保持不变,而逆向过程的表达能力部分由 p θ ( x t − 1 | x t ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right) pθ(xt1xt) 中高斯条件的选择来保证,因为当 β t \beta_t βt 很小时,两个过程具有相同的函数形式 [53]。前向过程的一个显著特性是,它允许以闭式在任意时间步 t t t x t \mathbf{x}_t xt 进行采样:使用符号 α t ≔ 1 − β t \alpha_t≔1-\beta_t αt:=1βt α ˉ t ≔ ∏ s = 1 t α s {\bar{\alpha}}_t≔\prod_{s=1}^{t}\alpha_s αˉt:=s=1tαs,我们有

公式 4

 因此,通过使用随机梯度下降优化 L L L 的随机项,可以实现高效训练。通过将 L L L (3) 重写为:

公式 5

 (详情见附录 A。术语的标签在第 3 节中使用。)等式 (5) 使用 KL 散度直接将 p θ ( x t − 1 | x t ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right) pθ(xt1xt) 与前向过程后验进行比较,当以 x 0 \mathbf{x}_0 x0 为条件时,后验是易于处理的

公式 6

 其中

公式 7

 因此,公式 (5) 中的所有 KL 散度都是高斯之间的比较,因此它们可以采用 Rao-Blackwellized 方式用闭式表达式来计算,而不是高方差蒙特卡洛估计(high variance Monte Carlo estimates)

3. 扩散模型和去噪自动编码器

 扩散模型可能看起来是一类受限的隐变量模型,但它们在实施过程中允许大量的自由度。必须选择正向过程的方差 β t \beta_t βt 以及反向过程的模型架构和高斯分布参数化。为了指导我们的选择,我们在扩散模型和去噪分数匹配之间建立了一种新的明确联系(第 3.2 节),从而为扩散模型提供了简化的加权变分边界目标(第 3.4 节)。最终,我们的模型设计通过简单性和实证结果得到证明(第 4 节)。我们的讨论按方程 (5) 的术语进行分类。

3.1 正向过程和 L T L_{T} LT

 我们忽略了前向过程方差 β t \beta_t βt 可以通过重新参数化来学习的事实,而是将它们固定为常数(详情见第 4 节)。因此,在我们的实现中,近似后验 q q q 没有可学习的参数,因此 L T L_T LT 在训练期间是一个常数,可以忽略不计

3.2 逆过程与 L 1 : T − 1 L_{1:T-1} L1:T1

 现在我们讨论当 1 < t ≤ T 1<t\le T 1<tT p θ ( x t − 1 | x t ) = N ( x t − 1 ;   μ θ ( x t ,   t ) ,   ∑ θ ( x t ,   t ) ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right)=\mathcal{N}\left(\mathbf{x}_{t-1};\ \boldsymbol{\mu}_\theta\left(\mathbf{x}_t,\ t\right),\ \sum_{\theta}\left(\mathbf{x}_t,\ t\right)\right) pθ(xt1xt)=N(xt1; μθ(xt, t), θ(xt, t)) 中的选择。首先,我们将 ∑ θ ( x t ,   t ) = σ t 2 I \sum_{\theta}\left(\mathbf{x}_t,\ t\right)=\sigma_t^2\mathbf{I} θ(xt, t)=σt2I 设置为未训练的时间相关常数。实验上, σ t 2 = β t \sigma_t^2=\beta_t σt2=βt σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \sigma_t^2={\widetilde{\beta}}_t=\frac{1-{\bar{\alpha}}_{t-1}}{1-{\bar{\alpha}}_t}\beta_t σt2=β t=1αˉt1αˉt1βt 均有相似的结果。第一个选择对于 x 0 ∼ N ( 0 ;   I ) \mathbf{x}_0\sim \mathcal{N}\left(\mathbf{0};\ \mathbf{I}\right) x0N(0; I) 是最优的,第二个选择对于 x 0 \mathbf{x}_0 x0 确定性地设置为一个点是最优的。这两个极端选择对应于具有坐标单位方差的数据的逆过程熵的上限和下限 [53]。

 其次,为了表示平均值 μ θ ( x t ,   t ) \boldsymbol{\mu}_\theta\left(\mathbf{x}_t,\ t\right) μθ(xt, t)我们提出了一个特定的参数化方法,其动机是对 L T L_T LT 进行以下分析。其中 p θ ( x t − 1 | x t ) = N ( x t − 1 ;   μ θ ( x t ,   t ) ,   σ t 2 I ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right)=\mathcal{N}\left(\mathbf{x}_{t-1};\ \boldsymbol{\mu}_\theta\left(\mathbf{x}_t,\ t\right),\ \sigma_t^2\mathbf{I}\right) pθ(xt1xt)=N(xt1; μθ(xt, t), σt2I),我们可以写成:

公式 8

 其中 C C C 是一个与 θ \theta θ 无关的常数。因此,我们看到, μ θ \boldsymbol{\mu}_\theta μθ 最直接的参数化是一个预测前向过程后验均值 μ ~ t {\widetilde{\boldsymbol{\mu}}}_t μ t 的模型。但是,我们可以进一步扩展方程 (8),方法是将方程 (4) 重新参数化为 x t ( x 0 ,   ϵ ) = α ˉ t x 0 + 1 − α ˉ t ϵ \mathbf{x}_t\left(\mathbf{x}_0,\ \boldsymbol{\epsilon}\right)=\sqrt{{\bar{\alpha}}_t}\mathbf{x}_0+\sqrt{1-{\bar{\alpha}}_t}\boldsymbol{\epsilon} xt(x0, ϵ)=αˉt x0+1αˉt ϵ,其中 ϵ ∼ N ( 0 ,   I ) \boldsymbol{\epsilon}\sim\mathcal{N}\left(\mathbf{0},\ \mathbf{I}\right) ϵN(0, I),并应用前向过程后验公式 (7):

公式 9-10

 等式 (10) 表明,给定 x t \mathbf{x}_t xt μ θ \boldsymbol{\mu}_\theta μθ 必须预测 1 α t ( x t − β t 1 − α ˉ t ϵ ) \frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-{\bar{\alpha}}_t}}\boldsymbol{\epsilon}\right) αt 1(xt1αˉt βtϵ)。由于 x t \mathbf{x}_t xt 可作为模型的输入,我们可以选择参数化

公式 11

 其中 ϵ θ \boldsymbol{\epsilon}_{\theta} ϵθ 是一个函数逼近器,用于根据 x t \mathbf{x}_t xt 预测 。对 x t − 1 ∼ p θ ( x t − 1 | x t ) \mathbf{x}_{t-1}\sim p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right) xt1pθ(xt1xt) 进行采样就是计算 x t − 1 = 1 α t ( x t − β t 1 − α ˉ t ϵ ( x t ,   t ) ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-{\bar{\alpha}}_t}}\boldsymbol{\epsilon}\left(\mathbf{x}_t,\ t\right)\right)+\sigma_t\mathbf{z} xt1=αt 1(xt1αˉt βtϵ(xt, t))+σtz,其中 z ∼ N ( 0 ,   I ) \mathbf{z}\sim\mathcal{N}\left(\mathbf{0},\ \mathbf{I}\right) zN(0, I)完整的采样过程,即算法 2,类似于朗之万动力学,其中 θ \theta θ 是数据密度的学习梯度。此外,通过参数化 (11),等式 (10) 简化为:

公式 12

 它类似于在以 t t t 为指标的多个噪声尺度上进行去噪得分匹配 [55]。由于方程 (12) 等于类朗之万逆过程(Langevin-like reverse process) (11) 的变分界限(的一个项),我们看到优化一个类似于去噪得分匹配的目标等同于使用变分推理来拟合类似于朗之万动力学(Langevin dynamics)的采样链(sampling chain)的有限时间边际(finite-time marginal)

 总而言之,我们可以训练逆过程均值函数逼近器 μ θ \boldsymbol{\mu}_\theta μθ 来预测 μ ~ t {\widetilde{\boldsymbol{\mu}}}_t μ t,或者通过修改其参数化,我们可以训练它来预测。(还有预测 x 0 \mathbf{x}_0 x0 的可能性,但我们在实验初期发现这会导致样本质量下降。)我们已经证明 ϵ \boldsymbol{\epsilon} ϵ- 预测参数化既类似于朗之万动力学,又将扩散模型的变分界限简化为类似于去噪分数匹配的目标。尽管如此,它只是 p θ ( x t − 1 | x t ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right) pθ(xt1xt) 的另一种参数化,因此我们在第 4 节中通过比较预测 ϵ \boldsymbol{\epsilon} ϵ 和预测 μ ~ t {\widetilde{\boldsymbol{\mu}}}_t μ t 来验证其有效性。

算法 1-2

3.3 数据缩放、逆过程解码器和 L 0 L_{0} L0

 我们假设图像数据由 { 0 ,   1 ,   ⋯   ,   255 } \left\{0,\ 1,\ \cdots,\ 255\right\} {0, 1, , 255} 中的整数组成,并线性缩放到 [ − 1 ,   1 ] \left[-1,\ 1\right] [1, 1]。这确保了神经网络逆过程从标准正态先验 p ( x T ) p\left(\mathbf{x}_T\right) p(xT) 开始对一致缩放的输入进行操作。为了获得离散对数似然,我们将逆过程的最后一项设置为从高斯 N ( x 0 ;   μ θ ( x 1 ,   1 ) , σ 1 2 I ) \mathcal{N}\left(\mathbf{x}_0;\ \mu_\theta\left(\mathbf{x}_1,\ 1\right),\sigma_1^2\mathbf{I}\right) N(x0; μθ(x1, 1),σ12I) 派生的独立离散解码器

公式 13

 其中 D D D 是数据维数,上标 i i i 表示提取一个坐标。(其实,直接使用更强大的解码器(如条件自回归模型)也很简单,但我们将其留待以后研究。)与 VAE 解码器和自回归模型 [34, 52] 中使用的离散化连续分布类似,我们在此的选择确保变分界限是离散数据的无损码长,无需向数据添加噪声或将缩放操作的雅可比(Jacobian)矩阵合并到对数似然中。在采样结束时,我们无噪声地显示 μ θ ( x 1 ,   1 ) \boldsymbol{\mu}_\theta\left(\mathbf{x}_1,\ 1\right) μθ(x1, 1)

3.4 简化的训练目标

 通过上面定义的逆过程和解码器,由方程 (12) 和 (13) 得出的变分界限显然关于 θ \theta θ 可微,可以用于训练。然而,我们发现,在变分界限的以下变体上进行训练有利于提高样本质量(并且更易于实现)

公式 14

 其中 t t t 1 1 1 T T T 之间是均匀的。 t = 1 t=1 t=1 的情况对应于离散解码器定义 (13) 中的 L 0 L_0 L0 积分,该积分由高斯概率密度函数乘以箱宽近似,忽略 σ 1 2 \sigma_1^2 σ12 和边缘效应。 t > 1 t>1 t>1 的情况对应于方程 (12) 的未加权版本,类似于 NCSN 去噪分数匹配模型 [55] 使用的损失加权。( L T L_T LT 未出现,因为前向过程方差 β t \beta_t βt 是固定的。)算法 1 显示了具有此简化目标的完整训练过程。

由于我们的简化目标 (14) 放弃了方程 (12) 中的权重,因此它是一个加权变分界限,与标准变分界限 [18, 22] 相比,它强调了重建的不同方面。具体来说,我们在第 4 节中设置的扩散过程使简化目标降低了与小 t t t 相对应的权重损失项。这些项训练网络对噪声量非常小的数据进行去噪,因此降低它们的权重是有益的,这样网络就可以专注于更大 t t t 项下更困难的去噪任务。我们将在实验中看到,这种重新加权可以提高样本质量。

4. 实验

 我们将所有实验的 T = 1000 T=1000 T=1000 设置为与之前的工作 [53, 55] 相匹配的神经网络评估次数。我们将正向过程方差设置为从 β 1 = 10 − 4 \beta_1={10}^{-4} β1=104 线性增加到 β T = 0.02 \beta_T=0.02 βT=0.02 的常数。这些常数相对于缩放到 [ − 1 ,   1 ] \left[-1,\ 1\right] [1, 1] 的数据较小,确保反向和正向过程具有大致相同的函数形式,同时将 x T \mathbf{x}_T xT 处的信噪比保持在尽可能小的水平(在我们的实验中, L T = D K L ( q ( x T | x 0 ) | ∣ N ( 0 ,   I ) ) ≈ 10 − 5 ) L_T=D_{\rm KL}\left(q\left(\mathbf{x}_T\middle|\mathbf{x}_0\right)\middle|\left|\mathcal{N}\left(\mathbf{0},\ \mathbf{I}\right)\right)\approx{10}^{-5}\right) LT=DKL(q(xTx0) N(0, I))105) 位/维)。

 为了表示逆向过程,我们使用了类似于未掩蔽的 PixelCNN++ [52, 48] 的 U-Net 主干(backbone),并在整个过程中进行组归一化 [66]。参数跨时间共享,使用 Transformer 正弦位置嵌入 [60] 指定给网络。我们在 16×16 特征图分辨率下使用自注意力 [63, 60]。详细信息见附录 B。

4.1 样本质量

 表 1 显示了 CIFAR10 上的 Inception 分数、FID 分数和负对数似然(无损代码长度)。我们的无条件模型的 FID 分数为 3.17,其样本质量优于文献中的大多数模型,包括类条件模型。我们的 FID 分数是根据训练集计算的,这是标准做法;当我们根据测试集计算时,分数为 5.24,这仍然比文献中的许多训练集 FID 分数要好。

我们发现,在真实变分界限上训练我们的模型产生的代码长度比在简化目标上训练的更好,这正如预期的那样,但后者产生的样本质量最好。请参阅图 1(CIFAR10 和 CelebA-HQ 256×256 样本)、图 3 和图 4(LSUN 256×256 样本)[71],以及附录 D 了解更多信息。

表 1

表 1:CIFAR10 结果。NLL 以 bits/dim 为单位测量。

图 3

图 3:LSUN 教堂样本。FID=7:89

图 4

图 4:LSUN 卧室样品。FID=4:90

4.2 逆向过程参数化与训练目标消融

 在表 2 中,我们展示了逆过程参数化和训练目标对样本质量的影响(第 3.2 节)。我们发现,预测 μ ~ \widetilde{\boldsymbol{\mu}} μ 的基线选项仅在对真实变分界限而不是未加权均方误差进行训练时效果良好,这是一个类似于公式 (14) 的简化目标。我们还看到,学习逆过程方差(通过将参数化的对角线 ∑ θ ( x t ) \sum_{\theta}\left(\mathbf{x}_t\right) θ(xt) 纳入变分界限)会导致训练不稳定,并且与固定方差相比样本质量更差。正如我们所提出的,当在具有固定方差的变分界限上进行训练时,预测 ϵ \boldsymbol{\epsilon} ϵ 的表现大致与预测 μ ~ \widetilde{\boldsymbol{\mu}} μ 一样好,但当使用我们的简化目标进行训练时,效果要好得多。

表 2

表 2:无条件 CIFAR10 逆向过程参数化和训练目标消融。空白条目训练不稳定,并生成分数超出范围的差样本。

4.3 渐进编码

 表 1 还显示了我们的 CIFAR10 模型的码长。训练和测试之间的差距最多为每维 0.03 位,这与其他基于似然的模型报告的差距相当,表明我们的扩散模型没有过度拟合(请参阅附录 D 了解最近邻可视化)。尽管如此,虽然我们的无损码长优于基于能量的模型和使用退火重要性采样的得分匹配报告的较大估计值 [11],但它们与其他类型的基于似然的生成模型相比并不具有竞争力 [7]

 尽管如此,由于我们的样本质量很高,我们得出结论,扩散模型具有归纳偏差,这使得它们成为出色的有损压缩器(lossy compressors)。将变分边界项 L 1 + ⋯ + L T L_1+\cdots+L_T L1++LT 视为速率,将 L 0 L_0 L0 视为失真(distortion),我们的 CIFAR10 模型具有最高质量的样本,其速率为 1.78 \mathbf{1}.\mathbf{78} 1.78 位/维,失真为 1.97 \mathbf{1}.\mathbf{97} 1.97 位/维,这相当于 0 到 255 范围内的均方根误差为 0.95。超过一半的无损码长描述了不可察觉的失真

渐进有损压缩我们可以通过引入与公式 (5) 形式相似的渐进有损编码来进一步探究我们模型的率失真行为:参见算法 3 和 4,它们假设可以访问诸如最小随机编码 [19, 20] 之类的程序,该程序可以对任何分布 p p p q q q 平均使用大约 D K L ( q ( x ) ∣ ∣ p ( x ) ) D_{\rm KL}\left(q\left(\mathbf{x}\right)||p\left(\mathbf{x}\right)\right) DKL(q(x)∣∣p(x)) 位传输样本 x ∼ q ( x ) \mathbf{x}\sim q\left(\mathbf{x}\right) xq(x),其中接收方事先只能获得 p p p。当应用于 x 0 ∼ q ( x 0 ) \mathbf{x}_0\sim q\left(\mathbf{x}_0\right) x0q(x0) 时,算法 3 和 4 使用等于公式 (5) 的总预期码长按顺序传输 x T ,   ⋯   ,   x 0 \mathbf{x}_T,\ \cdots,\ \mathbf{x}_0 xT, , x0。接收方在任何时间 t t t 都拥有完全可用的部分信息 x t \mathbf{x}_t xt,并可以渐进地估计:

公式 15

 根据等式 (4)。(随机重构 x 0 ∼ p θ ( x 0 | x t ) \mathbf{x}_0\sim p_\theta\left(\mathbf{x}_0\middle|\mathbf{x}_t\right) x0pθ(x0xt) 也有效,但我们在此不考虑它,因为它会使失真更难评估。)图 5 显示了 CIFAR10 测试集上得到的速率失真图。在每个时间 t t t,失真计算为均方根误差 ∣ ∣ x 0 − x ^ 0 ∣ ∣ 2 D \sqrt{\frac{\left|\left|\mathbf{x}_0-{\hat{\mathbf{x}}}_0\right|\right|^2}{D}} Dx0x^02 ,速率计算为时间 t t t 迄今为止接收的累计位数。失真在速率失真图的低速率区域急剧下降,表明大多数比特确实分配给了不可察觉的失真

算法 3-4

图 5

图 5:无条件 CIFAR10 测试集率失真与时间的关系。失真以 [0; 255] 范围内的均方根误差来衡量。详情见表 4。

渐进式生成。我们还运行了一个渐进式无条件生成过程,该过程由随机位的渐进式解压缩给出。换句话说,我们预测逆过程的结果 x ^ 0 {\hat{\mathbf{x}}}_0 x^0,同时使用算法 2 从逆过程中采样。图 6 和图 10 显示了逆过程中 x ^ 0 {\hat{\mathbf{x}}}_0 x^0 的样本质量。大规模图像特征首先出现,细节最后出现。图 7 显示了随机预测 x 0 ∼ p θ ( x 0 | x t ) \mathbf{x}_0\sim p_\theta\left(\mathbf{x}_0\middle|\mathbf{x}_t\right) x0pθ(x0xt),其中 x t \mathbf{x}_t xt 在不同 t t t 下冻结。 t t t 较小时,除了精细细节之外的所有细节都会保留下来,而当 t t t 较大时,只有大规模特征才会保留下来。也许这些是概念压缩的暗示 [18]。

图 6

图 6:无条件 CIFAR10 渐进式生成({\hat{\mathbf{x}}}_0 随时间变化,从左到右)。附录中随时间变化的扩展样本和样本质量指标(图 10 和 14)。

图 7

图 7:在相同潜在条件上,CelebA-HQ 256×256 样本共享高级属性。右下象限是 \mathbf{x}_t,其他象限是来自 p_\theta\left(\mathbf{x}_0\middle|\mathbf{x}_t\right) 的样本。

与自回归解码的联系。注意变分界限(5)可以重写为:

公式 16

 (请参阅附录 A 中的推导。)现在考虑将扩散过程长度 T T T 设置为数据的维数,定义前向过程,使得 q ( x t | x 0 ) q\left(\mathbf{x}_t\middle|\mathbf{x}_0\right) q(xtx0) 将所有概率质量放在 x 0 \mathbf{x}_0 x0 上,并屏蔽前 t t t 个坐标(即 q ( x t | x t − 1 ) q\left(\mathbf{x}_t\middle|\mathbf{x}_{t-1}\right) q(xtxt1) 屏蔽第 t t t 个坐标),设置 p ( x T ) p\left(\mathbf{x}_T\right) p(xT) 将所有质量放在空白图像上,并且为了论证的目的,将 p θ ( x t − 1 | x t ) p_\theta\left(\mathbf{x}_{t-1}\middle|\mathbf{x}_t\right) pθ(xt1xt) 视为完全表达的条件分布。通过这些选择, D K L ( q ( x T ) ∣ ∣ p ( x T ) ) = 0 D_{\rm KL}\left(q\left(\mathbf{x}_T\right)||p\left(\mathbf{x}_T\right)\right)=0 DKL(q(xT)∣∣p(xT))=0,并且最小化 D K L ( q ( x ( t − 1 )   ∣ x t ) ∣ ∣ p ( x T ) ) D_{\rm KL}\left(q\left(\mathbf{x}_(t-1)\ |\mathbf{x}_t\right)||p\left(\mathbf{x}_T\right)\right) DKL(q(x(t1) xt)∣∣p(xT)) 训练 p θ p_\theta pθ 复制坐标 t + 1 , ⋯   ,   T t+1,\cdots,\ T t+1,, T 不变,并预测给定 t + 1 , ⋯   ,   T t+1,\cdots,\ T t+1,, T 的第 t t t 个坐标 T T T因此,用这种特殊的扩散训练 p θ p_\theta pθ 就是训练自回归模型

因此,我们可以将高斯扩散模型 (2) 解释为一种具有广义位排序的自回归模型,而这种排序无法通过重新排序数据坐标来表达。先前的研究表明,这种重新排序会引入归纳偏差,从而影响样本质量 [38],因此我们推测高斯扩散也有类似的用途,而且效果可能更好,因为与掩蔽噪声相比,将高斯噪声添加到图像中可能更自然。此外,高斯扩散长度不限于等于数据维数;例如,我们在实验中使用 T = 1000 T=1000 T=1000,它小于 32×32×3 或 256×256×3 图像的维数。高斯扩散可以做得更短以实现快速采样,也可以做得更长以实现模型表达能力。

4.4 插值

 我们可以使用 q q q 作为随机编码器, x 0 ,   x 0 ′ ∼ q ( x t | x 0 ) \mathbf{x}_0,\ \mathbf{x}_0^\prime\sim q\left(\mathbf{x}_t\middle|\mathbf{x}_0\right) x0, x0q(xtx0),在潜在空间中插值源图像 x t ,   x t ′ ∼ q ( x t | x 0 ) \mathbf{x}_t,\ \mathbf{x}_t^\prime\sim q\left(\mathbf{x}_t\middle|\mathbf{x}_0\right) xt, xtq(xtx0),然后通过逆过程将线性插值的潜在 x ˉ t = ( 1 − λ ) x 0 + λ x 0 ′ {\bar{\mathbf{x}}}_t=\left(1-\lambda\right)\mathbf{x}_0+\lambda\mathbf{x}_0^\prime xˉt=(1λ)x0+λx0 解码到图像空间, x ˉ 0 ∼ q ( x t | x 0 ) {\bar{\mathbf{x}}}_0\sim q\left(\mathbf{x}_t\middle|\mathbf{x}_0\right) xˉ0q(xtx0)。实际上,我们使用逆过程从线性插值损坏的源图像版本中去除伪影,如图 8(左)所示。我们固定了不同 λ \lambda λ 值的噪声,因此 x t 和 x t ′ \mathbf{x}_t 和 \mathbf{x}_t^\prime xtxt 保持不变。图 8(右)展示了原始 CelebA-HQ 256×256 图像( t = 500 t=500 t=500)的插值和重建。逆向过程可产生高质量的重建和合理的插值,这些插值可以平滑地改变姿势、肤色、发型、表情和背景等属性,但不会改变眼镜。 t t t 越大,插值越粗糙,变化也越多, t = 1000 t=1000 t=1000 时会出现新的样本(附录图 9)。

图 8

图 8:具有 500 个扩散时间步长的 CelebA-HQ 256x256 图像的插值。

5. 相关工作

 虽然扩散模型可能类似于流 [9, 46, 10, 32, 5, 16, 23] 和 VAE [33, 47, 37],但扩散模型的设计使得 q q q 没有参数,并且顶层潜在 x T \mathbf{x}_T xT 与数据 x 0 \mathbf{x}_0 x0 几乎没有互信息。我们的 ϵ \boldsymbol{\epsilon} ϵ- 预测逆过程参数化建立了扩散模型与使用退火朗之万动力学进行采样的多个噪声水平上的去噪分数匹配之间的联系 [55, 56]。然而,扩散模型允许直接进行对数似然评估,并且训练过程使用变分推理明确训练朗之万动力学采样器(详情见附录 C)。这种联系也有相反的含义,即某种加权形式的去噪分数匹配与训练类似朗之万的采样器的变分推理相同。学习马尔可夫链转换算子的其他方法包括注入训练 [2]、变分回溯 [15]、生成随机网络[1]等[50, 54, 36, 42, 35, 65]。

根据分数匹配和基于能量的建模之间的已知联系,我们的工作可能对其他近期基于能量的模型的研究产生影响 [67–69, 12, 70, 13, 11, 41, 17, 8]。我们的率失真曲线是在一次变分界限评估中随时间计算的,这让人想起了如何在一次退火重要性抽样中计算失真惩罚下的率失真曲线 [24]。我们的渐进解码论证可以在卷积 DRAW 和相关模型 [18, 40] 中看到,也可能为自回归模型的子尺度排序或采样策略提供更通用的设计 [38, 64]。

6. 结论

我们已经使用扩散模型展示了高质量的图像样本,并且我们发现了扩散模型与变分推理之间的联系,用于训练马尔可夫链、去噪分数匹配和退火朗之万动力学(以及基于能量的模型)、自回归模型和渐进有损压缩。由于扩散模型似乎对图像数据具有出色的归纳偏差,我们期待研究它们在其他数据模式中的效用以及作为其他类型的生成模型和机器学习系统的组件

更广泛的影响

 我们对扩散模型的研究与现有的其他类型的深度生成模型的研究范围相似,例如努力提高 GAN、流、自回归模型等的样本质量。我们的论文代表了在使扩散模型成为此类技术中普遍有用的工具方面取得的进展,因此它可能有助于放大生成模型对更广阔的世界产生的影响(以及将产生的影响)

 不幸的是,生成模型有许多众所周知的恶意用途。样本生成技术可用于制作知名人物的假图像和视频,以达到政治目的。虽然假图像早在软件工具出现之前就已手动创建,但像我们这样的生成模型使这一过程变得更容易。幸运的是,CNN 生成的图像目前存在一些细微的缺陷,可以被检测到 [62],但生成模型的改进可能会使检测变得更加困难。生成模型还反映了它们所训练的数据集中的偏见。由于许多大型数据集都是由自动化系统从互联网上收集的,因此很难消除这些偏见,尤其是在图像未标记的情况下。如果在这些数据集上训练的生成模型的样本在整个互联网上激增,那么这些偏见只会进一步加强。

 另一方面,扩散模型可能对数据压缩有用,随着数据的分辨率越来越高,全球互联网流量不断增加,数据压缩可能对确保广大受众能够访问互联网至关重要。我们的工作可能有助于对未标记的原始数据进行表征学习,以用于从图像分类到强化学习等大量下游任务,扩散模型也可能适用于艺术、摄影和音乐领域的创意用途

资金确认和披露

 这项工作得到了 ONR PECASE 和 NSF 研究生奖学金的支持,资助编号为 DGE-1752814。Google 的 TensorFlow 研究云 (TFRC) 提供了云 TPU。

参考文献

[1] Guillaume Alain, Yoshua Bengio, Li Yao, Jason Yosinski, Eric Thibodeau-Laufer, Saizheng Zhang, and Pascal Vincent. GSNs: generative stochastic networks. Information and Inference: A Journal of the IMA, 5(2):210–249, 2016.
[2] Florian Bordes, Sina Honari, and Pascal Vincent. Learning to generate samples from noise through infusion training. In International Conference on Learning Representations, 2017.
[3] Andrew Brock, Jeff Donahue, and Karen Simonyan. Large scale GAN training for high fidelity natural image synthesis. In International Conference on Learning Representations, 2019.
[4] Tong Che, Ruixiang Zhang, Jascha Sohl-Dickstein, Hugo Larochelle, Liam Paull, Yuan Cao, and Yoshua Bengio. Your GAN is secretly an energy-based model and you should use discriminator driven latent sampling. arXiv preprint arXiv:2003.06060, 2020.
[5] Tian Qi Chen, Yulia Rubanova, Jesse Bettencourt, and David K Duvenaud. Neural ordinary differential equations. In Advances in Neural Information Processing Systems, pages 6571–6583, 2018.
[6] Xi Chen, Nikhil Mishra, Mostafa Rohaninejad, and Pieter Abbeel. PixelSNAIL: An improved autoregressive generative model. In International Conference on Machine Learning, pages 863–871, 2018.
[7] Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparse transformers. arXiv preprint arXiv:1904.10509, 2019.
[8] Yuntian Deng, Anton Bakhtin, Myle Ott, Arthur Szlam, and Marc’Aurelio Ranzato. Residual energy-based models for text generation. arXiv preprint arXiv:2004.11714, 2020.
[9] Laurent Dinh, David Krueger, and Yoshua Bengio. NICE: Non-linear independent components estimation. arXiv preprint arXiv:1410.8516, 2014.
[10] Laurent Dinh, Jascha Sohl-Dickstein, and Samy Bengio. Density estimation using Real NVP. arXiv preprint arXiv:1605.08803, 2016.
[11] Yilun Du and Igor Mordatch. Implicit generation and modeling with energy based models. In Advances in Neural Information Processing Systems, pages 3603–3613, 2019.
[12] Ruiqi Gao, Yang Lu, Junpei Zhou, Song-Chun Zhu, and Ying Nian Wu. Learning generative ConvNets via multi-grid modeling and sampling. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 9155–9164, 2018.
[13] Ruiqi Gao, Erik Nijkamp, Diederik P Kingma, Zhen Xu, Andrew M Dai, and Ying Nian Wu. Flow contrastive estimation of energy-based models. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 7518–7528, 2020.
[14] Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. Generative adversarial nets. In Advances in Neural Information Processing Systems, pages 2672–2680, 2014.
[15] Anirudh Goyal, Nan Rosemary Ke, Surya Ganguli, and Yoshua Bengio. Variational walkback: Learning a transition operator as a stochastic recurrent net. In Advances in Neural Information Processing Systems, pages 4392–4402, 2017.
[16] Will Grathwohl, Ricky T. Q. Chen, Jesse Bettencourt, and David Duvenaud. FFJORD: Free-form continuous dynamics for scalable reversible generative models. In International Conference on Learning Representations, 2019.
[17] Will Grathwohl, Kuan-Chieh Wang, Joern-Henrik Jacobsen, David Duvenaud, Mohammad Norouzi, and Kevin Swersky. Your classifier is secretly an energy based model and you should treat it like one. In International Conference on Learning Representations, 2020.
[18] Karol Gregor, Frederic Besse, Danilo Jimenez Rezende, Ivo Danihelka, and Daan Wierstra. Towards conceptual compression. In Advances In Neural Information Processing Systems, pages 3549–3557, 2016.
[19] Prahladh Harsha, Rahul Jain, David McAllester, and Jaikumar Radhakrishnan. The communication complexity of correlation. In Twenty-Second Annual IEEE Conference on Computational Complexity (CCC’07), pages 10–23. IEEE, 2007.
[20] Marton Havasi, Robert Peharz, and José Miguel Hernández-Lobato. Minimal random code learning: Getting bits back from compressed model parameters. In International Conference on Learning Representations, 2019.
[21] Martin Heusel, Hubert Ramsauer, Thomas Unterthiner, Bernhard Nessler, and Sepp Hochreiter. GANs trained by a two time-scale update rule converge to a local Nash equilibrium. In Advances in Neural Information Processing Systems, pages 6626–6637, 2017.
[22] Irina Higgins, Loic Matthey, Arka Pal, Christopher Burgess, Xavier Glorot, Matthew Botvinick, Shakir Mohamed, and Alexander Lerchner. beta-VAE: Learning basic visual concepts with a constrained variational framework. In International Conference on Learning Representations, 2017.
[23] Jonathan Ho, Xi Chen, Aravind Srinivas, Yan Duan, and Pieter Abbeel. Flow++: Improving flow-based generative models with variational dequantization and architecture design. In International Conference on Machine Learning, 2019.
[24] Sicong Huang, Alireza Makhzani, Yanshuai Cao, and Roger Grosse. Evaluating lossy compression rates of deep generative models. In International Conference on Machine Learning, 2020.
[25] Nal Kalchbrenner, Aaron van den Oord, Karen Simonyan, Ivo Danihelka, Oriol Vinyals, Alex Graves, and Koray Kavukcuoglu. Video pixel networks. In International Conference on Machine Learning, pages 1771–1779, 2017.
[26] Nal Kalchbrenner, Erich Elsen, Karen Simonyan, Seb Noury, Norman Casagrande, Edward Lockhart, Florian Stimberg, Aaron van den Oord, Sander Dieleman, and Koray Kavukcuoglu. Efficient neural audio synthesis. In International Conference on Machine Learning, pages 2410–2419, 2018.
[27] Tero Karras, Timo Aila, Samuli Laine, and Jaakko Lehtinen. Progressive growing of GANs for improved quality, stability, and variation. In International Conference on Learning Representations, 2018.
[28] Tero Karras, Samuli Laine, and Timo Aila. A style-based generator architecture for generative adversarial networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 4401–4410, 2019.
[29] Tero Karras, Miika Aittala, Janne Hellsten, Samuli Laine, Jaakko Lehtinen, and Timo Aila. Training generative adversarial networks with limited data. arXiv preprint arXiv:2006.06676v1, 2020.
[30] Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, and Timo Aila. Analyzing and improving the image quality of StyleGAN. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 8110–8119, 2020.
[31] Diederik P Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In International Conference on Learning Representations, 2015.
[32] Diederik P Kingma and Prafulla Dhariwal. Glow: Generative flow with invertible 1x1 convolutions. In Advances in Neural Information Processing Systems, pages 10215–10224, 2018.
[33] Diederik P Kingma and Max Welling. Auto-encoding variational Bayes. arXiv preprint arXiv:1312.6114, 2013.
[34] Diederik P Kingma, Tim Salimans, Rafal Jozefowicz, Xi Chen, Ilya Sutskever, and Max Welling. Improved variational inference with inverse autoregressive flow. In Advances in Neural Information Processing Systems, pages 4743–4751, 2016.
[35] John Lawson, George Tucker, Bo Dai, and Rajesh Ranganath. Energy-inspired models: Learning with sampler-induced distributions. In Advances in Neural Information Processing Systems, pages 8501–8513, 2019.
[36] Daniel Levy, Matt D. Hoffman, and Jascha Sohl-Dickstein. Generalizing Hamiltonian Monte Carlo with neural networks. In International Conference on Learning Representations, 2018.
[37] Lars Maaløe, Marco Fraccaro, Valentin Liévin, and Ole Winther. BIVA: A very deep hierarchy of latent variables for generative modeling. In Advances in Neural Information Processing Systems, pages 6548–6558, 2019.
[38] Jacob Menick and Nal Kalchbrenner. Generating high fidelity images with subscale pixel networks and multidimensional upscaling. In International Conference on Learning Representations, 2019.
[39] Takeru Miyato, Toshiki Kataoka, Masanori Koyama, and Yuichi Yoshida. Spectral normalization for generative adversarial networks. In International Conference on Learning Representations, 2018.
[40] Alex Nichol. VQ-DRAW: A sequential discrete VAE. arXiv preprint arXiv:2003.01599, 2020.
[41] Erik Nijkamp, Mitch Hill, Tian Han, Song-Chun Zhu, and Ying Nian Wu. On the anatomy of MCMC-based maximum likelihood learning of energy-based models. arXiv preprint arXiv:1903.12370, 2019.
[42] Erik Nijkamp, Mitch Hill, Song-Chun Zhu, and Ying Nian Wu. Learning non-convergent non-persistent short-run MCMC toward energy-based model. In Advances in Neural Information Processing Systems, pages 5233–5243, 2019.
[43] Georg Ostrovski, Will Dabney, and Remi Munos. Autoregressive quantile networks for generative modeling. In International Conference on Machine Learning, pages 3936–3945, 2018.
[44] Ryan Prenger, Rafael Valle, and Bryan Catanzaro. WaveGlow: A flow-based generative network for speech synthesis. In ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pages 3617–3621. IEEE, 2019.
[45] Ali Razavi, Aaron van den Oord, and Oriol Vinyals. Generating diverse high-fidelity images with VQVAE-2. In Advances in Neural Information Processing Systems, pages 14837–14847, 2019.
[46] Danilo Rezende and Shakir Mohamed. Variational inference with normalizing flows. In International Conference on Machine Learning, pages 1530–1538, 2015.
[47] Danilo Jimenez Rezende, Shakir Mohamed, and Daan Wierstra. Stochastic backpropagation and approximate inference in deep generative models. In International Conference on Machine Learning, pages 1278–1286, 2014.
[48] Olaf Ronneberger, Philipp Fischer, and Thomas Brox. U-Net: Convolutional networks for biomedical image segmentation. In International Conference on Medical Image Computing and Computer-Assisted Intervention, pages 234–241. Springer, 2015.
[49] Tim Salimans and Durk P Kingma. Weight normalization: A simple reparameterization to accelerate training of deep neural networks. In Advances in Neural Information Processing Systems, pages 901–909, 2016.
[50] Tim Salimans, Diederik Kingma, and Max Welling. Markov Chain Monte Carlo and variational inference: Bridging the gap. In International Conference on Machine Learning, pages 1218–1226, 2015.
[51] Tim Salimans, Ian Goodfellow, Wojciech Zaremba, Vicki Cheung, Alec Radford, and Xi Chen. Improved techniques for training gans. In Advances in Neural Information Processing Systems, pages 2234–2242, 2016.
[52] Tim Salimans, Andrej Karpathy, Xi Chen, and Diederik P Kingma. PixelCNN++: Improving the PixelCNN with discretized logistic mixture likelihood and other modifications. In International Conference on Learning Representations, 2017.
[53] Jascha Sohl-Dickstein, Eric Weiss, Niru Maheswaranathan, and Surya Ganguli. Deep unsupervised learning using nonequilibrium thermodynamics. In International Conference on Machine Learning, pages 2256–2265, 2015.
[54] Jiaming Song, Shengjia Zhao, and Stefano Ermon. A-NICE-MC: Adversarial training for MCMC. In Advances in Neural Information Processing Systems, pages 5140–5150, 2017.
[55] Yang Song and Stefano Ermon. Generative modeling by estimating gradients of the data distribution. In Advances in Neural Information Processing Systems, pages 11895–11907, 2019.
[56] Yang Song and Stefano Ermon. Improved techniques for training score-based generative models. arXiv preprint arXiv:2006.09011, 2020.
[57] Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, and Koray Kavukcuoglu. WaveNet: A generative model for raw audio. arXiv preprint arXiv:1609.03499, 2016.
[58] Aaron van den Oord, Nal Kalchbrenner, and Koray Kavukcuoglu. Pixel recurrent neural networks. International Conference on Machine Learning, 2016.
[59] Aaron van den Oord, Nal Kalchbrenner, Oriol Vinyals, Lasse Espeholt, Alex Graves, and Koray Kavukcuoglu. Conditional image generation with PixelCNN decoders. In Advances in Neural Information Processing Systems, pages 4790–4798, 2016.
[60] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in Neural Information Processing Systems, pages 5998–6008, 2017.
[61] Pascal Vincent. A connection between score matching and denoising autoencoders. Neural Computation, 23(7):1661–1674, 2011.
[62] Sheng-Yu Wang, Oliver Wang, Richard Zhang, Andrew Owens, and Alexei A Efros. Cnn-generated images are surprisingly easy to spot…for now. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2020.
[63] Xiaolong Wang, Ross Girshick, Abhinav Gupta, and Kaiming He. Non-local neural networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 7794–7803, 2018.
[64] Auke J Wiggers and Emiel Hoogeboom. Predictive sampling with forecasting autoregressive models. arXiv preprint arXiv:2002.09928, 2020.
[65] Hao Wu, Jonas Köhler, and Frank Noé. Stochastic normalizing flows. arXiv preprint arXiv:2002.06707, 2020.
[66] Yuxin Wu and Kaiming He. Group normalization. In Proceedings of the European Conference on Computer Vision (ECCV), pages 3–19, 2018.
[67] Jianwen Xie, Yang Lu, Song-Chun Zhu, and Yingnian Wu. A theory of generative convnet. In International Conference on Machine Learning, pages 2635–2644, 2016.
[68] Jianwen Xie, Song-Chun Zhu, and Ying Nian Wu. Synthesizing dynamic patterns by spatial-temporal generative convnet. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 7093–7101, 2017.
[69] Jianwen Xie, Zilong Zheng, Ruiqi Gao, Wenguan Wang, Song-Chun Zhu, and Ying Nian Wu. Learning descriptor networks for 3d shape synthesis and analysis. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 8629–8638, 2018.
[70] Jianwen Xie, Song-Chun Zhu, and Ying Nian Wu. Learning energy-based spatial-temporal generative convnets for dynamic patterns. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019.
[71] Fisher Yu, Yinda Zhang, Shuran Song, Ari Seff, and Jianxiong Xiao. LSUN: Construction of a large-scale image dataset using deep learning with humans in the loop. arXiv preprint arXiv:1506.03365, 2015.
[72] Sergey Zagoruyko and Nikos Komodakis. Wide residual networks. arXiv preprint arXiv:1605.07146, 2016.

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

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

相关文章

FreeRTOS篇7:队列

一.什么是队列 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构&#xff0c;队列可以在任务与任务间、中断和任 务间传递信息。 为什么不使用全局变量&#xff1f; 如果使用全局变量&#xff0c;兔子&#xff08;任务1&#xff09;修改了变量 a &#xff0c;…

基于Arduino的宠物食物分配器

创作本文的初衷是本人的一个养宠物的梦想&#xff08;因为家里人对宠物过敏&#xff0c;因此养宠物的action一直没有落实&#xff09;&#xff0c;但是梦想总是要有的哈哈哈哈哈。上周正好是和一个很好的朋友见面&#xff0c;聊到了养宠物的事情&#xff0c;她大概是讲到了喂宠…

Redis: Sentinel工作原理和故障迁移流程

Sentinel 哨兵几个核心概念 1 ) 定时任务 Sentinel 它是如何工作的&#xff0c;是如何感知到其他的 Sentinel 节点以及 Master/Slave节点的就是通过它的一系列定时任务来做到的&#xff0c;它内部有三个定时任务 第一个就是每一秒每个 Sentinel 对其他 Sentinel 和 Redis 节点…

浏览器 F12 application 应用程序面板

在大多数现代浏览器中&#xff0c;按下 F12 键会打开开发者工具&#xff08;Developer Tools&#xff09;&#xff0c;这是一个为开发者设计的强大工具集&#xff0c;用于调试网页和应用。在开发者工具中&#xff0c;“Application”&#xff08;应用程序&#xff09;面板提供了…

Hystrix学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程&#xff1a;封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

Stable Diffusion绘画 | 来训练属于自己的模型:LoRA模型验收

我们每次训练出来的模型&#xff0c;一般都会生成 20-30 个&#xff0c;至于哪个模型符合要求&#xff0c;较为理想呢&#xff1f; 接下来需要对每个 LoRA模型 进行逐一对比测试。 为了测试模型的泛化性&#xff0c;可选择使用一些较为特殊的提示词&#xff0c;看看各个模型对…

运动耳机哪个牌子的好?5大质量不凡的运动耳机测评力荐!

在快节奏的生活中&#xff0c;无论是晨跑、健身还是户外探险&#xff0c;音乐都成了许多人不可或缺的陪伴。运动耳机&#xff0c;作为一种专为运动场景设计的音频设备&#xff0c;旨在提供高质量音频体验的同时&#xff0c;保证佩戴的舒适度和运动的安全性。 &#xff08;上图为…

hystrix微服务部署

目录 一.启动nacos和redis 1.查看是否有nacos和redis 二.开始项目 1.hystrix1工程&#xff08;修改一下工程的注册名字&#xff09; 2.运行登录nacos网站查看运行效果&#xff08;默认密码nacos,nacos&#xff09; 3.开启第二个项目 hystrix2工程 4.关闭第二个项目 hyst…

硬件-示波器测开关电源-炸机经验-隔离变压器

一&#xff1a;常见疑问术语 1.1 示波器被烧了&#xff0c;测试的电源板炸了 1.2 把示波器的电源三脚的地那端拔掉&#xff1f; 1.3 隔离变压器是什么&#xff1f; 1.4 上述操作可以用差探头实现&#xff0c;差分探头是什么&#xff1f; 二&#xff1a;实际案例失误操作 2.1 炸…

MySQL基础篇 - 事务

01 事务的简介 【1】什么是事务&#xff1a;事务是一组操作集合&#xff0c;要么同时操作成功&#xff0c;要么同时操作失败。 【2】对于MySQL数据库来说默认一条SQL语句就是一个事务&#xff0c;且事务是默认自动提交的。 我们可以把多条SQL语句设置成一个事务&#xff0c;使…

pod管理及优化

一、k8s中的资源 1、资源介绍 [rootk8s-master ~]# kubectl --namespace timinglee get po No resources found in timinglee namespace. [rootk8s-master ~]# kubectl run testpod --image timinglee/nginx [rootk8s-master ~]# kubectl get pods -w NAME READY STATU…

AI大师工坊丨国庆节去哪玩?让旅游规划大师助你一臂之力

文章目录 零、写在前面一、旅游规划大师二、如何创造自己的智能体三、写在后面 零、写在前面 听说由百度文心智能体平台主办&#xff0c;万众瞩目的 AI大师工坊招募令 启动啦&#xff01; 在本期大师工坊中&#xff0c;博主开发了一款超级实用的智能体&#xff1a;旅游规划大…

MySQL 启动失败 (code=exited, status=1/FAILURE) 异常解决方案

目录 前言1. 问题描述2. 查看错误日志文件2.1 确认日志文件路径2.2 查看日志文件内容 3. 定位问题3.1 问题分析 4. 解决问题4.1 注释掉错误配置4.2 重启 MySQL 服务 5. 总结结语 前言 在日常运维和开发过程中&#xff0c;MySQL数据库的稳定运行至关重要。然而&#xff0c;MySQ…

Framebuffer学习

目录 1. Framebuffer概念2. LCD操作原理3. 源码分析3.1 打开设备3.2 获取LCD参数3.3 映射Framebuffer3.4 描点实现 基于韦东山IMX6ULL开发板学习 参考教程&#xff1a; 韦东山老师教程 1. Framebuffer概念 Framebuffer&#xff0c;可以译作“帧缓冲”&#xff0c;有时简称为fb…

“衣依”服装销售平台:Spring Boot技术实践与创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】 一、上篇回顾二、项目准备2.1 准备模板项目2.2 支持计时功能2.3 配置UART4引脚2.4 支持printf重定向到UART42.5 支持printf输出浮点数2.6 支持printf不带\r的换行2.7 支持ccache编译缓存 三、TFLM集成3.1 添加tfli…

记录win11 蓝屏修复

1原因&#xff1a; win11 edge 的浏览器异常 打开新窗口的广告 打不开显示网络未连接下载驱动精灵 下载驱动要开会员 果断卸载 然后发现没有卸载干净 任务管理器 搜驱动 不小心干掉了win自带的文件win提示更新 更新重启就蓝屏随便点击一个新闻页面 解决办法&#xff1a; 在…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.6

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第二周 深度卷积网络&#xff1a;实例探究&#xff08;Deep convolutional models: case studies&#xff09;2.5 网络中的网络以及 11 卷积&#xff08;Network in Network and 11 convoluti…

利用Spring Boot开发“衣依”服装销售系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

如何从 PC 中检索已删除的文件?从 PC 恢复已删除的照片技巧

按 Shift Delete 以后后悔&#xff1f;想要恢复已删除的照片吗&#xff1f;好吧&#xff0c;如果是这样的话&#xff0c;那么您来对地方了。在本文中&#xff0c;我们将讨论如何从 PC 中检索已删除的文件。 自从摄影的概念被提出以来&#xff0c;人们就对它着迷。早期的照片保…