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

符号表

符号含义
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

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

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

相关文章

蓝桥杯 经典算法题 找到给定字符串中的不同字符

题目: 在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下: 当传入的字符串为 aad 和 ad 时,结果为 a。 当传入的字符串为 aaabccdd 和 abdcacade 时&#xff…

并发控制技术

事物的隔离性实现主要依赖于多种并发控制技术,这些技术确保在并发执行的事物中,一个事物的操作不会被其他事物干扰。并发控制技术按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。 基于封锁的并发控制 对于并发可能冲突的操作,比如读-写,…

单木:面试官超爱问的字符串,今天给它彻底讲透

本文已收录于:https://github.com/danmuking/all-in-one(持续更新) 前言 哈喽,大家好,我是 DanMu。今天这边文章,想和大家聊聊有关字符串的问题,字符串似乎很简单,但其实字符串几乎…

期货交易纪律20240620

文章目录 第一步、选品第二步、开仓纪律 — (2024年6月20号 新增二条开仓纪律)第三步、持仓 — (新增持仓纪律) 2024年6月20号,开始写期货交易的第二篇日记。 这三天做了一笔交易:交易的问题,在…

MySQL之复制(七)

复制 定制的复制方案 分离功能 许多应用都混合了在线事务处理(OLTP)和在线数据分析(OLAP)的查询。OLTP查询比较短并且是事务型的。OLAP查询则通常很大,也很慢,并且不要求绝对最新的数据。这两种查询给服务器带来的负担完全不同,因此它们需…

chatgpt: linux 下用纯c 编写一按钮,当按钮按下在一新窗口显示本机主目录下图片子目录中的1.jpg图片

tmd,这chatgpt太强大了。 从下面的c程序与python程序对比,纯c的ui编程也不是太复杂。 再说一次,要想学好编程必须要用上这个chatgpt工具。 在 Linux 环境下使用纯 C 语言编写一个按钮,当按钮按下时,在一个新窗口中显示本机主目…

嵌入式linux系统中UART子系统基本实现

今天主要给大家分享一下,如何使用linux系统中的UART帧结构。 第一:UART串口波形 先观察UART波形,是如何被准确识别成字符D,而不是其他的内容呢? 当两个设备需要通过UART协议进行通讯时,它们需要同时约定好以下内容: 每—位信号的时间长度T(波特率= 1/T) 帧结构中每—…

fastadmin多语言切换设置

fastadmin版本:1.4.0.20230711 以简体,繁体,英文为例 一,在application\config.php 里开启多语言 // 是否开启多语言lang_switch_on > true, // 允许的语言列表allow_lang_list > [zh-cn, en,zh-tw], 二…

动态规划——达拉崩吧

1、题目链接 174. 地下城游戏 2、题目分析 假如说我们正向推状态转移方程,很难推出来,因为这道题有“加血”的说法,只能依靠后面的值判断前面所需要的血量,也就是说,如果正向的dp表示从起点出发,到达&…

【人工智能,机器学习,统计学习,科学表征】开源商用与研发合作

个体工户linjing-lab托管在Github,现公开招募商用与合作人员,目标人群分为以下几个方向: 数学、信息科学、计算机专业的大学高年级学生,熟悉C和面向对象模型,擅长Pybind11编译算子到Python环境。26岁以下的大学本科毕…

Srouce Insight 4出现乱码

今天用SI4打开一个工程文件,一打开发现注释全是乱码。中文全部看不出来,英文和数字可以看得出来。 那是因为中文的编码格式不算特别兼容。所以需要调整编码格式。 于是我在这里调整了编码格式: 找到菜单的Options-Preferences里面的Files 调…

【Android面试八股文】Kotlin内置标准函数let的原理是什么?

确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…

Kubernetes容器运行时:Containerd vs Docke

容器化技术笔记 Kubernetes容器运行时:Containerd vs Docke - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this arti…

Python 获取class_name win32gui

win32gui 是 Python 的一个扩展库,它提供了对 Windows GUI API 的访问,允许你编写脚本来与 Windows 桌面应用程序进行交互。以下是 win32gui 库的一些常用属性和方法6466677073: 常用方法 FindWindow: 根据窗口类名和窗口名获取窗口句柄。 …

数据可视化实验五:seaborn绘制进阶图形

目录 一、绘制动态轨迹图 1.1 代码实现 1.2 绘制结果 二、使用seaborn绘制关系图 2.1 绘制散点图分析产品开发部已离职的员工的评分与平均工作时间 2.1.1 代码实现 2.1.2 绘制结果 ​编辑 2.2 基于波士顿房价数据,绘制房间数和房屋价格的折线图 2.2.1 代码…

vscode用vue框架写一个登陆页面

目录 一、创建登录页面 二、构建好登陆页面的路由 三、编写登录页代码 1.添加基础结构 2.给登录页添加背景 3.解决填充不满问题 4.我们把背景的红颜色替换成背景图: 5.在页面中央添加一个卡片来显示登录页面 6.设置中间卡片页面的左侧 7.设置右侧的样式及…

springBoot+mongoDB项目中,使用MongoFactory、MongoTemplate分页条件查询,增删查改

MongoDB:CRUD 添加删除修改条件查询分页条件查询 只展示实现类代码 添加 Autowiredprivate MongoTemplate mongoTemplate;Autowiredprivate MongoFactory mongoFactory;Overridepublic boolean saveEntity(entityForm form) {try {实体类 en new 实体类();en.setName(form.ge…

【深度学习】GELU激活函数是什么?

torch.nn.GELU 模块在 PyTorch 中实现了高斯误差线性单元(GELU)激活函数。GELU 被用于许多深度学习模型中,包括Transformer,因为它相比传统的 ReLU(整流线性单元)函数能够更好地近似神经元的真实激活行为。…

vue小总结

知识总结 【 1 】es6 语法总结 # let 定义变量 # const定义常量 ------块级作用域---- # var 以后尽量少用,函数作用域var 在 JavaScript 中是函数作用域或全局作用域。而 let 和 const 是块级作用域。 // 使用 var 声明全局变量 var globalVar "Im a globa…

【全网最全最详细】RabbitMQ面试题

一、说下RabbitMQ的架构大致是什么样的? RabbitMQ是一个开源的消息中间件,用于在应用程序之间传递消息。它实现了AMQP(高级消息队列协议)并支持其它消息传递协议,例如STOMP(简单文本定向消息协议&#xff…