本随记大部分内容整合自b站up:deep_thoughts以及csdn博客t.csdnimg.cn/yAIKL
基础知识:
马尔科夫链:下一时刻的状态只与当前时刻状态有关,与此时刻之前的状态无关。
重参数技巧:重参数技巧通过重新参数化网络,将随机性从网络参数中移除,从而改善训练的稳定性和收敛性。----改变模型参数的表达方式
- 采样过程不可导,无法直接在神经网络中应用反向传播算法来优化具有采样操作的模型。(采样存在随机性,且本来就是一个离散的过程)
VAE与多层VAE
训练时用x生成z,推理时由z生成x
将服从标准正态分布的变量z与输入图像x建立联系。因为图像x很难说是服从某一我们已知的分布的,较难采样。我们的目的就是学习一个分布p(z),之后在z上取一个值时,就能通过decoder,在pixel空间得到生成的一张图片。
训练网络的目的:找到p(x)的下界
因为不好知道p(x)的真实分布,借助**ELBO(evidence lower bond)**估计下界。
- 凸函数的函数值的期望大于期望的函数值。画个图就明白了。
优化VAE就是相当于最大化ELBO--最小化KL散度
最大化重建项:希望decoder能尽可能从隐变量z生成原始数据x
最小化匹配项:希望encoder将真实数据映射到隐变量z后,z尽可能满足我们指定的分布(标准高斯分布)
传入训练集图片,得到均值向量和方差向量。
重参数化技巧:
多层VAE
--贝叶斯公式是挺重要的。
Diffusion Model
两个过程:
- 目标分布到噪声分布(扩散过程),逐渐往原图像中添加噪声直到得到纯噪声图像
- 可训练的反向去噪扩散过程
:训练一个神经网络,从纯噪声开始逐渐去噪,直到得到一个真实图像
限制条件:
- 数据x和隐变量z维度相同
- 所有的encoder q(zt|zt-1)不需要学习,都是预定义好的高斯分布。zt是以zt-1为均值的高斯分布。
- 最终状态XT服从标准高斯分布
目的?---从大量的数据中(如人脸图像)学习如何从纯噪声开始生成图片
扩散过程(不含参数)
-- 假定训练集符合某一分布q(x),每一步向xi中添加高斯噪声,其均值和方差是确定的(虽然是变的,但不是通过网络预测的)
-- 这里其实就是概率论的东西,独立正态分布的叠加。在已知初始状态以及βt(βi是递增的)时,扩散过程中的任意时刻状态q(xt)均可知。(就省去了迭代过程,效率更高)
扩散过程中的XT是标准正态分布的采样值,且其维度与X0是一致的
逆过程
扩散过程是一步步的对原图像加噪,使其变为高斯分布。逆过程是恢复图像。
用神经网络拟合目标高斯分布的参数。
网络训练
实际上,模型的方差是不用学习的(人为定义了,是固定的),只用学均值。
网络的训练流程为:
- 接受一个随机的样本
;
- 随机从 1 到 T 采样一个 t;
- 从高斯分布采样一些噪声并且施加在输入上;
- 网络从被影响过后的噪声图片学习其被施加了的噪声。
小结: