扩散模型(Diffusion Model)原理与代码解析(一)

news2024/10/6 2:21:58

一、模型概览

扩散模型的灵感来自于非平衡热力学。定义了一个扩散步骤的马尔可夫链(当前状态只与上一时刻的状态有关),慢慢地向真实数据中添加随机噪声(前向过程),然后学习反向扩散过程(逆扩散过程),从噪声中构建所需的数据样本。
在这里插入图片描述
扩散模型有两个过程,分别为扩散过程和逆扩散过程。

如上图所示,扩散过程为从右到左 ( X 0 → X T ) (X_0 \rightarrow X_T) (X0XT)的过程,表示对图片逐渐加噪,且 X t + 1 X_{t+1} Xt+1是在 X t X_{t} Xt上加噪得到的,其只受 X t X_{t} Xt的影响,因此扩散过程是一个马尔科夫过程。 X 0 X_0 X0表示从真实数据集中采样得到的一张图片,对 X 0 X_0 X0添加 T T T次噪声,图片逐渐变得模糊,当 T T T足够大时, X T X_T XT为标准正态分布。在训练过程中,每次添加的噪声是已知的,即 q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}) q(XtXt1)是已知的,根据马尔科夫过程的性质,我们可以递归得到 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0),即 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0)是已知的。扩散过程最主要的就是 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0) q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}) q(XtXt1)的推导,推导细节见下文的扩散过程。

如上图所示,逆扩散过程为从左到右 ( X T → X 0 ) (X_T \rightarrow X_0) (XTX0)的过程,表示从噪声中逐渐复原出图片。如果我们能够在给定 X t X_t Xt条件下知道 X t − 1 X_{t-1} Xt1的分布,即如果我们可以知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),那我们就能够从任意一张噪声图片中经过一次次的采样得到一张图片而达成图片生成的目的。显然我们很难知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),因此我们才会用 p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)来近似 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt) p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)就是我们要训练的网络,在原文中就是个U-Net。而很妙的是,虽然我们不知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),但是 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)却是可以用 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0) q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}) q(XtXt1)表示的,即 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)是可知的,因此我们可以用 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)来指导 p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)进行训练。逆扩散过程最主要的就是 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)的推导,推导细节见下文的逆扩散过程。

二、扩散过程

