AE(自动编码器)与VAE(变分自动编码器)的区别和联系?

news/2024/10/18 12:31:37/

他们各自的概念看以下链接就可以了:https://blog.csdn.net/weixin_43135178/category_11543123.html

 这里主要谈一下他们的区别?


先说结论:

  • VAE是AE的升级版,VAE也可以被看作是一种特殊的AE
  • AE主要用于数据的压缩与还原,VAE主要用于生成
  • AE是将数据映直接映射为数值code(确定的数值),而VAE是先将数据映射为分布,再从分布中采样得到数值code。
  • 损失函数和优化目标不同


AE(Auto Encoder, 自动编码器)

AE的结构

如上图所示,自动编码器主要由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器和解码器可以看作是两个函数,一个用于将高维输入(如图片)映射为低维编码(code),另一个用于将低维编码(code)映射为高维输出(如生成的图片)。这两个函数可以是任意形式,但在深度学习中,我们用神经网络去学习这两个函数。

这时候我们只要拿出Decoder部分,随机生成一个code然后输入,就可以得到一张生成的图像。但实际上这样的生成效果并不好(下面解释原因),因此AE多用于数据压缩,而数据生成则使用下面所介绍的VAE更好。

AE的缺陷

由上面介绍可以看出,AE的Encoder是将图片映射成“数值编码”,Decoder是将“数值编码”映射成图片。这样存在的问题是,在训练过程中,随着不断降低输入图片与输出图片之间的误差,模型会过拟合,泛化性能不好。也就是说对于一个训练好的AE,输入某个图片,就只会将其编码为某个确定的code,输入某个确定的code就只会输出某个确定的图片,并且如果这个code来自于没见过的图片,那么生成的图片也不会好。下面举个例子来说明:

假设我们训练好的AE将“新月”图片encode成code=1(这里假设code只有1维),将其decode能得到“新月”的图片;将“满月”encode成code=10,同样将其decode能得到“满月”图片。这时候如果我们给AE一个code=5,我们希望是能得到“半月”的图片,但由于之前训练时并没有将“半月”的图片编码,或者将一张非月亮的图片编码为5,那么我们就不太可能得到“半月”的图片。因此AE多用于数据的压缩和恢复,用于数据生成时效果并不理想。

如何解决AE的问题呢?

这时候我们转变思路,不将图片映射成“数值编码”,而将其映射成“分布”。还是刚刚的例子,我们将“新月”图片映射成μ=1的正态分布,那么就相当于在1附近加了噪声,此时不仅1表示“新月”,1附近的数值也表示“新月”,只是1的时候最像“新月”。将"满月"映射成μ=10的正态分布,10的附近也都表示“满月”。那么code=5时,就同时拥有了“新月”和“满月”的特点,那么这时候decode出来的大概率就是“半月”了。这就是VAE的思想。

VAE(Variational Auto-Encoder, 变分自动编码器)

VAE的结构

小结

  • AE主要用于数据的压缩与还原,在生成数据上使用VAE。
  • AE是将数据映直接映射为数值code,而VAE是先将数据映射为分布,再从分布中采样得到数值code。


http://www.ppmy.cn/news/71912.html

相关文章

2023年春秋杯网络安全联赛 春季赛 wp

文章目录 Cryptocheckinbackdoor WebPhpstudyEasypyezrustqqcms MISCSudohappy2forensic盲人会藏在哪里piphackwordle PWNp2048easy_LzhiFTP_CHELL Crypto checkin 第一部分求解一下pell函数得到x,y def solve_pell(N, numTry 100):a[]b[]cf continued_fraction(sqrt(N))f…

Simulink 自动代码生成电机控制——永磁同步电机参数获取

目录 前言 极对数测量 电阻测量(Rs) 电感测量(Ld和Lq) 磁链测量 总结 前言 在建模之前或者需要更换一个新电机,需要获取目标电机的电气参数,如果参数不对,对于电流环参数的整定&#xff0…

kafka延时队列内部应用简介

kafka延时队列_悠然予夏的博客-CSDN博客 两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结…

Java学习路线(2)——基础语法

一、注释 注释的作用是对程序进行说明。 三种注释类型:单行注释、多行注释、文档注释。 /xxxx/ > 单行注释/* xxxxxx */ > 多行注释/** 项目名称:xxx 项目创建者:xxx */ > 文档注释 注释是一个开发过程中非常重要的东西&#xff0…

从零玩转设计模式之单例模式-danlimos

title: 从零玩转设计模式之单例模式 date: 2022-12-12 12:41:03.604 updated: 2022-12-23 15:35:29.0 url: https://www.yby6.com/archives/danlimos categories: - 单例模式 - 设计模式 tags: - Java模式 - 单例模式 - 设计模式 前言 单例设计模式是23种设计模式中最常用的设…

Java使用Groovy执行脚本的使用,GroovyShell Matespace内存溢出解决

目录 业务场景 使用了工具Groovy 遇到Metaspace内存溢出的问题 解决方案 业务场景 类似工作流的场景,需要判断 参数,是否满足流转条件。 随便举个例子: 新增商品资料。 如果是普通商品,状态为"待审核", 如果为…

yolo v8

这个系列代码被封装的非常的精致,对二次开发不太友好,虽然也还是可以做些调节 这里写目录标题 模型的导出multi-scaleLossVFLDFL问题1问题2问题1 solution问题2 solutionFinally 其它yolo v8 里的哪些结构让它比yolo v5 更好C3 --> c2fdecoupled hea…

串口与4g模块

1.认识4G模块 1、接线与插卡:EC03-DNC4G通信模块,生产的公司是EBYTE(亿佰特)。官网上有软件和用户手册下载地址。 保证插卡不插错,一是使用SIM卡卡套,二是方向保证正确。如图位置是SIM卡状态灯&#xff0…