一文读懂变分自编码(VAE)

一文读懂变分自编码(VAE)

概述

变分自编码器(Variational Autoencoder, VAE)是一种生成模型,用于学习数据的潜在表示生成与原始数据分布相似的新数据。它是一种概率模型,通过结合深度学习和变分推断的思想,解决了传统自编码器无法生成数据的限制。
在这里插入图片描述
自编码器(Autoencoder, AE)是一种无监督学习模型,用于学习数据的低维表示,并尝试从低维表示中重建原始数据。它是一种神经网络结构,常用于降维、特征提取和数据生成任务。
在这里插入图片描述
自编码器的变种

  1. 稀疏自编码器(Sparse Autoencoder)
    通过添加稀疏性约束,使潜在表示 z 稀疏化,从而提取更具代表性的特征。
  2. 去噪自编码器(Denoising Autoencoder, DAE)
    在输入数据上添加噪声,训练模型从受损数据中恢复原始数据,提高模型的鲁棒性。
  3. 变分自编码器(Variational Autoencoder, VAE)
    将潜在表示建模为概率分布,能够生成多样化的数据(生成模型)。
  4. 向量量化变分自编码器(Vector Quantized Variational Autoencoder, VQVAE)
    将连续的隐变量空间离散化成一组有限的代码向量,用于表示数据的特征。

KL散度

KL散度的定义

KL 散度(Kullback-Leibler Divergence,简称 KL 散度)是用来衡量两个概率分布之间差异的一种非对称性度量。在概率论和信息论中,KL 散度常用来表示一个分布 Q(近似分布)和另一个目标分布 P之间的相对熵(信息损失)
在这里插入图片描述
信息损失的直观解释:
在这里插入图片描述