如上图所示,扩散过程为从右到左 ( X 0 → X T ) (X_0 \rightarrow X_T) (X0XT)的过程,表示对图片逐渐加噪,它是不含可学习参数的,且 X t + 1 X_{t+1} Xt+1是在 X t X_{t} Xt上加噪得到的,其只受 X t X_{t} Xt的影响,因此扩散过程是一个马尔科夫过程。且每一步扩散的步长受变量 { β t ∈ ( 0 , 1 ) } t = 1 T \{β_{t} \in (0,1)\}_{t=1}^{T} {βt(0,1)}t=1T的影响,且 β 1 < β 2 < ⋯ < β T \beta_1<\beta_2<\cdots<\beta_T β1<β2<<βT,这意味着所加的噪声是越来越大的。 q ( X t ∣ X t − 1 ) q(X_{t}|X_{t-1}) q(XtXt1)可写为如下形式,即给定 X t − 1 X_{t-1} Xt1的条件下, X t X_{t} Xt服从均值为 1 − β t X t − 1 \sqrt{1-β_{t}}X_{t-1} 1βt Xt1 ,方差为 β t I β_{t}I βtI的正态分布: q ( X t ∣ X t − 1 ) = N ( X t ; 1 − β t X t − 1 , β t I ) q(X_{t}|X_{t-1})=N(X_t;\sqrt{1-β_{t}}X_{t-1},β_{t}I) q(XtXt1)=N(Xt;1βt Xt1,βtI)用重参数化技巧表示 X t X_t Xt,令 α t = 1 − β t \alpha_t=1-\beta_t αt=1βt Z t ∼ N ( 0 , 1 ) , t ≥ 0 Z_t\sim N(0,1),t\geq0 ZtN(0,1),t0,即: X t = α t X t − 1 + 1 − α t Z t − 1 X_t=\sqrt{\alpha_t}X_{t-1}+\sqrt{1-\alpha_t}Z_{t-1} Xt=αt Xt1+1αt Zt1为了计算 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0),首先由于定义为马尔可夫链,所以给定 x 0 x_0 x0条件下 x 1 : T x_{1:T} x1:T的联合概率分布为 q ( X 1 : T ∣ X 0 ) = ∏ t = 1 T q ( X t ∣ X t − 1 ) q(X_{1:T}|X_0)=\prod_{t=1}^Tq(X_{t}|X_{t-1}) q(X1:TX0)=t=1Tq(XtXt1)上述式子计算 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0)需要不断迭代,我们希望给定 X 0 , β t X_0,\beta_t X0,βt就可以计算出来。给定 α t = 1 − β t , α ˉ t = ∏ t = 1 T α t \alpha_t=1-\beta_t,\bar{\alpha}_t=\prod_{t=1}^T\alpha_t αt=1βt,αˉt=t=1Tαt,则有: X t = α t X t − 1 + 1 − α t Z t − 1 = α t ( α t − 1 X t − 2 + 1 − α t − 1 Z t − 2 ) + 1 − α t Z t − 1 = α t α t − 1 X t − 2 + α t − α t α t − 1 Z t − 2 + 1 − α t Z t − 1 ( 由 于 两 个 正 态 分 布 X ∼ N ( μ 1 , σ 1 ) , Y ∼ N ( μ 2 , σ 2 ) 叠 加 后 的 分 布 a X + b Y 的 均 值 是 a μ 1 + b μ 2 , 方 差 是 a 2 σ 1 2 + b 2 σ 2 2 , 所 以 α t − α t α t − 1 Z t − 2 + 1 − α t Z t − 1 的 均 值 为 0 , 方 差 为 1 − α t α t − 1 , 再 利 用 重 参 数 化 ) = α t α t − 1 X t − 2 + 1 − α t α t − 1 Z ˉ t − 2 ( 这 里 Z ˉ t − 2 不 同 于 Z t − 2 ) = ⋯ = α ˉ t X 0 + 1 − α ˉ t Z ˉ \begin{aligned}X_t&=\sqrt{\alpha_t}X_{t-1}+\sqrt{1-\alpha_t}Z_{t-1}\\&=\sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}X_{t-2}+\sqrt{1-\alpha_{t-1}}Z_{t-2})+\sqrt{1-\alpha_t}Z_{t-1}\\&=\sqrt{\alpha_t\alpha_{t-1}}X_{t-2}+\sqrt{\alpha_t-\alpha_t\alpha_{t-1}}Z_{t-2}+\sqrt{1-\alpha_t}Z_{t-1}(由于两个正态分布X\sim N(\mu_1,\sigma_1),Y\sim N(\mu_2,\sigma_2)叠加后的分布aX+bY的均值是a\mu_1+b\mu_2,方差是a^2\sigma_1^2+b^2\sigma_2^2,所以\sqrt{\alpha_t-\alpha_t\alpha_{t-1}}Z_{t-2}+\sqrt{1-\alpha_t}Z_{t-1}的均值为0,方差为1-\alpha_t\alpha_{t-1},再利用重参数化)\\&=\sqrt{\alpha_t\alpha_{t-1}}X_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\bar{Z}_{t-2}(这里\bar{Z}_{t-2}不同于Z_{t-2})\\&=\cdots\\&=\sqrt{\bar{\alpha}_t}X_0+\sqrt{1-\bar{\alpha}_t}\bar{Z}\end{aligned} Xt=αt Xt1+1αt Zt1=αt (αt1 Xt2+1αt1 Zt2)+1αt Zt1=αtαt1 Xt2+αtαtαt1 Zt2+1αt Zt1(XN(μ1,σ1),YN(μ2,σ2)aX+bYaμ1+bμ2a2σ12+b2σ22αtαtαt1 Zt2+1αt Zt101αtαt1)=αtαt1 Xt2+1αtαt1 Zˉt2(Zˉt2Zt2)==αˉt X0+1αˉt Zˉ所以, X t = α ˉ t X 0 + 1 − α ˉ t Z ˉ , Z ˉ ∼ N ( 0 , I ) X_t=\sqrt{\bar{\alpha}_t}X_0+\sqrt{1-\bar{\alpha}_t}\bar{Z},\bar{Z}\sim N(0,I) Xt=αˉt X0+1αˉt Zˉ,ZˉN(0,I) q ( X t ∣ X 0 ) = N ( X t ; α ˉ t X 0 , ( 1 − α ˉ t ) I ) q(X_t|X_0)=N(X_t;\sqrt{\bar{\alpha}_t}X_0,(1-\bar{\alpha}_t)I) q(XtX0)=N(Xt;αˉt X0,(1αˉt)I)至此,我们推出了 q ( X t ∣ X t − 1 ) q({X_t|X_{t-1}}) q(XtXt1) q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0)

三、逆扩散过程

如果我们能够在给定 X t X_t Xt条件下知道 X t − 1 X_{t-1} Xt1的分布,即如果我们可以知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),那我们就能够从任意一张噪声图片中经过一次次的采样得到一张图片而达成图片生成的目的。显然我们很难知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),因此我们才会用 p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)来近似 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt) p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)就是我们要训练的网络。由于扩散过程中我们每次加的噪声很小,所以我们假设 p Θ ( X t − 1 ∣ X t ) p_{Θ}(X_{t-1}|X_t) pΘ(Xt1Xt)也是一个高斯分布,可以使用神经网络进行拟合,逆过程也是一个马尔科夫链过程。 p Θ ( X t − 1 ∣ X t ) = N ( X t − 1 ; μ θ ( X t , t ) , Σ θ ( X t , t ) ) p_{Θ}(X_{t-1}|X_t)=N(X_{t-1};\mu_{\theta}(X_t,t),\Sigma_{\theta}(X_t,t)) pΘ(Xt1Xt)=N(Xt1;μθ(Xt,t),Σθ(Xt,t)) p Θ ( X 0 : T ) = p ( X T ) ∏ t = 1 T p θ ( X t − 1 ∣ X t ) p_{Θ}(X_{0:T})=p(X_T)\prod_{t=1}^Tp_{\theta}(X_{t-1}|X_t) pΘ(X0:T)=p(XT)t=1Tpθ(Xt1Xt)

