变分自编码器背后的直觉【VAE】

news2024/11/18 6:39:54

在阅读有关机器学习的内容时,你遇到的大部分材料可能都与分类问题有关。 你有一个特定的输入,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

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

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

相关文章

再不跳槽,就晚了

从时间节点上来看,3月、4月是每年跳槽的黄金季! 以 BAT 为代表的互联网大厂,无论是薪资待遇、还是平台和福利,都一直是求职者眼中的香饽饽,“大厂经历” 在国内就业环境中无异于一块金子招牌。在这金三银四的时间里&a…

预处理指令详解

预处理指令详解**1.预定义符号****2.#define****2.1 #define 定义标识符****2.2 #define 定义宏****2.3 #define 替换规则****2.4 #和##****#的作用****##的作用****2.5 带副作用的宏参数****2.6 宏和函数的对比****宏和函数对比图****2.7 命名约定****3.#undef**4.条件编译4.1…

Leg转Goh引擎和架设单机+配置登陆器教程

教程准备1、Leg版本一个2、Goh引擎一套3、电脑一台(最好联网)前言:BLUE/LEGS/Gob/Goh/九龍、4K、AspM2第一步:更换引擎1、把版本自带的LEG引擎换成Goh引擎2、删除服务端里面的exe、dll文件(也可以直接更新)3、清理登录和游戏网关里面的配置文件4、更新引…

Sandman:一款基于NTP协议的红队后门研究工具

关于Sandman Sandman是一款基于NTP的强大后门工具,该工具可以帮助广大研究人员在一个安全增强型网络系统中执行红队任务。 Sandman可以充当Stager使用,该工具利用了NTP(一个用于计算机时间/日期同步协议)从预定义的服务器获取并…

菌子导航系统(持续开发中)

文章目录菌子导航前言项目架构spring-cloud 和 spring-boot 版本选择使用到的组件(依赖)架构分层项目基本功能1 使用Nacos做配置中心2 logback日志3 mybatis-plus操作数据库4 Caffeine 缓存整合5 LocalDateTime 序列化&反序列化6 参数校验快速失败配…

ubuntu20.04 系统下 .7z 文件解压缩到指定的目录下

问题描述 环境: ubuntu 20.04 ubuntu 下有个 7z 的压缩文件需要解压,需要解压到指定的目录下,而不是压缩包当前目录下 安装 p7zip-full ubuntu 下的 7z 解压软件: p7zip-full 安装命令: sudo apt install p7zip-fu…

04-PS人像磨皮方法

1.高斯模糊磨皮 这种方法的原理就是建立一个将原图高斯模糊后图层, 然后用蒙版加画笔或者历史画笔工具将需要磨皮的地方涂抹出来, 通过图层透明度, 画笔流量等参数来控制磨皮程度 1.新建图层(命名为了高斯模糊磨皮), 混合模式设置为正常, 然后选择高斯模糊, 模糊数值设置到看…

前端也能悄悄对视频截图?js实现对视频按帧缓存

前言 虽然最后没有采用这种方案来实现滚动控制视频进度,但是仍然想自己试试这种方案的实现,毕竟应用范围也挺广的。 核心代码并不多,算是一篇小短文~。 掘金好像不允许放站外演示链接,所以这里就用动图大概展示下最终…

STL——list

一、list介绍及使用 1. list文档介绍 (1)list是可以在常数范围内,在任意位置进行插入、删除的序列式容器,并且该容器可以前后双向迭代。 (2)list的底层是带头结点的双向循环链表,其中每个元素…

【Java|golang】2335. 装满杯子需要的最短总时长

现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水、温水和热水的…

web期末复习 2023.02.11

文章目录Web 的概念Web 组成用户通过浏览器请求资源的过程:HTML 超文本标记语言CSS插入样式表的方法有三种:对象,类,实例一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:JavaScript 用法什么是 Java Server Pages?JSP 注释JSP 的 J…

《Linux运维实战:Centos7.6使用haproxy部署rabbitmq3.9.16高可用镜像模式集群》

一、集群架构 说明:对于消息的生产和消费者可以通过HAProxy的软负载将请求分发至RabbitMQ集群中的Node1~Node7节点,其中Node8~Node10的三个节点作为磁盘节点保存集群元数据和配置信息。 二、环境信息 环境信息如下: …

剑指 Offer 52. 两个链表的第一个公共节点

摘要 剑指 Offer 52. 两个链表的第一个公共节点 一、两个链表的第一个公共节点解析 使用双指针的方法,可以将空间复杂度降至 O(1)。只有当链表 headA headB都不为空时,两个链表才可能相交。因此首先判断链表 headA和 headB是否为空,如果其…

[watevrCTF 2019]Timeout 题解

事不一而理有定在,犹百川万折,必归于海。 ——《容斋随笔》 1.查壳 是一个64位像是ELF的文件 无壳子 2.拖入64位IDA IDA分析失败 是一个.com文件 COM格式文件是一种简单的可执行文件。在迪吉多公司于20世纪70年代推出的操作系统中,.COM被用…

c/c++开发,无可避免的函数指针使用案例

一、函数指针简介 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。例如: char* (*pf1)(char * p1,char *p2); 这是一个函数指针,其…

javassm超市在线配送管理系统

为了解决用户便捷地在网上购物,本文设计和开发了一个超市管理系统。本系统是基于web架构设计,SSM框架 ,使用Mysql数据库管理,综合采用JSP模式来完成系统的相关功能。主要实现了管理员与用户的注册与登陆,个人中心、用户…

[标准库]STM32F103R8T6 高级定时器--PWM输出和带死区互补PWM输出

前言 STM32F103系列的MCU,相比普通的51单片机,在输出硬件PWM这个功能上要强不少,两者实现的方式都类似,都是通过一个定时器来启用硬件PWM输出,不过在输出PWM通道的数量上,32F103要强上不少。仅通过一个高级…

5.Redis 实现点赞 优化登陆(验证码 token..)

Redis(1)简介Redis 是一个高性能的 key-value 数据库原子 – Redis的所有操作都是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。非关系形数据库数据全部存在内存中,性能高。(2&#…

Docker中安装MySQL 8

前言 上一期在Windows中安装好了Docker环境,这一期在Docker中完成MySQL 8安装和配置。 启动Docker Desktop后在cmd窗口中输入docker -v即可查看到安装的docker版本 Docker启动容器的原理流程 Docker启动一个容器(应用)时,大致原理流程如下图&#x…

安全技术与防火墙工具iptables

目录 安全技术 安全技术 补充防水墙 防火墙的分类 按保护范围划分 按实现方式划分 按网络协议划分 iptables iptables的五表五链 三种报文流向 iptables基本语法 数据包常见的控制类型 iptables的基本选项 显示扩展模块 保存规则 持久保存规则 加载规则 开机自…