Diffusion Model合集 part2

news2025/4/23 22:18:53

扩散模型原理介绍2

五,逆扩散过程(Reverse Process)

逆过程是从高斯噪声中恢复原始数据,我们可以假设它也是一个高斯分布,但是无法逐步地去拟合分布,所以需要构建一个参数分布来取做估计。逆扩散过程仍然是一个马尔科夫链过程。
在这里插入图片描述
p θ ( x 0 : T ) = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) ) p_{\theta}(\mathrm{x_{0:T}})=p(\mathrm{x_{T}})\prod\limits_{t=1}^{T}p_{\theta}(\mathrm{x_{t-1}|x_{t}})\quad\quad\quad p_{\theta}(\mathrm{x_{t-1}|x_{t}})=\mathcal{N}(\mathrm{x_{t-1};\mu_{\theta}(x_{t},t)}, \Sigma_{\theta}(x_{t},t))) pθ(x0:T)=p(xT)t=1Tpθ(xt1xt)pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)))

因为在加噪的过程中 β t ∈ ( 0 , 1 ) \beta_{t}\in(0,1) βt(0,1) 是一个很小的数,所以有理由假设逆扩散过程,即从 x T → x 0 x_{T}\rightarrow x_{0} xTx0 也是一个高斯分布,即假设 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) ) p_{\theta}(\mathrm{x_{t-1}|x_{t}})=\mathcal{N}(\mathrm{x_{t-1};\mu_{\theta}(x_{t},t)}, \Sigma_{\theta}(x_{t},t))) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))), 但是无法去逐步拟合这个分布(需要生成一堆的 x t x_{t} xt, 用类似于GMM那样去拟合 x t − 1 x_{t-1} xt1, 同样的方法,依次拟合出 x t − 2 ⋯ x 0 x_{t-2}\cdots x_{0} xt2x0,则整个过程需要遍历整个数据集,会比较麻烦), 所以我们希望 构建一个参数网络来做估计 \color{red}构建一个参数网络来做估计 构建一个参数网络来做估计

假设现有含参 θ \theta θ这样的一个网络 p θ ( x t − 1 ∣ x t ) p_{\theta}(\mathrm{x_{t-1}|x_{t}}) pθ(xt1xt):

六,扩散过程中的后验的条件概率 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt1xt,x0)

或者也可以叫:后验的扩散条件概率 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt1xt,x0)分布是可以用公式表达的
也就是说,给定 x t x_{t} xt x 0 x_{0} x0,我们是可以计算出 x t − 1 x_{t-1} xt1的, 并且我们假设它也是服从高斯分布的。

即正常的扩散过程的条件概率为 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_{0}) q(xt1x0), 现在我们又知道了 x t x_{t} xt 的信息,所以有后验的扩散条件概率 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt1xt,x0)

注意:
高斯分布的概率密度函数是 f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^{2}}{2\sigma^{2}}} f(x)=σ2π 1e2σ2(xμ)2
注意: a x 2 + b x = a ( x + b 2 a ) 2 + C ④ ax^{2}+bx=a(x+\frac{b}{2a})^{2}+C\quad\quad④ ax2+bx=a(x+2ab)2+C

q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ∼ ( x t , x 0 ) , β t ∼ I ) q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}})=\mathcal{N}(\mathrm{x_{t-1}; {\color{blue}\overset{\sim}{\mu}}}(\mathrm{x_{t}},\mathrm{x_{0}}),{\color{red}\overset{\sim}{\beta_{t}}}\mathrm{I}) q(xt1xt,x0)=N(xt1;μ(xt,x0),βtI)
Using Bayes’ rule, we have:

需要用到的前面的公式:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) , β t q(x_{t}|x_{t-1})=\mathcal{N}(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}I), \beta_{t} q(xtxt1)=N(xt;1βt xt1,βtI),βt是方差,标准差是 β t \sqrt{\beta_{t}} βt
q ( x t ∣ x 0 ) = N ( x ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_{t}|x_{0})=\mathcal{N}(x;\sqrt{\bar\alpha_{t}}x_{0},(1-\bar\alpha_{t})I) q(xtx0)=N(x;αˉt x0,(1αˉt)I),其中,方差为 ( 1 − α ˉ t ) I (1-\bar\alpha_{t})I (1αˉt)I, 即 σ 2 \sigma^{2} σ2
a x 2 + b x = a ( x + b 2 a ) 2 + C ax^{2}+bx=a(x+\frac{b}{2a})^{2}+C ax2+bx=a(x+2ab)2+C

