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

扩散模型详细推导过程——编码与解码

符号表

符号含义
x ( i ) = z 0 ( i ) \boldsymbol{x}^{(i)}=\boldsymbol{z}_0^{(i)} x(i)=z0(i) i i i个训练数据,其为长度为 d d d的向量
z t ( i ) \boldsymbol{z}_t^{(i)} zt(i) i i i个训练数据在第 t t t时刻的加噪版本
ϵ t ( i ) \boldsymbol{\epsilon}_t^{(i)} ϵt(i) i i i个训练数据在第 t t t时刻所添加的高斯噪声
β t \beta_t βt噪声计划(noise schedule),范围为[0,1]
α t \alpha_t αt α t = ∏ s = 1 t ( 1 − β s ) \alpha_t=\prod_{s=1}^t (1-\beta_s) αt=s=1t(1βs)
N ( μ , σ 2 I ) N(\boldsymbol{\mu},\sigma^2\boldsymbol{I}) N(μ,σ2I)均值为 μ \boldsymbol{\mu} μ,标准差为 σ \sigma σ的高斯分布
q ( ⋅ ) q\left(·\right) q()正向过程的转移核
p ( ⋅ ) p(·) p()反向过程的转移核
p ( ⋅ ∣ θ ) p\left(·|\theta\right) p(θ)受参数 θ \theta θ影响,用于拟合反向过程的真实概率密度函数
f t f_t ft反向过程中 t t t时刻对应的神经网络
g t g_t gt反向过程中 t t t时刻对应的神经网络
θ t \theta_t θt神经网络 f t f_t ft g t g_t gt的参数
θ 1 : T \theta_{1:T} θ1:T θ 1 , θ 2 , ⋯ , θ T \theta_1,\theta_2,\cdots,\theta_T θ1,θ2,,θT
d z 1 : T d\boldsymbol{z}_{1:T} dz1:T d z 1 d z 2 ⋯ d z T d\boldsymbol{z}_1d\boldsymbol{z}_2\cdots d\boldsymbol{z}_T dz1dz2dzT
注:如没有上标 ( i ) ^{(i)} (i),则表明在此语境下不特别指明对应某个样本

扩散模型的扩散过程(编码器)

扩散模型的编码器所做的工作如下:

设有原数据 x \boldsymbol{x} x,经过如下的逐步编码(添加噪声)过程可以得到一个符合标准高斯分布的噪声

z t = 1 − β t z t − 1 + β t ϵ t , t = 1 , 2 , ⋯ , T \begin{equation}\boldsymbol{z}_t=\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}+\sqrt{\beta_t}\boldsymbol{\epsilon}_t, t=1,2,\cdots,T\end{equation} zt=1βt zt1+βt ϵt,t=1,2,,T

其中 z 0 = x \boldsymbol{z}_0=\boldsymbol{x} z0=x ϵ 1 , ϵ 2 , ⋯ , ϵ t ∼ N ( 0 , I ) \boldsymbol{\epsilon}_1, \boldsymbol{\epsilon}_2,\cdots,\boldsymbol{\epsilon}_t\sim N(\boldsymbol{0}, \boldsymbol{I}) ϵ1,ϵ2,,ϵtN(0,I) β 1 , β 2 , ⋯ , β t ∈ [ 0 , 1 ] \beta_1,\beta_2,\cdots,\beta_t\in [0,1] β1,β2,,βt[0,1]为噪声计划(noise schedule),一般逐级递增。当 T → ∞ T\rightarrow \infty T z T \boldsymbol{z}_T zT将服从高斯分布,该推导在下面会涉及。

由于每一步的扩散结果 z t \boldsymbol{z}_t zt仅依赖于上一个扩散结果 z t − 1 \boldsymbol{z}_{t-1} zt1,也即只要已知 z t − 1 \boldsymbol{z}_{t-1} zt1(不需要再知道 z 1 , z 2 , ⋯ , z t − 2 \boldsymbol{z}_{1},\boldsymbol{z}_{2},\cdots,\boldsymbol{z}_{t-2} z1,z2,,zt2),再经过计算便可以得到 z t \boldsymbol{z}_{t} zt。该扩散特点符合马尔科夫链的性质,即每一时刻的状态仅依赖于上一时刻的状态,而与之前的状态无关。

现在用一个马尔科夫链表达该扩散过程。在 z t − 1 \boldsymbol{z}_{t-1} zt1是已知的情况下, z t \boldsymbol{z}_t zt的均值

E [ z t ] = E [ 1 − β t z t − 1 ] + E [ β t ϵ t ] = 1 − β t z t − 1 + 0 = 1 − β t z t − 1 \begin{align}E[\boldsymbol{z}_t]&=E[\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}]+E[\sqrt{\beta_t}\boldsymbol{\epsilon}_t]\\&=\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}+\boldsymbol{0}\\&=\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}\end{align} E[zt]=E[1βt zt1]+E[βt ϵt]=1βt zt1+0=1βt zt1

