当前位置: 首页 > news >正文

哪里可以捡到玉石/北京seo结算

哪里可以捡到玉石,北京seo结算,网站建设常州,信息化建设网站相关阅读:扩散模型(一) Parameterization of L t L_t Lt​ for Training Loss 回想一下,我们需要训练一个神经网络来近似反向扩散过程中的条件概率分布,即, p θ ( x t − 1 ∣ x t ) N ( x t − 1 ; μ θ ( x t…

相关阅读:扩散模型(一)

Parameterization of L t L_t Lt for Training Loss

回想一下,我们需要训练一个神经网络来近似反向扩散过程中的条件概率分布,即, p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_\theta(\mathbf{x}_{t-1} \vert \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \boldsymbol{\mu}_\theta(\mathbf{x}_t, t), \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)). 我们希望训练 μ θ \boldsymbol{\mu}_\theta μθ 以预测 μ ~ t = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) \tilde{\boldsymbol{\mu}}_t = \frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_t \Big) μ~t=αt 1(xt1αˉt 1αtϵt). 由于训练时 x t \mathbf{x}_t xt 可以获取, 我们可以对高斯噪声项进行重参数化, 使其在时间步 t t t 从输入 x t \mathbf{x}_t xt 预测出 ϵ t \boldsymbol{\epsilon}_t ϵt

μ θ ( x t , t ) = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) Thus  x t − 1 = N ( x t − 1 ; 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) , Σ θ ( x t , t ) ) \begin{aligned} \boldsymbol{\mu}_\theta(\mathbf{x}_t, t) &= \color{blue}{\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big)} \\ \text{Thus } \mathbf{x}_{t-1} &= \mathcal{N}(\mathbf{x}_{t-1}; \frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big), \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t)) \end{aligned} μθ(xt,t)Thus xt1=αt 1(xt1αˉt 1αtϵθ(xt,t))=N(xt1;αt 1(xt1αˉt 1αtϵθ(xt,t)),Σθ(xt,t))

损失项 L t L_t Lt 通过参数化来最小化与 μ ~ \tilde{\boldsymbol{\mu}} μ~ 的差异:

L t = E x 0 , ϵ [ 1 2 ∥ Σ θ ( x t , t ) ∥ 2 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 ∥ Σ θ ∥ 2 2 ∥ 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) − 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] \begin{aligned} L_t &= \mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}} \Big[\frac{1}{2 \| \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t) \|^2_2} \| \color{blue}{\tilde{\boldsymbol{\mu}}_t(\mathbf{x}_t, \mathbf{x}_0)} - \color{green}{\boldsymbol{\mu}_\theta(\mathbf{x}_t, t)} \|^2 \Big] \\ &= \mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}} \Big[\frac{1}{2 \|\boldsymbol{\Sigma}_\theta \|^2_2} \| \color{blue}{\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_t \Big)} - \color{green}{\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\boldsymbol{\epsilon}}_\theta(\mathbf{x}_t, t) \Big)} \|^2 \Big] \\ &= \mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}} \Big[\frac{ (1 - \alpha_t)^2 }{2 \alpha_t (1 - \bar{\alpha}_t) \| \boldsymbol{\Sigma}_\theta \|^2_2} \|\boldsymbol{\epsilon}_t - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\|^2 \Big] \\ &= \mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}} \Big[\frac{ (1 - \alpha_t)^2 }{2 \alpha_t (1 - \bar{\alpha}_t) \| \boldsymbol{\Sigma}_\theta \|^2_2} \|\boldsymbol{\epsilon}_t - \boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t}\boldsymbol{\epsilon}_t, t)\|^2 \Big] \end{aligned} Lt=Ex0,ϵ[2∥Σθ(xt,t)221μ~t(xt,x0)μθ(xt,t)2]=Ex0,ϵ[2∥Σθ221αt 1(xt1αˉt 1αtϵt)αt 1(xt1αˉt 1αtϵθ(xt,t))2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(xt,t)2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]

  • Simplification

根据实证研究,霍等人(2020 年)发现,使用一个简化的目标函数来训练扩散模型效果更好,该目标函数忽略了加权项。

L t simple = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] \begin{aligned} L_t^\text{simple} &= \mathbb{E}_{t \sim [1, T], \mathbf{x}_0, \boldsymbol{\epsilon}_t} \Big[\|\boldsymbol{\epsilon}_t - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\|^2 \Big] \\ &= \mathbb{E}_{t \sim [1, T], \mathbf{x}_0, \boldsymbol{\epsilon}_t} \Big[\|\boldsymbol{\epsilon}_t - \boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t}\boldsymbol{\epsilon}_t, t)\|^2 \Big] \end{aligned} Ltsimple=Et[1,T],x0,ϵt[ϵtϵθ(xt,t)2]=Et[1,T],x0,ϵt[ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]

最终简化的目标为:

L simple = L t simple + C L_\text{simple} = L_t^\text{simple} + C Lsimple=Ltsimple+C

其中 C C C 是常数,不依赖于 θ \theta θ

在这里插入图片描述

  • 图 4
Connection with noise-conditioned score networks (NCSN)

