VAE
1 原理
- 将原始的数据整体分布,拆分为多元高斯分布(每一个元,对应数据向量的一个维度,有数学公式不难得到,512 时,差异极小)
- 编码器估计出均值和方差,这样就可以使用重参数化技巧,用标准正态分布来代替任意高斯分布了
- 损失函数是 解码器重建的新的图像复原的情况 +KL 散度(编码器预测的多元高斯分布和真正多元高斯分布的差距)
1.1 参考资料
【VAE学习笔记】全面通透地理解VAE(Variational Auto Encoder) | CSDN
变分自编码器(Variational Autoencoder) — 张振虎的博客 张振虎 文档
关键代码:
mu = self.fc1(x_state)
logvar = self.fc2(x_state)
# 数值稳定性
scale = self.softplus(logvar) + eps
# 对角线上的元素是权重
scale_tril = torch.diag_embed(scale)
return torch.distributions.MultivariateNormal(mu, scale_tril = scale_tril)
dist.rsample()
Encoder 解码出每一维度的均值和方差,然后拟合多元高斯分布,再进行重参数化采样,得到具体的、用于 decoder 的值
2 组成部分
编码器和解码器本身内部结构,应该以域适应的方式进行
3 进阶
3.1 使用感知损失和基于Patch (局部块)的对抗目标的技术
ByCHATGPT
- 感知损失
感知损失是一种损失函数,用来衡量原始图像和生成图像在高层特征上的差异,而不仅仅是像素级的差异。感知损失通常通过一个预训练的网络(如VGG)来比较图像的中间层特征,从而保持生成图像的感知质量,使其更加视觉上真实 - 基于Patch的对抗目标
这是指对抗损失(通常用于生成对抗网络GAN)在图像的小块(patch)上进行操作,而不是在整个图像上进行。通过这种方式,模型可以更好地关注图像的细节和纹理。这个设置中的判别器会评估图像中patch的真实性,从而帮助生成更加清晰和细致的图像。 - 感知损失确保生成的图像在感知上与原始图像相似,而基于Patch的对抗目标则通过关注局部特征,帮助生成更清晰和细致的图像。
- 这种结合方法通常用于高级的图像合成或超分辨率任务。
3.2 VQ-VAEs
已阅
Vector Quantised,使用矢量量化技术的变分自编码器,用于学习数据的高效表示
其实很简单的一个玩意,别和 VAE 的概率论扯上关系就行
维护编码表可以细看一下
V 2 使用全局信息和局部信息进行建模