z t \boldsymbol{z}_t zt的方差

C o v [ z t ] = C o v [ 1 − β t z t − 1 ] + C o v [ β t ϵ t ] = 0 + ( β t ) 2 I = β t I \begin{align}Cov[\boldsymbol{z}_t]&=Cov[\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}]+Cov[\sqrt{\beta_t}\boldsymbol{\epsilon}_t]\\ &= \boldsymbol{0}+(\sqrt{\beta_t})^2\boldsymbol{I}\\ &= \beta_t\boldsymbol{I}\end{align} Cov[zt]=Cov[1βt zt1]+Cov[βt ϵt]=0+(βt )2I=βtI

以上推导源自于:① z t − 1 \boldsymbol{z}_{t-1} zt1是已知的,它不是分布,而是常量② ϵ t \boldsymbol{\epsilon}_t ϵt是标准的高斯分布③若 x ∼ N ( m x , Σ x ) \boldsymbol{x}\sim N(\boldsymbol{m}_{x},\boldsymbol{\Sigma}_{x}) xN(mx,Σx) y ∼ N ( m y , Σ y ) \boldsymbol{y}\sim N(\boldsymbol{m}_y,\boldsymbol{\Sigma}_y) yN(my,Σy),则 A x + B y + c ∼ N ( A m x + B m y + c , A Σ x A T + B Σ y B T ) \boldsymbol{Ax}+\boldsymbol{By}+\boldsymbol{c}\sim N(\boldsymbol{Am}_x+\boldsymbol{Bm}_y+\boldsymbol{c},\boldsymbol{A\Sigma_{x}A}^T+\boldsymbol{B\Sigma_{y}B}^T) Ax+By+cN(Amx+Bmy+c,AΣxAT+BΣyBT)

根据前面的分析,在已知 z t − 1 \boldsymbol{z}_{t-1} zt1的情况下, z t \boldsymbol{z}_t zt的概率分布,即转移核的表达式如下:

q ( z t ∣ z t − 1 ) = N ( 1 − β t z t − 1 , β t I ) = 1 ( 2 π ) d 2 β t exp ⁡ ( − ( z t − 1 − β t z t − 1 ) 2 2 β t ) \begin{equation}q(\boldsymbol{z}_t|\boldsymbol{z}_{t-1})=N(\sqrt{1-\beta_t}\boldsymbol{z}_{t-1},\beta_t\boldsymbol{I})=\frac{1}{(2\pi)^{\frac{d}{2}}\sqrt{\beta_t}}\exp{\left(-\frac{(\boldsymbol{z}_{t}-\sqrt{1-\beta_t}\boldsymbol{z}_{t-1})^2}{2\beta_t}\right)}\end{equation} q(ztzt1)=N(1βt zt1,βtI)=(2π)2dβt 1exp(2βt(zt1βt zt1)2)

该表达式使用了多元高斯分布的定义,即若随机变量 X = [ X 1 ⋯ X n ] T X=\begin{bmatrix}X_1\cdots X_n\end{bmatrix}^T X=[X1Xn]T 服从均值为 μ ∈ R n \boldsymbol{\mu}\in\mathbb{R}^n μRn ,协方差为 Σ ∈ S + + n \boldsymbol{\Sigma}\in\mathbb{S}_{++}^n ΣS++n 的多元高斯分布,则其概率密度函数为:
1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) . \begin{aligned}\frac{1}{(2\pi)^{n/2}|\boldsymbol{\Sigma}|^{1/2}}\exp\left(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\right).\end{aligned} (2π)n/2Σ1/21exp(21(xμ)TΣ1(xμ)).

