扩散模型详细推导过程——训练与采样

2024-06-21 06:20

本文主要是介绍扩散模型详细推导过程——训练与采样,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

扩散模型的训练与采样算法

训练目标的推导

需要使得去噪过程所产生的 x ( i ) \boldsymbol{x}^{(i)} x(i)的总体出现概率最大,先不考虑第几个样本,省略上标,即最大化 p ( x ∣ θ 1 : T ) p(\boldsymbol{x}|\theta_{1:T}) p(xθ1:T),也等价于最大化 log ⁡ [ p ( x ∣ θ 1 : T ) ] \log \left[p(\boldsymbol{x}|\theta_{1:T})\right] log[p(xθ1:T)]。直接最大化该式是无从下手的,考虑寻找该式的一个置信下界ELBO:

log ⁡ [ p ( x ∣ θ 1 : T ) ] = log ⁡ [ p ( x , z 1 : T ∣ θ 1 : T ) d z 1 : T ] = log ⁡ [ ∫ q ( z 1 : T ∣ x ) p ( x , z 1 : T ∣ θ 1 : T ) q ( z 1 : T ∣ x ) d z 1 : T ] ≥ ∫ q ( z 1 : T ∣ x ) log ⁡ [ p ( z 0 , z 1 : T ∣ θ 1 : T ) q ( z 1 : T ∣ x ) ] d z 1 : T \begin{align}\log \left[p(\boldsymbol{x}|\theta_{1:T})\right]&=\log\left[p(\boldsymbol{x}, \boldsymbol{z}_{1:T}|\theta_{1:T})d\boldsymbol{z}_{1:T}\right]\\&=\log\left[\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\frac{p(\boldsymbol{x}, \boldsymbol{z}_{1:T}|\theta_{1:T})}{q(\boldsymbol{z}_{1:T}|\boldsymbol{x})}d\boldsymbol{z}_{1:T}\right]\\ &\ge \int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\log\left[\frac{p(\boldsymbol{z}_0, \boldsymbol{z}_{1:T}|\theta_{1:T})}{q(\boldsymbol{z}_{1:T}|\boldsymbol{x})}\right]d\boldsymbol{z}_{1:T}\end{align} log[p(xθ1:T)]=log[p(x,z1:Tθ1:T)dz1:T]=log[q(z1:Tx)q(z1:Tx)p(x,z1:Tθ1:T)dz1:T]q(z1:Tx)log[q(z1:Tx)p(z0,z1:Tθ1:T)]dz1:T

而其中,

log ⁡ [ p ( x , z 1 : T ∣ θ 1 : T ) q ( z 1 : T ∣ x ) ] = log ⁡ ⌊ p ( x ∣ z 1 , θ 1 ) ∏ t = 2 T p ( z t − 1 ∣ z t , θ t ) ⋅ p ( z T ) q ( z 1 ∣ x ) ∏ t = 2 T q ( z t ∣ z t − 1 ) ⌋ = log ⁡ [ p ( x ∣ z 1 , θ 1 ) q ( z 1 ∣ x ) ] + log ⁡ [ ∏ t = 2 T p ( z t − 1 ∣ z t , θ t ) ∏ t = 2 T q ( z t ∣ z t − 1 ) ] + log ⁡ [ p ( z T ) ] \begin{align}\log\left[\frac{p(\boldsymbol{x},\boldsymbol{z}_{1: T}|\theta_{1: T})}{q(\boldsymbol{z}_{1: T}|\boldsymbol{x})}\right]& \begin{aligned}=\log\left\lfloor\frac{p(\boldsymbol{x}|\boldsymbol{z}_1,\theta_1)\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\theta_t)\cdot p(\boldsymbol{z}_T)}{q(\boldsymbol{z}_1|\boldsymbol{x})\prod_{t=2}^Tq(\boldsymbol{z}_t|\boldsymbol{z}_{t-1})}\right\rfloor\end{aligned} \\&\begin{aligned}=\log\left[\frac{p(\boldsymbol{x}|\boldsymbol{z}_1,\theta_1)}{q(\boldsymbol{z}_1|\boldsymbol{x})}\right]+\log\left[\frac{\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\theta_t)}{\prod_{t=2}^Tq(\boldsymbol{z}_t|\boldsymbol{z}_{t-1})}\right]+\log\Bigl[p(\boldsymbol{z}_T)\Bigr]\end{aligned}\end{align} log[q(z1:Tx)p(x,z1:Tθ1:T)]=logq(z1x)t=2Tq(ztzt1)p(xz1,θ1)t=2Tp(zt1zt,θt)p(zT)=log[q(z1x)p(xz1,θ1)]+log[t=2Tq(ztzt1)t=2Tp(zt1zt,θt)]+log[p(zT)]

