变分自编码器(VAES)

news2025/2/28 12:32:55

Dimensionality reduction ,PCA and

autoencoders

Dimensionality reduction

我们清楚,数据降维其实都是减少数据的特征数量,如果把 e n c o d e r encoder encoder看作是由高维原有特征生成低维新特征的过程。把 d e c o d e r decoder decoder看作是将低维特征还原为高维特征的过程。那么数据降维就可以被看作是一个数据压缩过程。其中 e n c o d e r encoder encoder负责将数据从 i n i t a l s p a c e inital space initalspace压缩至 l a t e n t s p a c e latent space latentspace
d e c o d e r decoder decoder负责将数据从$latent space 空 间 压 缩 至 i 空间压缩至i inital spade$中。

在这里插入图片描述
当然,encoder-decoder代表的数据压缩\j解压过程,很可能是由损的(losy). 因此数据降维的主要目的是找到一个 e n c o d e r − d e c o d e r encoder-decoder encoderdecoder
对使得编码能保留更多的信息。解码时候能保证尽可能的小的重建误差。这一过程可能被视为如下形式:
在这里插入图片描述

PCA

  • PCA是一种常用的数据降维方法,其主要思想是:找到 n e n_e ne个线性无关的新特征。每个新特征都是 n d n_d nd个旧特征的线性组合。
  • n e < n d n_e < n_d ne<nd
  • 其中数据在新特征张成的线性子空间上的投影与原始数据在欧式距离上尽量相似。也就是说,PCA是在寻找原始数据空间中,一个最佳线性子空间,它使得线性投影在该子空间上后可以使得信息损耗量尽可能的少。可以正得。这 n e n_e ne个特征即为样本矩阵的协方差,最大的 n e n_e ne个特征对应的特征向量。
  • 在这里插入图片描述
  • 在PCA中,带入前面所述得到:encode\decoder思想。
  • P = [ u 1 , ⋯   , u n e ] P = [u_1,\cdots,u_{n_e}] P=[u1,,une] n e n_e ne个新特征组成的
  • n d × n e n_d \times n_e nd×ne的向量,则 e n c o d e r encoder encoder P T P^T PT decoer为 P P P.
  • 在这里插入图片描述
  • Autoencoder

  • 该方法也是一种数据降维的方法,其基本思想是用神经网络实现
  • e n c o d e r encoder encoder d e c o d e r decoder decoder 从而能够端到端的训练出一个最佳的encoder\decoder对。
    在这里插入图片描述

学习总结

会自己构造损失函数,慢慢额自己构造出来都行啦的样子与打算。
encoder和decoder都有一个线性层时候 A u t o e n c o d e r s Auto encoders Autoencoders和PCA就十分相似啦。它们都是寻找一个最佳线性子空间使得投影数据时带来的信息损失最小。当然,Autoencoders并没有像PCA一样施加了正交约束
在这里插入图片描述
现在假如:Autoencoders 中的 encoder 和 decoder 都具有无限的拟合能力,那么理论上,我们就可以以无损地把任何高维数据都压缩至1维度。在此需要明确以下两点

  • 无损数据压缩往往会使得潜在空间缺乏可解释性
  • 在大多数情况下,数据压缩的最终目的不仅仅是为了降低数据维度。而是为了在降低数据维度的同时还能在 l a t e n t s p a c e latent space latentspace中保留数据的主要结构信息。
  • 在这里插入图片描述
  • Variational Autoencoders

  • In a nutshell, a VAE is an autoencoder whose encodings distribution is regularised during the training in order to ensure that its latent space has good properties allowing us to generate some new data.
  • Moreover, the term “variational” comes from the close relation there is between the regularisation and the variational inference method in statistics.

Limitations of autoencoders for content generation

如果想要将Autoencoder用于生成式任务,一个直观的想法就是随机从 l a t e n t s p a c e latent space latentspace中采样,然后利用decoder进行生成。
在这里插入图片描述
The problem of the autoencoders latent space regularity: 直接由 decoder 生成的样本质量取决于 latent space 的 regularity。然而正如前面所述,Autoencoders 由于缺乏必要的正则化,latent space 无法体现出数据的主要结构信息,缺乏可解释性,往往会陷入过拟合,因此直接由 decoder 生成的样本往往不具有实际意义。如下图所示,假设 encoder 和 decoder 都具有无限的拟合能力,当在 latent space 中采样的向量刚好是训练样本的 encoded vector 时,decoder 生成的样本就是有实际意义的样本,但当采样的向量不是训练样本的 encoded vector 时,就不能保证 decoder 生成的样本具有实际意义
在这里插入图片描述

Definition of variational autoencoders