而很妙的是,虽然我们不知道 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),但是 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)却是可以用 q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0) q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}) q(XtXt1)表示的,即 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)是可知的。下面对 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)进行推导: q ( X t − 1 ∣ X t X 0 ) = q ( X 0 X t − 1 X t ) q ( X 0 X t ) = q ( X 0 X t − 1 X t ) q ( X 0 X t − 1 ) q ( X 0 X t − 1 ) q ( X 0 X t ) = q ( X t ∣ X t − 1 X 0 ) ∗ q ( X t − 1 ∣ X 0 ) q ( X t ∣ X 0 ) \begin{aligned}q(X_{t-1}|X_tX_0)&=\frac{q(X_0X_{t-1}X_t)}{q(X_0X_t)}\\&=\frac{q(X_0X_{t-1}X_t)}{q(X_0X_{t-1})}\frac{q(X_0X_{t-1})}{q(X_0X_t)}\\&=q(X_t|X_{t-1}X_0)*\frac{q(X_{t-1}|X_0)}{q({X_t|X_0})}\end{aligned} q(Xt1XtX0)=q(X0Xt)q(X0Xt1Xt)=q(X0Xt1)q(X0Xt1Xt)q(X0Xt)q(X0Xt1)=q(XtXt1X0)q(XtX0)q(Xt1X0)由于扩散过程是马尔科夫过程,因此 q ( X t ∣ X t − 1 X 0 ) = q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}X_0)=q(X_t|X_{t-1}) q(XtXt1X0)=q(XtXt1) q ( X t − 1 ∣ X t X 0 ) = q ( X t ∣ X t − 1 ) ∗ q ( X t − 1 ∣ X 0 ) q ( X t ∣ X 0 ) q(X_{t-1}|X_tX_0)=q(X_t|X_{t-1})*\frac{q(X_{t-1}|X_0)}{q({X_t|X_0})} q(Xt1XtX0)=q(XtXt1)q(XtX0)q(Xt1X0)至此,已经把 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0) q ( X t ∣ X 0 ) q(X_t|X_0) q(XtX0) q ( X t ∣ X t − 1 ) q(X_t|X_{t-1}) q(XtXt1)进行表示,下面对 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)的表达式进行推导: q ( X t ∣ X t − 1 ) = N ( X t ; 1 − β t X t − 1 , β t I ) = 1 2 π ( 1 − α t ) e x p ( − 1 2 ( X t − α t X t − 1 ) 2 1 − α t ) q(X_t|X_{t-1})=N(X_t;\sqrt{1-\beta_t}X_{t-1},\beta_tI)=\frac{1}{\sqrt{2\pi(1-\alpha_t)}}exp\left(-\frac{1}{2}\frac{(X_t-\sqrt{\alpha_t}X_{t-1})^2}{1-\alpha_t}\right) q(XtXt1)=N(Xt;1βt Xt1,βtI)=2π(1αt) 1exp(211αt(Xtαt Xt1)2) q ( X t ∣ X 0 ) = N ( X t ; α ˉ t X 0 , ( 1 − α ˉ t ) I ) = 1 2 π ( 1 − α ˉ t ) e x p ( − 1 2 ( X t − α ˉ t X 0 ) 2 1 − α ˉ t ) q(X_t|X_0)=N(X_t;\sqrt{\bar{\alpha}_t}X_0,(1-\bar{\alpha}_t)I)=\frac{1}{\sqrt{2\pi(1-\bar{\alpha}_t)}}exp\left(-\frac{1}{2}\frac{(X_t-\sqrt{\bar{\alpha}_t}X_0)^2}{1-\bar{\alpha}_t}\right) q(XtX0)=N(Xt;αˉt X0,(1αˉt)I)=2π(1αˉt) 1exp(211αˉt(Xtαˉt X0)2) q ( X t − 1 ∣ X 0 ) = N ( X t − 1 ; α ˉ t − 1 X 0 , ( 1 − α ˉ t − 1 ) I ) = 1 2 π ( 1 − α ˉ t − 1 ) e x p ( − 1 2 ( X t − 1 − α ˉ t − 1 X 0 ) 2 1 − α ˉ t − 1 ) q(X_{t-1}|X_0)=N(X_{t-1};\sqrt{\bar{\alpha}_{t-1}}X_0,(1-\bar{\alpha}_{t-1})I)=\frac{1}{\sqrt{2\pi(1-\bar{\alpha}_{t-1})}}exp\left(-\frac{1}{2}\frac{(X_{t-1}-\sqrt{\bar{\alpha}_{t-1}}X_0)^2}{1-\bar{\alpha}_{t-1}}\right) q(Xt1X0)=N(Xt1;αˉt1 X0,(1αˉt1)I)=2π(1αˉt1) 1exp(211αˉt1(Xt1αˉt1 X0)2)
q ( X t − 1 ∣ X t X 0 ) = 1 2 π 1 − α ˉ t − 1 1 − α ˉ t β t e x p ( − 1 2 1 − α ˉ t − 1 1 − α ˉ t β t X t − 1 2 − 2 ( ( 1 − α ˉ t − 1 ) α t X t 1 − α ˉ t + β t α ˉ t − 1 X 0 1 − α ˉ t ) X t − 1 + C ( X 0 , X t ) ) q(X_{t-1}|X_tX_0)=\frac{1}{\sqrt{2\pi\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t}}exp\left(-\frac{1}{2\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t}X_{t-1}^2-2\left(\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}X_t}{1-\bar{\alpha}_t}+\frac{\beta_t\sqrt{\bar{\alpha}_{t-1}}X_0}{1-\bar{\alpha}_t}\right)X_{t-1}+C(X_0,X_t)\right) q(Xt1XtX0)=2π1αˉt1αˉt1βt 1exp(21αˉt1αˉt1βt1Xt122(1αˉt(1αˉt1)αt Xt+1αˉtβtαˉt1 X0)Xt1+C(X0,Xt)) q ( X t − 1 ∣ X t X 0 ) = N ( X t − 1 ; ( 1 − α ˉ t − 1 ) α t X t 1 − α ˉ t + β t α ˉ t − 1 X 0 1 − α ˉ t , 1 − α ˉ t − 1 1 − α ˉ t β t ) q(X_{t-1}|X_tX_0)=N\left(X_{t-1};\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}X_t}{1-\bar{\alpha}_t}+\frac{\beta_t\sqrt{\bar{\alpha}_{t-1}}X_0}{1-\bar{\alpha}_t},\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t\right) q(Xt1XtX0)=N(Xt1;1αˉt(1αˉt1)αt Xt+1αˉtβtαˉt1 X0,1αˉt1αˉt1βt)因为 X t = α ˉ t X 0 + 1 − α ˉ t Z , Z ∼ N ( 0 , I ) X_t=\sqrt{\bar{\alpha}_t}X_0+\sqrt{1-\bar{\alpha}_t}Z,Z\sim N(0,I) Xt=αˉt X0+1αˉt Z,ZN(0,I)所以 μ ˉ ( X t , X 0 ) = ( 1 − α ˉ t − 1 ) α t X t 1 − α ˉ t + β t α ˉ t − 1 X 0 1 − α ˉ t = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t X t + α ˉ t − 1 β t 1 − α ˉ t ( 1 α ˉ t ( X t − 1 − α ˉ t Z ) )    # ( 已 知 X t 的 情 况 下 , X 0 可 以 用 X t 表 示 ) = α t ( 1 − α ˉ t α t ) α t ( 1 − α ˉ t ) X t + α ˉ t − 1 ( 1 − α t ) 1 − α ˉ t 1 α t α ˉ t − 1 ( X t − 1 − α ˉ t Z ) = α t − α ˉ t + 1 − α t α t ( 1 − α ˉ t ) X t − 1 − α t α t 1 − α ˉ t Z = 1 α t ( X t − β t 1 − α ˉ t Z ) \begin{aligned}\bar{\mu}(X_t,X_0)&=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}X_t}{1-\bar{\alpha}_t}+\frac{\beta_t\sqrt{\bar{\alpha}_{t-1}}X_0}{1-\bar{\alpha}_t}\\&=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}X_t+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}\left(\frac{1}{\sqrt{\bar{\alpha}_t}}\left(X_t-\sqrt{1-\bar{\alpha}_t}Z\right)\right)\space\space\#(已知X_t的情况下,X_0可以用X_t表示)\\&=\frac{\alpha_t(1-\frac{\bar{\alpha}_{t}}{\alpha_t})}{\sqrt{\alpha_t}(1-\bar{\alpha}_t)}X_t+\frac{\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)}{1-\bar{\alpha}_t}\frac{1}{\sqrt{\alpha_t}\sqrt{\bar{\alpha}_{t-1}}}\left(X_t-\sqrt{1-\bar{\alpha}_t}Z\right)\\&=\frac{\alpha_t-\bar{\alpha}_t+1-\alpha_t}{\sqrt{\alpha_t}(1-\bar{\alpha}_t)}X_t-\frac{1-\alpha_t}{\sqrt{\alpha_t}\sqrt{1-\bar{\alpha}_{t}}}Z\\&=\frac{1}{\sqrt{\alpha_t}}\left(X_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}Z\right)\end{aligned} μˉ(Xt,X0)=1αˉt(1αˉt1)αt Xt+1αˉtβtαˉt1 X0=1αˉtαt (1αˉt1)Xt+1αˉtαˉt1 βt(αˉt 1(Xt1αˉt Z))  #(XtX0Xt)=αt (1αˉt)αt(1αtαˉt)Xt+1αˉtαˉt1 (1αt)αt αˉt1 1(Xt1αˉt Z)=αt (1αˉt)αtαˉt+1αtXtαt 1αˉt 1αtZ=αt 1(Xt1αˉt βtZ)所以 q ( X t − 1 ∣ X t X 0 ) = N ( X t − 1 ; 1 α t ( X t − β t 1 − α ˉ t Z ) , 1 − α ˉ t − 1 1 − α ˉ t β t ) , Z ∼ N ( 0 , I ) q(X_{t-1}|X_tX_0)=N\left(X_{t-1};\frac{1}{\sqrt{\alpha_t}}\left(X_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}Z\right),\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t\right),Z\sim N(0,I) q(Xt1XtX0)=N(Xt1;αt 1(Xt1αˉt βtZ),1αˉt1αˉt1βt),ZN(0,I)至此,得到了 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)的分布表达式。接下来,我们介绍怎么用 q ( X t − 1 ∣ X t X 0 ) q(X_{t-1}|X_tX_0) q(Xt1XtX0)来监督 p Θ ( X t − 1 ∣ X t ) p_{\Theta}(X_{t-1}|X_t) pΘ(Xt1Xt)进行训练。

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

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

