当前位置: 首页 > news >正文

VAE:变分自编码器

背景和动机

VAE和AE最大的不同就是:AE的过完的Encoder是一个确定的向量,而VAE过完Encoder后是一个分布(均值、方差)。AE的Decoder是直接进行解码,VAE的Docoder是通过这个分布进行采样后解码。AE的学习目标是重建损失最小化、VAE是重建损失 + KL散度(正则化)

  1. 生成模型的需求: 在很多机器学习应用中,我们不仅需要识别和分类数据,还希望能够生成新的数据实例。生成模型尤其在无监督学习中很重要,它可以帮助我们理解数据的内在结构和分布。

  2. 限制的模型能力: 传统的自编码器通过最小化输入和输出之间的差异来学习数据的有效表示,但它们通常不考虑潜在空间的连续性和结构,使得生成的新样本质量不高。

  3. 概率模型的引入: 概率生成模型,如高斯混合模型,可以提供理论上的解释和生成能力,但在处理高维数据和复杂分布时往往效果不佳。VAE提供了一种强大的框架,通过结合深度学习和贝叶斯推断,有效地学习数据的潜在结构。

模型结构

和AutoEncoder类似,是由Encoder和Decoder结构组成。
VAE架构图

  • Encoder:将输入数据 x 映射到一个潜在的分布参数(通常是高斯分布的均值和方差),即 q Φ ( z ∣ x ) q_\varPhi(z | x) qΦ(zx)
  • Decoder:从潜在空间中采样的点 z 生成数据 x 的分布,即 p θ ( x ∣ z ) p_\theta(x | z) pθ(xz)

理论推导

变分自编码器(VAE)是一个深度学习模型,结合了自编码器的架构和概率生成模型的原理。它主要用于学习输入数据的复杂概率分布,并能够生成新的、与输入数据类似的样本。从头开始,我们将一步步探讨VAE的动机、原理和数学推导。

一些符号定义如下:

  • 先验分布 p ( z ) p(z) p(z) :通常假设为标准正态分布,这简化了模型的复杂性并与高斯分布的其他属性兼容。
  • 后验分布 p ( z ∣ x ) p(z|x) p(zx):给定数据后潜在变量的真实分布,通常难以直接计算。
  • 变分近似 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx):一个易于处理的分布,用于近似复杂的后验分布。

在这里插入图片描述

3. ELBO(证据下界)

为了训练VAE,我们需要最大化数据的对数似然 ( \log p(x) ),但直接优化是不可行的。通过引入变分分布 ( q_{\phi}(z|x) ) 和应用Jensen不等式,我们定义了ELBO:

[
\text{ELBO}(\phi, \theta) = \mathbb{E}{q{\phi}(z|x)}[\log p_{\theta}(x|z)] - \text{KL}[q_{\phi}(z|x) \parallel p(z)]
]

  • 第一项是重构误差,鼓励解码器准确重构输入。
  • 第二项是正则项,确保编码的潜在变量不偏离太远的先验分布。

数学推导

1. KL散度计算

使用KL散度度量 ( q_{\phi}(z|x) ) 和 ( p(z) ) 之间的相似性,其中 ( q_{\phi}(z|x) ) 通常设为高斯分布,( p(z) ) 为标准正态分布。

2. 优化过程

利用随机梯度下降方法优化ELBO,通常涉及到重参数化技巧,以确保梯度的正确流动和有效的优化。

结论

VAE通过其独特的结合生成模型和深度学习的方式,不仅提供了一种有效学习数据潜在分布的方法,还能生成新的、多样的数据样本。这种模型的强大之处在于其灵活性和在各种数据类型上的适用性,包括图像、文本和音频。

http://www.lqws.cn/news/444655.html

相关文章:

  • CHATERM AI:开启云资源氛围管理新篇章!
  • C++位图
  • 数据结构 6(算法)
  • Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系
  • GNSS介绍
  • 李宏毅《生成式人工智能导论》| 第1讲:什么是生成式人工智能
  • 可口可乐的营销转型如何促成Smartwater的新广告活动
  • 攻防演练:1.木马后门文件演练
  • 选择标签词汇功能(单选多选),在文本框展示
  • JS红宝书笔记 8.2 创建对象
  • 使用Dagster资产工厂模式高效管理重复ETL任务
  • 257. 二叉树的所有路径(js)
  • JavaEE->多线程2
  • 使用Haporxy搭建Web群集
  • 网页后端开发(基础4--数据库MySQL)
  • 第一章 空间解析几何与向量代数 ~ 向量的数量积与向量积
  • Linux head 命令
  • 穿不了 NAT 怎么办?用 TURN Server 把墙搬走!
  • 《Go语言圣经》map
  • C#的泛型和匿名类型
  • Nacos:微服务架构的神经中枢与配置大脑
  • 413. 等差数列划分
  • day09——Java基础项目(ATM系统)
  • Github 热点项目 [特殊字符]PHP性能革命!FrankenPHP让Laravel/Symfony飞起来!
  • 目标检测之YOLOV11自定义数据预处理——从原始标注到YOLO-OBB格式转换与验证
  • SecureCRT 安装、破解、汉化及配色方案优化指南
  • OpenSSL引擎 + PKCS11 + SoftHSM2认证
  • 【技术管理的第一次转身】从认知到落地的12个实战模块
  • 【算力网络】算网安全
  • MySQL: Invalid use of group function