由于扩散过程的马尔科夫链性质

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

所以该展开式可以继续简化为:

log ⁡ [ p ( x , z 1 : T ∣ θ 1 : T ) q ( z 1 : T ∣ x ) ] = log ⁡ [ p ( x ∣ z 1 , θ 1 ) q ( z 1 ∣ x ) ] + log ⁡ [ ∏ t = 2 T p ( z t − 1 ∣ z t , θ t ) ⋅ q ( z 0 ∣ x ) ∏ t = 2 T p ( z t − 1 ∣ z t , x ) ⋅ q ( z T ∣ x ) ] + log ⁡ [ p ( z T ) ] = log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] + log ⁡ [ ∏ t = 2 T p ( z t − 1 ∣ z t , θ t ) ∏ t = 2 T p ( z t − 1 ∣ z t , x ) ] + log ⁡ [ p ( z T ) q ( z T ∣ x ) ] ≈ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] + ∑ t = 2 T log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] \begin{align}\log\left[\frac{p(\boldsymbol{x},\boldsymbol{z}_{1:T}|\theta_{1:T})}{q(\boldsymbol{z}_{1:T}|\boldsymbol{x})}\right]&=\log\left[\frac{p(\boldsymbol{x}|\boldsymbol{z}_1,\theta_1)}{q(\boldsymbol{z}_1|\boldsymbol{x})}\right]+\log\left[\frac{\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\theta_t)\cdot q(\boldsymbol{z}_{0}|\boldsymbol{x})}{\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})\cdot q(\boldsymbol{z}_T|\boldsymbol{x})}\right]+\log\Bigl[p(\boldsymbol{z}_T)\Bigr]\\&=\log\left[p(\boldsymbol{x}|\boldsymbol{z}_1,\theta_1)\right]+\log\left[\frac{\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\theta_t)}{\prod_{t=2}^Tp(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})}\right]+\log\left[\frac{p(\boldsymbol{z}_T)}{q(\boldsymbol{z}_T|\boldsymbol{x})}\right]\\&\approx\log\left[p(\boldsymbol{x}|\boldsymbol{z}_1,\theta_1)\right]+\sum_{t=2}^T\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\theta_t)}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})}\right]\end{align} log[q(z1:Tx)p(x,z1:Tθ1:T)]=log[q(z1x)p(xz1,θ1)]+log[t=2Tp(zt1zt,x)q(zTx)t=2Tp(zt1zt,θt)q(z0x)]+log[p(zT)]=log[p(xz1,θ1)]+log[t=2Tp(zt1zt,x)t=2Tp(zt1zt,θt)]+log[q(zTx)p(zT)]log[p(xz1,θ1)]+t=2Tlog[p(zt1zt,x)p(zt1zt,θt)]

第二行到第三行中, p ( z T ) p(\boldsymbol{z}_T) p(zT)为标准的高斯分布,而 q ( z T ∣ x ) q(\boldsymbol{z}_T|\boldsymbol{x}) q(zTx)近似为标准的高斯分布,故 log ⁡ [ p ( z T ) q ( z T ∣ x ) ] ≈ log ⁡ 1 = 0 \log\left[\frac{p(\boldsymbol{z}_T)}{q(\boldsymbol{z}_T|\boldsymbol{x})}\right]\approx\log 1=0 log[q(zTx)p(zT)]log1=0

至此,可以完整地写出