q ( x t − 1 ∣ x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) ( q ( x t ∣ x t − 1 , x 0 ) = M a r k o v P r o p e r t y q ( x t ∣ x t − 1 ) ) ∝ e x p ( − 1 2 ( ( x t − α t x t − 1 ) 2 β t + ( x t − 1 − α ˉ t − 1 x 0 ) 2 1 − α ˉ t − 1 − ( x t − α ˉ t x 0 ) 2 1 − α ˉ t ) ) = e x p ( − 1 2 ( ( α t β t + 1 1 − α ˉ t − 1 ) x t − 1 2 − ( 2 α t β t x t + 2 α ˉ t − 1 1 − α ˉ t − 1 x 0 ) x t − 1 + C ( x t , x 0 ) ) ) \begin{aligned} q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}})&=q(\mathrm{x_{t}}|\mathrm{x_{t-1}},\mathrm{x_{0}})\frac{q(\mathrm{x_{t-1}}|\mathrm{x_{0}})}{q(\mathrm{x_{t}}|\mathrm{x_{0}})}\quad\quad{\color{red}(}q(\mathrm{x_{t}}|\mathrm{x_{t-1}},\mathrm{x_{0}})\xlongequal{Markov Property}q(\mathrm{x_{t}}|\mathrm{x_{t-1}}){\color{red} )}\\ &\propto exp\left(-\frac{1}{2}\left(\frac{(\mathrm{x_{t}}-\sqrt{\alpha_{t}}\mathrm{x_{t-1}})^{2}}{\beta_{t}}+\frac{(\mathrm{x_{t-1}}-\sqrt{\bar\alpha_{t-1}}\mathrm{x_{0}})^{2}}{1-\bar\alpha_{t-1}}-\frac{(\mathrm{x_{t}}-\sqrt{\bar\alpha_{t}}\mathrm{x_{0}})^{2}}{1-\bar\alpha_{t}}\right)\right)\\ &=exp\left(-\frac{1}{2}\left({\color{red}\left(\frac{\alpha_{t}}{\beta_{t}}+\frac{1}{1-\bar\alpha_{t-1}}\right)}\mathrm{x_{t-1}^{2}}-{\color{blue}\left(\frac{2\sqrt{\alpha_{t}}}{\beta_{t}}\mathrm{x_{t}}+\frac{2\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t-1}}\mathrm{x_{0}}\right)}\mathrm{x_{t-1}+C(x_{t},x_{0})}\right)\right) \end{aligned} q(xt1xt,x0)=q(xtxt1,x0)q(xtx0)q(xt1x0)q(xtxt1,x0)MarkovProperty q(xtxt1)exp(21(βt(xtαt xt1)2+1αˉt1(xt1αˉt1 x0)21αˉt(xtαˉt x0)2))=exp(21((βtαt+1αˉt11)xt12(βt2αt xt+1αˉt12αˉt1 x0)xt1+C(xt,x0)))
where C ( x t , x 0 ) \mathrm{C(x_{t},x_{0})} C(xt,x0) is some function not involving x t − 1 \mathrm{x_{t-1}} xt1 and details are omitted. Following the standard Gaussian density funcion, the mean and variance can be parameterized as follows(由式④得):

a x 2 + b x = a ( x + b 2 a ) 2 + C ax^{2}+bx=a(x+\frac{b}{2a})^{2}+C ax2+bx=a(x+2ab)2+C易得, μ = − b 2 a , σ 2 = 1 a \mu=-\frac{b}{2a},\sigma^{2}=\frac{1}{a} μ=2ab,σ2=a1
下面的 β t ∼ \overset{\sim}{\beta_{t}} βt即为 σ 2 \sigma^{2} σ2

β t ∼ = 1 / ( α t β t + 1 1 − α ˉ t − 1 ) = 1 − α ˉ t − 1 1 − α ˉ t . β t \overset{\sim}{\beta_{t}}=1/(\frac{\alpha_{t}}{\beta_{t}}+\frac{1}{1-\bar\alpha_{t-1}})=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_{t}}.\beta_{t} βt=1/(βtαt+1αˉt11)=1αˉt1αˉt1.βt
μ t ∼ ( x t , x 0 ) = ( α t β t x t + α ˉ t − 1 1 − α ˉ t − 1 x 0 ) / ( α t β t + 1 1 − α ˉ t − 1 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + β t α ˉ t − 1 1 − α ˉ t x 0 \mathrm{\overset{\sim}{\mu_{t}}(x_{t},x_{0})=(\frac{\sqrt{\alpha_{t}}}{\beta_{t}}x_{t}+ \frac{\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t-1}}x_{0})/(\frac{\alpha_{t}}{\beta_{t}}+ \frac{1}{1-\bar\alpha_{t-1}})}=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}x_{t}+\frac{\beta_{t}\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t}}x_{0} μt(xt,x0)=(βtαt xt+1αˉt1αˉt1 x0)/(βtαt+1αˉt11)=1αˉtαt (1αˉt1)xt+1αˉtβtαˉt1 x0

由上式可知,求得的 β t ∼ \overset{\sim}{\beta_{t}} βt 为一个常数

