数学基础
KL散度
- 描绘一个分布p和另一个分布q之间的偏离程度
- 当 p ( x ) = = q ( x ) p(x)==q(x) p(x)==q(x)时散度取得最小值
JS散度
- 另一种衡量两个概率分布相似性的方法
GAN
- 需要训练两个网络;损失来回波动,不好分辨,不容易收敛;可能会学到一些不希望学到的东西,即不好掌控
鉴别器D
- 预测给定的真实样本的概率,并区分真假样本
生成器G
- 通过学习数据分布,生成假样本以欺骗判别器获得一个高的数据分布,两个模型相互竞争,进行博弈,并相互进行改进。
Autoencoder
- Encoder: 将原始高维输入数据转化为低维,输入大小大于输出大小
- 编码器在处理过程中完成了数据的降维
- Decoder:从代码中恢复数据,可能居于越来越大的输出层。
VAE
- 其思想和其他自编码器模型不同,主要用到变分贝叶斯和图形模型
- VAE通过对Encoder对输入(我们这里以图片为输入)进行高效编码,然后由Decoder使用编码还原出图片,在理想情况下,还原输出的图片应该与原图片极相近。
Diffusion Model
- GAN因为使用对抗训练,训练不稳定,缺少多样性生成;VAE依赖于替代损失;流模型必须使用专门的体系结构来构造可逆转换
- 扩散模型受非平衡热力学启发,其定义了一个马尔可夫链,通过像数据中添加噪声,然后反向学习扩散过程,进而构造样本
Forward diffusion process
- 给定从真实数据中采样的数据点,并向样本中添加少量高斯噪声,产生一系列的有噪声的样本
- 随着t逐渐变大,数据样本逐渐失去可区分的特征,最终当T趋于无穷时,
X
T
X_T
XT等价于正态高斯分布
- 可以推出 x t x_t xt的推导公式,而当样本逐渐变得嘈杂时,更新步幅也随之变大
- 其中 a t = 1 − β t a_t=1-\beta_t at=1−βt, β \beta β逐渐变大,从0.0001到0.002之间,进而 α \alpha α也逐渐变小
- 可以看到
x
t
x_t
xt的公式中
x
t
x_t
xt与
x
t
−
1
x_{t-1}
xt−1有关,同时再加上一点高斯分布噪音
- 同理, x t − 1 x_{t-1} xt−1也可以用 x t − 2 x_{t-2} xt−2表示出来,带入到 x t x_t xt的表达式中,得到红线部分 z 1 , z 2 z_1,z_2 z1,z2两个高斯分布噪音的相加
与随机梯度朗之万动力学的关系
- 可以更新样本马尔可夫链
- 和标准随机梯度下降相比,随机梯度朗之万动力学加入高斯噪声,以免陷入局部最小值
Reverse Process
- 如果能反向这个过程, 那么就可以重建真实数据,因此需要学习一个模型近似这些条件概率,从而运行反向过程。
参考资料
- B站强推!2023公认最通俗易的扩散模型【Diffusion】3小时入门到精通,比GAN
- 什么是扩散模型?