log ⁡ [ p ( x ∣ θ 1 : T ) ] ≥ log ⁡ [ ∫ q ( z 1 : T ∣ x ) p ( x , z 1 : T ∣ θ 1 : T ) q ( z 1 : T ∣ x ) d z 1 : T ] ≈ ∫ q ( z 1 : T ∣ x ) ( log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] + ∑ t = 2 T log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] ) d z 1 : T = ∫ q ( z 1 : T ∣ x ) log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] d z 1 : T + ∫ q ( z 1 : T ∣ x ) ∑ t = 2 T log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] d z 1 : T = ∫ q ( z 1 ∣ x ) log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] d z 1 + ∑ t = 2 T ∫ q ( z 1 : T ∣ x ) log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] d z 1 : T = E q ( z 1 ∣ z 0 ) [ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] ] + ∑ t = 2 T ∬ q ( z t − 1 , z t ∣ x ) log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] d z t − 1 d z t = E q ( z 1 ∣ z 0 ) [ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] ] + ∑ t = 2 T ∬ q ( z t ∣ x ) p ( z t − 1 ∣ z t , x ) log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] d z t − 1 d z t = E q ( z 1 ∣ z 0 ) [ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] ] + ∑ t = 2 T ∫ q ( z t ∣ x ) ( ∫ p ( z t − 1 ∣ z t , x ) log ⁡ [ p ( z t − 1 ∣ z t , θ t ) p ( z t − 1 ∣ z t , x ) ] d z t − 1 ) d z t = E q ( z 1 ∣ z 0 ) [ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] ] − ∑ t = 2 T ∫ q ( z t ∣ x ) ⋅ D K L [ p ( z t − 1 ∣ z t , x ) ∣ ∣ p ( z t − 1 ∣ z t , θ t ) ] d z t = E q ( z 1 ∣ z 0 ) [ log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] ] − ∑ t = 2 T E q ( z t ∣ x ) [ D K L [ p ( z t − 1 ∣ z t , x ) ∣ ∣ p ( z t − 1 ∣ z t , θ t ) ] ] = E q ( z 1 ∣ x ) [ log ⁡ [ N ( f 1 ( z 1 , θ 1 ) , σ 1 2 I ) ] ] − ∑ t = 2 T E q ( z t ∣ x ) [ 1 2 σ t 2 ∥ ( 1 − α t − 1 ) 1 − α t 1 − β t z t + α t − 1 β t 1 − α t x − f t [ z t , θ t ] ∥ 2 + C ] ≈ log ⁡ [ N ( f 1 ( z 1 ∗ , θ 1 ) , σ 1 2 I ) ] − ∑ t = 2 T 1 2 σ t 2 ∥ ( 1 − α t − 1 ) 1 − α t 1 − β t z t ∗ + α t − 1 β t 1 − α t x − f t [ z t ∗ , θ t ] ∥ 2 − C \begin{align}\log \left[p(\boldsymbol{x}|\theta_{1:T})\right] &\ge \log\left[\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\frac{p(\boldsymbol{x}, \boldsymbol{z}_{1:T}|\theta_{1:T})}{q(\boldsymbol{z}_{1:T}|\boldsymbol{x})}d\boldsymbol{z}_{1:T}\right]\\ &\approx\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\left(\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]+\sum_{t=2}^{T}\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]\right)d\boldsymbol{z}_{1:T}\\&=\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]d\boldsymbol{z}_{1:T}+\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\sum_{t=2}^{T}\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]d\boldsymbol{z}_{1:T}\\&=\int q(\boldsymbol{z}_{1}|\boldsymbol{x})\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]d\boldsymbol{z}_{1}+\sum_{t=2}^{T}\int q(\boldsymbol{z}_{1:T}|\boldsymbol{x})\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]d\boldsymbol{z}_{1:T}\\ &= E_{q(\boldsymbol{z}_{1}|\boldsymbol{z}_{0})}\left[\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]\right]+\sum_{t=2}^{T}\iint q(\boldsymbol{z}_{t-1},\boldsymbol{z}_{t}|\boldsymbol{x})\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]d\boldsymbol{z}_{t-1}d\boldsymbol{z}_{t}\\ &= E_{q(\boldsymbol{z}_{1}|\boldsymbol{z}_{0})}\left[\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]\right]+\sum_{t=2}^{T}\iint q(\boldsymbol{z}_{t}|\boldsymbol{x})p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]d\boldsymbol{z}_{t-1}d\boldsymbol{z}_{t}\\ &= E_{q(\boldsymbol{z}_{1}|\boldsymbol{z}_{0})}\left[\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]\right]+\sum_{t=2}^{T}\int q(\boldsymbol{z}_{t}|\boldsymbol{x})\left(\int p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})\log\left[\frac{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_{t})}{p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})}\right]d\boldsymbol{z}_{t-1}\right)d\boldsymbol{z}_{t}\\ &= E_{q(\boldsymbol{z}_{1}|\boldsymbol{z}_{0})}\left[\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]\right]-\sum_{t=2}^{T}\int q(\boldsymbol{z}_{t}|\boldsymbol{x})\cdot D_{KL}\left[p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})||p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t, \theta_t)\right]d\boldsymbol{z}_{t}\\&= E_{q(\boldsymbol{z}_{1}|\boldsymbol{z}_{0})}\left[\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]\right]-\sum_{t=2}^{T}E_{q(\boldsymbol{z}_{t}|\boldsymbol{x})}\left[ D_{KL}\left[p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})||p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t, \theta_t)\right]\right]\\ &= E_{q(\boldsymbol{z}_1|\boldsymbol{x})}\left[\log\left[N(f_1(\boldsymbol{z}_1,\theta_1),\sigma_1^2\boldsymbol{I})\right]\right] \\ &- \sum_{t=2}^{T}E_{q(\boldsymbol{z}_{t}|\boldsymbol{x})}\left[\frac{1}{2\sigma_t^2}\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}-f_t[\boldsymbol{z}_t,\theta_t]\right\|^2+C\right]\\ &\approx \log\left[N(f_1(\boldsymbol{z}_1^*,\theta_1),\sigma_1^2\boldsymbol{I})\right]-\sum_{t=2}^{T}\frac{1}{2\sigma_t^2}\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}-f_t[\boldsymbol{z}_t^*,\theta_t]\right\|^2-C\end{align} log[p(xθ1:T)]log[q(z1:Tx)q(z1:Tx)p(x,z1:Tθ1:T)dz1:T]q(z1:Tx)(log[p(xz1,θ1)]+t=2Tlog[p(zt1zt,x)p(zt1zt,θt)])dz1:T=q(z1:Tx)log[p(xz1,θ1)]dz1:T+q(z1:Tx)t=2Tlog[p(zt1zt,x)p(zt1zt,θt)]dz1:T=q(z1x)log[p(xz1,θ1)]dz1+t=2Tq(z1:Tx)log[p(zt1zt,x)p(zt1zt,θt)]dz1:T=Eq(z1z0)[log[p(xz1,θ1)]]+t=2Tq(zt1,ztx)log[p(zt1zt,x)p(zt1zt,θt)]dzt1dzt=Eq(z1z0)[log[p(xz1,θ1)]]+t=2Tq(ztx)p(zt1zt,x)log[p(zt1zt,x)p(zt1zt,θt)]dzt1dzt=Eq(z1z0)[log[p(xz1,θ1)]]+t=2Tq(ztx)(p(zt1zt,x)log[p(zt1zt,x)p(zt1zt,θt)]dzt1)dzt=Eq(z1z0)[log[p(xz1,θ1)]]t=2Tq(ztx)DKL[p(zt1zt,x)∣∣p(zt1zt,θt)]dzt=Eq(z1z0)[log[p(xz1,θ1)]]t=2TEq(ztx)[DKL[p(zt1zt,x)∣∣p(zt1zt,θt)]]=Eq(z1x)[log[N(f1(z1,θ1),σ12I)]]t=2TEq(ztx)[2σt21 1αt(1αt1)1βt zt+1αtαt1 βtxft[zt,θt] 2+C]log[N(f1(z1,θ1),σ12I)]t=2T2σt21 1αt(1αt1)1βt zt+1αtαt1 βtxft[zt,θt] 2C