根据前面式③的 x 0 x_{0} x0 x t x_{t} xt之间的关系式, x t = α ˉ t x 0 + 1 − α ˉ t z t x_{t}=\sqrt{\bar\alpha_{t}}x_{0}+\sqrt{1-\bar\alpha_{t}}z_{t} xt=αˉt x0+1αˉt zt,我们可以知道: x 0 = 1 α ˉ t ( x t − 1 − α ˉ t z t ) x_{0}=\frac{1}{\sqrt{\bar\alpha_{t}}}(x_{t}-\sqrt{1-\bar\alpha_{t}}z_{t}) x0=αˉt 1(xt1αˉt zt)
x 0 x_{0} x0的表达式带入到 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt1xt,x0)的分布中( 则可以消去 x 0 , 即 μ t ∼ ( x t , x 0 ) 可以转化为 μ t ∼ ( x t , z t ) \color{red}则可以消去x_{0},即\overset{\sim}{\mu_{t}}(x_{t},x_{0})可以转化为\overset{\sim}{\mu_{t}}(x_{t},z_{t}) 则可以消去x0,μt(xt,x0)可以转化为μt(xt,zt)),可以重新给出此分布的均值表达式,这个时候表达式中不再含有 x 0 x_{0} x0,并且多了噪声项 z t z_{t} zt,这为后面我们设计神经网络提供了基础。也就是说,在给定 x 0 x_{0} x0的条件下,后验条件高斯分布的均值计算只与 x t x_{t} xt z t z_{t} zt有关。 z t z_{t} zt t t t时刻的随机正态分布变量,源自重参数化。
μ t ∼ ( x t , z t ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t . 1 α ˉ t ( x t − z t 1 − α ˉ t ) = 1 α t ( x t − β t 1 − α ˉ t z t ) \begin{aligned} \overset{\sim}{\mu_{t}}(\mathrm{x_{t},z_{t}})&=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}\mathrm{x_{t}}+\frac{\sqrt{\bar\alpha_{t-1}}\beta_{t}}{1-\bar\alpha_{t}}.\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathrm{x_{t}-z_{t}}\sqrt{1-\bar\alpha_{t}})\\ &={\color{blue}\frac{1}{\sqrt{\alpha_{t}}}(\mathrm{x_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}z_{t}})} \end{aligned} μt(xt,zt)=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βt.αˉt 1(xtzt1αˉt )=αt 1(xt1αˉt βtzt)

上面式子化简要用到的:
α t = 1 − β t α ˉ t = ∏ i = 1 t α i \alpha_{t}=1-\beta_{t}\quad\quad\quad\quad\bar\alpha_{t}=\prod\limits_{i=1}^{t}\alpha_{i} αt=1βtαˉt=i=1tαi
α ˉ t − 1 α ˉ t = 1 α t \frac{\sqrt{\bar\alpha_{t-1}}}{\sqrt{\bar\alpha_{t}}}=\frac{1}{\sqrt{\alpha_{t}}} αˉt αˉt1 =αt 1

所以现在我们得到了:
q ( x t − 1 ∣ x t , x 0 ) ∼ N (   μ t ∼ ( x t ,    z t ) , β t ∼   ) q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}})\sim\mathcal{N}(\,\overset{\sim}{\mu_{t}}(\mathrm{x_{t},\,\,z_{t}}),\overset{\sim}{\beta_{t}}\,) q(xt1xt,x0)N(μt(xt,zt),βt),实际上, x t \mathrm{x_{t}} xt出现在条件上,说明 x t \mathrm{x_{t}} xt已知,也就是 μ t ∼ \overset{\sim}{\mu_{t}} μt实际上是只关于 z t \mathrm{z_{t}} zt 的函数,所以我们现在的问题就是: 用网络来预测   z t \color{blue}用网络来预测 \,\mathrm{z_{t}} 用网络来预测zt

七,目标数据分布的似然函数

推导出似然函数就可以来进行网络优化了

我们可以在负对数似然函数的基础上加上一个KL散度(KL散度是非负的,KL散度非负证明),于是就后成立负对数似然的上界了,上界越小,负对数似然自然也就越小,那么对数似然就越大了。
− log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + D K L ( q ( x 1 : T ∣ x 0 ) ∥ p θ ( x 1 : T ∣ x 0 ) ) = − log ⁡ p θ ( x 0 ) + E x 1 : T ∼ q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) / p θ ( x 0 ) ] = − log ⁡ p θ ( x 0 ) + E q [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) + log ⁡ p θ ( x 0 ) ] = E q [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ]  Let  L V L B = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ⏟ 交叉熵的上界 ≥ − E q ( x 0 ) log ⁡ p θ ( x 0 ) ⏟ 交叉熵 \begin{aligned} -\log p_{\theta}\left(\mathbf{x}_{0}\right) & \leq-\log p_{\theta}\left(\mathbf{x}_{0}\right)+D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right) \| p_{\theta}\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)\right) \\ & =-\log p_{\theta}\left(\mathbf{x}_{0}\right)+\mathbb{E}_{\mathbf{x}_{1: T} \sim q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}\left[\log \frac{q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}{p_{\theta}\left(\mathbf{x}_{0: T}\right) / p_{\theta}\left(\mathbf{x}_{0}\right)}\right] \\ & =-\log p_{\theta}\left(\mathbf{x}_{0}\right)+\mathbb{E}_{q}\left[\log \frac{q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}{p_{\theta}\left(\mathbf{x}_{0: T}\right)}+\log p_{\theta}\left(\mathbf{x}_{0}\right)\right] \\ & =\mathbb{E}_{q}\left[\log \frac{q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}{p_{\theta}\left(\mathbf{x}_{0: T}\right)}\right] \\ \text { Let } L_{\mathrm{VLB}} & =\underbrace{\mathbb{E}_{q\left(\mathbf{x}_{0: T}\right)}\left[\log \frac{q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}{p_{\theta}\left(\mathbf{x}_{0: T}\right)}\right]}_{交叉熵的上界} \geq \underbrace{-\mathbb{E}_{q\left(\mathbf{x}_{0}\right)} \log p_{\theta}\left(\mathbf{x}_{0}\right)}_{交叉熵} \end{aligned} logpθ(x0) Let LVLBlogpθ(x0)+DKL(q(x1:Tx0)pθ(x1:Tx0))=logpθ(x0)+Ex1:Tq(x1:Tx0)[logpθ(x0:T)/pθ(x0)q(x1:Tx0)]=logpθ(x0)+Eq[logpθ(x0:T)q(x1:Tx0)+logpθ(x0)]=Eq[logpθ(x0:T)q(x1:Tx0)]=交叉熵的上界 Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]交叉熵 Eq(x0)logpθ(x0)

  • 上式中的第三行说明:
    E x 1 : T ∼ q ( x 1 : T ∣ x 0 ) log ⁡ p θ ( x 0 ) = log ⁡ p θ ( x 0 ) \mathbb{E}_{\mathbf{x}_{1: T} \sim q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}\log p_{\theta}(\mathbf{x_{0}})=\log p_{\theta}(\mathbf{x_{0}})\quad\quad Ex1:Tq(x1:Tx0)logpθ(x0)=logpθ(x0) 因为 E \mathbb{E} E的下面是关于 x 1 : T \mathbf{x_{1:T}} x1:T的分布,与 x 0 \mathbf{x}_{0} x0无关。
  • 上式中最后一行说明:
    − log ⁡ p θ ( x 0 ) -\log p_{\theta}\left(\mathbf{x}_{0}\right) logpθ(x0)的前面加上 E q ( x 0 ) \mathbb{E}_{q(\mathbf{x_{0}})} Eq(x0), 所以不等式的右边的 E q ( x 1 : T ) \mathbb{E}_{q\left(\mathbf{x}_{1: T}\right)} Eq(x1:T)就变为了 E q ( x 0 : T ) \mathbb{E}_{q\left(\mathbf{x}_{0: T}\right)} Eq(x0:T)

