前言
参考:
什么是马尔科夫链?首先要有初始概率分布,还要有概率转移矩阵。
且要符合两个特性:
- 状态转移的概率不变
- 下一时刻状态仅取决于上一时刻状态(以及状态转移概率分布),即无记忆性
假设文中-王二狗在4月1日的初始概率分布为S1=[0.6, 0.2, 0.2],那么:
- 4月2号的状态分布矩阵 S2 = S1 * P (俩矩阵相乘)。
- 4月3号的状态分布矩阵 S3 = S2 * P (看见没,跟S1无关,只跟S2有关)。
- 4月4号的状态分布矩阵 S4 = S3 * P (看见没,跟S1,S2无关,只跟S3有关)。
- 4月n号的状态分布矩阵 Sn = Sn-1 * P (看见没,只跟它前面一个状态Sn-1有关)。
以此类推,我们能够一直推断 S n S_n Sn时刻的状态概率分布。
正态分布1
文中表示数据从t-1时刻转移到t时刻的状态转移概率分布时,用到的符号 N ( . . . ) N(...) N(...)表达正态分布,那么括号内的含义是什么?
分号p(x; theta)表示待估参数(是固定的,只是当前未知),应该可以直接认为是p(x),加了;是为了说明这里有个theta的参数,p(x; theta)意思是随机变量X=x的概率
https://stats.stackexchange.com/questions/301382/what-is-the-semicolon-notation-in-joint-probability 也提到了
分号通常是用于分隔右侧的参数的。
所以,上文中分号的左侧 x t x_t xt是主体,右侧是参数,逗号是多个参数的分隔。这时你可能会问,为什么状态转移概率分布是一个正态分布?这个可以从正文解答。
正态分布2
高斯分布也可以用以下方式表达。这是函数的表达形式。
联合概率分布
相对于单一变量的概率分布,联合概率分布意思就是多个随机变量的概率分布。比如有两个变量x,y时,它们同时发生为某个值(或者范围)的概率分布,就是x与y的联合概率分布。
前向传播
重参数
重参数用于令随机采样过程可微,从而能用于梯度下降算法。通过重参数化,将高斯分布中的均值、方差变为参数,这样只需从标准高斯分布中采样数据,并能对均值、方差参数作梯度下降(标准高斯分布作为离散采样源,仍然无法作梯度下降),这样随机采样就是可训练的了。
那么在这种做法下,梯度时如何传递的呢?参考“Reparameterization” trick in Variational Autoencoders的图,大约如下, ϕ \phi ϕ和 x x x应该是高斯分布的均值和方差。在重参数化后,梯度可以沿着红色箭头流动,这样均值、方差参数都是可训练的了。
这些概念最初在VAE中提出,后在diffusion中继续使用
概率转移公式
仿照b站教学视频的叙事轨迹,我们推导前向传播(即扩散)过程中涉及的公式。在扩散过程中,我们不断向数据添加高斯噪声,使其逐渐变为纯噪声,如下图所示。
设 t 0 t_0 t0时刻,图片原数据为 x 0 x_0 x0,在每个时刻向数据添加高斯噪声,公式如下:
x t = a t x t − 1 + 1 − α t z 1 x_t =\sqrt{a_t} x_{t-1}+\sqrt{1-\alpha_t} z_1 xt=atxt−1+1−αtz1
其中:
- α t \alpha_t αt是权重, α t = 1 − β t \alpha_t=1-\beta_t αt=1−βt,其中 β t \beta_t βt逐渐增大,论文中是从0.0001到0.002。这样的效果是,随着时间t增加,状态转移时原数据的影响会逐渐减少,噪声的影响会逐渐增大。
- 噪声z都从标准高斯分布采样而来,即 z 1 , z 2 , … ∼ N ( 0 , I ) ; z_1, z_2, \ldots \sim \mathcal{N}(0, \mathbf{I}) ; z1,z2,…∼N(0,I);。
接下来,通过逐步推导,令 x t x_t xt可以由 x 0 x_0 x0得到,具体推导过程如下,
x t = a t x t − 1 + 1 − α t z 1 where z 1 , z 2 , … ∼ N ( 0 , I ) ; = a t ( a t − 1 x t − 2 + 1 − α t − 1 z 2 ) + 1 − α t z 1 代入① = a t a t − 1 x t − 2 + ( a t ( 1 − α t − 1 ) z 2 + 1 − α t z 1 ) 合并系数 = a t a t − 1 x t − 2 + 1 − α t α t − 1 z ˉ 2 where z ˉ 2 ∼ N ( 0 , I ) ; 根据② = … 从 x t − 2 推广至 x 0 = α ˉ t x 0 + 1 − α ˉ t z ˉ t . \begin{aligned} x_t &=\sqrt{a_t} x_{t-1}+\sqrt{1-\alpha_t} z_1 \quad \text { where } \quad z_1, z_2, \ldots \sim \mathcal{N}(0, \mathbf{I}) ; \\ &=\sqrt{a_t}\left(\sqrt{a_{t-1}} x_{t-2}+\sqrt{1-\alpha_{t-1}} z_2\right)+\sqrt{1-\alpha_t} z_1 \quad \text 代入① \\ &=\sqrt{a_t a_{t-1}} x_{t-2}+\left(\sqrt{a_t\left(1-\alpha_{t-1}\right)} z_2+\sqrt{1-\alpha_t} z_1\right) \quad \text 合并系数 \\ &=\sqrt{a_t a_{t-1}} x_{t-2}+\sqrt{1-\alpha_t \alpha_{t-1}} \bar{z}_2 \quad \text { where } \quad \bar{z}_2 \sim \mathcal{N}(0, \mathbf{I}) ; \quad \text 根据② \\ &=\ldots \quad \text 从x_{t-2}推广至x_0 \\ &=\sqrt{\bar{\alpha}_t} x_0+\sqrt{1-\bar{\alpha}_t} \bar{z}_t . \end{aligned} xt=atxt−1+1−αtz1 where z1,z2,…∼N(0,I);=at(at−1xt−2+1−αt−1z2)+1−αtz1代入①=atat−1xt−2+(at(1−αt−1)z2+1−αtz1)合并系数=atat−1xt−2+1−αtαt−1zˉ2 where zˉ2∼N(0,I);根据②=…从xt−2推广至x0=αˉtx0+1−αˉtzˉt.
其中 α ˉ t = ∏ i = 1 T α i \bar{\alpha}_t=\prod_{i=1}^T \alpha_i αˉt=∏i=1Tαi, z ˉ 2 \bar{z}_2 zˉ2仍然是标准高斯分布。
然后,解析①和②两步的推导。
公式①:
x t − 1 = a t − 1 x t − 2 + 1 − α t − 1 z 2 x_{t-1}=\sqrt{a_{t-1}} x_{t-2}+\sqrt{1-\alpha_{t-1}} z_2 xt−1=at−1xt−2+1−αt−1z2
公式②:
由于独立高斯分布可加性 N ( 0 ,