其中,

log ⁡ [ p ( x ∣ z 1 , θ 1 ) ] = log ⁡ [ N ( f 1 ( z 1 , θ 1 ) , σ 1 2 I ) ] \begin{equation}\log\left[p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_{1})\right]=\log\left[N(f_1(\boldsymbol{z}_1,\theta_1),\sigma_1^2\boldsymbol{I})\right]\end{equation} log[p(xz1,θ1)]=log[N(f1(z1,θ1),σ12I)]

D K L [ p ( z t − 1 ∣ z t , x ) ∣ ∣ p ( z t − 1 ∣ z t , θ t ) ] = 1 2 σ t 2 ∥ ( 1 − α t − 1 ) 1 − α t 1 − β t z t + α t − 1 β t 1 − α t x − f t [ z t , θ t ] ∥ 2 + C \begin{equation}D_{KL}\left[p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t,\boldsymbol{x})||p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_t, \theta_t)\right]=\frac{1}{2\sigma_t^2}\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}-f_t[\boldsymbol{z}_t,\theta_t]\right\|^2+C\end{equation} DKL[p(zt1zt,x)∣∣p(zt1zt,θt)]=2σt21 1αt(1αt1)1βt zt+1αtαt1 βtxft[zt,θt] 2+C

两个均值已使用蒙特卡洛方法近似, z 1 ∗ \boldsymbol{z}_1^* z1 z t ∗ \boldsymbol{z}_t^* zt是分别从 q ( z 1 ∣ x ) q(\boldsymbol{z}_1|\boldsymbol{x}) q(z1x) q ( z t ∣ x ) q(\boldsymbol{z}_t|\boldsymbol{x}) q(ztx)中采样出来的某个样本,实际优化时常数 C C C不用考虑。