进一步可以写出如上公式的交叉熵的上界,接下来,我们可以对交叉熵的上界进行化简:(注意,我们的 目的是为了最小化 − log ⁡ p θ ( x 0 ) \color{red}目的是为了最小化-\log p_{\theta}\left(\mathbf{x}_{0}\right) 目的是为了最小化logpθ(x0),即最小化交叉熵的上界)

注意:
q ( x t ∣ x t − 1 ) = M a r k o v   P r o p e r t y q ( x t ∣ x t − 1 , x 0 ) = q ( x t , x t − 1 , x 0 ) q ( x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x 0 ) q ( x t − 1 , x 0 ) q(x_{t}|x_{t-1})\xlongequal{Markov\,Property}q(x_{t}|x_{t-1},x_{0})=\frac{q(x_{t},x_{t-1},x_{0})}{q(x_{t-1},x_{0})}=\frac{q(x_{t-1}|x_{t},x_{0})q(x_{t}|x_{0})q(x_{0})}{q(x_{t-1},x_{0})} q(xtxt1)MarkovProperty q(xtxt1,x0)=q(xt1,x0)q(xt,xt1,x0)=q(xt1,x0)q(xt1xt,x0)q(xtx0)q(x0)

L V L B = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] = E q [ log ⁡ ∏ t = 1 T q ( x t ∣ x t − 1 ) p θ ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + log ⁡ ∏ t = 1 T q ( x t ∣ x t − 1 ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 1 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ ( q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) . q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + ∑ t = 2 T log ⁡ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x T ∣ x 0 ) q ( x 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ log ⁡ q ( x T ∣ x 0 ) p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) − log ⁡ p θ ( x 0 ∣ x 1 ) ] = E q [ log ⁡ q ( x T ∣ x 0 ) p θ ( x T ) ] ⏟ D K L ( q ( x T ∣ x 0 ) ∣ ∣ p θ ( x T ) ) + E q [ ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) ] ⏟ ∑ t = 2 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) − E q [ log ⁡ p θ ( x 0 ∣ x 1 ) ] ⏟ L 0 = D K L ( q ( x T ∣ x 0 ) ∣ ∣ p θ ( x T ) ) ⏟ L T + ∑ t = 2 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − E q [ log ⁡ p θ ( x 0 ∣ x 1 ) ] ⏟ L 0 = D K L ( q ( x T ∣ x 0 ) ∣ ∣ p θ ( x T ) ) ⏟ L T + ∑ t = 1 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 ⑥ \begin{aligned} L_{VLB}&=\mathbb{E}_{q(\mathbf{x}_{0:T})}\left[\log \frac{q(\mathbf{x}_{1:T}|\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{0:T})}\right]\\ \\ &=\mathbb{E}_{q}\left[\log \frac{\prod_{t=1}^{T}q(\mathbf{x}_{t}|\mathbf{x}_{t-1})}{p_{\theta}(\mathbf{x}_{T})\prod_{t=1}^{T}p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}\right]\\ \\ &=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\log \frac{\prod_{t=1}^{T}q(\mathbf{x}_{t}|\mathbf{x}_{t-1})}{\prod_{t=1}^{T}p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}\right]=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\sum\limits_{t=1}^{T}\log \frac{q(\mathbf{x}_{t}|\mathbf{x}_{t-1})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}\right]\\ \\ &=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t}|\mathbf{x}_{t-1})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}+\log \frac{q(\mathbf{x_{1}|x_{0}})}{p_{\theta}(\mathbf{x_{0}|x_{1}})}\right]\\ \\ &=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\sum\limits_{t=2}^{T}\log \left(\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}.\frac{q(\mathbf{x}_{t}|\mathbf{x}_{0})}{q(\mathbf{x}_{t-1}|\mathbf{x}_{0})}\right)+\log \frac{q(\mathbf{x_{1}|x_{0}})}{p_{\theta}(\mathbf{x_{0}|x_{1}})}\right]\\ \\ &=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}+\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t}|\mathbf{x}_{0})}{q(\mathbf{x}_{t-1}|\mathbf{x}_{0})}+\log \frac{q(\mathbf{x_{1}|x_{0}})}{p_{\theta}(\mathbf{x_{0}|x_{1}})}\right]\\ \\ &=\mathbb{E}_{q}\left[-\log p_{\theta}(\mathbf{x}_{T})+\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}+\log \frac{q(\mathbf{x}_{T}|\mathbf{x}_{0})}{q(\mathbf{x}_{1}|\mathbf{x}_{0})}+\log \frac{q(\mathbf{x_{1}|x_{0}})}{p_{\theta}(\mathbf{x_{0}|x_{1}})}\right]\\ \\ &=\mathbb{E}_{q}\left[\log \frac{q(\mathbf{x}_{T}|\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{T})}+\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}-\log p_{\theta}(\mathbf{x_{0}|x_{1}})\right]\\ \\ &=\underbrace{\mathbb{E}_{q}\left[\log \frac{q(\mathbf{x}_{T}|\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{T})}\right]}_{D_{KL}(q(\mathbf{x}_{T}|\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{T}))}+\underbrace{\mathbb{E}_{q}\left[\sum\limits_{t=2}^{T}\log \frac{q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})}\right]}_{\sum\limits_{t=2}^{T}D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}))}- \underbrace{\mathbb{E}_{q}\left[\log p_{\theta}(\mathbf{x_{0}|x_{1}})\right]}_{L_{0}}\\ \\ &=\underbrace{D_{KL}(q(\mathbf{x}_{T}|\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{T}))}_{L_{T}}+ \sum\limits_{t=2}^{T}\underbrace{D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}))}_{L_{t-1}}-\underbrace{\mathbb{E}_{q}\left[\log p_{\theta}(\mathbf{x_{0}|x_{1}})\right]}_{L_{0}}\\ \\ &=\underbrace{D_{KL}(q(\mathbf{x}_{T}|\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{T}))}_{L_{T}}+ \sum\limits_{t=1}^{T}\underbrace{D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})||p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}))}_{L_{t-1}}\quad\quad⑥ \end{aligned} LVLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]=Eq[logpθ(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq[logpθ(xT)+logt=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq[logpθ(xT)+t=1Tlogpθ(xt1xt)q(xtxt1)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xtxt1)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlog(pθ(xt1xt)q(xt1xt,x0).q(xt1x0)q(xtx0))+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+t=2Tlogq(xt1x0)q(xtx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+logq(x1x0)q(xTx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)logpθ(x0x1)]=DKL(q(xTx0)∣∣pθ(xT)) Eq[logpθ(xT)q(xTx0)]+t=2TDKL(q(xt1xt,x0)∣∣pθ(xt1xt)) Eq[t=2Tlogpθ(xt1xt)q(xt1xt,x0)]L0 Eq[logpθ(x0x1)]=LT DKL(q(xTx0)∣∣pθ(xT))+t=2TLt1 DKL(q(xt1xt,x0)∣∣pθ(xt1xt))L0 Eq[logpθ(x0x1)]=LT DKL(q(xTx0)∣∣pθ(xT))+t=1TLt1 DKL(q(xt1xt,x0)∣∣pθ(xt1xt))

上面第五行说明:
q ( x t ∣ x t − 1 ) = M a r k o v P r o p e r t y q ( x t ∣ x t − 1 , x 0 ) = q ( x t , x t − 1 ∣ x 0 ) q ( x t − 1 ∣ x 0 ) = q ( x t − 1 ∣ x t , x 0 ) . q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) q(x_{t}|x_{t-1})\xlongequal{Markov Property}q(x_{t}|x_{t-1},x_{0})=\frac{q(x_{t},x_{t-1}|x_{0})}{q(x_{t-1}|x_{0})}=\frac{q(x_{t-1}|x_{t},x_{0}).q(x_{t}|x_{0})}{q(x_{t-1}|x_{0})} q(xtxt1)MarkovProperty q(xtxt1,x0)=q(xt1x0)q(xt,xt1x0)=q(xt1x0)q(xt1xt,x0).q(xtx0)
分析:

  1. L T L_{T} LT项 完全不含参:因为 q q q分布是完全无参的,而 p θ ( x T ) p_{\theta}(\mathbf{x}_{T}) pθ(xT)最后是标准的正态分布(各向同性的高斯分布),也不含参数
  2. 在倒数第2行的化简中, L 0 L_{0} L0可以放入 L t − 1 L_{t-1} Lt1中,因为在 L t − 1 L_{t-1} Lt1中, t = 1 t=1 t=1时,有 D K L ( q ( x 0 ∣ x 1 , x 0 ) ∣ ∣ p θ ( x 0 ∣ x 1 ) ) = K L   D i v e r g e n c e   D e f i n i t i o n − log ⁡ p θ ( x 0 ∣ x 1 ) = − L 0 D_{KL}(q(x_{0}|x_{1},x_{0})||p_{\theta}(x_{0}|x_{1}))\xlongequal{KL\,Divergence\,Definition}-\log p_{\theta}(x_{0}|x_{1})=-L_{0} DKL(q(x0x1,x0)∣∣pθ(x0x1))KLDivergenceDefinition logpθ(x0x1)=L0
    q ( x 0 ∣ x 1 , x 0 ) = 1 q(x_{0}|x_{1},x_{0})=1 q(x0x1,x0)=1,因为在条件中已经知道了 x 0 x_{0} x0

q ( x t − 1 ∣ x t , x 0 ) ∼ N (   μ t ∼ ( x t ,    z t ) , β t ∼   ) q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}})\sim\mathcal{N}(\,\overset{\sim}{\mu_{t}}(\mathrm{x_{t},\,\,z_{t}}),\overset{\sim}{\beta_{t}}\,)\quad\quad q(xt1xt,x0)N(μt(xt,zt),βt)实际上 x t , β t ∼ \mathrm{x_{t}},\overset{\sim}{\beta_{t}} xt,βt已知,即只有 μ t ∼ ( z t ) \color{red}\overset{\sim}{\mu_{t}}(z_{t}) μt(zt)未知