宋和埃尔蒙(2019)提出了一种基于分数的生成建模方法,通过利用分数匹配估计的数据分布梯度,经由朗之万动力学(见 “与随机梯度朗之万动力学的联系”)生成样本。每个样本 x \mathbf{x} x 的密度概率的分数定义为其梯度 ∇ x log ⁡ q ( x ) \nabla_{\mathbf{x}} \log q(\mathbf{x}) xlogq(x) 。训练一个分数网络 s θ : R D → R D \mathbf{s}_\theta: \mathbb{R}^D \to \mathbb{R}^D sθ:RDRD 来进行估计,即 s θ ( x ) ≈ ∇ x log ⁡ q ( x ) \mathbf{s}_\theta(\mathbf{x}) \approx \nabla_{\mathbf{x}} \log q(\mathbf{x}) sθ(x)xlogq(x)
为了使其在深度学习环境中适用于高维数据,他们提出使用 “去噪分数匹配” 或 “切片分数匹配”。去噪分数匹配向数据 q ( x ~ ∣ x ) q(\tilde{\mathbf{x}} \vert \mathbf{x}) q(x~x) 添加预先指定的少量噪声,并通过分数匹配估计 q ( x ~ ) q(\tilde{\mathbf{x}}) q(x~)。回想一下,朗之万动力学可以在迭代过程中仅使用分数 ∇ x log ⁡ q ( x ) \nabla_{\mathbf{x}} \log q(\mathbf{x}) xlogq(x) 从概率密度分布中采样数据点。
然而,根据流形假设,尽管观测到的数据可能看起来维度极高,但大多数数据预计集中在一个低维流形中。这对分数估计产生了负面影响,因为数据点无法覆盖整个空间。在数据密度低的区域,分数估计的可靠性较差。在添加少量高斯噪声以使扰动后的数据分布覆盖整个 R D \mathbb{R}^D RD 空间后,分数估计器网络的训练变得更加稳定。宋和埃尔蒙(2019)通过用不同程度的噪声扰动数据,并训练一个噪声条件分数网络来联合估计不同噪声水平下所有扰动数据的分数,从而对该方法进行了改进。
噪声水平增加的过程类似于正向扩散过程。如果我们使用扩散过程的标注,分数近似为 s θ ( x t , t ) ≈ ∇ x t log ⁡ q ( x t ) \mathbf{s}_\theta(\mathbf{x}_t, t) \approx \nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t) sθ(xt,t)xtlogq(xt) 。对于高斯分布 x ∼ N ( μ , σ 2 I ) \mathbf{x} \sim \mathcal{N}(\mathbf{\mu}, \sigma^2 \mathbf{I}) xN(μ,σ2I) ,我们可以将其密度函数对数的导数写为 ∇ x log ⁡ p ( x ) = ∇ x ( − 1 2 σ 2 ( x − μ ) 2 ) = − x − μ σ 2 = − ϵ σ \nabla_{\mathbf{x}}\log p(\mathbf{x}) = \nabla_{\mathbf{x}} \Big(-\frac{1}{2\sigma^2}(\mathbf{x} - \boldsymbol{\mu})^2 \Big) = - \frac{\mathbf{x} - \boldsymbol{\mu}}{\sigma^2} = - \frac{\boldsymbol{\epsilon}}{\sigma} xlogp(x)=x(2σ21(xμ)2)=σ2xμ=σϵ ,其中 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\boldsymbol{0}, \mathbf{I}) ϵN(0,I) 。考虑到前文介绍的 q ( x t ∣ x 0 ) ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(\mathbf{x}_t \vert \mathbf{x}_0) \sim \mathcal{N}(\sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t)\mathbf{I}) q(xtx0)N(αˉt x0,(1αˉt)I),因此,

s θ ( x t , t ) ≈ ∇ x t log ⁡ q ( x t ) = E q ( x 0 ) [ ∇ x t log ⁡ q ( x t ∣ x 0 ) ] = E q ( x 0 ) [ − ϵ θ ( x t , t ) 1 − α ˉ t ] = − ϵ θ ( x t , t ) 1 − α ˉ t \mathbf{s}_\theta(\mathbf{x}_t, t) \approx \nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t) = \mathbb{E}_{q(\mathbf{x}_0)} [\nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t \vert \mathbf{x}_0)] = \mathbb{E}_{q(\mathbf{x}_0)} \Big[ - \frac{\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)}{\sqrt{1 - \bar{\alpha}_t}} \Big] = - \frac{\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)}{\sqrt{1 - \bar{\alpha}_t}} sθ(xt,t)xtlogq(xt)=Eq(x0)[xtlogq(xtx0)]=Eq(x0)[1αˉt ϵθ(xt,t)]=1αˉt ϵθ(xt,t)

Parameterization of β t \beta_t βt

在霍等人(2020)的研究中,正向方差被设定为一系列线性递增的常数,从 β 1 = 1 0 − 4 \beta_1=10^{-4} β1=104 β T = 0.02 \beta_T=0.02 βT=0.02。与归一化后在 [ − 1 , 1 ] [-1, 1] [1,1] 之间的图像像素值相比,这些方差相对较小。他们实验中的扩散模型生成了高质量的样本,但与其他生成模型相比,仍无法实现具有竞争力的模型对数似然。
尼科尔和达里瓦尔(2021)提出了几种改进技术,以帮助扩散模型获得更低的负对数似然(NLL)。其中一项改进是使用基于余弦的方差调度。调度函数的选择可以是任意的,只要它在训练过程中间提供近乎线性的下降,并且在 t = 0 t=0 t=0 t = T t=T t=T 附近变化细微。