因此,在已知 x \boldsymbol{x} x的情况下,将通过 q ( z 1 ∣ x ) q(\boldsymbol{z}_1|\boldsymbol{x}) q(z1x)采样得到 z 1 \boldsymbol{z}_1 z1;则 z 1 \boldsymbol{z}_1 z1变为已知,再通过 q ( z 2 ∣ z 1 ) q(\boldsymbol{z}_2|\boldsymbol{z}_1) q(z2z1)采样得到 z 2 \boldsymbol{z}_2 z2,类似地递推,最后得到 x T \boldsymbol{x}_T xT。当 T T T非常大的时候,该过程十分耗时,但可以将 z t \boldsymbol{z}_t zt中的 z t − 1 \boldsymbol{z}_{t-1} zt1逐层次替换为 x \boldsymbol{x} x的表达式,得到
z t = 1 − β t z t − 1 + β t ϵ t = 1 − β t ( 1 − β t − 1 z t − 2 + β t − 1 ϵ t − 1 ) + β t ϵ t = ( 1 − β t ) ( 1 − β t − 1 ) z t − 2 + 1 − β t − ( 1 − β t ) ( 1 − β t − 1 ) ϵ t − 1 + β t ϵ t \begin{aligned} \boldsymbol{z}_{t}& =\sqrt{1-\beta_t}\boldsymbol{z}_{t-1}+\sqrt{\beta_t}\boldsymbol{\epsilon}_{t} \\ &=\sqrt{1-\beta_t}\left(\sqrt{1-\beta_{t-1}}\boldsymbol{z}_{t-2}+\sqrt{\beta_{t-1}}\boldsymbol{\epsilon}_{t-1}\right)+\sqrt{\beta_t}\boldsymbol{\epsilon}_{t} \\ &=\sqrt{(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{z}_{t-2}+\sqrt{1-\beta_t-(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{\epsilon}_{t-1}+\sqrt{\beta_t}\boldsymbol{\epsilon}_{t} \end{aligned} zt=1βt zt1+βt ϵt=1βt (1βt1 zt2+βt1 ϵt1)+βt ϵt=(1βt)(1βt1) zt2+1βt(1βt)(1βt1) ϵt1+βt ϵt
再根据高斯分布的混合公式,将 ϵ t − 1 \boldsymbol{\epsilon_{t-1}} ϵt1 ϵ t \boldsymbol{\epsilon}_{t} ϵt的项混合为 ϵ \boldsymbol{\epsilon} ϵ的分布,得到
z t = ( 1 − β t ) ( 1 − β t − 1 ) z t − 2 + ( 1 − β t ) − ( 1 − β t ) ( 1 − β t − 1 ) 2 + β t 2 ϵ = ( 1 − β t ) ( 1 − β t − 1 ) z t − 2 + 1 − β t − ( 1 − β t ) ( 1 − β t − 1 ) + β t ϵ = ( 1 − β t ) ( 1 − β t − 1 ) z t − 2 + 1 − ( 1 − β t ) ( 1 − β t − 1 ) ϵ = … = ∏ i = 1 t ( 1 − β i ) x + 1 − ∏ i = 1 t ( 1 − β i ) ϵ = α t x + 1 − α t ϵ , t = 1 , 2 , ⋯ , T \begin{align*} \boldsymbol{z}_{t}&=\sqrt{(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{z}_{t-2}+\sqrt{\sqrt{(1-\beta_t)-(1-\beta_t)(1-\beta_{t-1})}^2+\sqrt{\beta_t}^2}\boldsymbol{\epsilon} \\ &=\sqrt{(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{z}_{t-2}+\sqrt{1-\beta_t-(1-\beta_t)(1-\beta_{t-1})+\beta_t}\boldsymbol{\epsilon} \\ &=\sqrt{(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{z}_{t-2}+\sqrt{1-(1-\beta_t)(1-\beta_{t-1})}\boldsymbol{\epsilon} \\ &=\ldots \\ &=\sqrt{\prod_{i=1}^t(1-\beta_i)}\boldsymbol{x}+\sqrt{1-\prod_{i=1}^t(1-\beta_i)}\boldsymbol{\epsilon} \\ &=\sqrt{\alpha_t}\boldsymbol{x}+\sqrt{1-\alpha_t}\boldsymbol{\epsilon},t=1,2,\cdots,T \end{align*} zt=(1βt)(1βt1) zt2+(1βt)(1βt)(1βt1) 2+βt 2 ϵ=(1βt)(1βt1) zt2+1βt(1βt)(1βt1)+βt ϵ=(1βt)(1βt1) zt2+1(1βt)(1βt1) ϵ==i=1t(1βi) x+1i=1t(1βi) ϵ=αt x+1αt ϵ,t=1,2,,T
为了区分不同时刻所对应的噪声,对 ϵ \boldsymbol{\epsilon} ϵ添加下标 t t t,可得
z t = α t x + 1 − α t ϵ t , t = 1 , 2 , ⋯ , T \begin{equation}\boldsymbol{z}_t=\sqrt{\alpha_t}\boldsymbol{x}+\sqrt{1-\alpha_t}\boldsymbol{\epsilon}_t, t=1,2,\cdots,T\end{equation} zt=αt x+1αt ϵt,t=1,2,,T

其中, α t = ∏ s = 1 t ( 1 − β s ) \alpha_t=\prod_{s=1}^t (1-\beta_s) αt=s=1t(1βs) ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon}\sim N(\boldsymbol{0}, \boldsymbol{I}) ϵN(0,I)

所以,一旦已知 x \boldsymbol{x} x,便可以得到 z t \boldsymbol{z}_t zt的分布,故:

q ( z t ∣ x ) = N ( α t x , ( 1 − α t ) I ) = 1 ( 2 π ) d 2 ( 1 − α t ) exp ⁡ ( − ( z t − α t x ) 2 1 − α t ) \begin{equation}q(\boldsymbol{z}_t|\boldsymbol{x})=N(\sqrt{\alpha_t}\boldsymbol{\boldsymbol{x}},(1-\alpha_t)\boldsymbol{I})=\frac{1}{(2\pi)^{\frac{d}{2}}\sqrt{(1-\alpha_t)}}\exp{\left(-\frac{(\boldsymbol{z}_{t}-\sqrt{\alpha_t}\boldsymbol{x})^2}{1-\alpha_t}\right)}\end{equation} q(ztx)=N(αt x,(1αt)I)=(2π)2d(1αt) 1exp(1αt(ztαt x)2)

因此, z t \boldsymbol{z}_t zt可以通过先从标准的高斯分布中采样 ϵ \boldsymbol{\epsilon} ϵ,然后和 z 0 \boldsymbol{z}_0 z0进行混合得到。另外可以观察到,因为 β t \beta_t βt t t t很大的时候近似为 1 1 1,那么 α t \alpha_t αt t t t很大的时候近似等于0,此时 q ( z t ∣ x ) q(\boldsymbol{z}_t|\boldsymbol{x}) q(ztx)近似为一个标准的高斯分布。

扩散模型的去噪过程(解码器)

扩散模型的解码器是为了反转编码过程。如果知道逆向转移核 p ( z t − 1 ∣ z t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t}) p(zt1zt),那么就可以先从 p ( z T ) = N ( 0 , I ) p(\boldsymbol{z}_T)=N(\boldsymbol{0},\boldsymbol{I}) p(zT)=N(0,I)采样出 z T \boldsymbol{z}_T zT,再通过 p ( z T − 1 ∣ z T ) p(\boldsymbol{z}_{T-1}|\boldsymbol{z}_{T}) p(zT1zT)采样出 z T − 1 \boldsymbol{z}_{T-1} zT1,依次类推,直到采样出 z 0 \boldsymbol{z}_{0} z0,即 x \boldsymbol{x} x

贝叶斯公式给出了根据 q ( z t ∣ z t − 1 ) q(\boldsymbol{z}_{t}|\boldsymbol{z}_{t-1}) q(ztzt1)求出 p ( z t − 1 ∣ z t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t}) p(zt1zt)的方法,即

p ( z t − 1 ∣ z t ) = q ( z t ∣ z t − 1 ) q ( z t − 1 ) q ( z t ) \begin{equation}p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t})=\frac{q(\boldsymbol{z}_{t}|\boldsymbol{z}_{t-1})q(\boldsymbol{z}_{t-1})}{q(\boldsymbol{z}_t)}\end{equation} p(zt1zt)=q(zt)q(ztzt1)q(zt1)

观察该式可知,由于 q ( z t − 1 ) / q ( z t ) q(\boldsymbol{z}_{t-1})/q(\boldsymbol{z}_{t}) q(zt1)/q(zt)是未知的,所以求不出任何结果,而且实际上该逆向转移核不一定是高斯分布。

但是,如果给定额外条件 x \boldsymbol{x} x,由(15),可以得到

p ( z t − 1 ∣ z t , x ) = q ( z t ∣ z t − 1 , x ) q ( z t − 1 ∣ x ) q ( z t ∣ x ) \begin{equation}p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})=\frac{q(\boldsymbol{z}_{t}|\boldsymbol{z}_{t-1},\boldsymbol{x})q(\boldsymbol{z}_{t-1}|\boldsymbol{x})}{q(\boldsymbol{z}_t|\boldsymbol{x})}\end{equation} p(zt1zt,x)=q(ztx)q(ztzt1,x)q(zt1x)

根据马尔科夫链的性质 q ( z t ∣ z t − 1 , x ) = q ( z t ∣ z t − 1 ) q(\boldsymbol{z}_{t}|\boldsymbol{z}_{t-1},\boldsymbol{x})=q(\boldsymbol{z}_{t}|\boldsymbol{z}_{t-1}) q(ztzt1,x)=q(ztzt1),结合公式(8)和(10),经过很复杂的一段化简(省略过程)得到:

p ( z t − 1 ∣ z t , x ) = q ( z t ∣ z t − 1 ) q ( z t − 1 ∣ x ) q ( z t ∣ x ) ∝ q ( z t ∣ z t − 1 ) q ( z t − 1 ∣ x ) = N z t ( 1 − β t ⋅ z t − 1 , β t I ) N z t − 1 ( α t − 1 ⋅ x , ( 1 − α t − 1 ) I ) \begin{aligned} p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})& =\quad\frac{q(\boldsymbol{z}_t|\boldsymbol{z}_{t-1})q(\boldsymbol{z}_{t-1}|\boldsymbol{x})}{q(\boldsymbol{z}_t|\boldsymbol{x})} \\ &\propto\quad q(\boldsymbol{z}_t|\boldsymbol{z}_{t-1})q(\boldsymbol{z}_{t-1}|\boldsymbol{x}) \\ &=\quad N_{\boldsymbol{z}_t}\left(\sqrt{1-\beta_t}\cdot\boldsymbol{z}_{t-1},\beta_t\boldsymbol{I}\right)N_{\boldsymbol{z}_{t-1}}\left(\sqrt{\alpha_{t-1}}\cdot\boldsymbol{x},(1-\alpha_{t-1})\boldsymbol{I}\right) \\\end{aligned} p(zt1zt,x)=q(ztx)q(ztzt1)q(zt1x)q(ztzt1)q(zt1x)=Nzt(1βt zt1,βtI)Nzt1(αt1 x,(1αt1)I)

根据高斯随机变量的变量替换定理,即

N v [ A w , B ] ∝ N w [ ( A T B − 1 A ) − 1 A T B − 1 v , ( A T B − 1 A ) − 1 ] N_{\boldsymbol{v}}\left[\boldsymbol{A}\boldsymbol{w},\boldsymbol{B}\right]\propto N_{\boldsymbol{w}}\left[\left(\boldsymbol{A}^T\boldsymbol{B}^{-1}\boldsymbol{A}\right)^{-1}\boldsymbol{A}^T\boldsymbol{B}^{-1}\boldsymbol{v},\left(\boldsymbol{A}^T\boldsymbol{B}^{-1}\boldsymbol{A}\right)^{-1}\right] Nv[Aw,B]Nw[(ATB1A)1ATB1v,(ATB1A)1]
可得,
N z t ( 1 − β t ⋅ z t − 1 , β t I ) N z t − 1 ( α t − 1 ⋅ x , ( 1 − α t − 1 ) I ) ∝ N z t − 1 ( 1 1 − β t z t , β t 1 − β t I ) N z t − 1 ( α t − 1 ⋅ x , ( 1 − α t − 1 ) I ) \quad N_{\boldsymbol{z}_t}\left(\sqrt{1-\beta_t}\cdot\boldsymbol{z}_{t-1},\beta_t\boldsymbol{I}\right)N_{\boldsymbol{z}_{t-1}}\left(\sqrt{\alpha_{t-1}}\cdot\boldsymbol{x},(1-\alpha_{t-1})\boldsymbol{I}\right)\propto N_{\boldsymbol{z}_{t-1}}\left(\frac{1}{\sqrt{1-\beta_t}}\boldsymbol{z}_t,\frac{\beta_t}{1-\beta_t}\boldsymbol{I}\right)N_{\boldsymbol{z}_{t-1}}\left(\sqrt{\alpha_{t-1}}\cdot\boldsymbol{x},(1-\alpha_{t-1})\boldsymbol{I}\right) Nzt(1βt zt1,βtI)Nzt1(αt1 x,(1αt1)I)Nzt1(1βt 1zt,1βtβtI)Nzt1(αt1 x,(1αt1)I)

再根据

N w [ a , A ] ⋅ N w [ b , B ] ∝ N w [ ( A − 1 + B − 1 ) − 1 ( A − 1 a + B − 1 b ) , ( A − 1 + B − 1 ) − 1 ] \begin{aligned}N_{\boldsymbol{w}}[\boldsymbol{a},\boldsymbol{A}]\cdot N_{\boldsymbol{w}}[\boldsymbol{b},\boldsymbol{B}]\propto N_{\boldsymbol{w}}&\left[\left(\boldsymbol{A}^{-1}+\boldsymbol{B}^{-1}\right)^{-1}(\boldsymbol{A}^{-1}\boldsymbol{a}+\boldsymbol{B}^{-1}\boldsymbol{b}),\left(\boldsymbol{A}^{-1}+\boldsymbol{B}^{-1}\right)^{-1}\right]\end{aligned} Nw[a,A]Nw[b,B]Nw[(A1+B1)1(A1a+B1b),(A1+B1)1]

最终得到

p ( z t − 1 ∣ z t , x ) = N z t − 1 [ ( 1 − α t − 1 ) 1 − α t 1 − β t z t + α t − 1 β t 1 − α t x , β t ( 1 − α t − 1 ) 1 − α t I ] p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})=N_{\boldsymbol{z}_{t-1}}\left[\frac{(1-\alpha_{t-1})}{1-\alpha_t}\sqrt{1-\beta_t}\boldsymbol{z}_t+\frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\alpha_t}\boldsymbol{x},\frac{\beta_t(1-\alpha_{t-1})}{1-\alpha_t}\boldsymbol{I}\right] p(zt1zt,x)=Nzt1[1αt(1αt1)1βt zt+1αtαt1 βtx,1αtβt(1αt1)I]

