在阅读有关机器学习的内容时,你遇到的大部分材料可能都与分类问题有关。 你有一个特定的输入,ML 模型试图找出该输入的特征。 例如,分类模型可以决定图像中是否包含猫。

当你想创建具有预定义特征的数据时,反过来又如何呢? 这些问题可以通过生成式模型来解决,但是,从本质上讲,它们更加复杂。 两种主要方法是生成对抗网络 (GAN) 和变分自动编码器 (VAE)。 我们在最近的一篇文章中介绍了 GAN,您可以在此处找到该文章。 今天我们将分解 VAE 并理解它们背后的直觉。

推荐:使用 NSDT场景设计器 快速搭建 3D场景。

1、什么是自动编码器?

我们将从解释基本自动编码器 (AutoEncoder) 的一般工作原理开始。 在构建任何 ML 模型时,你的输入都会被编码器转换为数字表示形式,供网络使用。 这样做是为了简化数据并保存其最重要的特征。 好吧,AE 只是两个网络放在一起——一个编码器和一个解码器。 这对的目标是尽可能准确地重建输入。 编码器保存输入的表示,之后解码器从该表示构建输出。

起初,这似乎有点适得其反。 为什么要经历所有以纯净、未更改的形式重建已有数据的麻烦? 关键是,通过训练过程,AE 学会构建紧凑而准确的数据表示。 它找出输入的哪些特征是定义性的并且值得保留。

然而,除了去噪等少数应用外,AE 的使用受到限制。 它们出于生成目的的主要问题归结为他们的潜在空间的结构方式。 它不是连续的,不允许简单的外推。 编码向量被分组在对应于不同数据类的集群中,并且集群之间存在很大的差距。 为什么这是个问题? 当生成一个全新的样本时,解码器需要从潜在空间中随机抽取一个样本并进行解码。 如果潜在空间中的选定点不包含任何数据,则输出将是乱码。

2、变分自编码器

变分自编码器(Varational AutoEncoder)以一种特定的方式设计来解决这个问题——它们的潜在空间被构建为连续和紧凑的。 在编码过程中,标准 AE 为每个表示生成一个大小为 N 的向量。 一个输入——一个对应的向量,就是这样。 另一方面,VAE 产生 2 个向量——一个用于平均值,一个用于标准差。 VAE 不是潜在空间中的单个点,而是覆盖以平均值为中心的某个“区域”,其大小对应于标准差。 这为我们的解码器提供了更多的工作空间——来自该区域任何地方的样本将与原始输入非常相似。

这给了我们局部范围内的可变性。 但是,我们仍然存在将数据分组到集群之间存在较大差距的问题。 为了解决这个问题,我们需要让我们所有的“区域”彼此更接近。 距离足够远以使其不同,但又足够近以允许在不同集群之间轻松进行插值。 这是通过将 Kullback-Leibler 散度添加到损失函数中来实现的。

KL散度是衡量两个概率分布彼此“不同”程度的一种方式。 通过最小化它,分布将更接近潜在空间的原点。

将 Kullback-Leibler 散度与我们现有的损失函数相结合,我们激励 VAE 构建一个为我们的目的而设计的潜在空间。 数据仍然会根据不同的类别进行聚类,但聚类都将靠近潜在空间的中心。 现在我们可以自由地在潜在空间中选择随机点,以便在类之间进行平滑插值。

3、生成新数据

创建平滑的插值实际上是一个简单的过程,归结为进行向量运算。 假设你想混合两种音乐类型——古典音乐和摇滚音乐。 一旦你的 VAE 建立了它的潜在空间,你可以简单地从每个相应的集群中获取一个向量,找到它们的差异,并将该差异的一半添加到原始向量中。 解码结果后,你将获得一首新音乐! 而且由于潜在空间的连续性,我们保证解码器会有一些东西可以使用。

这也可以应用于生成和存储特定特征。 假设你有一个戴眼镜的人的图像,一个不戴眼镜的人的图像。 如果你发现它们的编码之间存在差异,你将获得一个“眼镜矢量”,然后可以将其存储并添加到其他图像中。 很棒的是,这适用于不同类别的数据,甚至是 GAN 无法处理的顺序和离散数据,例如文本。

4、用于异常检测的 VAE

除了生成新的音乐类型之外,VAE 还可以用于检测异常。 异常是指数据与其他数据的偏差足以引起人们怀疑它们是由不同来源引起的。 异常检测应用于网络入侵检测、信用卡欺诈检测、传感器网络故障检测、医疗诊断等众多领域。 如果你有兴趣了解有关异常检测的更多信息,我们将在本文中深入讨论各种方法和应用程序。

传统的 AE 可用于基于重建误差检测异常。 最初,AE 在正常数据上以半监督方式进行训练。 一旦训练完成并且 AE 收到其输入异常,解码器将无法重新创建它,因为它以前从未遇到过类似的事情。 这将导致可以检测到的大重建错误。

