[读书笔记] Variational AutoEncoders

小全读书笔记 《Variational AutoEncoders》

  • 1. Generative Model (生成式模型)简述
  • 2. 简单生成模型 AutoEncoders
    • 2.1 结构
    • 2.2 不足
  • 3. Variational AutoEncoders
  • 4. Variational AutoEncoders的数学支持

此读书笔记来自于Joseph Rocca的Understanding Variational Autoencoders (VAEs),非常推荐阅读原文。

1. Generative Model (生成式模型)简述

在深度学习模型范畴中,区别于图像分类、检测、分割等领域中的各种经典模型,

  1. 从模型的目标而言,上述经典模型致力于对输入数据判定类别、bounding box或segment area,而Generative Model的目的在于学习输入数据的分布,以生成更多的样本;

  2. 从训练数据而言,上述经典模型必须依赖于groundtruth annotation,而Generative Model能不一定强依赖于annotation,如给定一个人脸数据集,完全可以不依赖于任何的annotation也可以生成新的人脸,但若希望生成“特殊条件”的人脸,如长头发的人脸,则训练过程依然需要提供相应的annotation。

2. 简单生成模型 AutoEncoders

AutoEncoder结构图

2.1 结构

AutoEncoders包含了一个encoder和decoder的经典结构,

  • encoder的作用是将输入从原空间映射到latent space,往往latent space的数据维度是要小于原空间的。
  • decoder则是将latent space中的数据重新映射回与原空间维度完全一致的新空间。

AutoEncoder的训练目标是通过Encoder和Decoder的变换后,能尽可能地保持输入数据地信息完整性,即 x = x x=x x=x.

在这样的结构里,decoder就起到了一个样本生成的一个作用:设想若以成功训练好了AutoEncoder,我们完全可以单独将decoder拿出来,输入一些random的signal或者在原latent space sample中加入random signal,即可生成出原数据中不存在的数据。

AutoEncoder的应用场景(它还能用来干什么):
Dimensionality Reduction(数据降维):通过Encoder可以将数据维度大大降低,而且decoder的存在可以极大地保证了降维后的数据仍包含了原数据的信息量,基于此可以较好地恢复回原来的样子。

2.2 不足

AutoEncoder的致命不足:无法保证生成数据的泛化性,即生成的数据与原数据并不能完全保证是同分布的。借用Joseph的一个图来说明这个问题。
图来源于Joseph
造成这种现象的根本问题在于两点:

  1. 模型并不理解noise:尽管decoder能对任何latent space空间的都能映射到原空间,但这种映射的pattern在训练数据和测试数据上是存在gap的。训练过程中decoder的输入其实可以认为是原空间的fixed point,在测试过程中加入的noise对于decoder来说是unseen和unknown的,decoder是没有机制保证加噪后的输出质量的。

  2. 过拟合(Overfitting):可以想象一个极端的例子,latent space就只有一维,当decoder的参数量大到一定程度,依然能完美地拟合训练数据,但这样的模型却是无意义的。当然,这样的例子有点极端,并不具备代表性,但这种缺乏约束和规范的结构实际上确实是很容易收到overfit的影响。

那在训练过程中,每次对decoder的输入加入噪声,是否可行?
答案依然是No,原因依然是上述两点,当加入噪声之后,decoder是能处理noise了,但是模型依然可以狡猾地将不同sample在latent space的分布极大地区分开来,以大大降低noise的作用。依然借用Joseph的一个图说明这个问题。
图来源于Joseph

来到这里,一个非常straight-forward的想法很自然地出来了:约束样本在latent space的分布,以让decoder能理解noise,从而保证泛化性。

Joseph总结了AutoEncoder不足的本质在于Irregular latent space,我的出发点是其对noise的泛化性不足,俩者的理解最终还是殊途同归。
基于此,一个最简单的想法是:训练过程中限制样本在latent space的距离是否可行。读者并未对这进行验证,VAE提出了一个更加fancy的solution。

3. Variational AutoEncoders