由此可知 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)是一个高斯分布。

因此,尽管 p ( z t − 1 ∣ z t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t}) p(zt1zt)不是高斯分布,但给定条件 x \boldsymbol{x} x后得到的 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)是高斯分布。另外,如果 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)的均值和方差被确定,那么进一步可以写出从中采样的公式,得到 z t − 1 \boldsymbol{z}_{t-1} zt1。因此,可以考虑用神经网络来近似 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)(在后续训练目标的推导中可以看出网络的目标实际上是近似 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)),记作 p ( z t − 1 ∣ z t , θ t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_t) p(zt1zt,θt)。为了简化该分布,将其方差设为固定值,神经网络仅仅估计其均值。

p ( z t − 1 ∣ z t , θ t ) = N ( f t ( z t , θ t ) , σ t 2 I ) \begin{equation}p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_t)=N(f_t(\boldsymbol{z}_t,\theta_t),\sigma_t^2\boldsymbol{I})\end{equation} p(zt1zt,θt)=N(ft(zt,θt),σt2I)

其中 f t f_t ft为神经网络,其接受输入 z t \boldsymbol{z}_t zt并输出一个估计的均值, θ t \theta_t θt为该网络的参数, σ t \sigma_t σt为人为设定的标准差。

如果能训练出使得原数据 z 0 \boldsymbol{z}_0 z0总体出现概率最大的神经网络 f t ( z t , θ t ) f_t(\boldsymbol{z}_t,\theta_t) ft(zt,θt),进而得到 p ( z t − 1 ∣ z t , θ t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_t) p(zt1zt,θt),那么就可以先从 N ( 0 , I ) N(\boldsymbol{0},\boldsymbol{I}) N(0,I)采样出 z T \boldsymbol{z}_T zT,再通过 p ( z T − 1 ∣ z T , θ t ) p(\boldsymbol{z}_{T-1}|\boldsymbol{z}_{T},\theta_t) p(zT1zT,θt)采样出 z T − 1 \boldsymbol{z}_{T-1} zT1,依次类推,直到采样出 x \boldsymbol{x} x,即 z 0 \boldsymbol{z}_{0} z0

相关文章:

扩散模型详细推导过程——编码与解码

符号表 符号含义 x ( i ) z 0 ( i ) \boldsymbol{x}^{(i)}\boldsymbol{z}_0^{(i)} x(i)z0(i)​第 i i i个训练数据,其为长度为 d d d的向量 z t ( i ) \boldsymbol{z}_t^{(i)} zt(i)​第 i i i个训练数据在第 t t t时刻的加噪版本 ϵ t ( i ) \boldsymbol{\epsilo…...

js如何实现开屏弹窗

开屏弹窗是什么&#xff0c;其实就是第一次登录后进入页面给你的一种公告提示&#xff0c;此后再回到当前这个页面时弹窗是不会再出现的。也就是说这个弹窗只会出现一次。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>…...

C#——文件读取Directory类详情

文件读取Directory类 Durectory提供了目录以及子目录进行创建移动和列举操作方法 Directory和Directorylnfo类(主要操作文件目录属性列如文件是否隐藏的 或者只读等这些属性) Directory对目录进行复制、移动、重命名、创建和删除等操作DirectoryInfo用于对目录属性执行操作 …...

Ruby on Rails Post项目设置网站初始界面

在构建了Ruby的Web服务器后&#xff0c;第三步就可以去掉框架的官方页面&#xff0c;设置自己的网页初始页了。 Linux系统安装Ruby语言-CSDN博客 、在Ubuntu中创建Ruby on Rails项目并搭建数据库-CSDN博客、 Ruby语言建立Web服务器-CSDN博客 了解Ruby onRails项目中的主要文件…...

03-QTWebEngine中使用qtvirtualkeyboard

qt提供了 virtualKeyboard 虚拟键盘模块&#xff0c;只需要在在main函数中最开始加入这样一句就可以了 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 但是在使用的时候遇到了一些问题&#xff1a; 1、中文输入的时候没有输入提示 Qvirt…...

leetcode3无重复字符的最长字串(重点讲滑动窗口)

本文主要讲解无重复字符的最长字串的要点与细节&#xff0c;根据步骤一步步走更方便理解 c与java代码如下&#xff0c;末尾 具体要点&#xff1a; 1. 区分一下子串和子序列 子串&#xff1a;要求元素在母串中是连续地出现 子序列&#xff1a;不要求连续 2. 题目中有两个核心…...

Gobject tutorial 八

The GObject base class Object memory management Gobject的内存管理相关的API很复杂&#xff0c;但其目标是提供一个基于引用计数的灵活的内存管理模式。 下面我们来介绍一下&#xff0c;与管理引用计数相关的函数。 Reference Count 函数g_object_ref和g_object_unref的…...

DDMA信号处理以及数据处理的流程---cfar检测

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…...

【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f4d5;引言 ⛓决策树的基本原理 1. 决策树的结构 2. 信息增益 熵的计算公式 信息增益的计算公式 3. 基尼指数 4. 决策树的构建 &#x1f916;决策树的代码实现 1. 数据准备 2. 决策树模型训练 3.…...

Zookeeper 集群节点故障剔除、切换、恢复原理

Zookeeper 集群节点故障剔除、切换、恢复原理 zookeeper 集群节点故障时,如何剔除节点,如果为领导节点如何处理,如何进行故障恢 复的,实现原理? 在 Zookeeper 集群中,当节点故障时,集群需要自动剔除故障节点并进行故障恢复,确保集群的高 可用性和一致性。具体来说,…...

解决帝国cms栏目管理拼音乱码的问题

帝国CMS7.5版本utf-8版网站后台增加栏目生成乱码的问题怎么解决 1、需要改一个函数&#xff0c;并且增加一个处理文件&#xff0c;方法如下&#xff1a; 修改e/class/connect.php文件&#xff0c;找到ReturnPinyinFun函数&#xff0c;如未修改文件在4533-4547行&#xff0c;将…...

Git快速入门

一 快速使用 1.1 初始化 什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;可以简单理解成一个目录&#xff0c;这个目录里面的所有文件都可以被Git管理起来&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#xff0…...

【18.0】JavaScript---事件案例

【18.0】JavaScript—事件案例 【一】开关灯事件 【介绍】设置一个按钮&#xff0c;按下按钮触发事件&#xff0c;来回切换圆形图片的颜色 【分析】 图片设置&#xff1a;设置成圆形的图片背景颜色&#xff1a;设置红绿两个颜色&#xff0c;来回切换按钮设置&#xff1a;点击…...

推荐系统三十六式学习笔记:原理篇.矩阵分解12|如果关注排序效果,那么这个模型可以帮到你

目录 矩阵分解的不足贝叶斯个性化排序AUC构造样本目标函数训练方法 总结 矩阵分解在推荐系统中的地位非常崇高。它既有协同过滤的血统&#xff0c;又有机器学习的基因&#xff0c;可以说是非常优秀了&#xff1b;但即便如此&#xff0c;传统的矩阵分解无论是在处理显式反馈&…...

Kafka之ISR机制的理解

文章目录 Kafka的基本概念什么是ISRISR的维护机制ISR的作用ISR相关配置参数同步过程示例代码总结 Kafka中的ISR&#xff08;In-Sync Replicas同步副本&#xff09;机制是确保数据高可用性和一致性的核心组件。 Kafka的基本概念 在Kafka中&#xff0c;数据被组织成主题&#xf…...

如何设计一个点赞系统

首先我们定义出一个点赞系统需要对外提供哪些接口&#xff1a; 1.用户对特定的消息进行点赞&#xff1b; 2.用户查看自己发布的某条消息点赞数量以及被哪些人赞过&#xff1b; 3.用户查看自己给哪些消息点赞过&#xff1b; 这里假设每条消息都有一个message_id, 每一个用户都…...

对象存储测试工具-s3cmd

一、环境安装 官网&#xff1a;https://s3tools.org/s3cmd 下载安装包&#xff1a;https://s3tools.org/download GitHub&#xff1a;https://github.com/s3tools/s3cmd/releases 本文安装包&#xff1a;https://github.com/s3tools/s3cmd/releases/download/v2.0.2/s3cmd-2.0…...

OpenCV--图像色彩空间及转换

图像色彩空间及转换 python代码和笔记 python代码和笔记 import cv2 色彩空间&#xff0c;基础&#xff1a;RGB或BGR OpenCV中&#xff1a; 一、HSV(HSB)&#xff1a;用的最多&#xff0c; Hue&#xff1a;色相-色彩(0-360)&#xff0c;红色&#xff1a;0&#xff0c;绿色&…...

RIP解决不连续子网问题

#交换设备 RIP解决不连续子网问题 一、不连续子网的概念 相同主网下的子网&#xff0c;被另一个主网分割&#xff0c;例如下面实验拓扑在某公司的网络整改项目中&#xff0c;原先R1 和RS 属于同一主网络 10.0.0.0/8&#xff0c;现被 R2、R3、R4 分离&#xff0c;整网采用了 …...

动态轮换代理IP是什么?有什么用?

如果您要处理多个在线帐户&#xff0c;选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么&#xff1f; 为了更好地管理不同平台上的多个账户并优化成本&#xff0c;动态住宅代理IP通常作用在此。 一、什么是轮换代理&#xff1f; 轮换代理充当…...

MAC配置VScode中C++项目debug环境

文章目录 配置步骤问题解决Unable to start debugging. LLDB exited unexpectedly with exit code 137 (0x89). 配置步骤 在Mac上配置VS Code以进行C调试涉及几个步骤&#xff1a; 安装必要的工具: 确保您已经安装了Visual Studio Code和C插件。 检查是否安装了Clang&#xf…...

PostgreSQL源码分析——CREATE CAST

CREATE CAST源码分析 CREATE CAST用法 CREATE CAST —— 定义一个用户自定义的类型转换 用法如下&#xff1a; CREATE CAST (source_type AS target_type)WITH FUNCTION function_name [ (argument_type [, ...]) ][ AS ASSIGNMENT | AS IMPLICIT ]CREATE CAST (source_type…...

解锁5G新营销:视频短信的优势与全方位推广策略

随着5G时代的全面来临&#xff0c;企业的数字化转型步伐日益加快&#xff0c;视频短信作为新兴的数字营销工具&#xff0c;正逐步展现出其巨大的潜力。视频短信群发以其独特的形式和内容&#xff0c;将图片、文字、视频、声音融为一体&#xff0c;为用户带来全新的直观感受&…...

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…...

PostgreSQL查询用户

在 PostgreSQL 中&#xff0c;可以通过查询系统表来确定当前用户是否是超级管理员&#xff08;超级用户&#xff09;。具体来说&#xff0c;可以使用 pg_roles 系统表&#xff0c;该表包含数据库中所有角色的信息。 以下是查询当前用户是否是超级用户的 SQL 语句&#xff1a; …...

力扣1539.第k个缺失的正整数

力扣1539.第k个缺失的正整数 占位运算 只要n<k &#xff0c;k;最终k就是结果 class Solution {public:int findKthPositive(vector<int>& arr, int k) {for(int n : arr){if(n < k) k ;else break;}return k;}};...

如何快速解决屏幕适配问题

下面将利用postcss插件快速解决屏幕适配问题。仅用少量代码&#xff0c;新手均可快速使用。 Step1. 安装 npm install postcss-px-to-viewport-8-plugin --save-dev Step2. 新建 postcss.config.js 文件&#xff0c;做基础配置 module.exports {plugins: {postcss-px-to-v…...

Go基础编程 - 09 - 通道(channel)

通道&#xff08;channel&#xff09; 1. 声明2. channel的操作3. 无缓冲通道4. 有缓冲通道5. 如何优雅的从通道循环取值6. 单向通道7. 异常总结 上一篇&#xff1a;结构体 Go语言的并发模式&#xff1a;不要通过共享内存来通信&#xff0c;而应该通过通信来共享内存。 Go语言…...

[SAP ABAP] 数据类型

1.基本数据类型 示例1 默认定义的基本数据类型是CHAR数据类型 输出结果: 示例2 STRING数据类型用于存储任何长度可变的字符串 输出结果: 示例3 DATE数据类型用于存储日期信息&#xff0c;并且可以存储8位数字 输出结果: 提示Tips&#xff1a;日期和时间类型的变量可以直接进…...

什么是Vue开发技术

概述 Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它设计得非常灵活&#xff0c;可以轻松地被集成到任何项目中。 vue是视图的发音&#xff0c;其目的是帮助开发者易于上手&#xff0c;提供强大的功能构建复杂的应用程序 示例 以下是vue基本的语法概述 声明式渲…...

网站百度权重没有数据/网络营销章节测试答案

64位系统是能安装32位的应用软件和程序的&#xff0c;出现问题&#xff0c;最大可能是没有安装 32位的依赖库&#xff0c;或者是安装的32位依赖库不对。 linux一般都是在/etc/dpkg/dpkg.cfg.d/路径下有相关的文件 该目录下multiarch文件就记录foreign-architecture 注意&…...

wordpress首页音乐/危机公关

了解MySQL(超详细的MySQL工作原理 体系结构)1.MySQL体系结构2.MySQL内存结构3.MySQL文件结构4.innodb体系结构一、了解MySQL前你需要知道的引擎是什么:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并…...

做的网站有广告/全球搜效果怎么样

首先利用快捷键ctrlshiftP呼出用于执行命令的输入框&#xff0c;输入setting.json; 如下图&#xff0c;即可在输入框中找到open setting.json&#xff0c;此外还有各种其他的setting的json也可以在这里打开。 ctrlshiftp呼出的输入框删除掉>&#xff0c;还可以用来按文件名…...

南昌有做网站的吗/中央广播电视总台

这是回到家的第一篇周记&#xff0c;有许多想说的&#xff0c;仔细一想有没什么可写的&#xff0c;确实是没做什么实事。刚回家和学校的最大差异是生活不是那么规律了。在学校的时候有同学一起按照时间点做事儿&#xff0c;回家总想着玩儿&#xff0c;确实懒了很多&#xff0c;…...

华为网站搭建/电商运营推广的方式和渠道有哪些

传送门 很明显题目要求的东西可以写成$\sum_{i1}^{n}\sum_{j1}^m gcd(i,j)*2-1$&#xff08;一点都不明显&#xff09; 如果直接枚举肯定爆炸 那么我们设$f[i]$表示存在公因数$i$的数的对数 然而$i$并不一定是这几对数的最大公因数 那么怎么办呢&#xff1f;考虑容斥 以$i$为最…...

溧阳做网站哪家好/济南谷歌推广

关闭酷狗是提示有错误。大致是说Cannot create file Kugoo.xml&#xff0c;拒绝访问 产生故障原因&#xff1a;我们的用户没有对kugoo目录的控制&#xff0c;同修改权限。解决办法&#xff1a; 选择KUGOO的安装目录&#xff0c;然后在安全控制里面将我们的自己的用户加入到完全…...