p θ ( x t − 1 ∣ x t ) ∼ N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) ) p_{\theta}(\mathrm{x_{t-1}|x_{t}})\sim\mathcal{N}(\mathrm{x_{t-1};\mu_{\theta}(x_{t},t)}, \Sigma_{\theta}(x_{t},t))) pθ(xt1xt)N(xt1;μθ(xt,t),Σθ(xt,t)))也为高斯分布;在论文中将其方差 Σ θ ( x t , t ) \Sigma_{\theta}(x_{t},t) Σθ(xt,t) 设置程一个与 β \beta β 相关的常数,因此 可训练的参数只存在于其均值 μ θ ( x t , t ) 中 \color{red}可训练的参数只存在于其均值 \mu_{\theta}(x_{t},t)中 可训练的参数只存在于其均值μθ(xt,t)

由于上面的 q , p θ q,p_{\theta} q,pθ均为高斯分布,所以它们的KL Divergence一定可以求出来。

上式中, L 0 L_{0} L0在DDPM原论文中由于选择了固定方差,故 L T L_{T} LT为常数,而 L 0 相当于从连续空间到离散空间的解码 l o s s ? ? ? ? 这里咋理解? \color{red}L_{0}相当于从连续空间到离散空间的解码loss\quad????这里咋理解? L0相当于从连续空间到离散空间的解码loss????这里咋理解?, 这里可以仿照VAE或自回归模型中的做法,将连续的高斯分布转换成离散的分布,具体公式见DDPM论文Section3.3或者见Improved Diffusion源码讲解那期视频。