最终的目标是 max ⁡ ∏ i = 1 n p ( x ( i ) ∣ θ 1 : T ) \max\prod_{i=1}^np(\boldsymbol{x}^{(i)}|\theta_{1:T}) maxi=1np(x(i)θ1:T),等价于 max ⁡ ∑ i = 1 n log ⁡ [ p ( x ( i ) ∣ θ 1 : T ) ] \max\sum_{i=1}^n\log \left[p(\boldsymbol{x}^{(i)}|\theta_{1:T})\right] maxi=1nlog[p(x(i)θ1:T)],其中 n n n为训练样本的总数。

θ ˉ 1 : T = arg ⁡ min ⁡ − ∑ i = 1 n log ⁡ [ p ( x ( i ) ∣ θ 1 : T ) ] = arg ⁡ min ⁡ − ∑ i = 1 n [ log ⁡ [ N ( f t ( z 1 ( i ) , θ 1 ) , σ 1 2 I ) ] ⏟ ①重建损失 − ∑ t = 2 T 1 2 σ t 2 ∥ ( 1 − α t − 1 ) 1 − α t 1 − β t z t ( i ) + α t − 1 β t 1 − α t x ( i ) ⏟ ② p ( z t − 1 ∣ z t , x ) 的均值 − f t [ z t ( i ) , θ t ] ⏟ ③神经网络估计的均值 ∥ 2 ] \begin{align}\bar{\theta}_{1:T}&=\arg\min-\sum_{i=1}^n\log \left[p(\boldsymbol{x}^{(i)}|\theta_{1:T})\right]\\ &= \arg\min\\ &-\sum_{i=1}^n\left[\underbrace{\log\left[N(f_t(\boldsymbol{z}_1^{(i)},\theta_1),\sigma_1^2\boldsymbol{I})\right]}_{①重建损失}-\sum_{t=2}^{T}\frac{1}{2\sigma_t^2}\left\|\underbrace{\frac{(1-\alpha_{t-1})}{1-\alpha_t}\sqrt{1-\beta_t}\boldsymbol{z}_t^{(i)}+\frac{\sqrt{\alpha_{t-1}}\beta_t}{1-\alpha_t}\boldsymbol{x}^{(i)}}_{②p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x})的均值}-\underbrace{f_t[\boldsymbol{z}_t^{(i)},\theta_t]}_{③神经网络估计的均值}\right\|^2\right] \end{align} θˉ1:T=argmini=1nlog[p(x(i)θ1:T)]=argmini=1n 重建损失 log[N(ft(z1(i),θ1),σ12I)]t=2T2σt21 p(zt1zt,x)的均值 1αt(1αt1)1βt zt(i)+1αtαt1 βtx(i)神经网络估计的均值 ft[zt(i),θt] 2

①重建损失:实际上是近似已知 z 1 \boldsymbol{z}_1 z1的情况下 x \boldsymbol{x} x的概率密度函数。

p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)的均值。

③神经网络估计的均值。

该目标函数实际上是在做两件事:一是使得最终 x \boldsymbol{x} x的出现概率最大;二是使得解码过程中神经网络估计的均值尽可能逼近 p ( z t − 1 ∣ z t , x ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{x}) p(zt1zt,x)的均值。

由于 z t = α t x + 1 − α t ϵ t , t = 1 , 2 , ⋯ , T \boldsymbol{z}_t=\sqrt{\alpha_t}\boldsymbol{x}+\sqrt{1-\alpha_t}\boldsymbol{\epsilon}_t, t=1,2,\cdots,T zt=αt x+1αt ϵt,t=1,2,,T,将 x \boldsymbol{x} x替换为 z t \boldsymbol{z}_t zt的表达式:

x = 1 α t z t − 1 − α t α t ϵ t \begin{equation}\boldsymbol{x}=\frac{1}{\sqrt{\alpha_t}}\boldsymbol{z}_t-\frac{\sqrt{1-\alpha_t}}{\sqrt{\alpha_t}}\boldsymbol{\epsilon}_t\end{equation} x=αt 1ztαt 1αt ϵt

将该表达式代入目标函数,并利用 α t − 1 α t = 1 1 − β t \frac{\sqrt{\alpha_{t-1}}}{\sqrt{\alpha_t}}=\frac{1}{\sqrt{1-\beta_t}} αt αt1 =1βt 1,可继续简化为

− ∑ i = 1 n [ log ⁡ [ N ( f t ( z 1 ( i ) , θ 1 ) , σ 1 2 I ) ] ⏟ ①重建损失 − ∑ t = 2 T 1 2 σ t 2 ∥ 1 1 − β t z t ( i ) − β t ( 1 − β t ) ( 1 − α t ) ϵ t ( i ) ⏟ ② p ( z t − 1 ∣ z t , z 0 ) 的均值 − f t [ z t ( i ) , θ t ] ⏟ ③神经网络预测的均值 ∥ 2 ] -\sum_{i=1}^n\left[\underbrace{\log\left[N(f_t(\boldsymbol{z}_1^{(i)},\theta_1),\sigma_1^2\boldsymbol{I})\right]}_{①重建损失}-\sum_{t=2}^{T}\frac{1}{2\sigma_t^2}\left\|\underbrace{\frac{1}{\sqrt{1-\beta_t}}\boldsymbol{z}_t^{(i)}-\frac{\beta_t}{\sqrt{(1-\beta_t)(1-\alpha_t)}}\boldsymbol{\epsilon}_t^{(i)}}_{②p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\boldsymbol{z}_{0})的均值}-\underbrace{f_t[\boldsymbol{z}_t^{(i)},\theta_t]}_{③神经网络预测的均值}\right\|^2\right] i=1n 重建损失 log[N(ft(z1(i),θ1),σ12I)]t=2T2σt21 p(zt1zt,z0)的均值 1βt 1zt(i)(1βt)(1αt) βtϵt(i)神经网络预测的均值 ft[zt(i),θt] 2

其中③由 z t \boldsymbol{z}_t zt g t [ z t , θ t ] g_t[\boldsymbol{z}_t,\theta_t] gt[zt,θt]计算得到:

f t [ z t , θ t ] = 1 1 − β t z t − β t ( 1 − β t ) ( 1 − α t ) g t [ z t , θ t ] \begin{equation}f_t[\boldsymbol{z}_t,\theta_t]=\frac{1}{\sqrt{1-\beta_t}}\boldsymbol{z}_t-\frac{\beta_t}{\sqrt{(1-\beta_t)(1-\alpha_t)}}g_t[\boldsymbol{z}_t,\theta_t]\end{equation} ft[zt,θt]=1βt 1zt(1βt)(1αt) βtgt[zt,θt]

其中 g t g_t gt是用于估计噪声 ϵ t \boldsymbol{\epsilon}_t ϵt的神经网络,而 z t \boldsymbol{z}_t zt在采样阶段是已知的。参数为了方便统一仍记为 θ t \theta_t θt。将该表达式代入,目标函数变为:

θ ˉ 1 : T = arg ⁡ min ⁡ − ∑ i = 1 n [ log ⁡ [ N ( f 1 ( z 1 ( i ) , θ 1 ) , σ 1 2 I ) ] ⏟ ①重建损失 − ∑ t = 2 T β t 2 2 σ t 2 ( 1 − β t ) ( 1 − α t ) ∥ g t [ z t ( i ) , θ t ] ⏟ ②神经网络预测的噪声 − ϵ t ( i ) ⏟ ③对样本 x ( i ) 在第 t 步添加的噪声 ∥ 2 ] \begin{align}\bar{\theta}_{1:T}=\arg\min-\sum_{i=1}^n\left[\underbrace{\log\left[N(f_1(\boldsymbol{z}_1^{(i)},\theta_1),\sigma_1^2\boldsymbol{I})\right]}_{①重建损失}-\sum_{t=2}^{T}\frac{\beta_t^2}{2\sigma_t^2(1-\beta_t)(1-\alpha_t)}\left\|\underbrace{g_t[\boldsymbol{z}_t^{(i)},\theta_t]}_{②神经网络预测的噪声}-\underbrace{\boldsymbol{\epsilon}_t^{(i)}}_{③对样本\boldsymbol{x}^{(i)}在第t步添加的噪声}\right\|^2\right]\end{align} θˉ1:T=argmini=1n 重建损失 log[N(f1(z1(i),θ1),σ12I)]t=2T2σt2(1βt)(1αt)βt2 神经网络预测的噪声 gt[zt(i),θt]对样本x(i)在第t步添加的噪声 ϵt(i) 2