为了能够将 decoder 用于生成,我们希望 latent space 具有如下性质:(1) continuity (latent space 中的两个相近点在解码后也应该具有相近的内容);(2) completeness (对于一个给定的概率分布 p ( z ) p(z)p(z),从 latent space 中采样得到的点在解码后应该得到有意义的输出)
在这里插入图片描述
为了使得latent space具有如上所述的性质,VAE的encoder将输入数据 x x x编码为latent space。上的一个概率分布 P ( z ∣ x ) P(z|x) P(zx).
r然后按该分布采样出一个隐变量。 z − P ( z ∣ x ) z - P(z|x) zP(zx).然后将其解码,计算并传重构误差
在这里插入图片描述
在实际应用中,VAE 假设似然$ p ( z ∣ x )$ 为一个正态分布,且协方差矩阵为对角矩阵,因此 encoder 仅需输出该正态分布的均值和方差向量。因此,这就假定了 VAE 生成的隐变量 z zz 的各维特征之间是解耦的特征之间的相关性不强,因此在用作特征编码时相比普通 AE 更能提取有效信息.
然而,仅仅将输入的编码为概率分布还不足以保证continuity 和 completeness。这是因为将输入编码为概率分布会给 decoder 引入噪声从而加大重构误差,为了尽可能地减小重构误差,模型可能会使得 encoder 输出概率分布的方差特别小或不同输入对应分布的均值极不相近 (in both case variances of distributions become small relatively to distance between their means),这就使得输出概率分布与输出单一的点效果相似,VAE 会退化为传统自编码器
为了解决上述问题,VAE 在训练时针对 encoder 输出的概率分布加入了正则项。具体而言,VAE 要求 encoder 输出的概率分布与标准正态分布尽量接近,也就是使得它们之间的 KL 散度尽量得小。在加入正则项后,我们就能使得不同输入编码得到的概率分布之间互相重合,进而保证 continuity 和 completeness (该正则项实际包括了对 latent space 的 local 和 global 正则化,local 正则化来自于对方差的控制,global 正则化来自于对均值的控制)
在这里插入图片描述
当 $p ( z ∣ x ) $接近标准正态分布时,可以证得 latent vector z zz 的先验分布就是标准正态分布

在这里插入图片描述
在加入正则化项之后,VAE的损失函数,如下所示:这也可以看作一个对抗过程。重构损失要求encoder输出的方差尽量小。而正则要求 e n c o d e r encoder encoder的方差接近1
在这里插入图片描述
由于我们考虑了各分量独立的多元正态分布,因此,只需要推导一元正太分布的情形即可:
在这里插入图片描述
各分量独立的多元正太分布之间的 K L KL KL散度为:
在这里插入图片描述

VAES的数学公式细节

在这里插入图片描述
在这里插入图片描述

QA

Q1: 为什么 encoder 输出的 z zz 不能是高维张量,比如 256 × 32 × 32 256\times32\times32256×32×32?
A1: 这是因为我们希望先验分布$ p ( z )$ 是一个多元的、独立的正态分布,那就意味着 encoder 出来的特征是解藕的,各分量相互独立,互不影响。如果** z z z 是一个矩阵甚至高维张量**,看上去似乎没有什么问题,你可能还想 z zz 后面接个 CNN 来 decode,但是要注意,如果一旦使用 CNN(或 RNN),那么就相当于假设了 z zz 具有局部相关性(如果局部没有联系,那么使用 CNN 就没意义了),但是这就违反了 z zz 的各分量相互独立的假设了。也就是说,encoder 出来的结果不能是一个高维张量并且 decoder 的第一层就对这个高维张量用 CNN,一般情况下 z zz 必须是向量,然后对 z zz 进行处理后(上采样,或者简单接多个并行的全连接得到一个矩阵输出)才能接 CNN 进行 decode
Q2: 为什么隐变量的先验分布用高斯分布而不是均匀分布?
A2: 这是因为 KL 散度有一个比较明显的问题,就是当 q ( x ) q(x)q(x) 在某个区域等于 0,而 p ( x ) p(x)p(x) 在该区域不等于 0,那么 KL 散度就出现无穷大。这是 KL 散度的固有问题,我们只能想办法规避它,比如隐变量的先验分布我们用高斯分布而不是均匀分布。对于正态分布来说,所有点的概率密度都是非负的,因此不存在这个问题。但对于均匀分布来说,只要两个分布不一致,那么就必然存在 p ( x ) ≠ 0 p(x)≠0p(x)