对于两个单一变量的高斯分布 p p p q q q 而言,它们的KL散度为:

K L ( p , q ) = l o g σ 2 σ 1 + σ 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 ⑤ KL(p,q)=log\frac{\sigma_{2}}{\sigma_{1}}+\frac{\sigma^{2}+(\mu_{1}-\mu_{2})^{2}}{2\sigma_{2}^{2}}-\frac{1}{2}\quad\quad⑤ KL(p,q)=logσ1σ2+2σ22σ2+(μ1μ2)221
推导可以看这篇____高斯分布的KL散度公式

因为参数只在 μ t ∼ \overset{\sim}{\mu_{t}} μt μ θ \mu_{\theta} μθ中,所以我们只着重关注式⑤中间的那一项,其他的用常数C表示

L t − 1 = E q [ 1 2 σ t 2 ∣ ∣ μ t ∼ ( x t , x 0 ) − μ θ ( x t , t ) ∣ ∣ 2 ] + C L_{t-1}=\mathbb{E}_{q}\left[\frac{1}{2\sigma_{t}^{2}}||\overset{\sim}{\mu_{t}}(\mathbf{x}_{t},\mathbf{x}_{0})-\mu_{\theta}(\mathbf{x}_{t},t)||^{2}\right]+C Lt1=Eq[2σt21∣∣μt(xt,x0)μθ(xt,t)2]+C

所以我们现在的训练目标就是:最小化 L t − 1 L_{t-1} Lt1, 即 让 μ t ∼ 和 μ θ 尽可能地接近 \color{red}让\overset{\sim}{\mu_{t}}和\mu_{\theta}尽可能地接近 μtμθ尽可能地接近

既然这里的loss是从KL divergence出发的,或者说是与分布有关的,那我们可以设计一个黑箱子神经网络,把它称之为 D θ D_{\theta} Dθ网络。对于 D θ D_{\theta} Dθ网络,输入是 x t x_{t} xt和时间编码 t t t, ( x 0 x_{0} x0是数据集,是已知的),对于输出是什么,取决于我们的建模目标。

我的疑惑: \color{red}我的疑惑: 我的疑惑:
对于扩散过程,为什么要弄出来个 q ( x t − 1 ∣ x t , x 0 ) q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}}) q(xt1xt,x0),为啥不直接用 q ( x t ∣ x 0 ) q(\mathrm{x_{t}}|\mathrm{x_{0}}) q(xtx0)或者 q ( x t ∣ x t − 1 ) q(\mathrm{x_{t}}|\mathrm{x_{t-1}}) q(xtxt1)?难度是因为公式推导的过程中(式⑥)要用到 q ( x t − 1 ∣ x t , x 0 ) q(\mathrm{x_{t-1}}|\mathrm{x_{t}},\mathrm{x_{0}}) q(xt1xt,x0)???

而我们可以有多种建模目标:
【1】直观的做法是让 D θ D_{\theta} Dθ 网络的输出等于前向过程中的后验分布均值 μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0),这种建模方法俗称预测后验分布的期望值;