相比于AutoEncoder(AE),VAE最本质的一个改进在于:encoder预测的是一个输入样本在latent space的一个分布,并且VAE对这些分布进行了约束。

  1. 什么叫做“latent space的一个分布”
    对于AutoEncoders,encoder的作用是将一个输入数据 x x x映射到latent space是一个single point,在latent space里,这个point只代表 x x x .而VAR认为latent space里,它应该代表了一个分布,即以输入数据为代表的一类东西。举例而言,如果输入是一只站立的黄色的狗,AE只会认为它是一只站立的黄色的狗,VAE会认为它可以是一只黄色的狗,也可以是黑色的,也可以是坐着的。
    在这里插入图片描述
    而这个分布则用这个条件概率表示 P ( z ∣ x ) P(z|x) P(zx) .

  2. 如何通过一个输入 x x x得到一个分布 P ( z ∣ x ) P(z|x) P(zx)

    首先,我们假定这个分布是一个正态分布,因此 P ( z ∣ x ) ∼ N ( μ , σ 2 ) P(z|x) \sim N(\mu, \sigma^2) P(zx)N(μ,σ2)

    这样的假定是合理的,如果不做假定,是无法求解的,其次正态分布是能更好地反映“以输入数据为代表的一类东西”的这种性质。

    因此,若想得到这个分布,本质只需要求得正态分布的均值和方差,我们可以将其建模成 μ = f θ ( x ) \mu = f_\theta(x) μ=fθ(x), σ = g β ( x ) \sigma=g_\beta(x) σ=gβ(x), 是学习参数, f f f g g g 建模成深度网络。

  3. 如何对 P ( z ∣ x ) P(z|x) P(zx)进行约束?

    VAE希望对任何的输入数据,得到的分布都属于一个标准正态分布 P ( z ∣ x ) → N ( 0 , 1 ) P(z|x) \rightarrow N(0,1) P(zx)N(0,1),训练过程中迫使拟合标准正态分布,“迫使”的方式则是引入KL散度这一loss项实现。
    图来源于Joseph

  4. 这种约束为啥是有效的?

    回顾这个分布 P ( z ∣ x ) P(z|x) P(zx)的本质:其代表的是以输入数据为代表的一类东西,而且这个约束要求所有样本的分布都要接近 N ( 0 , 1 ) N(0,1) N(0,1)。从均值的角度,这意味着所有的东西都必须要迫近原点,这就避免了上述提到的问题.

    那在训练过程中,每次对decoder的输入加入噪声,是否可行?”,也就是分布之间必须要尽可能地靠近。那这就够了吗?No!还得从方差的角度去限制,如果不对方差进行限制,也就是这个分布是以零点为中心无限发散的,这极大地影响模型的收敛。方差的限制隐藏的意义是:让同分布内的数据要尽可能地靠近。

    方差约束的通俗理解:
    如果方差是不约束的,假设当前样本在latent space是狗的分布,因方差过大在latent space采样出了一张桌子,而训练过程我们需要要求这张桌子复原回一只狗,这会影响模型的收敛。

现在我们可以正式介绍VAE的结构,

  • encoder:基于输入样本预测出一个该样本在latent space的分布
  • decoder:对于这个分布的任意一个样本,均可通过该样本复原出输入样本
  • 图来源于Joseph

4. Variational AutoEncoders的数学支持

TBD

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APP 兼容性测试是什么?8年测试老鸟告诉你

1、APP 兼容性测试认识 随着 APP 应用范围越来越广,用户群体越来越大,终端设备的型号也越来越多,移动终端碎片化加剧,使得 APP 兼容性测试成为测试质量保障必须要考虑的环节。 APP 兼容性测试通常会考虑:操作系统、厂…

js执行思维导图

备注: js执行: 执行分为两部分:预执行和执行 预执行:创建好执行上下文 执行:执行栈中执行 js引擎: 读取并执行js 各个浏览器的引擎如下 …

linux学习[10]磁盘与文件系统(1):查看磁盘容量指令df 评估文件系统的磁盘使用量指令 du

文章目录 前言1. df指令2. du指令 前言 TF卡制作的过程中涉及到了磁盘分区格式化等问题,当时对具体的指令理解不是特别深刻;由此引申到我对linux中的整个磁盘与文件系统没有一个全面的认识,这个磁盘与文件系统的系列博客章节就对这些进行记录…

MySQL的主从复制与读写分离

一、MySQL主从复制 1、mysql支持的复制类型 STATEMENT∶基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。 ROW∶ 基于行的复制。把改变的内容复制过去, 而不是把命…

下载和安装appuploader

转载:下载和安装appuploader IOS开发工具官网地址 Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 最新版本已经优化了没支付688给apple的账号登录流程,无需再安装其他软件。…

微服务保护(线程隔离、降级、熔断)

线程隔离 线程隔离有两种方式实现: 线程池隔离信号量隔离 线程池隔离 假设服务A依赖于服务B和服务C,那么服务A就会分别对服务B和服务C创建线程池,当有请求进来时不会使用服务A本身的线程,而是到对应的线程池中取一个线程来调用feign的客户…

AMBER分子动力学模拟之TOP准备-- HIV蛋白酶-抑制剂复合物(1)