=0 而 q ( x ) = 0 q(x)=0q(x)=0 的区间,因此 KL 散度会无穷大。当然,写代码时我们会防止这种除零错误,但依然避免不了 KL loss 占比很大,因此模型会迅速降低 KL loss,也就是后验分布 p ( Z ∣ X ) p(Z|X)p(Z∣X) 迅速趋于先验分布 p ( Z ) p(Z)p(Z),而噪声和重构无法起到对抗作用,encoder 无法区分哪个 z zz 对应哪个 x xx 了。当然,非得要用均匀分布也不是不可能,就是算好两个均匀分布的 KL 散度,然后做好除零错误处理,加大重构 loss 的权重,等等~但这样就显得太丑陋了

Variational inference formulation

在这里插入图片描述
一种给定概率分布簇中寻找复杂概率分布的最佳近似概率分布方法。其中误差度量为 K L KL KL散度。
优化方法采用梯度下降法:使用变分推理来得到后验概率 P ( z ∣ x ) P(z|x) P(zx)
的近似概率分布 q x ( z ) q_x(z) qx(z),其中概率分布簇为协方差矩阵为对角矩阵的正太分布。规定近似概率分布的协方差矩阵 h ( x ) h(x) h(x)必为对角矩阵时为了便于模型训练。牺牲变分推理近似精度,来换取计算开销降低。在此条件下, encoder只输出, n n n个标准差,而不需要输出一个完整的协方差矩阵
在这里插入图片描述
因此优化问题如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Bringing neural networks into the model

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从联合分布近似来理解VAE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出,此时重构损失就是二分类交叉熵损失。并欸重构损失和KL损失权重为1.
在这里插入图片描述

从最大似然来理解VAE

从最大似然角度也可以得到VAE的损失函数:
最大似然角度来理解VAE并提出模型概览

可以看到,前两项即为VAE的优化目标。后一项一定大于等于0,因此VAE的优化目标为对数似然的一个下界

cVAE

下面考虑一种最简单的VAE结构,其通过调整先验概率 p ( z ) p(z) p(z),来引入标签的条件信息。具体而言,我们希望同一个类的样本都有一个专属均值 μ Y \mu_{Y} μY(方差不变,还是单位方差)
这个让模型自己训练起来,这样的话,有多少个类就有多少个正太分布。而在生成的时候,我们都可以通过控制均值来控制审生成图像的类别。上述cVAE只需通过修改 K L l o s s KL loss KLloss类别实现:
在这里插入图片描述

总结

慢慢的通过自己理解来学习VAE的模型,并将该model啥的全部都将其搞清楚,慢慢的学习各种model的
以及会自己复现论文,将各种论文啥的都复现一波,全部都将其搞定,研究彻底都行啦的样子与打算。慢慢的各种论文都研究彻底,研究透彻都行啦的样子与打算。
自己慢慢的研究各种modela.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulnhub靶机ha:wordy

靶机下载链接&#xff1a;HA: Wordy ~ VulnHub 靶机ip&#xff1a;192.168.174.136&#xff08;后面重启后变成192.168.174.137&#xff09; kali ip&#xff1a;192.168.174.128 目录 靶机ip发现: 靶机端口扫描: 子目录扫描&#xff1a; wpscan扫描 漏洞利用1 漏洞利…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数&#xff1a; 型号&#xff1a;MBR40200PT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大平均正向整流输出电流&#xff08;IF&#xff09;&#xff1a;40A 峰值正向浪涌电流&#xff08;IFSM&#xff0…

5、Mybatis的查询功能(必定有返回值)

Mybatis的查询功能&#xff08;必定有返回值&#xff09; 注意&#xff1a; 查询功能与前面的增删改不同&#xff0c;增删改的返回值是固定的&#xff08;所以增删改我们就有两种返回值要么设置为int获取受影响的行数&#xff0c;要么设置为void我们不获取返回值&#xff09;…

基于JAVA的农产品生鲜销售管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86468222 主要使用技术 Struts2HibernateJSPJSCSSMysql 功能介绍 1&#xff0c;游客访问 |–系统首页&#xff0c;查看商品列表 |–特价商品 |–最新上架 2&#xff0c;会员访问 |–用户登…

Qt 界面设置无边框之后如何实现缩放界面

在qt中&#xff0c;如果设置的了窗口无边框的话&#xff08;即setWindowFlag(Qt::FramelessWindowHint);&#xff09;那么窗口就没法直接被鼠标拖动了&#xff0c;也没法按住窗口的边界进行缩放。 如果要实现缩放和拖动&#xff0c;一般来说就需要的重写窗口类的mousePressEve…

目标检测论文解读复现之十九:基于YOLOv5网络模型的人员口罩佩戴实时检测

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

8.3 数据结构——交换排序