β t = clip ( 1 − α ˉ t α ˉ t − 1 , 0.999 ) α ˉ t = f ( t ) f ( 0 ) where  f ( t ) = cos ⁡ ( t / T + s 1 + s ⋅ π 2 ) 2 \beta_t = \text{clip}(1-\frac{\bar{\alpha}_t}{\bar{\alpha}_{t-1}}, 0.999) \quad\bar{\alpha}_t = \frac{f(t)}{f(0)}\quad\text{where }f(t)=\cos\Big(\frac{t/T+s}{1+s}\cdot\frac{\pi}{2}\Big)^2 βt=clip(1αˉt1αˉt,0.999)αˉt=f(0)f(t)where f(t)=cos(1+st/T+s2π)2

其中,小的偏移量 s s s 是为了防止在接近 t = 0 t=0 t=0 β t \beta_t βt 过小。

在这里插入图片描述

  • 图 5
Parameterization of reverse process variance Σ θ \boldsymbol{\Sigma}_\theta Σθ

Ho et al. (2020) 选择将 β t \beta_t βt 固定为常数,而非使其可学习,并设定 Σ θ ( x t , t ) = σ t 2 I \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t) = \sigma^2_t \mathbf{I} Σθ(xt,t)=σt2I , 其中 σ t \sigma_t σt 并非通过学习得到,而是设为 β t \beta_t βt 或者 β ~ t = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t \tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \cdot \beta_t β~t=1αˉt1αˉt1βt. 因为他们发现,学习对角方差 Σ θ \boldsymbol{\Sigma}_\theta Σθ 会导致训练不稳定,且样本质量较差。
Nichol & Dhariwal (2021) 提出,通过模型预测一个混合向量 v \mathbf{v} v,将 Σ θ ( x t , t ) \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t) Σθ(xt,t) 作为 β t \beta_t βt β ~ t \tilde{\beta}_t β~t 之间的插值来进行学习。

Σ θ ( x t , t ) = exp ⁡ ( v log ⁡ β t + ( 1 − v ) log ⁡ β ~ t ) \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t) = \exp(\mathbf{v} \log \beta_t + (1-\mathbf{v}) \log \tilde{\beta}_t) Σθ(xt,t)=exp(vlogβt+(1v)logβ~t)

然而,简单目标函数 L simple L_\text{simple} Lsimple 并不依赖于 Σ θ \boldsymbol{\Sigma}_\theta Σθ。为了引入这种依赖关系,他们构建了一个混合目标函数 L hybrid = L simple + λ L VLB L_\text{hybrid} = L_\text{simple} + \lambda L_\text{VLB} Lhybrid=Lsimple+λLVLB,其中 λ = 0.001 \lambda=0.001 λ=0.001 取值较小,并且在 L VLB L_\text{VLB} LVLB 项中对 μ θ \boldsymbol{\mu}_\theta μθ 停止梯度计算,这样 L VLB L_\text{VLB} LVLB 就仅用于指导 Σ θ \boldsymbol{\Sigma}_\theta Σθ 的学习。从经验上看,他们发现 L VLB L_\text{VLB} LVLB 极难优化,这很可能是由于梯度噪声所致,因此他们提议使用一种带有重要性采样的 L VLB L_\text{VLB} LVLB 时间平均平滑版本。

Conditioned Generation

在使用诸如 ImageNet 数据集这类带有条件信息的图像来训练生成模型时,基于类别标签或一段描述性文本等条件生成样本是很常见的做法。

Classifier Guided Diffusion

为了将类别信息明确纳入扩散过程,达里瓦尔和尼科尔(2021)在含噪图像 x t \mathbf{x}_t xt 上训练了一个分类器 f ϕ ( y ∣ x t , t ) f_\phi(y \vert \mathbf{x}_t, t) fϕ(yxt,t),并通过改变噪声预测,使用梯度 ∇ x log ⁡ f ϕ ( y ∣ x t ) \nabla_\mathbf{x} \log f_\phi(y \vert \mathbf{x}_t) xlogfϕ(yxt) 将扩散采样过程导向到条件信息 y y y

考虑之前的 ∇ x t log ⁡ q ( x t ) = − 1 1 − α ˉ t ϵ θ ( x t , t ) \nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t) = - \frac{1}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) xtlogq(xt)=1αˉt 1ϵθ(xt,t),我们可以将联合分布 q ( x t , y ) q(\mathbf{x}_t, y) q(xt,y) 的分数函数写成如下形式:

∇ x t log ⁡ q ( x t , y ) = ∇ x t log ⁡ q ( x t ) + ∇ x t log ⁡ q ( y ∣ x t ) ≈ − 1 1 − α ˉ t ϵ θ ( x t , t ) + ∇ x t log ⁡ f ϕ ( y ∣ x t ) = − 1 1 − α ˉ t ( ϵ θ ( x t , t ) − 1 − α ˉ t ∇ x t log ⁡ f ϕ ( y ∣ x t ) ) \begin{aligned} \nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t, y) &= \nabla_{\mathbf{x}_t} \log q(\mathbf{x}_t) + \nabla_{\mathbf{x}_t} \log q(y \vert \mathbf{x}_t) \\ &\approx - \frac{1}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) + \nabla_{\mathbf{x}_t} \log f_\phi(y \vert \mathbf{x}_t) \\ &= - \frac{1}{\sqrt{1 - \bar{\alpha}_t}} (\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) - \sqrt{1 - \bar{\alpha}_t} \nabla_{\mathbf{x}_t} \log f_\phi(y \vert \mathbf{x}_t)) \end{aligned} xtlogq(xt,y)=xtlogq(xt)+xtlogq(yxt)1αˉt 1ϵθ(xt,t)+xtlogfϕ(yxt)=1αˉt 1(ϵθ(xt,t)1αˉt xtlogfϕ(yxt))

因此,一种新的由分类器引导的预测器 ϵ ˉ θ \bar{\boldsymbol{\epsilon}}_\theta ϵˉθ 将采用如下形式。

ϵ ˉ θ ( x t , t ) = ϵ θ ( x t , t ) − 1 − α ˉ t ∇ x t log ⁡ f ϕ ( y ∣ x t ) \bar{\boldsymbol{\epsilon}}_\theta(\mathbf{x}_t, t) = \boldsymbol{\epsilon}_\theta(x_t, t) - \sqrt{1 - \bar{\alpha}_t} \nabla_{\mathbf{x}_t} \log f_\phi(y \vert \mathbf{x}_t) ϵˉθ(xt,t)=ϵθ(xt,t)1αˉt xtlogfϕ(yxt)

为了控制分类器引导的强度,我们可以在增量部分添加一个权重 w w w

ϵ ˉ θ ( x t , t ) = ϵ θ ( x t , t ) − 1 − α ˉ t w ∇ x t log ⁡ f ϕ ( y ∣ x t ) \bar{\boldsymbol{\epsilon}}_\theta(\mathbf{x}_t, t) = \boldsymbol{\epsilon}_\theta(x_t, t) - \sqrt{1 - \bar{\alpha}_t} \; w \nabla_{\mathbf{x}_t} \log f_\phi(y \vert \mathbf{x}_t) ϵˉθ(xt,t)=ϵθ(xt,t)1αˉt wxtlogfϕ(yxt)

由此得到的简化扩散模型(ADM)以及添加了分类器引导的模型(ADM - G),能够取得比当时最先进的生成模型(如 BigGAN)更好的效果。

在这里插入图片描述

  • 图 7

此外,通过对 U-Net 架构进行一些修改,达里瓦尔和尼科尔(2021)展示了扩散模型优于生成对抗网络(GAN)的性能。架构修改包括增加模型深度 / 宽度、增多注意力头、采用多分辨率注意力机制、在上下采样中使用 BigGAN 残差块、通过 对残差连接进行重新缩放 1 / 2 1/\sqrt{2} 1/2 ,以及使用自适应组归一化(AdaGN)。

Classifier-Free Guidance

即便没有独立的分类器 f ϕ f_{\phi} fϕ,通过整合来自条件扩散模型和无条件扩散模型的分数,依然可以执行条件扩散步骤(霍和萨利曼斯,2021)。设通过分数估计器 ϵ θ ( x t , t ) \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) ϵθ(xt,t) 参数化的无条件去噪扩散模型为 p θ ( x ) p_\theta(\mathbf{x}) pθ(x),通过 ϵ θ ( x t , t , y ) \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) ϵθ(xt,t,y) 参数化的条件模型为 p θ ( x ∣ y ) p_\theta(\mathbf{x} \vert y) pθ(xy)。这两个模型可以由单个神经网络进行学习。确切地说,条件扩散模型 p θ ( x ∣ y ) p_\theta(\mathbf{x} \vert y) pθ(xy) 在成对数据上 ( x , y ) (\mathbf{x}, y) (x,y) 进行训练,其中条件信息 y y y 会被随机且周期性地丢弃,这样模型也能知晓如何进行无条件图像生成,即 ϵ θ ( x t , t ) = ϵ θ ( x t , t , y = ∅ ) \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) = \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y=\varnothing) ϵθ(xt,t)=ϵθ(xt,t,y=)

隐式分类器的梯度可以用条件和无条件分数估计器来表示。一旦将其代入分类器引导的修正分数中,该分数就不再依赖于单独的分类器。

∇ x t log ⁡ p ( y ∣ x t ) = ∇ x t log ⁡ p ( x t ∣ y ) − ∇ x t log ⁡ p ( x t ) = − 1 1 − α ˉ t ( ϵ θ ( x t , t , y ) − ϵ θ ( x t , t ) ) ϵ ˉ θ ( x t , t , y ) = ϵ θ ( x t , t , y ) − 1 − α ˉ t w ∇ x t log ⁡ p ( y ∣ x t ) = ϵ θ ( x t , t , y ) + w ( ϵ θ ( x t , t , y ) − ϵ θ ( x t , t ) ) = ( w + 1 ) ϵ θ ( x t , t , y ) − w ϵ θ ( x t , t ) \begin{aligned} \nabla_{\mathbf{x}_t} \log p(y \vert \mathbf{x}_t) &= \nabla_{\mathbf{x}_t} \log p(\mathbf{x}_t \vert y) - \nabla_{\mathbf{x}_t} \log p(\mathbf{x}_t) \\ &= - \frac{1}{\sqrt{1 - \bar{\alpha}_t}}\Big( \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big) \\ \bar{\boldsymbol{\epsilon}}_\theta(\mathbf{x}_t, t, y) &= \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) - \sqrt{1 - \bar{\alpha}_t} \; w \nabla_{\mathbf{x}_t} \log p(y \vert \mathbf{x}_t) \\ &= \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) + w \big(\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \big) \\ &= (w+1) \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t, y) - w \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \end{aligned} xtlogp(yxt)ϵˉθ(xt,t,y)=xtlogp(xty)xtlogp(xt)=1αˉt 1(ϵθ(xt,t,y)ϵθ(xt,t))=ϵθ(xt,t,y)1αˉt wxtlogp(yxt)=ϵθ(xt,t,y)+w(ϵθ(xt,t,y)ϵθ(xt,t))=(w+1)ϵθ(xt,t,y)wϵθ(xt,t)