相关文章

python 图形界面“诈金花”游戏,更新了!附完整代码

旧版本的代码请见上一篇博文&#xff1a; python 从一道作业题到制作一个图形界面的“诈金花”游戏_Hann Yang的博客-CSDN博客Player1: (♥Q, ♣2, ♣8) - 单张Player2: (♦10, ♥7, ♠6) - 单张Player3: (♣4, ♠4, ♦2) - 对子Player4: (♠5, ♠9, ♥6) - 单张Player5: (♠…

SSM框架-SpringMVC(二)

目录 1 SpringMVC处理Ajax请求 1.1 RequestBody 1.2 RequestBody获取json格式的请求参数 1.3 ResponseBody 1.4、ResponseBody响应浏览器json数据 1.5 RestController注解 2 文件上传和下载 2.1 文件下载 2.2 上传文件 3 拦截器 3.1 拦截器的三个抽象方法 3.2 拦截器…

技术分享 | ClickHouse 冷热存储分离方案线上实践

作者&#xff1a;任坤 现居珠海&#xff0c;先后担任专职 Oracle 和 MySQL DBA&#xff0c;现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源…

母胎级教学,工业路由器远程维护PLC详细操作指南

1、前言随着工业4.0大力推进&#xff0c;对工业现场设备的稳定性提出了更高的要求&#xff0c;大多数的设备制造商不能持续监测及管理设备&#xff0c;因为现场设备分布比较分散&#xff0c;客户不能集中管理&#xff0c;如果通过视频或电话沟通问题&#xff0c;则准确度不够&a…