KL 散度的性质

  1. 非负性: D K L ​ ( P / / Q ) ≥ 0 D_{KL}​(P//Q)≥0 DKL(P//Q)0 且当且仅当 Q(z)=P(z) 时等于 0。
  2. 非对称性: D K L ​ ( P / / Q ) ≠ D K L ​ ( Q / / P ) D_{KL}​(P//Q) ≠ D_{KL}​(Q//P) DKL(P//Q)=DKL(Q//P)
  3. KL 散度越大,说明 P和 Q的差异越大

因此 KL 散度不能直接看作距离,但可以用于优化目标。

变分自编码(VAE)

变分自动编码器 (VAE) 有一个独特属性,将它们与普通的自动编码器区分开来,正是这个属性使它们对生成建模如此有用:它们的潜在空间在设计上是连续的,允许轻松随机采样和插值
它通过做一些乍一看似乎相当令人惊讶的事情来实现这一点:使其编码器不输出大小为 n 的编码向量,而是输出两个大小为 n 的向量:一个均值向量 μ 和一个标准差向量 σ
在这里插入图片描述

三个关键组成元素

编码器(Encoder):编码器将输入数据 x压缩映射到潜在空间中的概率分布参数(通常为高斯分布的均值 μ与方差 σ2)。具体来说,编码器通过神经网络对输入数据进行特征提取,并输出一组潜在变量分布的参数,用来近似后验分布 q ( z ∣ x ) q(z∣x) q(zx)
潜在变量(Latent Variables)及其先验分布(Prior):引入一组潜在变量 z,这些潜在变量往往来自一个简单的先验分布(例如标准正态分布 p ( z ) = N ( 0 , I ) p(z)=N(0,I) p(z)=N(0,I) )。通过从该潜在分布中抽样的方式,可以生成新的数据样本。同时,编码器学习到的后验近似 q ( z ∣ x ) q(z∣x) q(zx) 必须与此先验分布保持一致,从而实现稳定的生成过程与良好的特征表达能力。
解码器(Decoder):解码器将从潜在分布中采样得到的潜在变量 z映射回原数据空间,从而生成与输入数据分布相似的新样本。解码器模型通常是一个与编码器结构相对对称的神经网络,用于参数化生成分布 p θ ( x ∣ z ) p_\theta(x∣z) pθ(xz) ,使得给定某一个潜在向量 z时,可以生成近似真实分布的数据样本。

损失函数

变分自编码器的损失函数(也称ELBO损失函数)是通过最大化数据对数似然的变分下界(Evidence Lower BOund, ELBO)推导而来的。
在这里插入图片描述

步骤总结

  1. 编码器:输入数据 x x x,输出潜在分布 q ( z ∣ x ) = N ( z ; μ ( x ) , σ 2 ( x ) ) q(z∣x)=N(z; μ(x), σ^2(x)) q(zx)=N(z;μ(x),σ2(x)) ,用正态分布建模。
    参数化表示:通过神经网络输出均值 μ ( x ) μ(x) μ(x)和标准差 σ ( x ) σ(x) σ(x)
  2. 潜在空间采样:采样潜在变量 z ∼ q ( z ∣ x ) = N ( μ ( x ) , σ 2 ( x ) ) z∼q(z∣x)=N(μ(x), σ^2(x)) zq(zx)=N(μ(x),σ2(x))
    使用重参数化技巧 z = μ ( x ) + σ ( x ) ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z=μ(x) + σ(x)⋅ϵ, ϵ∼N(0,1) z=μ(x)+σ(x)ϵ,ϵN(0,1). 使采样过程可导,从而支持反向传播。
  3. 解码器:输入潜在变量 z z z,输出 p ( x ∣ z ) p(x∣z) p(xz) ,即重建数据的分布。
  4. 计算损失函数:重构损失+KL散度损失
  5. 反向传播和参数更新

重参数化技巧

重参数化技巧的核心是将随机变量的采样过程表示为一个可微分的确定性函数,使得梯度能够传递到模型参数。这是通过引入一个独立于参数的随机噪声来实现的。

假设编码器输出的潜在分布是高斯分布 q ϕ ( z ∣ x ) = N ( μ , σ 2 ) q_\phi(z∣x)=N(μ,σ^2) qϕ(zx)=N(μ,σ2) ,其中 μ μ μ σ σ σ是由编码器网络输出的参数。

传统的采样过程: z ∼ N ( μ , σ 2 ) z∼N(μ,σ^2) zN(μ,σ2),由于采样操作不可导,无法对编码器网络参数 ϕ ϕ ϕ求导

为了解决这个问题,我们使用重参数化技巧,将采样过程重写为: z = μ + σ ⊙ ϵ z=μ+σ⊙ϵ z=μ+σϵ
其中: ϵ ∼ N ( 0 , I ) ϵ∼N(0,I) ϵN(0,I)是从标准正态分布采样的独立噪声, ⊙ ⊙ 表示逐元素乘法。
在这里插入图片描述

现在, z z z μ μ μ σ σ σ的可微函数,且 ϵ ϵ ϵ与模型参数无关。

在这里插入图片描述

优势和局限性

优势

  1. 生成能力:可以从先验分布 p(z) 中采样生成新数据。
  2. 潜在空间的连续性:潜在表示是概率分布,生成的数据具有多样性和平滑性。
  3. 数学解释性强:基于概率理论,具有清晰的数学意义。

局限性

  1. 生成质量有限:生成的样本可能较模糊,不如GAN生成的高质量。
  2. KL散度权重问题:正则项的影响可能导致生成分布与数据分布不匹配。

VAE的应用

潜在扩散模型(Latent Diffusion Models, LDMs):将训练过程分为两步:

  1. 训练自动编码器(Autoencoder)首先训练一个自动编码器,将原始图像映射到一个感知上等价于原图,但维度更低、冗余更少的潜在空间。在这个潜在空间中,图像的高频无用细节被尽可能去除,但整体视觉外观与结构得以保留(这被称为“温和的压缩”,mild compression)。由于潜在空间的复杂度降低,训练和推理时对计算资源的需求显著减少。

  2. 在潜在空间中训练扩散模型,接着,在通过自动编码器得到的潜在表示上训练扩散模型。由于潜在空间已去除了许多不可感知的冗余细节,模型在这个较紧凑的表示空间中进行扩散过程,既能保留足够的语义信息,又避免了对每个像素进行繁琐的重复计算。这样减少了训练和推理的计算量,提升了模型的训练速度和生成效率

扩散、训练过程在隐空间进行

VAE特点

  1. 概率建模:VAE不仅学习数据的压缩表示(即编码),还学习这些表示的概率分布。这意味着编码后的潜在变量不是固定的值,而是服从某个分布(通常是高斯分布)。
  2. 变分推理:由于直接计算后验分布通常是不可行的,VAE使用变分推理方法来近似这个后验分布。具体来说,它引入了一个参数化的分布(称为变分分布或识别模型),并最小化该分布与真实后验之间的KL散度。
  3. 生成能力:VAE可以用来生成新的样本。通过从学习到的潜在空间中随机抽取样本,并通过解码器将其转换为原始数据空间中的样本,可以实现这一点。
  4. 连续且平滑的潜在空间:VAE倾向于创建一个连续和平滑的潜在空间,这使得在潜在空间中进行插值变得有意义,并且能够生成合理的、过渡自然的新样本。
  5. 重构损失+正则化项:损失函数由两部分组成:一是重构损失(如均方误差或交叉熵),衡量输入和输出之间的差异;二是KL散度作为正则化项,确保潜在变量的分布接近于预定义的先验分布(通常是标准正态分布)。
  6. 不确定性估计:因为VAE是基于概率模型的,所以它们能够提供对预测结果不确定性的估计,这对于某些应用领域(例如医疗诊断)非常重要。
  7. 可解释性:在一些情况下,VAE的潜在空间可能具有一定的语义意义,即特定维度的变化可能会对应于输入数据中的一些显著特征或模式。
  8. 训练稳定性:相较于其他一些生成模型(如GANs),VAE的训练过程往往更稳定,不容易出现模式崩溃等问题。
  9. 灵活性:VAE框架非常灵活,可以通过改变编码器、解码器结构以及潜在变量的分布来适应不同的任务需求。
  10. 扩展性:VAE的概念容易扩展到条件变分自编码器(CVAE)、对抗变分自编码器(AAE)等变体,以处理更复杂的任务,比如条件生成或者结合对抗训练机制提升生成质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497725.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七周:Fast R-CNN论文阅读

Fast R-CNN论文阅读 摘要Abstract文章简介1. 引言2. Fast R-CNN框架2.1 RoI位置信息映射2.2 RoI pooling2.3 分类器与边界框回归器2.4 以VGG16为backbone的Fast RCNN的网络结构 3. 训练细节3.1 采样3.2 多任务损失 4. 优缺点分析总结 摘要 这篇博客介绍了Fast R-CNN&#xff0…

ThinkPHP 8开发环境安装

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《ThinkPHP 8高效构建Web应用 夏磊 编程与应用开发丛书 清华大学出版社》【摘要 书评 试读】- 京东图书 1. 安装PHP8 Windows系统用户可以前往https://windows.php.net/downloads/releases/archives/下载PHP 8.0版本&am…

VM虚拟机配置ubuntu网络

目录 桥接模式 NAT模式 桥接模式 特点:ubuntu的IP地址与主机IP的ip地址不同 第一部分:VM虚拟机给ubuntu的网络适配器,调为桥接模式 第二部分:保证所桥接的网络可以上网 第三部分:ubuntu使用DHCP(默认&…

日本IT行业|分享实用的开发语言及框架

在日本IT行业中,开发语言与框架的选择非常多样化,但也有一些特定的技术和框架更为流行。以下是对日本IT行业在用的开发语言与框架的详细分享: 开发语言 Java:Java在日本是一门非常稳定且受欢迎的编程语言,很多日本公…

【畅购商城】校验用户名、手机号以及前置技术Redis和阿里大鱼短信验证码

搭建环境 后端web服务&#xff1a;changgou4-service-web修改pom.xml文档 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&…

[创业之路-222]:波士顿矩阵与GE矩阵在业务组合选中作用、优缺点比较

目录 一、波士顿矩阵 1、基本原理 2、各象限产品的定义及战略对策 3、应用 4、优点与局限性 二、技术成熟度模型与产品生命周期模型的配对 1、技术成熟度模型 2、产品生命周期模型 3、技术成熟度模型与产品生命周期模型的配对 三、产品生命周期与产品类型的对应关系 …

第三方接口设计注意要点

实际工作中&#xff0c;我们会遇到与三方系统对接的情形&#xff0c;比如对接短信服务、支付服务、地图服务、以及一些外部业务系统的调用和回调等等&#xff0c;不论是我们调用第三方接口还是我们为其他系统提供接口服务&#xff0c;调用过程中会遇到一些大大小小的问题和吐槽…

折腾日记:如何让吃灰笔记本发挥余热——搭建一个相册服务

背景 之前写过&#xff0c;我在家里用了一台旧的工作站笔记本做了服务器&#xff0c;连上一个绿联的5位硬盘盒实现简单的网盘功能&#xff0c;然而&#xff0c;还是觉的不太理想&#xff0c;比如使用filebrowser虽然可以备份文件和图片&#xff0c;当使用手机使用网页&#xf…

【设计与实现】基于Bootstrap的地方旅游管理系统的设计与实现

目录 第一章 绪论 1.1 研究现状 1.2 设计原则 1.3 研究内容 第四章 系统设计 4.1系统结构设计 4.2系统顺序图设计 4.3数据库设计 第五章 系统实现 5.1登录模块的实现 第一章 绪论 1.1 研究现状 时代的发展&#xff0c;我们迎来了数字化信息时代&#xff0c;它正在渐…

人工智能与区块链的碰撞:双剑合璧的创新前景

引言 人工智能&#xff08;AI&#xff09;与区块链技术&#xff0c;这两项曾经各自独立发展的前沿科技&#xff0c;如今正逐步走向融合。人工智能通过强大的数据处理能力和智能决策能力&#xff0c;在各个领域掀起了革命性的变革&#xff1b;而区块链凭借其去中心化、不可篡改的…

HarmonyOS NEXT 实战之元服务:静态案例效果---我的热门应用服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index import { authentica…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图&#xff0c;如下&#xff1a; 图片可点击放大 接下来我们来介绍一下 推荐学习&#xff1a;GIS入门模型构建器Arcpy批量…

数字图像处理

一 形态学处理 ①二值图像 PS&#xff1a;1&#xff08;255&#xff09;代表的是白 0代表的是黑&#xff08;0就是什么都看不见&#xff0c;就是黑&#xff09; ②灰度图像 ③彩色图像 ④数学形态学基础&#xff1a;是分析几何形状和结构的数学方法&#xff0c;它建立在…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…

SpringCloud 系列教程:微服务的未来(三)IService接口的业务实现

本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作&#xff0c;帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询&#xff0c;还是复杂的多表联动&#xff0c;甚至是大数据量的批量操作…

Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节

KMS是Kemmel Mode Setting的缩写&#xff0c;内核显示模式设置。它主要负责显示的控制&#xff0c;包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器&#xff0c;在DRM里有多个显存&#xff0c;通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…

解决pycharm无法识别miniconda

解决pycharm无法识别miniconda 选中 conda.bat 点击 Load Enviroments

云手机群控能用来做什么?

随着云手机的发展&#xff0c;云手机群控技术逐渐从小众的游戏多开工具&#xff0c;发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营&#xff0c;还是账号养成等场景&#xff0c;云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…

道路倒角 三角网 两侧偏移

public void 多段线和直线两侧缓冲区(){List<Curve> ents1 Z.db.SelectEntities<Curve>();List<Polyline> ents Z.db.CurvesToPolyLines2(ents1);//Z.db.SelectEntities<Polyline>();double offsetDistance 5.0;//p距离double offsetDistance2 1.0…

patch补丁制作,合入,卸载的方法

创建PATCH目录&#xff0c;进入该目录下&#xff0c;创建文件夹old, new, 创建文件1.c&#xff1b; 1.c内容如下&#xff1a; 在new下修改1.c&#xff1a; 开始制作1.patch diff -Naur ./old/1.c ./new/1.c > 1.patch 进入 vi 1.patch&#xff1a; 1.patch内容如下&#…