【2】根据 μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0)的表达式,它里面的 x 0 x_{0} x0对于 D θ D_{\theta} Dθ网络是未知的,因此第二种做法是让 D θ D_{\theta} Dθ网络的输出等于 x 0 x_{0} x0,这种做法即直接预测原始数据。
有人问:既然可以通过 D θ D_{\theta} Dθ网络直接预测 x 0 x_{0} x0了,那是不是采样过程就直接计算 D θ ( x T , T ) D_{\theta}(x_{T}, T) Dθ(xT,T)的输出即可认为是生成了样本了呢?
答案是:直接一步到位,质量会比较差,还是需要通过马尔科夫高斯条件迭代而获得最终高质量的生成样本;

【3】当我们把 μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0)中的 x 0 x_{0} x0 x t x_{t} xt去表示的时候, μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0)就变成了如下只包含 x t x_{t} xt和随机变量 ϵ \epsilon ϵ
的式子。其中 x t x_{t} xt对于D网络是已知的,而 ϵ \epsilon ϵ是未知的,因此这个时候,我们可以选择建模目标是让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ了,这种建模方法俗称随机变量(噪音)法。
L t − 1 − C = E x 0 , ϵ [ 1 2 σ t 2 ∥ μ ∼ ( x t ( x 0 , ϵ ) , 1 α ˉ t ( x t ( x 0 , ϵ ) − 1 − α ˉ t . ϵ ) ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 σ t 2 ∥ 1 α t ( x t ( x 0 , ϵ ) − β t 1 − α ˉ t . ϵ ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] \begin{aligned} L_{t-1}- C&=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\overset{\sim}{\mu}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\sqrt{1-\bar\alpha_{t}}.\epsilon)\right)-\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t) \Vert^{2}\right]\\ \\ &=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon\right)-\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t) \Vert^{2}\right]\\ \end{aligned} Lt1C=Ex0,ϵ[2σt21μ(xt(x0,ϵ),αˉt 1(xt(x0,ϵ)1αˉt .ϵ))μθ(xt(x0,ϵ),t)2]=Ex0,ϵ[2σt21αt 1(xt(x0,ϵ)1αˉt βt.ϵ)μθ(xt(x0,ϵ),t)2]

在DDPM论文中,作者选择了方案【3】,即让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ, 预测噪音法。于是,新的逆向条件分布的均值可以表示成(下式中的 ϵ θ \epsilon_{\theta} ϵθ相当于我们定义的广义的 D θ D_{\theta} Dθ网络的具体目标形式):
μ θ ( x t , t ) = μ t ∼ ( x t , 1 α ˉ t ( x t − 1 − α ˉ t . ϵ θ ( x t ) ) ) = 1 α t ( x t − β t 1 − α ˉ t . ϵ θ ( x t , t ) ) \mu_{\theta}(\mathbf{x}_{t},t)=\overset{\sim}{\mu_{t}}\left(\mathbf{x}_{t},\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}-\sqrt{1-\bar\alpha_{t}}.\epsilon_{\theta}(\mathbf{x}_{t}))\right)=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon_{\theta}(\mathbf{x}_{t},t)\right) μθ(xt,t)=μt(xt,αˉt 1(xt1αˉt .ϵθ(xt)))=αt 1(xt1αˉt βt.ϵθ(xt,t))

于是 L t − 1 L_{t-1} Lt1可以化简成如下表达式:
E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{\beta_{t}^{2}}{2\sigma_{t}^{2}\alpha_{t}(1-\bar\alpha_{t})}\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Ex0,ϵ[2σt2αt(1αˉt)βt2 ϵϵθ(αˉt x0+1αˉt ϵ,t) 2]

DDPM作者又发现,干脆将系数丢掉,训练更加稳定,质量更好,于是有了下面的 L s i m p l e L_{simple} Lsimple:
L s i m p l e ( θ ) = E x 0 , ϵ [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] L_{simple}(\theta)=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Lsimple(θ)=Ex0,ϵ[ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2]

八,Diffusion Probabilistic Model的算法代码

在这里插入图片描述

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

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

相关文章

“专利费用减缓”怎么申请?

在专利申请时,很多申请人对“专利费用减缓”的概念并不了解,或者不太清楚。甚至有很多申请人一听到专利申请可以请求费用减缓,就以为申请专利是不要钱的。当然,这样的理解就存在了很大的偏差了,所以,我们今…

Java Arrays类

JavaArrays类\huge{Java \space Arrays类}Java Arrays类 概述 Arrays类Arrays类Arrays类:本质就是一个工具类,用于操作数组元素的。 常用API ①. toString()(重写过的toString方法) toString()toString()toString()&#xff1a…

人才招聘网 招聘系统源码找工作源代码 各行业的招聘网站门户源码

运行环境:VS2015SqlServer2008R2.NET4.0 系统介绍: 适用于各地方或者各行业的招聘网站门户,相当强大的人才招聘网站,可登陆注册、支持第三方登陆,强大额后台管理,功能全面,界面美观 职位和简历…

如何用yolov5 训练自己的数据

文章目录 说明数据准备划分数据集转换数据label 格式训练前准备修改图片路径修改训练配置文件 voc.yaml修改 yolo配置文件开始训练没有GPU 或显存不够的说明 利用yolov5 训练自己的数据集通常需要利用自己标注的数据进行训练 接下来记录下如何训练自己的数据 数据准备 我这用的…

