视频 | 论文最爱的变分自编码器( VAE),不了解一下?

AI 科技评论按:喜欢机器学习和人工智能,却发现埋头苦练枯燥乏味还杀时间?这里是,雷锋字幕组编译的 Arxiv Insights 专栏,从技术角度出发,带你轻松深度学习。

原标题: Variational Autoencoders

翻译 | 赵萌 陈世杰 字幕 | 凡江 整理 | 吴璇 林尤添

视频内容

今天视频内容主要围绕变分自动编码器展开。

一般的自动编码器

首先介绍一般的自动编码器,对于自动编码器,它是输入某种数据,例如说图片或者高维向量,只要运行起来,数据通过神经网络运算就会被尽量压缩成更小的特征值。

这个过程有两个主要部分组成。

第一部分叫做编码器:编码器只是一层层的,它们可以是完全连接的层或者是卷积层。卷积层把输入数据压缩成特征值,这就比输入的数据具有更低的维度,这个就是bottleneck(瓶颈)。然后从bottleneck开始再一次用完全连接层或者卷积层来重构输入数据。

然后是训练的第二个部分:自动编码器会简单地根据解码网络重构数据,并简单计算重构损失。然后通过输入数据跟输出数据进行逐个像素之间的对比,我们可以创建一个损失函数然后训练网络来压缩图片。显然你可以使用全连接的简单编码器,但你也可以用卷积层置换出来,比如在处理图片或者音频的时候。这样做的作用是,当训练一个卷积网络去编码,解码一堆图像,实际上在创建一种全新的压缩算法。

如果把这项技术用于MNIST手写数字识别那将会很有趣,你会看到一些隐藏的特征值节点实际上学到了什么。如果我们改变隐含层特征规模,我们只用2个特征,意味着网络中间的bottleneck只有2个变量,似乎我们能够重构它们,但它们失真严重。失真的原因是你强行把整个图片所有的信息压缩成仅有的2个变量,那当你重构的时候就会失去一些细节。如果用更高维度的隐含层就可以重构一个更加清晰,更具锐度的图片,但在bottleneck里需要更多信息。

在自动编码器里有一些小技巧可以用来实现一些奇妙的东西。想象一下,本来是普通的MNIST手写数字识别的数据集,它清晰又明了,但加入一系列噪音以后,再对噪音图像进行计算,经过编码网络和bottleneck然后尝试重构图像,但不是重构噪音的图像,而是重构原始的清晰图像。用这些噪音跟清晰的数字训练这个网络,让编码器准确地得到噪音的边缘,这就是我们所说的降噪自动编码器。

举个例子,在一个无噪音输入图像中简单截取一个矩形区域删去这个区域,把这个图像输入网络里,尝试重构这个原始的完整图像,这个技术就是所谓的神经网络修复。也就是说你可以选取一小部分图像然后删掉再要求网络重构在原来的图像里是什么东西,用这个方法你可以做一些简单的事情例如移除图像水印,而且当你在拍一部电影的时候你也可以用这个网络移除入镜的汽车。

变分自动编码器

在有了常规自动编码器的基本概念之后,接下来介绍一下变分自动编码器。变分自动编码器的作用不是重构一个输入的图像,变成固定的向量,也不是把输入数据变成某种分布。在变分自动编码器里有一点不同的就是,你的常规深度向量C被两个独立的向量代替,一个代表分布的平均值,另一个代表分布的标准偏差,你需要一个向量联通。所以你的编码网络唯一要做的就是在分布里提取样本输入解码器。然后训练变分自动编码器的损失函数。

函数实际上包括2部分,第一部分代表重构损失这几乎跟自动编码器一样,只是多了个期望值运算符,因为我们要从分布里采样。损失函数的另一部分是相对熵,需要确定的是要学习的分布跟一般正态分布的情况不要差太远,然后尝试让你隐含层的数据分布平均值接近0标准差接近1。

分离变分自动编码器

在进行下一步之前,看一下使用变分自动编码器能得到的可见结果。有一类新的变分自动编码器有很多有价值的结果,它们叫分离变分自动编码器。分离的含义是,当你想确定在隐含层分布中不同神经节点的差异时,会发现它们不相关,因为它们都在学习关于输入数据不同的东西。所以为了实现这一步,你唯一要改变的就是在损失函数里加一个超参数,衡量这个相对熵能在损失函数里占多大分量,所以在分离版本里自动编码器将会只用一个有价值的特别的隐藏参数,如果对压缩没价值就仍然依照着原来的模式。

作者在 Deepmind 实验室环境用的变分自动编码器,让你看到三维世界里一个 agent 发挥了作用,它们压缩输入图像,在两个隐藏空间里能看到 agent,它们会重构这个空间,但你也可以开始改变隐藏变量然后看看对重构有什么影响。结果就是,如果你用分离变分自动编码器改变隐藏变量,实际上相当于一些非常有解释性的东西。能看到改变第一个隐藏变量,实际上改变了楼面的颜色,但仅此而已,然后另一个隐藏变量对应于转向左边还是转向右边甚至能改变旋转量,跟对象的特征 agent 形成了对比。如果不分离的情况下改变了任何隐藏特征值,图片里所有东西都开始燃烧这样并不知道隐藏向量正在编码什么。

这里是另一个例子如果你改变前面提到的隐藏空间的第一个变量脸部就会旋转。如果你对普通变量做同样的事或者对脸编码,也会旋转但会看到很多其他性质也会改变。

所以分离变分自动编码器的必杀技就是,有一种网络可以从高维空间提取有用的常规特征并且利用起来,对于某些学习性任务想做的就是这些学到的特征,将对训练数据的框架形成概念。

一个人们常用的领域,例如说强化学习,因为强化学习的整个问题就是你有非常稀疏的奖励,它耗费很多时间去训练,所以通过使用这个变分自动编码器作为某种特征提取工具,希望能够真正地在隐藏层上运行agent达到压缩特征值的目的,而不是在整个输入空间所以在实践中这样做是非常平衡的。

如果你把隐藏空间分得太细你的网络就会过拟合因为你给它太多的自由,它可以学习如何重构你输入的训练数据,但它无法概念化一些在新情况下看不到的数据,另一方面,如果你分的太粗你实际上失去了许多在输入数据中准确定义的细节,它们会在很多应用中损害性能。因为最后我们希望训练一个agentagent 能够通过压缩大量信息理解世界,然后在隐藏空间学习有用的行为。

参考文献

Disentangled VAE's (DeepMind 2016) https://arxiv.org/abs/1606.05579 Applying disentangled VAE's to RL: DARLA (DeepMind 2017) https://arxiv.org/abs/1707.0847 Original VAE paper (2013) https://arxiv.org/abs/1312.6114

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2018-03-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

科普|机器学习中决策树的原理与算法

AI科技评论按:本文作者栗向滨,中科院自动化所复杂系统国家重点实验室研究生毕业,机器学习与计算机视觉方向算法工程师。雷锋网首发文章。 我们知道,在机器学习中有两...

3706
来自专栏新智元

【AAAI Oral】用DeepMind的DQN解数学题,准确率提升15%

团队:阿凡题研究院、电子科技大学、北京大学 作者:王磊,张东祥,高联丽,宋井宽,郭龙,申恒涛 【新智元导读】增强学习和人类学习的机制非常相近,DeepMind已...

36813
来自专栏AI2ML人工智能to机器学习

变分の美

变分法(Variational method)已经成为微积分后主流的分析工具, 在物理和应用数学有着极大的功能。 变分法的诞生起源于最强大的数学家家族两个兄弟之...

1111
来自专栏大数据文摘

暑期追剧学AI (三) | 10分钟搞定机器学习数学思维:向量和它的朋友们

1905
来自专栏机器之心

专栏 | 阿里IJCAI 2017 Workshop论文:使用深度强化学习方法求解一类新型三维装箱问题

机器之心专栏 阿里菜鸟物流人工智能部 据机器之心了解,阿里巴巴有 11 篇论文入选如今正在墨尔本进行的 IJCAI 2017 大会,其中 6 篇来自阿里巴巴-浙...

9016
来自专栏杨熹的专栏

如何自动生成文本摘要

学习资料: https://www.youtube.com/watch?v=ogrJaOIuBx4&list=PL2-dafEMk2A7YdKv4XfKpfb...

4005
来自专栏自然语言处理

程序员眼中的统计学2

均值有两种计算方法:第一种计算方式是:将所有的数字加起来,然后除以数字的个数 。可用记为:µ=∑x/n。另一种计算方法是把每个数的频数考虑进去了的,它表示如下:...

843
来自专栏PPV课数据科学社区

用 TensorFlow 做个聊天机器人

本文结构: 聊天机器人的架构简图 用 TensorFlow 实现 Chatbot 的模型 如何准备 chatbot 的训练数据 Chatbot 源码解读 1. ...

3003
来自专栏CreateAMind

Unsupervised Learning of Latent Physical Properties Using

https://www.groundai.com/project/unsupervised-learning-of-latent-physical-proper...

703
来自专栏人工智能头条

深度学习和自然语言处理中的Attention和Memory机制

3685

扫码关注云+社区