VAE 变分自编码器
- Variational Auto-Encoder
- 用于从latent space中采样,生成与训练数据相似的新样本
- 将高维数据降维,压缩到latent space
1. 变分推理
1.1 Latent Graphical Model
- Latent Graphical Model(潜在图模型) 是一类结合了图结构与潜在变量的概率模型,用于表示随机变量之间的复杂依赖关系。它通过引入未观测的潜在变量(Latent Variables)来简化或解释观测数据中的隐含模式
- 隐变量代表了被观测变量的一些属性
1.2 Variational Inference
-
直观理解:
-
推理:通过观测数据,获得对数据的见解或者知识
-
如上图,观察到图片(观测数据)后,就想知道这个图片是哪一类动物的图片(数据的见解)
-
从被观测变量去推理无法被直接观测的隐变量的过程
-
-
概率的角度:使用条件概率来表达
-
-
图中的公式是贝叶斯定理的直接应用:
p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) p(z∣x)=\frac{p(x∣z)p(z)}{p(x)} p(z∣x)=p(x)p(x∣z)p(z)- p(z∣x):后验概率,表示在观测到数据 x 后,潜在变量 z 的条件分布。
- p(x∣z):似然函数,给定潜在变量(或参数)z 的条件下,观测数据 x 出现的概率
- 描述的是“数据如何由参数生成”的过程
- 反映模型对数据的拟合程度
- p(z):先验概率,表示对 z 的初始假设(如高斯分布)。
- 表示在未观测到数据 x 之前,对潜在变量 z 的初始假设或分布。
- p(x):证据(边缘概率),通常难以直接计算,因为需要积分所有可能的 z z z: p ( x ) = ∫ p ( x , z ) d z p(x)=∫p(x,z)dz p(x)=∫p(x,z)dz
-
因为真实的后验概率分布形式比较复杂,我们尝试使用一组相对比较简单,并且可以参数化的概率分布来近似后验概率------近似的过程就叫做变分(Variation)
-
使用近似的概率分布 去完成 在给定被观测变量(observed)的情况下,对隐变量概率分布估计的过程叫做变分推理
-
对隐变量进行采样,并且在给定隐变量的情况下,使用似然度对被观测变量进行采样—生成的过程
1.2.1 示例
- 后验概率 p ( z ∣ x ) p(z|x) p(z∣x)正比于联合概率 p ( x , z ) p(x,z) p(x,z)
- 蓝色:联合概率分布
- 红色:通过数值计算的方法,真实的后验概率的曲线
- 从图上可以看出二者确实成正比
- Q:那为什么我们不直接用联合分布来近似后验概率呢?
- 问题在于:对于不同的x,边缘概率值p(x)不同,所以联合分布的值是不能比较的
- 假设有两个观测数据 x1 和 x2:
- 若 p(x1) 很小(例如 x1 是罕见事件),则 p(x1,z) 会被“压缩”得更小。
- 若 p(x2) 较大(例如 x2 是常见事件),则 p(x2,z) 的绝对数值可能更大。
- 直接比较p(x1,z) 和 p(x2,z) 会误导,因为差异可能仅源于 p(x) 的尺度不同,而非 z 的真实分布差异。
- 如果你用联合分布来近似的话,当你觉得在x发生的情况下,z发生的可能很低,并不一定是因为二者相关性低,还有可能是因为x发生的概率本来就小
1.2.2 KL散度和ELBO
-
KL散度的核心作用是衡量两个概率分布之间的差异,并在变分推断(Variational Inference)中用于近似复杂的真实后验分布 p ( z ∣ x ) p(z∣x) p(z∣x)
-
KL散度用于量化一个概率分布 Q(z) 与目标分布 P(z∣X) 之间的“距离” (严格来说,它不是真正的距离,因为不对称)。其数学定义为:
D ( Q ( z ) ∥ P ( z ∣ X ) ) = E z ∼ Q [ l o g Q ( z ) P ( z ∣ X ) ] D(Q(z)∥P(z|X))=E_{z∼Q}[log\frac{Q(z)}{P(z|X)}] D(Q(z)∥P(z∣X))=Ez∼Q[logP(z∣X)Q(z)]
- Q(z):简单的近似分布(如图中较宽的曲线),通常选择高斯分布等易处理的分布。
- P(z∣X):真实后验分布(如图中较窄的曲线),通常复杂且难以直接计算。
- 我们需要最小化二者的KL散度
- 通过上图推导可以得出
-
其中
- l o g p ( x ) logp(x) logp(x) :我们称其为证据
- E z ∼ Q [ l o g p ( z , x ) − l o g q θ ( z ) ] E_{z∼Q}[logp(z,x)-logq_{\theta}(z)] Ez∼Q[logp(z,x)−logqθ(z)]:称为期望值
- D ( q θ ( z ) ∥ p ( z ∣ x ) ) D(q_{\theta}(z)∥p(z|x)) D(qθ(z)∥p(z∣x)):KL散度
-
我们发现
-
l
o
g
p
(
x
)
logp(x)
logp(x) 为定值,因为被观测数据已经被观测到了
- 所以期望和KL散度呈现此消彼长的关系
- KL散度永远大于0,只有近似分布和真实后验分布一致的时候才等于0
-
l
o
g
p
(
x
)
logp(x)
logp(x) 为定值,因为被观测数据已经被观测到了
-
因为 l o g p ( x ) ≥ E z ∼ Q [ l o g p ( z , x ) − l o g q θ ( z ) ] logp(x)\geq E_{z∼Q}[logp(z,x)-logq_{\theta}(z)] logp(x)≥Ez∼Q[logp(z,x)−logqθ(z)]
- 所以我们称这个期望为证据下界(Evidence Lower Bound)–ELBO
-
因为直接最小化KL散度很难,所以我们最大化ELBO
-
回到刚才的例子
2. VAE 变分自编码器
2.1 经典自动编码器
- 设计的作用:在编码器之后,得到一组维度小于原图维度的隐变量(对图片的压缩表示)
- 上图中属性都是单个的数值
- 用高斯分布的随机变量来表征这些属性的取值范围
- 隐变量有了取值范围内的概率分布
- 由于隐变量从特定的值变为范围的分布,所以我们用采样的值生成出来的图片就会和原来的输入不同
- 也就是说,我们可以通过采样隐空间来生成原来没有见过的图片
2.2 VAE中ELBO的改变
-
在VAE中对ELBO中的项进行了变化
- 使用条件概率
q
φ
(
z
∣
x
)
q_\varphi(z|x)
qφ(z∣x) 代替原来的
q
(
z
)
q(z)
q(z)–基于均摊分析的原理
- 均摊分析(Amortized Analysis)
- 均摊分析是一种计算复杂度分析方法,用于评估一系列操作的平均成本(而非最坏情况成本)。其核心思想是:将高频低成本操作与低频高成本操作“均摊”,使得整体平均成本可控。
- 均摊分析(Amortized Analysis)
- 使用条件概率
q
φ
(
z
∣
x
)
q_\varphi(z|x)
qφ(z∣x) 代替原来的
q
(
z
)
q(z)
q(z)–基于均摊分析的原理
-
Encoder&Decoder:
- 近似分布表示 q φ ( z ∣ x ) q_\varphi(z|x) qφ(z∣x) VAE中的编码器
- 似然度函数 p θ ( x ∣ z ) p_\theta(x|z) pθ(x∣z) 表示VAE中的解码器–因为是从隐变量到真实数据的过程
- 因为神经网络不是概率分布所以编码器和解码器中的分布通常为概率分布,神经网络的预测值方便用均值和方差表示
-
ELBO转变为
- 其中
-
E
z
∼
q
[
l
o
g
p
θ
(
x
∣
z
)
]
E_{z∼q}[logp_\theta(x|z)]
Ez∼q[logpθ(x∣z)] :表示重建(指用encoder和decoder reconstruct 输入x)的相似度
- 因为这个分布是一个高斯分布,神经网络的预测值是均值
- 而高斯分布中均值和数据越接近则概率密度越大
- 所以最大化这一项就相当于让神经网络的预测值最接近我们给定的图像
-
D
(
q
φ
(
z
∣
x
)
∥
p
(
z
)
)
D(q_\varphi(z|x)∥p(z))
D(qφ(z∣x)∥p(z)) :二者的KL散度,用于表示隐变量先验相似度
- 为了便于计算 p ( z ) = N ( 0 , I ) p(z)=N(0,I) p(z)=N(0,I)
- N ( 0 , I ) N(0,I) N(0,I)为单位高斯分布
- 最小化KL散度就是让编码器输出的隐变量分布和单位高斯分布更加的接近
-
E
z
∼
q
[
l
o
g
p
θ
(
x
∣
z
)
]
E_{z∼q}[logp_\theta(x|z)]
Ez∼q[logpθ(x∣z)] :表示重建(指用encoder和decoder reconstruct 输入x)的相似度
2.3 目标函数
- KL散度部分—即编码器的目标函数:
- 似然函数部分—解码器部分
- 从编码器输出的分布 q φ ( z ∣ x ) q_\varphi(z∣x) qφ(z∣x)(如高斯分布)中采样 z 时,采样操作本身是随机过程,无法求梯度,所以我们对 θ \theta θ 求梯度的时候,会在采样的过程中卡住
2.4 重参数化&模型架构
-
重参数化(Reparameterization)是深度学习中一种重要的数学技巧,主要用于解决随机变量的梯度计算问题。
-
VAE中重参数化的目标:为了解决decoder objective无法求梯度的问题
-
重参数化的技巧:任意的一个高斯分布可以是一个标准高斯分布的函数(均值+标准差*标准高斯分布)
- 上图中:
- 左侧为原始方法
- 右侧为重参数化后的VAE
- 先做标准高斯采样
- 然后通过重参数化的技巧将标准化高斯分布映射到预期的高斯分布上
- 这时架构反向传播的时候,就可以顺利的进行,而不会遇到随机采样的过程
2.5 损失函数
- 将隐变量相似度的损失变成正则项的损失函数
本文参考自该视频(https://www.bilibili.com/video/BV1Ns4y1J7tK)