对于上式中①,由多元高斯分布的定义可以算出, Σ = σ 1 2 I \Sigma=\sigma_1^2I Σ=σ12I ∣ Σ ∣ 1 / 2 |\Sigma|^{1/2} ∣Σ1/2为一个常数, Σ − 1 = 1 σ 1 2 I \Sigma^{-1}=\frac{1}{\sigma_1^2}\boldsymbol{I} Σ1=σ121I,故可以写为:

N ( f 1 ( z 1 ( i ) , θ 1 ) , σ 1 2 I ) = − log ⁡ [ ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 ] − 1 2 σ 1 2 ∥ x ( i ) − f 1 ( z 1 ( i ) , θ 1 ) ∥ 2 \begin{align}N(f_1(\boldsymbol{z}_1^{(i)},\theta_1),\sigma_1^2\boldsymbol{I})=-\log\left[(2\pi)^{n/2}|\Sigma|^{1/2}\right]-\frac{1}{2\sigma_1^2}\left\|\boldsymbol{x}^{(i)}-f_1(\boldsymbol{z}_1^{(i)},\theta_1)\right\|^2\end{align} N(f1(z1(i),θ1),σ12I)=log[(2π)n/2∣Σ1/2]2σ121 x(i)f1(z1(i),θ1) 2

而由(47)(48),可知

1 2 σ 1 2 ∥ x ( i ) − f 1 ( z 1 ( i ) , θ 1 ) ∥ 2 = 1 2 σ 1 2 ∥ 1 α 1 z 1 ( i ) − 1 − α 1 α 1 ϵ 1 ( i ) − 1 1 − β 1 z 1 ( i ) + β 1 ( 1 − β 1 ) ( 1 − α 1 ) g 1 [ z 1 ( i ) , θ 1 ] ∥ 2 = β 1 2 2 σ 1 2 ( 1 − β 1 ) ( 1 − α 1 ) ∥ g 1 [ z 1 ( i ) , θ 1 ] − ϵ 1 ( i ) ∥ 2 \begin{align}\frac{1}{2\sigma_1^2}\left\|\boldsymbol{x}^{(i)}-f_1(\boldsymbol{z}_1^{(i)},\theta_1)\right\|^2&=\frac{1}{2\sigma_1^2}\left\|\frac{1}{\sqrt{\alpha_1}}\boldsymbol{z}_1^{(i)}-\frac{\sqrt{1-\alpha_1}}{\sqrt{\alpha_1}}\boldsymbol{\epsilon}_1^{(i)}- \frac{1}{\sqrt{1-\beta_1}}\boldsymbol{z}_1^{(i)}+\frac{\beta_1}{\sqrt{(1-\beta_1)(1-\alpha_1)}}g_1[\boldsymbol{z}_1^{(i)},\theta_1]\right\|^2\\&=\frac{\beta_1^2}{2\sigma_1^2(1-\beta_1)(1-\alpha_1)}\left\|g_1[\boldsymbol{z}_1^{(i)},\theta_1]-\boldsymbol{\epsilon}_1^{(i)}\right\|^2\end{align} 2σ121 x(i)f1(z1(i),θ1) 2=2σ121 α1 1z1(i)α1 1α1 ϵ1(i)1β1 1z1(i)+(1β1)(1α1) β1g1[z1(i),θ1] 2=2σ12(1β1)(1α1)β12 g1[z1(i),θ1]ϵ1(i) 2

至此,目标可以进一步简化为

θ ˉ 1 : T = arg ⁡ min ⁡ ∑ i = 1 n ∑ t = 1 T β t 2 2 σ t 2 ( 1 − β t ) ( 1 − α t ) ∥ g t [ z t ( i ) , θ t ] − ϵ t ( i ) ∥ 2 \begin{equation}\bar{\theta}_{1:T}=\arg\min \sum_{i=1}^{n}\sum_{t=1}^{T}\frac{\beta_t^2}{2\sigma_t^2(1-\beta_t)(1-\alpha_t)}\left\|g_t[\boldsymbol{z}_t^{(i)},\theta_t]-\boldsymbol{\epsilon}_t^{(i)}\right\|^2 \end{equation} θˉ1:T=argmini=1nt=1T2σt2(1βt)(1αt)βt2 gt[zt(i),θt]ϵt(i) 2

其中 − log ⁡ [ ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 ] -\log\left[(2\pi)^{n/2}|\Sigma|^{1/2}\right] log[(2π)n/2∣Σ1/2]为一个常数,已从目标中省去。另外,在实际的实验中发现,优化目标的系数并不重要,可以在训练中设置为1以简化目标。