【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)

█ jar文件中Class转java文件不准 █ 系列文章目录 提示&#xff1a;这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【安卓学习之常见问题…

K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停

目录 一、资源说明 二、基本参数 四、部分代码说明 接线说明 1、STC89C52RCXY-160D模块 2、STM32F103C8T6XY-160D模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目所有材料清单 八、注意事项 九、接线表格 一、资源说明 单片机型号 测试…

【UNIAPP】APP快速免费生成一键发布页面

参考官方文档&#xff1a;https://uniapp.dcloud.net.cn/uniCloud/hosting.html# 效果预览地址&#xff1a;https://hellouniapp.dcloud.net.cn/portal 一、创建并运行uni-admin 1、创建项目 2、运行项目 3、关联到浏览器打开。 二、登录后台界面 1、进入主页面 2、如…

[附源码]Python计算机毕业设计Django校园帮平台管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【2023-Pytorch-分类教程】手把手教你使用Pytorch训练自己的分类模型

之前更新过一起tf版本的训练自己的物体分类模型&#xff0c;但是很多兄弟反应tf版本的代码在GPU上无法运行&#xff0c;这个原因是tf在30系显卡上没有很好的支持。所以我们重新更新一期Pytorch版本的物体分类模型训练教程&#xff0c;在这个教程里面&#xff0c;你将会学会物体…

