【2】根据 μ t ∼ ( x t , x 0 ) \overset{\sim}{\mu_{t}}(x_{t},{\color{red}x_{0}}) μt∼(xt,x0)的表达式,它里面的 x 0 {\color{red}x_{0}} x0对于 D θ D_{\theta} Dθ网络是未知的,因此第二种做法是让 D θ D_{\theta} Dθ网络的输出等于 x 0 x_{0} x0,这种做法即直接预测原始数据。
有人问:既然可以通过 D θ D_{\theta} Dθ网络直接预测 x 0 x_{0} x0了,那是不是采样过程就直接计算 D θ ( x T , T ) D_{\theta}(x_{T}, T) Dθ(xT,T)的输出即可认为是生成了样本了呢?
答案是:直接一步到位,质量会比较差,还是需要通过马尔科夫高斯条件迭代而获得最终高质量的生成样本;
μ t ∼ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + β t α ˉ t − 1 1 − α ˉ t x 0 \mathrm{\overset{\sim}{\mu_{t}}(x_{t},{\color{red}x_{0}})}=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}{\color{blue}x_{t}}+\frac{\beta_{t}\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t}}{\color{red}x_{0}} μt∼(xt,x0)=1−αˉtαt(1−αˉt−1)xt+1−αˉtβtαˉt−1x0
【3】当我们把 μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ∼(xt,x0)中的 x 0 x_{0} x0用 x t x_{t} xt去表示的时候, μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ∼(xt,x0)就变成了如下只包含 x t x_{t} xt和随机变量 ϵ \epsilon ϵ的式子,记为 μ ∼ ( x t , ϵ ) \overset{\sim}{\mu}(x_{t},\epsilon) μ∼(xt,ϵ)。其中 x t x_{t} xt对于D网络是已知的,而 ϵ \epsilon ϵ是未知的,因此这个时候,我们可以选择建模目标是让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ了(得到 ϵ \epsilon ϵ后,再带入 μ ∼ ( x t , ϵ ) \overset{\sim}{\mu}(x_{t},\epsilon) μ∼(xt,ϵ),就可以用重采样技巧推出 x t − 1 x_{t-1} xt−1, ⋯ \cdots ⋯不断迭代 ⋯ \cdots ⋯就可以求出 x 0 x_{0} x0),这种建模方法俗称随机变量(噪音)法。
总结:上面【1】【2】【3】殊途同归,都是为了预测 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt−1∣xt,x0)的均值 μ ∼ \overset{\sim}{\mu} μ∼
L t − 1 − C = E x 0 , ϵ [ 1 2 σ t 2 ∥ μ ∼ t ( x t ( x 0 , ϵ ) , 1 α ˉ t ( x t ( x 0 , ϵ ) − 1 − α ˉ t . ϵ ) ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 σ t 2 ∥ 1 α t ( x t ( x 0 , ϵ ) − β t 1 − α ˉ t . ϵ ) ⏟ μ ∼ t − μ θ ( x t ( x 0 , ϵ ) , t ) ⏟ μ θ ∥ 2 ] ⑥ \begin{aligned} L_{t-1}- C&=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\overset{\sim}{\mu}_{t}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\sqrt{1-\bar\alpha_{t}}.\epsilon)\right)-\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t) \Vert^{2}\right]\\ \\ &=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\underbrace{\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon\right)}_{\overset{\sim}{\mu}_{t}}-\underbrace{\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t)}_{\mu_{\theta}} \Vert^{2}\right]\quad\quad\quad⑥\\ \end{aligned} Lt−1−C=Ex0,ϵ[2σt21∥μ∼t(xt(x0,ϵ),αˉt1(xt(x0,ϵ)−1−αˉt.ϵ))−μθ(xt(x0,ϵ),t)∥2]=Ex0,ϵ 2σt21∥μ∼t αt1(xt(x0,ϵ)−1−αˉtβt.ϵ)−μθ μθ(xt(x0,ϵ),t)∥2 ⑥
在DDPM论文中,作者选择了方案【3】,即让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ, 预测噪音法。于是,新的逆向条件分布的均值可以表示成(下式中的 ϵ θ \epsilon_{\theta} ϵθ相当于我们定义的广义的 D θ D_{\theta} Dθ网络的具体目标形式):
μ θ ( x t , t ) = μ t ∼ ( x t , 1 α ˉ t ( x t − 1 − α ˉ t . ϵ θ ( x t ) ) ) = 1 α t ( x t − β t 1 − α ˉ t . ϵ θ ( x t , t ) ) ⑦ \mu_{\theta}(\mathbf{x}_{t},t)=\overset{\sim}{\mu_{t}}\left(\mathbf{x}_{t},\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}-\sqrt{1-\bar\alpha_{t}}.\epsilon_{\theta}(\mathbf{x}_{t}))\right)=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon_{\theta}(\mathbf{x}_{t},t)\right)\quad\quad⑦ μθ(xt,t)=μt∼(xt,αˉt1(xt−1−αˉt.ϵθ(xt)))=αt1(xt−1−αˉtβt.ϵθ(xt,t))⑦
在DDPM论文中预测的就是 ϵ \epsilon ϵ, 所以就是让上式⑥中的 μ ∼ t \overset{\sim}{\mu}_{t} μ∼t 尽可能地接近于 μ θ \mu_{\theta} μθ ,所以才有了上式⑦
又因为在前面我们已知:
μ t ∼ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + β t α ˉ t − 1 1 − α ˉ t x 0 \mathrm{\overset{\sim}{\mu_{t}}(x_{t},x_{0})}=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}x_{t}+\frac{\beta_{t}\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t}}x_{0} μt∼(xt,x0)=1−αˉtαt(1−αˉt−1)xt+1−αˉtβtαˉt−1x0
x t = α ˉ t x 0 + 1 − α ˉ t z t x_{t}=\sqrt{\bar\alpha_{t}}x_{0}+\sqrt{1-\bar\alpha_{t}}z_{t} xt=αˉtx0+1−αˉtzt,我们可以知道: x 0 = 1 α ˉ t ( x t − 1 − α ˉ t z t ) x_{0}=\frac{1}{\sqrt{\bar\alpha_{t}}}(x_{t}-\sqrt{1-\bar\alpha_{t}}z_{t}) x0=αˉt1(xt−1−αˉtzt)
所以: μ t ∼ ( x t , x 0 ) → μ t ∼ ( x t , 1 α ˉ t ( x t − 1 − α ˉ t . ϵ θ ( x t ) ) ) \mathrm{\overset{\sim}{\mu_{t}}(x_{t},x_{0})}\rightarrow\overset{\sim}{\mu_{t}}\left(\mathbf{x}_{t},\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}-\sqrt{1-\bar\alpha_{t}}.\epsilon_{\theta}(\mathbf{x}_{t}))\right) μt∼(xt,x0)→μt∼(xt,αˉt1(xt−1−αˉt.ϵθ(xt)))
说明: z t z_{t} zt就是噪声,即下面的 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),至于为什么写成 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),而不是 ϵ \epsilon ϵ?
因为这里我们定义 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt)是一个函数近似,可以根据输入 x t \mathbf{x}_{t} xt来预测出 ϵ \epsilon ϵ
因为 x t \mathbf{x}_{t} xt不含参数,所以它可以看作常量,我们就把参数转移到随机量 ϵ \epsilon ϵ中
- x t ( x 0 , ϵ ) \mathbf{x}_{t}(\mathbf{x}_{0},\epsilon) xt(x0,ϵ)就说明了 x t \mathbf{x}_{t} xt和 ϵ \epsilon ϵ是有一定关系的,现在我们把 x t \mathbf{x}_{t} xt看作常量,那就可以求出来 ϵ \epsilon ϵ了,所以我们就定义了一个函数 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),可以根据输入 x t \mathbf{x}_{t} xt来预测出 ϵ \epsilon ϵ
前面说到逆扩散过程中有 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})=\mathcal{N}(\mathbf{x}_{t-1};\mu_{\theta}(\mathbf{x}_{t},t),\Sigma_{\theta}(\mathbf{x}_{t},t)) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)),实际上在论文中作者设置 Σ θ ( x t , t ) = σ t I \Sigma_{\theta}(\mathbf{x}_{t},t)=\sigma_{t}\mathbf{I} Σθ(xt,t)=σtI,所以有: p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , σ t I ) p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})=\mathcal{N}(\mathbf{x}_{t-1};\mu_{\theta}(\mathbf{x}_{t},t),\sigma_{t}\mathbf{I}) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),σtI),利用参数重整化( z ∼ N ( 0 , I ) \mathbf{z}\sim N(0,I) z∼N(0,I)),得到: x t − 1 = σ t . z + μ θ \mathbf{x}_{t-1}=\sigma_{t}.\mathbf{z}+\mu_{\theta} xt−1=σt.z+μθ, 带入式子⑦即得:
x t − 1 = 1 α t ( x t − β t 1 − α ˉ t . ϵ θ ( x t , t ) ) + σ t . z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_{t}}}(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon_{\theta}(\mathbf{x}_{t},t))+\sigma_{t}.\mathbf{z} xt−1=αt1(xt−1−αˉtβt.ϵθ(xt,t))+σt.z
于是 L t − 1 L_{t-1} Lt−1可以化简成如下表达式:
E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{\beta_{t}^{2}}{2\sigma_{t}^{2}\alpha_{t}(1-\bar\alpha_{t})}\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Ex0,ϵ[2σt2αt(1−αˉt)βt2 ϵ−ϵθ(αˉtx0+1−αˉtϵ,t) 2]
上式化简的过程中, x t \mathbf{x}_{t} xt和 x t ( x 0 , ϵ ) \mathbf{x}_{t}(\mathbf{x}_{0},\epsilon) xt(x0,ϵ)是一样的,可以互相消掉。
DDPM作者又发现,干脆将系数丢掉,训练更加稳定,质量更好,于是有了下面的 L s i m p l e L_{simple} Lsimple:
L s i m p l e ( θ ) = E x 0 , ϵ [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] L_{simple}(\theta)=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Lsimple(θ)=Ex0,ϵ[ ϵ−ϵθ(αˉtx0+1−αˉtϵ,t) 2]