训练

根据编码器和训练目标,可以得到训练算法如下:

对所有的观测数据 x ( i ) \boldsymbol{x}^{(i)} x(i) z 0 ( i ) = x ( i ) , i = 1 , ⋯ , n \boldsymbol{z}_{0}^{(i)}=\boldsymbol{x}^{(i)}, i=1,\cdots,n z0(i)=x(i),i=1,,n,loss=0,循环执行:

——循环 t = 1 , 2 , ⋯ , T t=1,2,\cdots,T t=1,2,,T,执行:

————计算 z t ( i ) \boldsymbol{z}_t^{(i)} zt(i) z t ( i ) = α t x ( i ) + 1 − α t ϵ t ( i ) \boldsymbol{z}_t^{(i)}=\sqrt{\alpha_t}\boldsymbol{x}^{(i)}+\sqrt{1-\alpha_t}\boldsymbol{\epsilon}_t^{(i)} zt(i)=αt x(i)+1αt ϵt(i)。其中 ϵ ( i ) ∼ N ( 0 , I ) \boldsymbol{\epsilon}^{(i)}\sim N(\boldsymbol{0},\boldsymbol{I}) ϵ(i)N(0,I)

————训练 g t [ z t ( i ) , θ t ] g_t[\boldsymbol{z}_t^{(i)},\theta_t] gt[zt(i),θt],并累积损失loss+= β t 2 2 σ t 2 ( 1 − β t ) ( 1 − α t ) ∥ g t [ z t ( i ) , θ t ] − ϵ t ( i ) ∥ 2 \frac{\beta_t^2}{2\sigma_t^2(1-\beta_t)(1-\alpha_t)}\left\|g_t[\boldsymbol{z}_t^{(i)},\theta_t]-\boldsymbol{\epsilon}_t^{(i)}\right\|^2 2σt2(1βt)(1αt)βt2 gt[zt(i),θt]ϵt(i) 2

执行反向传播和梯度下降,更新 θ t \theta_t θt

采样

根据解码器,可以得到采样算法:

N ( 0 , I ) N(\boldsymbol{0},\boldsymbol{I}) N(0,I)采样出 z T \boldsymbol{z}_T zT

循环 t = T − 1 , T − 2 , ⋯ , 1 t=T-1,T-2,\cdots,1 t=T1,T2,,1,执行:

——将 z t \boldsymbol{z}_t zt输入神经网络 g t g_t gt,获取 g t [ z t , θ t ] g_t[\boldsymbol{z}_t,\theta_t] gt[zt,θt]

——估计 p ( z t − 1 ∣ z t , θ t ) p(\boldsymbol{z}_{t-1}|\boldsymbol{z}_{t},\theta_t) p(zt1zt,θt)的均值 μ \boldsymbol{\mu} μ μ = 1 1 − β t z t − β t ( 1 − β t ) ( 1 − α t ) g t [ z t , θ t ] \boldsymbol{\mu}=\frac{1}{\sqrt{1-\beta_t}}\boldsymbol{z}_t-\frac{\beta_t}{\sqrt{(1-\beta_t)(1-\alpha_t)}}g_t[\boldsymbol{z}_t,\theta_t] μ=1βt 1zt(1βt)(1αt) βtgt[zt,θt]

——如果 t > 1 t>1 t>1

————从 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 z t − 1 = μ + σ t ϵ \boldsymbol{z}_{t-1}=\boldsymbol{\mu}+\sigma_t\boldsymbol{\epsilon} zt1=μ+σtϵ,其中 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon}\sim N(\boldsymbol{0},\boldsymbol{I}) ϵN(0,I)

——否则:

————从 p ( x ∣ z 1 , θ 1 ) p(\boldsymbol{x}|\boldsymbol{z}_{1},\theta_1) p(xz1,θ1)中采样出 x \boldsymbol{x} x x = μ \boldsymbol{x}=\boldsymbol{\mu} x=μ

在实际训练时,并不会真的训练多个对应不同时刻的神经网络 g t [ z t , θ t ] , t = 1 , 2 , ⋯ , T g_t[\boldsymbol{z}_t,\theta_t], t=1,2,\cdots,T gt[zt,θt],t=1,2,,T,而是用一个加上时间信息的神经网络或 g [ z t , t , θ t ] g[\boldsymbol{z}_t,t,\theta_t] g[zt,t,θt]来代替。

这篇关于扩散模型详细推导过程——训练与采样的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080435

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费