他们的实验表明,无分类器引导能够在 FID(区分合成图像与生成图像的指标)和 IS(衡量图像质量与多样性的指标)之间取得良好平衡。

引导扩散模型 GLIDE(尼科尔、达里瓦尔、拉梅什等人,2022)对 CLIP 引导和无分类器引导这两种策略都进行了探索,结果发现更倾向于后者。他们推测,这是因为 CLIP 引导是利用对抗样本对 CLIP 模型进行开发利用,而非优化生成匹配度更高的图像。

Speed up Diffusion Models

通过遵循反向扩散过程的马尔可夫链从 DDPM(去噪扩散概率模型)生成样本的速度非常慢,因为步数可能多达一千步甚至几千步。宋等人(2020)的一项数据表明:“例如,从 DDPM 中采样 50,000 张 32×32 尺寸的图像大约需要 20 个小时,而在英伟达 2080 Ti GPU 上,使用生成对抗网络(GAN)采样同样数量的图像则不到一分钟。”

Fewer Sampling Steps & Distillation

一种简单的方法是采用跨步采样方案(尼科尔和达里瓦尔,2021),每 ⌈ T / S ⌉ \lceil T/S \rceil T/S 步进行一次采样更新,从而将采样过程从 T T T 步缩减至 S S S 步。新的生成采样方案为 { τ 1 , … , τ S } \{\tau_1, \dots, \tau_S\} {τ1,,τS},其中 τ 1 < τ 2 < ⋯ < τ S ∈ [ 1 , T ] \tau_1 < \tau_2 < \cdots < \tau_S \in [1, T] τ1<τ2<<τS[1,T] S < T S < T S<T。至于另一种方法,我们可以将 q σ ( x t − 1 ∣ x t , x 0 ) q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) qσ(xt1xt,x0) 改写为通过期望标准差 σ t \sigma_t σt 进行参数化的形式。

x t − 1 = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 ϵ t − 1 = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 − σ t 2 ϵ t + σ t ϵ = α ˉ t − 1 ( x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ) + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( t ) ( x t ) + σ t ϵ q σ ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; α ˉ t − 1 ( x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ) + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( t ) ( x t ) , σ t 2 I ) \begin{aligned} \mathbf{x}_{t-1} &= \sqrt{\bar{\alpha}_{t-1}}\mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_{t-1}}\boldsymbol{\epsilon}_{t-1} & \\ &= \sqrt{\bar{\alpha}_{t-1}}\mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_{t-1} - \sigma_t^2} \boldsymbol{\epsilon}_t + \sigma_t\boldsymbol{\epsilon} & \\ &= \sqrt{\bar{\alpha}_{t-1}} \Big( \frac{\mathbf{x}_t - \sqrt{1 - \bar{\alpha}_t} \epsilon^{(t)}_\theta(\mathbf{x}_t)}{\sqrt{\bar{\alpha}_t}} \Big) + \sqrt{1 - \bar{\alpha}_{t-1} - \sigma_t^2} \epsilon^{(t)}_\theta(\mathbf{x}_t) + \sigma_t\boldsymbol{\epsilon} \\ q_\sigma(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) &= \mathcal{N}(\mathbf{x}_{t-1}; \sqrt{\bar{\alpha}_{t-1}} \Big( \frac{\mathbf{x}_t - \sqrt{1 - \bar{\alpha}_t} \epsilon^{(t)}_\theta(\mathbf{x}_t)}{\sqrt{\bar{\alpha}_t}} \Big) + \sqrt{1 - \bar{\alpha}_{t-1} - \sigma_t^2} \epsilon^{(t)}_\theta(\mathbf{x}_t), \sigma_t^2 \mathbf{I}) \end{aligned} xt1qσ(xt1xt,x0)=αˉt1 x0+1αˉt1 ϵt1=αˉt1 x0+1αˉt1σt2 ϵt+σtϵ=αˉt1 (αˉt xt1αˉt ϵθ(t)(xt))+1αˉt1σt2 ϵθ(t)(xt)+σtϵ=N(xt1;αˉt1 (αˉt xt1αˉt ϵθ(t)(xt))+1αˉt1σt2 ϵθ(t)(xt),σt2I)

其中,模型 ϵ θ ( t ) ( . ) \epsilon^{(t)}_\theta(.) ϵθ(t)(.) x t \mathbf{x}_t xt 预测 ϵ t \epsilon_t ϵt
根据前面的定义,在 q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ ( x t , x 0 ) , β ~ t I ) q(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \tilde{\boldsymbol{\mu}}(\mathbf{x}_t, \mathbf{x}_0), \tilde{\beta}_t \mathbf{I}) q(xt1xt,x0)=N(xt1;μ~(xt,x0),β~tI) 中, 因此我们有:

β ~ t = σ t 2 = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t \tilde{\beta}_t = \sigma_t^2 = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \cdot \beta_t β~t=σt2=1αˉt1αˉt1βt

σ t 2 = η ⋅ β ~ t \sigma_t^2 = \eta \cdot \tilde{\beta}_t σt2=ηβ~t,这样我们就可以将 η ∈ R + \eta \in \mathbb{R}^+ ηR+ 作为超参数进行调整,以控制采样的随机性。当 η = 0 \eta = 0 η=0 这个特殊情况时,采样过程就变为确定性的。这样的模型被称为去噪扩散隐式模型(DDIM;宋等人,2020)。DDIM 具有相同的边际噪声分布,但能确定性地将噪声映射回原始数据样本。
在生成过程中,我们无需遵循从 t = 1 , 2 , . . . T t=1,2,...T t=1,2,...T 的完整链条,而是只需其中的一个步骤子集。设 s < t s < t s<t 为这个加速轨迹中的两个步骤。DDIM 的更新步骤为:

q σ , s < t ( x s ∣ x t , x 0 ) = N ( x s ; α ˉ s ( x t − 1 − α ˉ t ϵ θ ( t ) ( x t ) α ˉ t ) + 1 − α ˉ s − σ t 2 ϵ θ ( t ) ( x t ) , σ t 2 I ) q_{\sigma, s < t}(\mathbf{x}_s \vert \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_s; \sqrt{\bar{\alpha}_s} \Big( \frac{\mathbf{x}_t - \sqrt{1 - \bar{\alpha}_t} \epsilon^{(t)}_\theta(\mathbf{x}_t)}{\sqrt{\bar{\alpha}_t}} \Big) + \sqrt{1 - \bar{\alpha}_s - \sigma_t^2} \epsilon^{(t)}_\theta(\mathbf{x}_t), \sigma_t^2 \mathbf{I}) qσ,s<t(xsxt,x0)=N(xs;αˉs (αˉt xt1αˉt ϵθ(t)(xt))+1αˉsσt2 ϵθ(t)(xt),σt2I)

在实验中,所有模型均采用 T = 1000 T=1000 T=1000 扩散步骤进行训练。他们观察到,当 S S S 较小时,DDIM([ η = 0 \eta=0 η=0])能够生成质量最佳的样本,而 DDPM([ η = 1 \eta=1 η=1])在较小的 [ S S S] 下表现则差得多。当我们能够承担完整的反向马尔可夫扩散步骤([ S = T = 1000 S=T=1000 S=T=1000])时,DDPM 的表现确实更好。借助 DDIM,可以将扩散模型训练到任意数量的前向步骤,但在生成过程中仅从步骤子集中进行采样。

与去噪扩散概率模型(DDPM)相比,去噪扩散隐式模型(DDIM)具备以下优势:

  • 以更少的步数生成更高质量的样本:DDIM 能够在使用显著更少步数的情况下,生成质量更高的样本。这意味着在实际应用中,它可以更高效地完成样本生成任务,减少计算资源的消耗和时间成本。
  • 具有 “一致性” 特性:由于 DDIM 的生成过程是确定性的,它具有 “一致性”。这表明基于相同潜在变量生成的多个样本,应具有相似的高级特征。这种一致性在许多应用场景中非常重要,例如需要生成具有相似风格或主题的多个样本时,DDIM 可以确保这些样本在整体特征上保持一致。
  • 可在潜在变量中进行语义上有意义的插值:得益于其一致性特性,DDIM 能够在潜在变量空间中进行语义上有意义的插值操作。这使得在潜在变量空间中进行平滑过渡成为可能,从而生成在语义上连贯且有意义的样本序列。例如,在图像生成任务中,可以通过对潜在变量进行插值,实现从一个图像到另一个图像的平滑过渡,生成一系列具有渐进变化的图像。
    在这里插入图片描述
  • 图9:Progressive distillation can reduce the diffusion sampling steps by half in each iteration.

渐进蒸馏(萨利曼斯和霍,2022 年)是一种将训练好的确定性采样器提炼成采样步数减半的新模型的方法。学生模型由教师模型初始化,并且在去噪时,其目标设定为让一个学生 DDIM 步骤匹配两个教师步骤,而不是像原来那样使用样本 x 0 \mathbf{x}_0 x0 作为去噪目标。在每一次渐进蒸馏迭代中,我们都可以将采样步数减半。

在这里插入图片描述

  • 图 10:Comparison of Algorithm 1 (diffusion model training) and Algorithm 2 (progressive distillation) side-by-side, where the relative changes in progressive distillation are highlighted in green.

相关阅读:

  • 扩散模型(三)

参考:

What are Diffusion Models?
Weng, Lilian. (Jul 2021). What are diffusion models? Lil’Log. https://lilianweng.github.io/posts/2021-07-11-diffusion-models/.

相关文章:

扩散模型(二)

相关阅读&#xff1a;扩散模型&#xff08;一&#xff09; Parameterization of L t L_t Lt​ for Training Loss 回想一下&#xff0c;我们需要训练一个神经网络来近似反向扩散过程中的条件概率分布&#xff0c;即, p θ ( x t − 1 ∣ x t ) N ( x t − 1 ; μ θ ( x t…...