[附源码]计算机毕业设计面向高校活动聚AppSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【电商项目实战】新增收货地址(详细篇)

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot电商项目实战 ✨学习社区&#xff1a; &#x1f449;不会压弯的小飞侠 ✨知足上进&#x…

刷爆力扣之最短无序连续子数组

刷爆力扣之最短无序连续子数组 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&…

Windows+Visual stdio+CUDA编程方式及测试

目录一、visual stdio内针对工程的配置1、新建一个空项目2、配置CUDA生成依赖项3、配置基本库目录4、配置静态链接库路径5、配置源码文件风格6、扩展文件名配置二、样例测试测试样例1样例1问题&#xff1a;找不到helper_cuda.h文件测试样例2测试样例3一、visual stdio内针对工程…

Java餐厅点餐系统uniapp源码带安装教程

一套Java开发的餐厅点餐半成品系统&#xff0c;前端使用uniapp编写&#xff0c;经过本地测试&#xff0c;这套系统还有一些功能没完善好&#xff0c;有能力的朋友可以在这套系统基础上进行二次开发。 技术架构 后端技术框架&#xff1a;springboot shiro layui 前端技术框架…

springboot项目作为静态文件服务器

springboot项目作为静态文件服务器 springboot默认文件作用 使用 spring initialzr 创建 spring boot 项目 https://start.spring.io/ static 存放静态资源 template 存放模板页面 , 例如 thymeleaf 自定义静态文件存放目录 springboot 自动装配 , 默认静态资源的目录是 s…

Flink 知识点整理及八股文问题<第一部分 Flink简介>

本篇为Flink的第一大部分&#xff0c;初识Flink&#xff0c;全篇参考自 尚硅谷2022版1.13系列 整个系列的目录如下&#xff1a; <一>Flink简介 <二>Flink快速上手 <三>Flink 部署 <四>Flink 运行时架构 <五>DataStream API <六>Flin…

kubernetes—数据存储

数据存储 在前面已经提到&#xff0c;容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&#xff0c;保存在容器中的数据也会被清除。这种结果对用户来说&#xff0c;在某些情况下是不乐意看到的。为了持久化保存容器的数据&#xff0c;kubernetes引…

[附源码]计算机毕业设计旅游度假村管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Python项目】Python基于tkinter实现一个笔趣阁小说下载器 | 附源码

前言 halo&#xff0c;包子们上午好 笔趣阁小说应该很多小伙伴都知道 但是用Python实现一个笔趣阁小说下载器 那不是爽歪歪呀 基于tkinter实现的Python版本的笔趣阁小说下载器今天小编给大家实现了 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件…

【多线程(四)】线程状态介绍、线程池基本原理、Executors默认线程池、ThreadPoolExecutor线程池

文章目录4.线程池4.1状态介绍4.2线程的状态-练习14.3线程的状态-练习24.4线程的状态-练习34.5线程池-基本原理4.6线程池-Executors默认线程池4.7线程池-Executors创建指定上限的线程池4.8线程池-ThreadPoolExecutor4.9线程池-参数详解4.10线程池-非默认任务拒绝策略总结4.线程池…