基本思想&#xff1a;两两比较&#xff0c;如果发生逆序则交换&#xff0c;直到所有记录都排好序为止。 常见的交换排序&#xff1a;&#xff08;1&#xff09;冒泡排序 &#xff08;2&#xff09;快速排序 8.3.1 冒泡排序 基本思想&#xff1a;每趟不断将记录两两比较&…

VLAN(Virtual LAN)虚拟局域网

1、广播与广播域 广播&#xff1a;将广播地址做为目标地址的数据帧 广播域&#xff1a;网络中能接收到同一个广播所有节点的集合&#xff08;广播域越小越好&#xff0c;收到的垃圾广播越少&#xff0c;这样通信效率更高&#xff09; MAC地址广播 广播地址为&#xff1a;FF-FF-…

rabbitmq配置windows authentication(windows account)登录

rabbitmq配置windows authentication(windows account开启插件配置文件创建一个不需要密码的账号&#xff0c;赋予administrator权限。用windows账号和密码登录rabbitmq加密明文密码创建密钥的文件,添加密钥字符串加密解密用户名密码配置加密后的字符串重启rabbitmq&#xff0c…

HyperLynx(三十一)高速串行总线仿真(三)

高速串行总线仿真&#xff08;三&#xff09; 1.从一个多层板工程中验证串行通道 2.在多层板中设置连接器模型 1.从一个多层板工程中验证串行通道 在本例练习中&#xff0c;将集中研究从芯片到插件形成的串行发射通道&#xff0c;并分析它的性能。 (1)打开 HyperLynx 软件&a…

Centos下安装postgreSQL

最近北京yq严重&#xff0c;在家学习下postgreSQL &#xff0c;本次使用的是 Centos 环境安装是有&#xff0c;记录下来&#xff0c;方便备查。 第一步、下载与安装 下载地址&#xff1a;postgreSQL官网 在官网上选择 Linux系统&#xff0c;使用 yum来下载软件&#xff0c;只…

SpringBoot SpringBoot 原理篇 1 自动配置 1.11 bean 的加载控制【编程式】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.11 bean 的加载控制【编程式】1.11.1 bean 的加载控制1.11.2 环境…

[附源码]Python计算机毕业设计高校辅导员工作管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

现代密码学导论-15-多明文加密

目录 3.4更强的安全观念 3.4.1 多明文加密安全 多消息窃听实验 DEFINITION 3.18 多明文加密下的不可区分性 PROPOSITION 3.19 定义3.18强于定义3.8的事实证明 PROPOSITION 3.19 的证明 概率加密的必要性 THEOREM 3.20 3.4更强的安全观念 到目前为止&#xff0c;我们一…

MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧

目录 前言 1、如何开启使用慢查询日志&#xff1f; 1.1 开启慢查询日志 1.2 设置慢查询阈值 1.3 确定慢查询日志的文件名和路径 1.3.1 查询MySQL数据目录 1.3.2 查询慢查询日志文件名 1.3.3 查询全局设置变量 1.3.4 查询单个变量命令 1.3.5 其他注意事项 2、如何定位并优…

备战2023蓝桥国赛-重新理解Prim和Kruskal算法

备战2023蓝桥国赛-重新理解Prim和Kruskal算法Prim算法Kruskal算法Prim算法 题目描述&#xff1a; 解析&#xff1a; prim算法跟dijkstra的朴素解法有很多相像部分&#xff0c;他们都是枚举中继节点来更新下一个节点&#xff0c;都是选最小的dist值来更新&#xff0c;时间复杂…

【线性表】—动态顺序表的增删查改实现

小菜坤日常上传gitee代码&#xff1a;https://gitee.com/qi-dunyan&#xff08;所有的原码都放在了我上面的gitee仓库里&#xff09; 数据结构知识点存放在专栏【数据结构】后续会持续更新 ❤❤❤ 个人简介&#xff1a;双一流非科班的一名小白&#xff0c;期待与各位大佬一起努…

【网页设计】期末大作业html+css(动漫网站)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【机器学习项目实战10例】(十):DataCastle-租金预测

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、DataCastle-租金预测二、数据集介绍三、导入相关库四、读取数据五、删除缺失值过多的列六、填补缺失数据七、特征编码八、简单跑一下九、可视化数据分布9.1 箱线图9.2 直方图和Q-Q图一、DataCastle-租金预测 本项目任务…

【ASM】字节码操作 工具类与常用类 AnalyzerAdapter 工作原理

文章目录 1.概述2.xx3.工作原理3.1初始状态3.2中间状态3.2.1顺序执行3.2.2发生跳转.2.3特殊情况: new对象3.3结束状态4.示例:打印方法的Frame4.2 编码实现5.总结1.概述 在上一篇文章: 【ASM】字节码操作 工具类与常用类 AnalyzerAdapter初步介绍 我们知道 AnalyzerAdapter 主…