对于 VAE,过程是相似的,只是术语转换为概率。 最初,VAE 在正常数据上进行训练。 为了进行测试,从经过训练的 VAE 的概率编码器中抽取了几个样本。 然后,对于来自编码器的每个样本,概率解码器输出均值和标准差参数。 使用这些参数,可以计算数据源自分布的概率。 然后将平均概率用作异常分数,称为重建概率。 具有高重建概率的数据点被归类为异常。

与传统 AE 相比,VAE 的一个主要优势是使用概率来检测异常。 重建错误更难应用,因为没有通用的方法来建立清晰客观的阈值。 有了概率,即使是异构数据也可以一致地评估结果,从而使对异常的最终判断更加客观。


原文链接:VAE背后的直觉 — BimAnt

变分自编码器背后的直觉【VAE】相关推荐

  1. 【论文阅读-3】生成模型——变分自编码器(Variational Auto-Encoder,VAE)

    [论文阅读]生成模型--变分自编码器 1. VAE设计思路:从PCA到VAE 1.1 PCA 1.2 自编码器(Auto-Encoder, AE) 1.3 从AE到VAE 2. VAE模型框架 2.1 ...

  2. 变分自编码器的推导,VAE的推导,ELBO|证据下界|训练方法

    前提描述: VAE在编码器输入x时隐藏变量h的分布为E(h|x),解码器在给定隐藏变量h对应的x的分布为D(x|h),模型的隐藏变量的分布满足Q(h),模型后验概率为D(x)=∫\int∫D(x|h) ...

  3. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  4. 4.keras实现--生成式深度学习之用变分自编码器VAE生成图像(mnist数据集和名人头像数据集)...

    1.VAE和GAN 变分自编码器(VAE,variatinal autoencoder)   VS    生成式对抗网络(GAN,generative adversarial network) 两者不 ...

  5. 漫谈概率 PCA 和变分自编码器

    作者丨知乎DeAlVe 学校丨某211硕士生 研究方向丨模式识别与机器学习 介绍 主成分分析(PCA)和自编码器(AutoEncoders, AE)是无监督学习中的两种代表性方法. PCA 的地位不必 ...

  6. 变分自编码器-推断输入分布的有向概率模型

    变分自编码器-推断输入分布的有向概率模型 0.摘要 本文主要分析一种用于生成新样本数据的有向概率模型--变分自编码器.总结相关的数学知识和方法,并对模型进行详细的分析与推导.用PyTorch深度学习框 ...

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

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

  8. 变分自编码器VAE:这样做为什么能成?

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 话说我觉得我自己最近写文章都喜欢长篇大论了,而且扎堆地来.之前连续写了三篇关于 Capsule 的 ...

  9. 详解变分自编码器VAE(Variational Auto-Encoder)

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

最新文章

  1. 【Ant Design Pro 一】 环境搭建,创建一个demo
  2. 如何全面认识联邦学习
  3. Windows Server 2016-活动目录NTP时间同步
  4. LinkedList 使用巩固及图解
  5. c++ list容器获取第n给元素_深入Python(17)-List 的 append 和 pop
  6. Enumeration和Iterator的区别
  7. 项目属性--生成事件--后期生成事件命令行
  8. 火蚁机器人_「适度偷懒提高整体效率:火蚁工作方式启发机器人群组协作」8月23日...
  9. jenkins 启动_通过http请求启动jenkins任务
  10. 最近使用mysql遇到的几个问题
  11. 开发环境ubuntu16.04常用工具和设置(git、ssh、python、sh、java、Maven、mysql、postgresql)
  12. 基于MongoDB开发的物流系统(简易版)
  13. 芬兰开放「线上 AI 速成班」,全球网民均可注册【智能快讯】
  14. 摩尔庄园手游服务器链接不稳定,摩尔庄园手游公测常见问题解决方法一览
  15. LibreELEC 10.0.2发布
  16. 【板栗糖GIS】如何给文件夹批量重命名
  17. 搭建syslog日志服务器
  18. c语言计算个人所得税作业,C语言用文件计算个人所得税
  19. 软件生存周期的图示——DO-178B/ED-12B学习笔记之九
  20. 圆环进度条 两种实现方式

热门文章

  1. 【Golang】生成随机数,指定区间随机数
  2. 用R语言玩玩股票(二)
  3. 1998年与2021年的一些高校学生数据等
  4. android电池系统
  5. 计算机工程毕业论文任务书,计算机工程毕业设计论文任务书开题报告模板.doc...
  6. 计算机硬盘容量分配,500G的硬盘怎样合理分配容量
  7. 计算机课程考试质量分析,计算机考试质量分析.pdf
  8. 金山快译 2007 下载-个人收藏专业版
  9. 单证管理外贸软件解决方案
  10. 节气生活,邮箱推送,提前预警,告别炎炎夏日下的束手无策