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

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

训练目标的推导

需要使得去噪过程所产生的 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.mzph.cn/bicheng/31002.shtml

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

相关文章

【Java】计算程序耗时多少

使用hutool自带的工具类实现 import cn.hutool.core.date.StopWatch; Slf4j public class TestApp {Testpublic void test1() {StopWatch stopWatch new StopWatch();try {// 开始计时stopWatch.start("handleReq");// 执行要测量的代码块performTask();// 停止计时…

国际版多商户商城小程序源码(Android+IOS+H5)

一站式全球购物新体验 功能介绍 精准分类、我的团队、开通会员我的返利、我的订单、快速购买 邀请返利、购物车、我的提现 一、引言:为何选择国际版多商户商城小程序? 随着全球化的步伐不断加快,越来越多的人开始追求国际化的购物体验。国…

FreeBSD在zfs挂接第二块ssd 硬盘

为FreeBSD机器新增加了一块ssd硬盘:骑尘 256G 先格式化分区硬盘 进入bsdconfig 选Disk Management 选择ada1 ,也就是新增加的硬盘 选择auto 然后选择Entire Disk 提示信息 The existing partition scheme on this disk (MBR) │ …

密码学与信息安全面试题及参考答案(2万字长文)

目录 什么是密码学?它的主要目标是什么? 请解释明文、密文、加密和解密的概念。 密码系统的安全性通常基于哪三种假设? 什么是Kerckhoffs原则?它对现代密码学设计有何意义? 简述密码学中的“混淆”和“扩散”概念。 什么是AES(高级加密标准)?AES有几种常见的密钥…

代码随想录训练营Day 64|卡码网98. 所有可达路径(深搜)

1.所有可达路径 98. 所有可达路径 | 代码随想录 代码&#xff1a; &#xff08;深搜&#xff09;邻接矩阵表示 #include <iostream> #include <vector> using namespace std; vector<int> path; vector<vector<int>> result; void dfs(const ve…

图论算法学习

图论 dfs是可一个方向去搜&#xff0c;不到黄河不回头&#xff0c;直到遇到绝境了&#xff0c;搜不下去了&#xff0c;再换方向&#xff08;换方向的过程就涉及到了回溯&#xff09;。bfs是先把本节点所连接的所有节点遍历一遍&#xff0c;走到下一个节点的时候&#xff0c;再…

01_RISC-V 入门及指令集学习

参考文档 risc-v入门&#xff1a;https://blog.csdn.net/bebebug/article/details/128039038RISC-V OS&#xff1a;https://blog.csdn.net/bebebug/article/details/130551378riscv-spec文档&#xff1a;https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pd…

小摩法兴纷纷转多,看涨港股的时机来了吗?

恒生指数今日高开一度上涨89点报18520点&#xff0c;创近两周高。之后持续震荡下行&#xff1b;恒指临近中 午跌幅扩大&#xff0c;恒生科技指数一度跌近1.5%。截止收盘&#xff0c;恒生指数跌0.52%&#xff0c;盘面上&#xff0c;石油、煤炭、环保、建筑节能等板块涨幅居前&a…

java中的Random

Random 是 Java 中的一个内置类&#xff0c;它位于 java.util 包中&#xff0c;主要用于生成伪随机数。伪随机数是指通过一定算法生成的、看似随机的数&#xff0c;但实际上这些数是由确定的算法生成的&#xff0c;因此不是真正的随机数。然而&#xff0c;由于这些数在统计上具…

新手下白对Latex下手啦!

第一次使用latex&#xff0c;浅浅地记录一下子吧。 首先我们一般会下载一个latex模板&#xff0c;如果想知道咋下载&#xff0c;评论去告诉俺哟&#xff01; 新手小白首先要看懂结构&#xff0c;不然完全下不了手&#xff0c;本文就以IEEE的模板&#xff0c;从头往下讲咯~ 第…

网页的CSS和JavaScript文件没有自动更新, 解决办法

项目场景&#xff1a; 无人值守的场馆预定以及管理 问题描述 更新了CSS和JavaScript&#xff0c;访问始终样式不对 原因分析&#xff1a; 浏览器缓存了你的CSS和JavaScript文件 浏览器缓存了你的CSS和JavaScript文件。当文件的修改时间戳&#xff08;last-modified&#xff…

QT处理Unix信号

从Unix信号处理程序中调用Qt函数 你不能从Unix信号处理程序中调用Qt函数。适用于标准POSIX规则:只能从信号处理程序调用异步信号安全的函数。有关可以从Unix信号处理程序调用的函数的完整列表&#xff0c;请参阅Signal Actions。 但不要绝望&#xff0c;有一种方法可以在Qt中使…

力扣503.下一个更大元素II

力扣503.下一个更大元素II 循环数组实现&#xff1a;断环成链 开二倍数组做单调栈 class Solution {public:vector<int> nextGreaterElements(vector<int>& nums) {int n nums.size();vector<int> res(n);stack<int> st;for(int i 2*n-1;i>…

OpenAI 推出“模型规范”:塑造责任制的人工智能的框架

为了提升人工智能开发的责任性和透明度&#xff0c;OpenAI 最近发布了一份名为“模型规范”的初步草案。这份文件首次明确了其 API 和 ChatGPT 模型行为的指导原则&#xff0c;并通过博客形式对外公布。 OpenAI 在博客中解释说&#xff1a;“我们之所以发布此文档&#xff0c;…

云渲染全攻略:平台精挑细选与技巧指南

在数字化浪潮中&#xff0c;创意产业的每一步进步都得益于技术革新。云渲染技术以其卓越的效率和灵活性&#xff0c;已成为推动影视、建筑、游戏等创意行业快速发展的关键力量。本文将为您提供一份详尽的云渲染指导手册&#xff0c;涵盖平台挑选策略和操作技巧&#xff0c;助您…

Centos7.9安装kerberos

文章目录 一、背景二、Kerberos安装部署2.1kerberos服务端必要软件安装2.2配置krb5.conf2.3配置kdc.conf2.4配置kadm5.acl2.5创建Kerberos数据库2.6启动Kerberos服务2.7创建Kerberos管理员principal2.8客户端安装kerberos2.9Kerberos功能验证 本人其他相关文章链接 一、背景 亲…

Redis 数据恢复及持久化策略分析

在分布式系统中&#xff0c;Redis作为高性能的键值存储数据库&#xff0c;广泛应用于缓存、会话管理、消息队列等场景。对于Redis数据的可靠性&#xff0c;持久化是至关重要的一环。当Redis宕机时&#xff0c;如何恢复数据成为一个关键问题。这篇文章将详细分析Redis的数据恢复…

科普文章:怎么远程监控电脑屏幕?三种监控电脑屏幕的方法

远程监控公司电脑屏幕是一项重要的管理手段&#xff0c;它不仅有助于提升工作效率&#xff0c;还能确保公司信息安全和合规性。随着远程办公的普及&#xff0c;这一需求变得日益重要。下面我将详细介绍几种实现远程监控公司电脑屏幕的方法&#xff0c;以及实施过程中需要注意的…

线程池的简介

定义 线程池就是使用多线程的方式&#xff0c;将任务添加到队列中任务都是runnable或者callable的实现类 优点 线程和任务分离&#xff0c;任务可以复用线程池统一管理线程&#xff0c;线程可以复用避免因为开启和销毁线程造成的资源浪费 官方线程池的参数分析 深度理解 线程池…

JVM 相关知识整理

文章目录 前言JVM 相关知识整理1. 新生代和老年代2. 对象的分配过程3. Full GC /Major GC 触发条件4. 逃逸分析4.1.示例4.2. 使用逃逸分析&#xff0c;编译器可以对代码做如下优化 5. 对象的内存分配6. Minor GC 与 Major GC/Full GC的比较:7. 什么对象进入老年代7.1. 大对象直…