java异常处理——try catch finally

单个异常处理 1.当try里的代码发生了catch里指定类型的异常之后&#xff0c;才会执行catch里的代码&#xff0c;程序正常执行到结尾 2.如果try里的代码发生了非catch指定类型的异常&#xff0c;则会强制停止程序&#xff0c;报错 3.finally修饰的代码一定会执行&#xff0c;除…...

新月军事战略分析系统使用手册

新月人物传记&#xff1a; 人物传记之新月篇-CSDN博客 相关故事链接&#xff1a;星际智慧农业系统&#xff08;SAS&#xff09;&#xff0c;智慧农业的未来篇章-CSDN博客 “新月智能武器系统”CIWS&#xff0c;开启智能武器的新纪元-CSDN博客 “新月之智”智能战术头盔系统&…...

Docker Hub 镜像 Pull 失败的解决方案

目录 引言一、问题二、原因三、解决方法四、参考文献 引言 在云原生技术火热的当下&#xff0c;Docker可谓是其基础&#xff0c;由于其简单以及方便性&#xff0c;让开发人员不必再为环境配置问题而伤脑筋&#xff0c;因为可将其看作一个虚拟机程序去理解。所以掌握好它可谓是…...

SQL进阶实战技巧:如何构建用户行为转移概率矩阵,深入洞察会话内活动流转?

目录 1 场景描述 1.1 用户行为转移概率矩阵概念 1.2 用户行为转移概率矩阵构建方法 (1) 数据收集...

DeepSeek辅助学术写作关键词选取

关键词 关键词主要从论文标题、摘要及正文中提炼出来&#xff0c;需要准确反映论文的核心主题和专业领域。关键词的选择不仅有助于标引人员进行主题词的选取、数据库的建立以及文献的检索&#xff0c;而且也便于读者高效检索和引用相关学术成果&#xff0c;从而促进学术交流的…...

后盾人JS -- 原型

没有原型的对象 也有没有原型的对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…...

优选算法的灵动之章:双指针专题(一)

个人主页&#xff1a;手握风云 专栏&#xff1a;算法 目录 一、双指针算法思想 二、算法题精讲 2.1. 查找总价格为目标值的两个商品 2.2. 盛最多水的容器 ​编辑 2.3. 移动零 2.4. 有效的三角形个数 一、双指针算法思想 双指针算法主要用于处理数组、链表等线性数据结构…...

BUUCTF Pwn axb_2019_brop64 题解

这题是BROP 所以不下文件 先nc一下看看&#xff1a; 先要找到栈溢出长度&#xff1a; from pwn import * import timedef getsize():i 1while True:try:p remote("node5.buuoj.cn", 29367)p.sendafter("Please tell me:", ba * i)time.sleep(0.1)data …...

85.[1] 攻防世界 WEB easyphp

进入靶场 属于代码审计 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;常用于调试或展示代码 highlight_file(__FILE__);// 初始化两个标志变量&#xff0c;用于后续条件判断 $key1 0; $key2 0;// 从 GET 请求中获取参数 a 和 b $a $_GET[a]; $b $_GET[b];// 检…...

动态规划学习

在进行算法题练习和一些题目中发现关于动态规划的内容较多&#xff0c;觉得有必要系统的学习和练习一下 于是参照bilbilUP主 英雄哪里出来 的动态规划50题和LeetKoke网站进行学习和练习 一 概述 动态规划 是一个有限状态自动机 可以抽象为一个有向无环图 有起始节点 终止节点 …...

数据结构【链栈】

基于 C 实现链表栈&#xff1a;原理、代码与应用 一、引言 栈就是一个容器&#xff0c;可以当场一个盒子&#xff0c;只能一个一个拿&#xff0c;一个一个放&#xff0c;而且是从上面放入。 有序顺序栈操作比较容易【会了链栈之后顺序栈自然明白】&#xff0c;所以我们这里只…...

软件测试02----用例设计方法

今天目标 1.能对穷举场景设计测试点 2.能对限定边界规则设计测试点 3.能对多条件依赖关系进行设计测试点 4.能对项目业务进行设计测试点 一、解决穷举场景 重点&#xff1a;使用等价类划分法 1.1等价类划分法 重点&#xff1a;有效等价和单个无效等价各取1个即可。 步骤&#…...

编程AI深度实战:给vim装上AI

系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编程AI&…...

《DeepSeek R1:大模型最简安装秘籍》

DeepSeek R1&#xff1a;AI 大模型界的新起之秀 在人工智能的璀璨星空中&#xff0c;大模型如繁星般闪耀&#xff0c;而 DeepSeek R1 无疑是其中一颗冉冉升起的新星&#xff0c;自问世以来便吸引了全球的目光&#xff0c;在人工智能领域占据了重要的一席之地。 从性能表现上看…...

物业管理平台系统为社区管理带来数字化转型与服务创新新机遇

内容概要 物业管理平台系统是数字化转型的利器&#xff0c;为社区管理带来了许多新机遇。想象一下&#xff0c;传统社区物业管理中繁琐的流程和低效的沟通如何被这种智能系统所替代。通过集成在线收费功能&#xff0c;我们不仅提高了费用收取的准确性&#xff0c;还减少了业主…...

