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

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.rhkb.cn/news/438202.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强大的JVM监控工具

介绍 在生产环境中&#xff0c;经常会遇到各种各样奇葩的性能问题&#xff0c;所以掌握最基本的JVM命令行监控工具还是很有必要的 名称主要作用jps查看正在运行的Java进程jstack打印线程快照jmap导出堆内存映像文件jstat查看jvm统计信息jinfo实时查看和修改jvm配置参数jhat用…

Java 每日一刊(第20期):I/O 流

文章目录 前言流的起源及概念Java I/O 流概述字节流字符流转换流缓冲流对象流与序列化NIO&#xff08;New I/O&#xff09;流的关闭与资源管理本期小知识 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; 流的起源及概念J…

Leetcode: 0041-0050题速览

Leetcode: 0041-0050题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer&#xff08;第 2 版&#xff09;》、《程序员面试金典&#xff08;第 6 版&#xff09;》题解 遵从开源协议为知识共享 版权归属-相同方式…

C++ | Leetcode C++题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; class Solution { public:int numberOfBoomerangs(vector<vector<int>> &points) {int ans 0;for (auto &p : points) {unordered_map<int, int> cnt;for (auto &q : points) {int dis (p[0] - q[0]) * (p…

【Node.js】内置模块FileSystem的保姆级入门讲解

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;Vscode 本文代码都经由博主PleaSure乐事实操后得出&#xff0c;可以放心使用。 1.FileSystem介绍 Node.js 的 fs&#xff08;filesystem&#xff09;模块是一个核心模块&#xff0c…

C++入门基础知识97——【关于C++ 条件运算符 ? :】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 条件运算符 ? :的相关内容&#xff…

【PCL】Ubuntu22.04 安装 PCL 库

文章目录 前言一、更新系统软件包二、安装依赖项三、下载 PCL 源码四、编译和安装 PCL五、测试安装成功1、 pcd_write.cpp2、CMakeLists.txt3、build 前言 PCL&#xff08;Point Cloud Library&#xff09;是一个开源的大型项目&#xff0c;专注于2D/3D图像和点云处理。PCL为点…

在WPF中实现多语言切换的四种方式

在WPF中有多种方式可以实现多语言&#xff0c;这里提供几种常用的方式。 一、使用XML实现多语言切换 使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类. 使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定…

【折半查找】

目录 一. 折半查找的概念二. 折半查找的过程三. 折半查找的代码实现四. 折半查找的性能分析 \quad 一. 折半查找的概念 \quad 必须有序 \quad 二. 折半查找的过程 \quad \quad 三. 折半查找的代码实现 \quad 背下来 \quad 四. 折半查找的性能分析 \quad 记住 比较的是层数 …

git 报错git: ‘remote-https‘ is not a git command. See ‘git --help‘.

报错内容 原因与解决方案 第一种情况&#xff1a;git路径错误 第一种很好解决&#xff0c;在环境变量中配置正确的git路径即可&#xff1b; 第二种情况 git缺少依赖 这个情况&#xff0c;网上提供了多种解决方案。但如果比较懒&#xff0c;可以直接把仓库地址的https改成ht…

Android 简单实现联系人列表+字母索引联动效果

效果如上图。 Main Ideas 左右两个列表左列表展示人员数据&#xff0c;含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表&#xff0c;点击某个item&#xff0c;展示一个气泡组件(它会自动延时关闭)&#xff0c; 左列表滚动并显示与点击的索引列表item …

Elasticsearch 8.16 和 JDK 23 中的语言环境变化

作者&#xff1a;来自 Elastic Simon Cooper 随着 JDK 23 即将发布&#xff0c;语言环境信息中有一些重大变化&#xff0c;这将影响 Elasticsearch 以及你提取和格式化日期时间数据的方式。首先&#xff0c;介绍一些背景知识。 什么是语言环境&#xff1f; 每次 Java 程序需要…

理解Matplotlib构图组成

介绍 Matplotlib 是 Python 中最流行的数据可视化库之一。它提供了一系列丰富的工具&#xff0c;可以绘制高度自定义且适用于各种应用场景的图表。无论你是数据科学家、工程师&#xff0c;还是需要处理数据图形表示的任何人&#xff0c;理解如何操作和定制 Matplotlib 中的图表…

三、数据链路层(上)

目录 3.1数据链路层概述 3.1.1术语 3.1.2功能 3.2封装成帧和透明传输 3.2.1封装成帧 ①字符计数法 ②字符&#xff08;节&#xff09;填充法 ③零比特填充法 ④违规编码法 3.2.2透明传输 3.2.3差错控制 差错原因 检错编码 奇偶校验 ☆循环冗余码CRC 例题 纠错…

骨架屏 (懒加载优化)

骨架屏 &#xff08;懒加载优化&#xff09; 即便通过 Webpack 的按需加载、CDN 静态资源缓存 和 代码分割 等技术来减少首屏的代码体积&#xff0c;首屏加载时的白屏时间&#xff08;也称为首屏等待时间&#xff09;仍然可能存在&#xff0c;尤其在网络条件较差或页面内容复杂…

MongoDB 快速入门+单机部署(附带脚本)

目录 介绍 体系结构 数据模型 BSON BSON 数据类型 特点 高性能 高可用 高扩展 丰富的查询支持 其他特点 部署 单机部署 普通安装 脚本安装 Docker Compose 安装 卸载 停止 MongoDB 删除包 删除数据目录 参考&#xff1a; https://docs.mongoing.com/ 介绍…

python全栈学习记录(二十一)类的继承、派生、组合

类的继承、派生、组合 文章目录 类的继承、派生、组合一、类的继承二、派生三、组合 一、类的继承 继承是一种新建类的方式&#xff0c;新建的类称为子类&#xff0c;被继承的类称为父类。 继承的特性是&#xff1a;子类会遗传父类的属性&#xff08;继承是类与类之间的关系&a…

2024年研究生数学建模“华为杯”E题——肘部法则、k-means聚类、目标检测(python)、ARIMA、逻辑回归、混淆矩阵(附:目标检测代码)

文章目录 一、情况介绍二、思路情况二、代码展示三、感受 一、情况介绍 前几天也是参加了研究生数学建模竞赛&#xff08;也就是华为杯&#xff09;&#xff0c;也是和本校的两个数学学院的朋友在网上组的队伍。昨天&#xff08;9.25&#xff09;通宵干完论文&#xff08;一条…

Prompt 初级版:构建高效对话的基础指南

Prompt 初级版&#xff1a;构建高效对话的基础指南 文章目录 Prompt 初级版&#xff1a;构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型&#xff0c;帮助用户更好地理解如何在对话中构建有效的…

Pytorch实现玉米基因表达量预测模型

一、实验要求 通过搭建残差卷积网络&#xff0c;实现对玉米基因表达量的预测 二、实验目的 理解基因表达量预测问题&#xff1a;基因表达预测是生物信息学和基因组学领域中的重要任务之一&#xff0c;促进学科交叉融合。熟悉深度学习框架PyTorch&#xff1a;通过实现基因表达量…