【碎碎念】感觉Diffusion Model里面的数学公式太多了QwQ,所以自己稍微梳理一下。
我自己是听B站的课程:李宏毅课程听懂的,感觉讲得很清楚
主算法流程如上图,解释以下大致思路:
训练部分:
推理部分:
实际上上述只是一个非常粗略的解释,要真正理解这个算法,还有如下几个问题要解决:
每一步逐渐混入方差为 β i \beta_i βi的高斯噪声,得到下面的式子
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(\mathbf{x}_t|\mathbf{x}_{t-1})=\mathcal N(\mathbf{x}_t;\sqrt{1-\beta_t} \mathbf{x}_{t-1},\beta_t \mathbf{I}) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
用重参数化的写法是:
x t = 1 − β t x t − 1 + β t ϵ t ϵ t ∼ N ( 0 , I ) \mathbf{x_t}=\sqrt{1-\beta_t}\mathbf{x}_{t-1}+\sqrt \beta_t \epsilon_t \\ \epsilon_t\sim\mathcal N(0,\mathbf{I}) xt=1−βtxt−1+βtϵtϵt∼N(0,I)
进一步推到
x t = 1 − β t x t − 1 + β t ϵ t = 1 − β t ( 1 − β t − 1 x t − 2 + β t − 1 ϵ t − 1 ) + β t ϵ t = ( 1 − β t ) ( 1 − β t − 1 ) x t − 2 + 1 − ( 1 − β t ) ( 1 − β t − 1 ) ϵ = ⋯ = α t x 0 + 1 − α t ϵ , α t = ∏ i = 1 t 1 − β t \mathbf{x}_t=\sqrt {1 - \beta_t} \mathbf{x}_{t-1}+\sqrt {\beta_t} \epsilon_t \\ = \sqrt{1-\beta_t}(\sqrt{1-\beta_{t-1}}\mathbf{x}_{t-2}+\sqrt {\beta_{t-1}}\epsilon_{t-1})+\sqrt {\beta_t} \epsilon_t \\ =\sqrt{(1-\beta_t)(1-\beta_{t-1})}\mathbf{x}_{t-2}+\sqrt{1 - (1 - \beta_t)(1-\beta_{t-1})}\epsilon \\ =\cdots \\ = \sqrt{\alpha_t}\mathbf{x}_0+\sqrt{1-\alpha_t}\mathbf\epsilon,\\ \alpha_t=\prod_{i=1}^t 1-\beta_t xt=1−βtxt−1+βtϵt=1−βt(1−βt−1xt−2+βt−1ϵt−1)+βtϵt=(1−βt)(1−βt−1)xt−2+1−(1−βt)(1−βt−1)ϵ=⋯=αtx0+1−αtϵ,αt=i=1∏t1−βt
这是根据高斯的可加性原理推导得出的结论。也就是,不需要一步步加,可以一次性推导到位。
假设整体的 T T T步网络生成的概率分布是 p θ p_\theta pθ,那么其实优化的目标可以是:
max θ E x 0 ∼ p d a t a ( x 0 ) [ l o g p θ ( x 0 ) ] \max_\theta \mathbb{E}_{x_0\sim p_{data}(x_0)}[logp_\theta(\mathbf{x}_0)] θmaxEx0∼pdata(x0)[logpθ(x0)]
这个优化目标可以解释为Sample所有数据集的图片,这些图片被 p θ p_\theta pθ 生成的概率乘积最大(取了个log)
接下来其实利用了一个著名的VLB(变分下界)的定理,这个定理再VAE中使用过,具体的证明可以看视频,这里直接出结论:
log p θ ( x 0 ) ≥ E x 1 ⋯ x T ∼ q ( x 1 ⋯ x T ∣ x 0 ) [ log p θ ( x 0 ⋯ x T ) q ( x 1 ⋯ x T ∣ x 0 ) ] \log p_\theta(\mathbf{x}_0)\geq \mathbb E_{\mathbf{x}_1\cdots \mathbf{x}_T\sim q(\mathbf{x}_1\cdots \mathbf{x}_T|\mathbf{x}_0)}[\log \frac{p_\theta(\mathbf{x}_0\cdots \mathbf{x}_T)}{q(\mathbf{x_1}\cdots \mathbf{x}_T|\mathbf{x}_0)}] logpθ(x0)≥Ex1⋯xT∼q(x1⋯xT∣x0)[logq(x1⋯xT∣x0)pθ(x0⋯xT)]
原论文经过了一番精彩的数学推导(注意,这段推导是取符号转化成最小化的Loss,所以符号要反着看):
关于这段推导变换的精妙之处,先占个坑,暂时没想出来~
注意到 p ( x T ) p(\mathbf{x}_T) p(xT)就是变换到最后的噪声图,而 q ( x T ∣ x 0 ) q(\mathbf{x}_T|\mathbf{x}_0) q(xT∣x0)是一个固定的过程,这两者都和网络没关系,所以可以直接在优化项中舍去。
q ( x t − 1 ∣ x t , x 0 ) = q ( x t − 1 , x t , x 0 ) q ( x t , x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x 0 ) q ( x t ∣ x 0 ) q ( x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) q(x_{t-1}|x_t,x_0)=\frac{q(x_{t-1},x_t,x_0)}{q(x_t,x_0)}=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)q(x_0)}{q(x_t|x_0)q(x_0)}=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)} q(xt−1∣xt,x0)=q(xt,x0)q(xt−1,xt,x0)=q(xt∣x0)q(x0)q(xt∣xt−1)q(xt−1∣x0)q(x0)=q(xt∣x0)q(xt∣xt−1)q(xt−1∣x0)
发现等式后面每项都是已知的,然后开始经过一番魔幻推导
结果就是还是一个高斯分布
梳理一下思路:我们现在有两个高斯分布 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0), p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt−1∣xt),后者就是我们的降噪网络,我们的目标是让我们的降噪网络和 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)的分布尽量接近。
再进一步思考,实际上 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)的意思就是给定初始图片, t → t − 1 t\to t-1 t→t−1这个逆过程的分布
而我们的网络是要生成一个降噪网络,这个优化目标告诉我们,需要在没有初始图片的情况下去拟合这个 t → t − 1 t\to t-1 t→t−1
非常的合理,只不过使用了严谨的数学公式去推导了这个过程罢了。
关于最后一项,说是和VAE类似的处理方法,先占个坑,不解释
继续化简
我们让两者形式一致,最后我们需要predict只剩下最后一小项
这就是Alog1,2的来源
这篇文章到这里就暂告一段落了,参考文献:
https://arxiv.org/pdf/2208.11970.pdf