红黑树的封装

一、封装思路 在 STL 中 map set 的底层就是封装了一棵红黑树。 其中连接红黑树和容器的是迭代器&#xff0c;map set 暴露出的接口都不是自己写的&#xff0c;而是红黑树写的&#xff0c;外部接口封装红黑树接口。 所以写出红黑树为 map set 写的接口&#xff0c;再在上层的…...

25.2.3 【洛谷】作为栈的复习不错(学习记录)

今天学习的东西不算多&#xff0c;放了一个星期假&#xff0c;感觉不少东西都没那么清楚&#xff0c;得复习一下才行。今天搞个栈题写&#xff0c;把栈复习一下&#xff0c;明天进入正轨&#xff0c;边复习边学习新东西&#xff0c;应该会有二叉树的学习等等... 【洛谷】P1449 …...

MFC程序设计(七)运行时类信息机制

运行时类信息机制的作用 我们在创建对象时&#xff0c;自己是清楚对象属于哪个类&#xff0c;但是计算机却不清楚。而MFC运行时类信息机制就是解决这个问题而存在的 运行时类信息机制的使用 我们在创建一个类时&#xff0c;只有满足以上三个条件&#xff0c;该类才能支持运行时…...

fflush的概念和使用案例

fflush() 是C语言标准库中用于控制输入/输出缓冲区的函数&#xff0c;其主要功能是强制刷新缓冲区&#xff0c;确保数据及时写入目标设备&#xff08;如屏幕、文件&#xff09;。以下是其概念和典型使用场景&#xff1a; 概念 功能&#xff1a; 刷新指定流的缓冲区。对于输出流…...

嵌入式知识点总结 操作系统 专题提升(四)-上下文

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.上下文有哪些?怎么理解? 2.为什么会有上下文这种概念? 3.什么情况下进行用户态到内核态的切换? 4.中断上下文代码中有哪些注意事项&#xff1f; 5.请问线程需要保存哪些…...

React 封装高阶组件 做路由权限控制

React 高阶组件是什么 官方解释∶ 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一种基于 React 的组合特性而形成的设计模式。 高阶组件&#xff08;HOC&#xff09;就是一个函数&…...

【实践案例】基于大语言模型的海龟汤游戏

文章目录 项目背景提示词构建海龟汤主持人真相判断专家 具体实现流程文心一言大语言模型“海龟汤”插件参考 项目背景 “海龟汤”作为一种聚会类桌游&#xff0c;又称情境推理游戏&#xff0c;是一种猜测情境还原事件真相的智力游戏。其玩法是由出题者提出一个难以理解的事件&…...

NeetCode刷题第20天(2025.2.1)

文章目录 106 Best Time to Buy and Sell Stock with Cooldown 使用 Cooldown 买卖股票的最佳时间107 Coin Change II 换币 II108 Target Sum 目标总和109 Interleaving String 交错字符串110 Edit Distance 编辑距离111 Maximum Subarray 最大子数组112 Jump Game 跳跃游戏113…...

DeepSeek:人工智能领域的革新者与未来展望

在当今这个数据驱动的时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度发展&#xff0c;而DeepSeek作为这一领域的先锋&#xff0c;正引领着AI技术的创新与突破。作为一家致力于推动人工智能技术创新与应用的前沿企业&#xff0c;DeepSeek不仅在多语言编…...

Spring Bean 容器

技术成长&#xff0c;是对场景设计细节不断的雕刻&#xff01; 你觉得自己的技术什么时候得到了快速的提高&#xff0c;是CRUD写的多了以后吗&#xff1f;想都不要想&#xff0c;绝对不可能&#xff01;CRUD写的再多也只是能满足你作为一个搬砖工具人&#xff0c;敲击少逻辑流…...

Flask代码审计实战

文章目录 Flask代码审计SQL注入命令/代码执行反序列化文件操作XXESSRFXSS其他 审计实战后记reference Flask代码审计 SQL注入 1、正确的使用直白一点就是&#xff1a;使用”逗号”&#xff0c;而不是”百分号” stmt "SELECT * FROM table WHERE id?" connectio…...

springboot启动配置文件-bootstrap.yml常用基本配置

在Spring Boot应用程序中&#xff0c;bootstrap.yml文件通常用于配置应用程序的启动阶段。在这个文件中&#xff0c;你可以配置一些在应用程序启动之前需要加载的属性&#xff0c;例如外部配置源、加密属性等。以下是一些常用的基本配置项&#xff1a; 1. 外部配置源 1.1 配置…...

2月3日星期一今日早报简报微语报早读

2月3日星期一&#xff0c;农历正月初六&#xff0c;早报#微语早读。 1、多个景区发布公告&#xff1a;售票数量已达上限&#xff0c;请游客合理安排行程&#xff1b; 2、2025春节档总票房破70亿&#xff0c;《哪吒之魔童闹海》破31亿&#xff1b; 3、美宣布对中国商品加征10…...

如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?

Linux嵌入式系统的输入设备的设备文件有什么特点&#xff1f; 在 Linux 中&#xff0c;所有的输入设备&#xff08;如键盘、鼠标、触摸屏等&#xff09;都会被内核识别为 输入事件设备&#xff0c;并在 /dev/input/ 目录下创建相应的 设备文件&#xff0c;通常是&#xff1a; …...