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

李宏毅机器学习笔记。转载请注明出处。

自编码器(Autoencoder):

Autoencoder = Encoder + Decoder

希望输入(原始数据)和输出(重建数据)尽可能一样。中间的code就是隐变量,也叫Embedding, Representation,Bottleneck…名字花样很多,其实本质都是同一个东西,都是原始数据的低维表示。
● Encoder: Convolution + Leaky Relu +Batch normalization
● Decoder: Convolution transpose + Leaky Relu + Batch normalization

注:PCA和Encoder一样吗?
都有降维作用,PCA学习的是线性关系,Encoder能够学习非线性关系,当Encoder中用线性激活函数的时候,可将其等效于PCA。


自编码器的应用:生成任务、去噪、异常检测…
自编码器存在问题:

变分自编码器:

简介


可以看到与自编码器的区别,就是中间多了一部分。
其中的m相当于原来的(自编码器)的code,c是加噪声后的code,σ表示现在噪声的方差(噪声需要多大),是机器学出来的, 取指数e是为了确保得到的值一定是正的,参数e是从一个正态分布里采样出来的(方差固定)。

可以看作机器在训一组均值和方差,不像自编码器是让机器学会生成一个具体的向量,而是让机器学习一个数据分布,从这个分布中sample出一个样本,这样就扩大了生成的范围。
VAE假设所有维度相互独立。

损失函数:最小化重建误差

这个式子具体怎么来的,后面有详细介绍,可以先直观了解其物理含义。

含义如下图,蓝曲线对应蓝下划线公式部分,红也是。绿色曲线表示蓝减去红,其最低点等于0(loss最小),所以我们希望σ接近0,方差e^0=1…所以让机器知道方差不能太小。
最后的一项m^2,就是L2正则项,为了不过拟合。

VAE与自编码器比较

为什么要用VAE?原来的自编码器有什么问题?

1.首先从直观上看:
如果是自编码器,就是把每个图片都变成一个code,那么
藏从满月和半月的code中间取一个点,输入decoder,会输出什么呢?现在我们用的神经网络都是非线性的,所以很难预测会输出什么。可能会输出一个看起来什么都不像的图片。

VAE的话,
code上加了些噪声,那么就从一个点变成了一个范围,绿色双箭头的范围内,都会被decoder成满月,半月同理。

此时选中间某个点的话,他被希望重建回满月,也希望是半月,但只能重建回一张图片,VEA会最小化均方误差,所以会得到一张介于满月和半月的图。

2.比较正式的解释
VAE中是个多元正态分布

Defined by 2 variables:

通俗易懂——VAE变分自编码器原理相关推荐

  1. PyTorch 实现 VAE 变分自编码器 含代码

    编码器 自编码器 自编码器网络结构图 线性自编码器代码如下: 卷积自编码器代码如下: 变分自编码器 变分自编码器网络结构图 变分自编码器代码如下: Ref 自编码器 自编码器网络结构图 线性自编码器代 ...

  2. VAE(变分自编码器)学习笔记

    VAE学习笔记 普通的编码器可以将图像这类信息编码成为特征向量. 但通常这些特征向量不具有空间上的连续性. VAE(变分自编码器)可以将图像信息编码成为具有空间连续性的特征向量. 方法是向编码器和解码 ...

  3. VAE 变分自编码器

    收集了几篇文章,介绍VAE变分自编码器,如下: 1.[干货]深入理解变分自编码器 - 知乎转载自:机器学习研究组订阅 原文链接:[干货]深入理解变分自编码器[导读]自编码器是一种非常直观的无监督神经网 ...

  4. 变分自编码器原理解析

    ** 变分自编码器(VAE) ** 写在最前面:本文中间有很多细节东西没讲,公式我也没有贴出来,写这个太累了,本来VAE涉及的知识就很多,但是大致思想我应该是讲清楚了的. 目录 变分自编码器(VAE) ...

  5. VAE变分自编码器实现

    变分自编码器(VAE)组合了神经网络和贝叶斯推理这两种最好的方法,是最酷的神经网络,已经成为无监督学习的流行方法之一. 变分自编码器是一个扭曲的自编码器.同自编码器的传统编码器和解码器网络一起,具有附 ...

  6. 入门到精通!珍藏资源!VAE变分自编码器

    过去虽然没有细看,但印象里一直觉得变分自编码器(Variational Auto-Encoder,VAE)是个好东西.趁着最近看概率图模型的三分钟热度,我决定也争取把 VAE 搞懂.    于是乎照样 ...

  7. 变分自编码器原理详解

    变分自编码器 基本思想:VAE在2013年提出,假设数据xix_ixi​是由一个随机过程产生的,该随机过程分为两步: 由先验分布Pθ∗(z)P_{\theta^*}(z)Pθ∗​(z)产生隐变量ziz ...

  8. 深入理解VAE(变分自编码器)

    原文地址:https://pan.baidu.com/s/1LNolV-_SZcEhV0vz2RkDRQ : 本文进行翻译和总结. VAE VAE是两种主要神经网络生成模型中的一种,另一种典型的方法是 ...

  9. 【13】变分自编码器(VAE)的原理介绍与pytorch实现

    文章目录 1.VAE的设计思路 2.VAE的模型架构 3.VAE的作用原理 4.VAE的Pytorch实现 1)参考代码 2)训练结果展示 3)生成结果展示 5.实现VAE中出现的问题 1.VAE的设 ...

最新文章

  1. 多级中间表示概述MLIR
  2. [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据...
  3. JAVA中类似C中memcpy功能
  4. 《大道至简》第一章伪代码
  5. BufferedInputStream学习笔记
  6. java jmx 监控_只用五分钟为系统实现基于JMX的监控
  7. Node.js:Webpack
  8. mysql联合查询_mysql中的联合查询
  9. 2020年“华为杯”中国研究生数学建模竞赛
  10. 关于win10安装CPC专利软件以及win10安装office2003
  11. html 在线打开word文件,Html打开pdf、word、xls等文件
  12. fedora 11源码安装设置fcitx3.6输入法
  13. 六十星系之46廉贞独坐寅申
  14. VB中关于RND产生随机数
  15. AutoESL与Xilinx那些人和事
  16. d3.js 旋转图形_苏教版三年级数学上册第六单元平移、旋转和轴对称(6.1~6.2)微课视频 | 练习...
  17. Leetcode_6_Dynamic Programming_198,213打家劫室,打家劫室II
  18. 阿里云OSS文件上传,后台签名方案
  19. MeterSphere开发者手册
  20. 【KVM相关】kvm虚拟化部署配置

热门文章

  1. tk.mybatis.spring.annotation.MapperScan 无法引入
  2. 裴蜀定理(贝祖定理)
  3. 解决Win10出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问” - 开启局域网文件共享
  4. c语言关于引用的使用
  5. ZEMAX | 用于照明设计中的探测器
  6. 七大顶级桌面比较!Linux平台自由选择
  7. VBA:EXCEL粘贴时跳过有公式单元格
  8. 关于org.apache.ibatis.type.JdbcType的解决方案
  9. 题解 P5022 【旅行】
  10. MCGS作为Modbus TCP服务器