第五章 深度学习
十一、扩散模型
4. 附录:Diffusion的数学推导过程
Diffusion模型数学推导过程较为复杂,不要求掌握,但理解数学推导过程能更深入理解模型。故在此给出其详细推导过程。
4.1 数学前置知识
4.1.1 一元二次方程的方差公式
一元二次方程的标准形式为:
a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0
其中, a , b , c a, b, c a,b,c为实数,且 a ≠ 0 a \neq 0 a=0, 其方差形式可以通过配方得到:
a ( x − b 2 a ) 2 + ( 4 a b − b 2 4 a ) = 0 a(x - \frac{b}{2a})^2 + (\frac{4ab - b^2}{4a}) = 0 a(x−2ab)2+(4a4ab−b2)=0
其中, x x x是方程的解, a , b , c a, b, c a,b,c与标准形式相同.
4.1.2 概率统计
条件独立性
P ( x , y ∣ z ) = p ( x ∣ z ) p ( y ∣ z ) P(x, y | z) = p(x|z) p(y|z) P(x,y∣z)=p(x∣z)p(y∣z)
贝叶斯公式
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x) = \frac{p(x|y)p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)p(y)
条件概率的链式法则
p ( x 1 , x 2 , . . . , x n ) = p ( x 1 ) ∏ i = 2 n p ( x i ∣ x 1 , x 2 , . . . , x i − 1 ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 1 , x 2 ) . . . p ( x n ∣ x 1 , x 2 , . . . , x n − 1 ) p(x_1, x_2, ..., x_n) = p(x_1) \prod_{i=2}^n \ p(x_i|x_1, x_2, ..., x_{i-1}) \\ = p(x_1)p(x_2|x_1)p(x_3|x_1,x_2)...p(x_n|x_1, x_2, ..., x_{n-1}) p(x1,x2,...,xn)=p(x1)i=2∏n p(xi∣x1,x2,...,xi−1)=p(x1)p(x2∣x1)p(x3∣x1,x2)...p(xn∣x1,x2,...,xn−1)
高斯分布
N ( x ∣ μ , σ 2 ) = 1 2 π σ 2 e x p ( − ( x − μ ) 2 2 σ 2 ) N(x|\mu, \sigma^2) = \frac{1}{\sqrt{2 \pi \sigma^2}} \ \ exp(-\frac{(x-\mu)^2}{2 \sigma^2}) N(x∣μ,σ2)=2πσ21 exp(−2σ2(x−μ)2)
其中, x x x为随机变量, μ \mu μ为期望, σ \sigma σ为方差. 两个高斯分布的乘积仍为高斯分布,两个高斯分布相除$ h(x) = f(x) / g(x)$,如果标准差的比值 σ 1 / σ 2 \sigma1 / \sigma2 σ1/σ2等于一个常数k,则h(x)也是高斯分布.
4.1.3 概率图
马尔科夫性质是指一个过程(通常是时间序列)在给定当前状态下,未来状态的条件概率分布仅仅依赖于当前状态,而不依赖于过去的状态. 也就是说,当前状态是给定的,未来状态与过去状态是条件独立的. 它应用了条件独立假设.
p ( x t ∣ x 1 , x 2 , . . . , x t − 1 ) = p ( x t ∣ x t − 1 ) p(x_t | x_1, x_2, ..., x_{t-1}) = p(x_t | x_{t-1}) p(xt∣x1,x2,...,xt−1)=p(xt∣xt−1)
马尔科夫链式法则:设 x x x表示时间为 t t t的状态, p ( x 0 , x 1 , . . . , x n ) p(x_0, x_1, ... , x_n) p(x0,x1,...,xn)表示在时间 t = 0 , 1 , ⋯ , n t=0, 1, \cdots, n t=0,1,⋯,n中状态的联合概率分布,那么根据马尔科夫性质和条件概率链式法则,可得马尔科夫链式法则的概率密度函数为:
p ( x 1 , x 2 , ⋯ , x n ) = p ( x 1 ) ∏ i = 2 n p ( x i ∣ x i − 1 ) p(x_1, x_2, \cdots, x_n) = p(x_1) \ \prod_{i=2}^n \ p(x_i|x_{i-1}) p(x1,x2,⋯,xn)=p(x1) i=2∏n p(xi∣xi−1)
4.1.4 变分推断
KL散度(Kullback-Leibler divergence),也叫相对熵,是衡量两个概率分布差异的一种方法. 对于两个概率分布 P P P和 Q Q Q,KL散度定义为:
D K L ( P ∣ ∣ Q ) = ∫ − ∞ ∞ p ( x ) l o g ( p ( x ) q ( x ) ) d x = E x ∼ p [ l o g ( p ( x ) q ( x ) ) ] D_{KL}(P||Q) = \int_{-\infty}^{\infty} p(x) log(\frac{p(x)}{q(x)}) dx = \mathbb E_{x \sim p} \bigg[ log(\frac{p(x)}{q(x)}) \bigg] DKL(P∣∣Q)=∫−∞∞p(x)log(q(x)p(x))dx=Ex∼p[log(q(x)p(x))]
其中, P P P和 Q Q Q是两个概率分布, p ( x ) p(x) p(x)和 q ( x ) q(x) q(x)分别为P和Q的概率密度函数. 当 P = Q P=Q P=Q时,KL散度为0,表示两个分布完全相同;当 P P P和 Q Q Q之间差距越大,KL散度越大,它实际上就是两个分布比值求log运算后的期望.
如果两个分布为高斯分布, p ( x ) = N ( u 1 , σ 1 2 ) , q ( x ) = N ( u 2 , σ 2 2 ) p(x) = N(u_1, \sigma_1 ^2), q(x) = N(u_2, \sigma_2 ^2) p(x)=N(u1,σ12),q(x)=N(u2,σ22),则两者的KL散度为:
D K L ( p ∣ ∣ q ) = l n σ 2 σ 1 + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 D_{KL}(p||q) = ln \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1 ^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2 ^2} - \frac{1}{2} DKL(p∣∣q)=lnσ1σ2+2σ22σ12+(μ1−μ2)2−21
其中, D K L ( p ∣ q ) D_{KL}(p|q) DKL(p∣q)表示以 p ( x ) p(x) p(x)为真实分布, q ( x ) q(x) q(x)为近似分布的KL散度.
4.1.5 重参数化技巧
在神经网络中,通常使用反向传播算法来计算参数的梯度,并用梯度下降法更新参数. 然而,对于含有随机变量的模型,如变分自编码器、GAN或文本扩散模型,直接使用反向传播算法则不行,因为随机变量不可导,无法计算梯度. 重参数化技巧通过把随机变量表示为一个确定性函数,和一个固定随机噪声变量之间的映射关系,使随机变量与模型参数之间的关系变得可导. 假设从一个均值为 μ \mu μ,标准差为 σ \sigma σ的高斯分布中采样一个向量 z z z,则可将采样过程表示为:
z = μ + σ ϵ z = \mu + \sigma \epsilon z=μ+σϵ
其中, ϵ \epsilon ϵ表示一个从均值为0,标准差为1的标准正态分布中采样的噪声向量. 这个过程本质上是将原来的采样过程分解为两个部分:一部分是确定的 μ \mu μ和 σ \sigma σ,另一部分是不确定的噪声 ϵ \epsilon ϵ.