【数据结构】- 面试题

面试题1. 删除链表中的节点2. 反转一个链表(非递归解法)3. 判断一个链表是否有环(快慢指针)问题:[快慢指针为什么一定会相遇](https://blog.csdn.net/Leslie5205912/article/details/89386769)4. 获取单链表的节点个数…

【轻量级开源ROS 的机器人设备(5)】--(3)拟议的框架——µROS节点

前文链接:(2条消息) 【轻量级开源ROS 的机器人设备(5)】--(2)拟议的框架——ROS节点 五、静态栈分析 在处理运行多个资源的严格受限平台时线程,重要的是将堆栈使用保持在最低限度。这甚至 在利用具有同质堆…

技嘉电脑怎么开启vt模式?

电脑开启vt模式后,可以提高主板的运行速率,提高性能。那就有一些使用技嘉电脑的用户问技嘉主板怎么开启vt模式?下面小编就来教教大家技嘉电脑开启vt模式的方法。 Intel芯片组的技嘉主板 1、一般情况下,也就是在电脑开机的时候&…

计算机网络、操作系统刷题笔记15

计算机网络、操作系统刷题笔记15 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sq…

差分详细讲解(C++)

每日一句:平凡的我在人多的地方曾极力小心翼翼, 但不知从何时起 ,我不太在意别人的目光了。比起被人觉得是个怪人,我现在更害怕浪费时间。 差分一、一维差分二、二维差分一、一维差分 差分就是前缀和的逆运算,如果你不懂什么是前缀和,看这里…

移动技术在仓库运营管理中的作用

作者:Mike Kay,Mendix公司合作伙伴The Config Team渠道客户经理 市面上出现越来越多的仓库管理系统(WMS)以满足企业更好地管理供应链的需求。想要充分挖掘WMS的优点,一般可以通过移动解决方案来将关键的供应链运作进…

浪潮信息工程师:带你了解设备透传虚拟机的快速启动技术优化方案

编者按:将物理设备通过 vfio 透传给虚拟机是虚拟化常用的技术,但当为虚拟机分配比较大的内存时,虚拟机的启动时间会明显变慢,可能由十几秒延长至数分钟,严重影响用户使用体验。本文整理自龙蜥大讲堂 51 期,…

小林coding阅读笔记:计算机网络基础篇-TCP\IP模型

前言 参考/导流: 小林coding - 2.1 TCP/IP 网络模型有哪几层?学习意义 学习分层设计思想构建网络层次以及各层协议作用知识体系为网络编程奠定理论基础,对于RPC框架or分布式系统通信都是极为重要的一节,是提升整个系统效率的关键…

ubunt配置samba服务器,匿名访问

1. 环境 ubuntu14.04 2. 安装samba服务器 sudo apt-get install samba 3. 配置samba文件 vim /etc/samba/smb.conf 在最后添加如下内容 [muchx]comment Shared Folder with username and passwordpath /home/muchx/sharepublic yeswritable yesvalid users muchxcre…

二、基于kubeadm安装kubernetes1.25集群第一篇

1、概述 Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具, 作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。 kubeadm 通过执行必要的操作来启动和运行最小可用集群。 按照设计,它只关注启动引导,而非配置机器。同样的&…

虹科分享 | 硬件加密U盘 | 管理密码安全的四大工具

随着网络攻击变得越来越突出,密码安全变得越来越重要。为了为每个帐户创建安全密码,许多人正在转向密码管理工具来帮助防止敏感数据的泄露。 考虑到这一点,以下是一些顶级密码管理工具。 领先的密码管理工具 Keeper密码管理器和数字保险库 …

kali linux手动编译网卡驱动(以mt7612u为例)

〇、linux常用命令 《Linux入门与基础》课程教案_小王小王指定辉煌的博客-CSDN博客_linux入门与基础教案 linux常用命令笔记(二)_小王小王指定辉煌的博客-CSDN博客 一、下载源码 查看系统版本号 uname -r uname -a cat /proc/version 或/lib/module…

手撕红黑树的构建与验证

上篇文章我们介绍了AVL树的构建与适用场景,我们知道了AVL树虽然查找效率很高,但是不适合频繁插入或删除的场景。为了解决这个问题又诞生了新的数据结构:红黑树 那么本篇文章就着重介绍红黑树的性质与如何构建。 1.红黑树的性质 1.结点颜色非黑…

邓俊辉 《数据结构》笔记1 绪论

邓俊辉 《数据结构》笔记1 绪论 CSDN转图床总是崩,如果全写完再上传一次要调好多,感觉很麻烦,所以写一点更新一点,会持续更新 提前发出来还有个好处就是push自己更新不会咕咕咕,哈哈 参考资料 MOOC 数据结构上MOOC 数…

【计算机考研408】磁盘的初始化过程

该图是磁盘物理图 关于磁盘存储器,[柱面号盘面号扇区号]⇔外存块号 注:柱面是相对位置相同的磁道所构成的面 磁盘初始化 低级初始化(也称物理格式化) (1)分扇区 (2)用特殊数据结构…

linux后台自定义后台服务service(以filebeat举例)

文章目录一、配置攥写1)安装filebeat和配置相关修改2)常用命令二、启动顺序1)命令循序2)systemctl添加自定义系统服务(服务填写指南)3)linux的systemctl命令详解及使用教程三、遇到的坑点和报错…