AMBER分子动力学模拟之TOP准备-- HIV蛋白酶-抑制剂复合物(1) 我们以HIV蛋白酶-抑制剂复合物为例子,跑Amber动力学模拟 下载1phv 从PBD下载文件:https://www.rcsb.org/ PDB文件预处理 我们以 “protein(water) ligandcomplex” 为例来说一下如何处…

力扣82删除排序链表中的重复元素 II:思路分析+代码实现+方法总结(三指针法快慢指针法【双指针】递归法)

文章目录 第一部分:题目描述第二部分:代码实现2.1 三指针法2.2 快慢指针法(双指针)2.3 递归 第一部分:题目描述 🏠 链接:82. 删除排序链表中的重复元素 II - 力扣(LeetCode&#xf…

ChatGPT热门资料汇总,绝对不割韭菜

前言 ChatGPT 的出现,AI圈子一下就热闹起来了,各个公司争先恐后地出自己的产品,百度的文心一言、谷歌的Bard、阿里的通义千问等等,有很多人借此机会已经赚到百万,很多卖课搞培训的都是互为合伙人,大家都懂…

如何注册appuploader账号​

如何注册appuploader账号​ 我们上一篇讲到appuploader的下载安装,要想使用此软件呢,需要注册账号才能使用,今​ 天我们来讲下如何注册appuploader账号来使用软件。​ 1.Apple官网注册Apple ID​ 首先我们点击首页左侧菜单栏中的“常见网…

【更新日志】填鸭表单TduckPro v5.1 更新

hi,各位Tducker小伙伴。 填鸭表单pro迎来了v5.1版本;本次我们进行了许多的功能新增和优化,能够让我们在日常使用中获得更好的体验。 让我们一起来康康新功能吧。 01 新增Pro功能 新增登录后才能填写表单。 新增表单卡片一键发布。 新增矩…

【STM32CubeMX】F103窗口看门狗

前言 本文记录了我学习STM32CubeMX的过程,方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了窗口看门狗的使用配置。要学习的话,注意流程一说,省略的内容。 基础 窗口看门狗(WWDG)属于APB1上外设。窗口看门狗(WWDG)的时钟源…

JUC并发编程16 | CAS自旋锁

CAS自旋锁 是什么,干什么,解决了什么痛点?如何解决,如何使用。 原子类:java.util.concurrent.atomic 在没有CAS之前,多线程环境不使用原子类保证线程安全i等操作,会出现数据问题,…

Day968.如何开启一个遗留系统现代化项目? -遗留系统现代化实战

如何开启一个遗留系统现代化项目? Hi,我是阿昌,今天学习记录的是关于如何开启一个遗留系统现代化项目?的内容。那如何启动一个遗留系统现代化项目。 一、项目背景 说来有点唏嘘,国内遗留系统的重灾区,恰恰…

WiFi(Wireless Fidelity)基础(八)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

迪赛智慧数——柱状图(象形标识图):在选择另一半时,你更看重的是?

效果图 好看只排第六,第一确实众望所归!当代男女择偶标准出炉,一张图带你看清。 女性挑选另一半时,她们更看重伴侣收入高、职业体面、工作能力强、受教育程度高,还得和自己有共同话题。 男性择偶观和女性恰恰相反&am…

ctfshow周末大挑战2023/5/12

本周周末大挑战用到的函数讲解 parse_url() 作用:解析URL,返回其组成部分 语法: parse_url ( string $url [, int $component -1 ] ) 参数: url:要解析的 URL。无效字符将使用 _ 来替换。 component: …

软件测试月薪2万,需要技术达到什么水平?

最近跟朋友在一起聚会的时候,提了一个问题,说一个软件测试工程师如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可…

Threejs进阶之十四:在uniapp中使用threejs创建三维图形

在uniapp中使用threejs 一、uni-app介绍二、新建uni-app项目三、安装three.js库四、在vue组件中引入three.js库五、创建场景(Scene)和相机(Camera)六、创建渲染器(Renderer)七、创建物体和灯光八、渲染场景(Scene)九、运行测试核心代码 一、uni-app介绍 uni-app是一个基于Vue.…

sqlserver 中的表值函数和标量函数

目录 一、表值函数 1.内联表值函数 1.创建函数 2.调用函数 3.返回结果 2.多语句的表值函数 2.调用函数 3.返回结果 3.内联表值函数和多语句的表值函数的区别 1.语法上 2.结构上 二、标量函数 1.创建函数 2.调用函数 2.返回结果 总结 一、表值函数 表值函数是返回一个Table类型…