图灵时报·多层特征的无监督学习

欢迎来到《The Turing Times 图灵时报》第三期!

本周有幸请到心有麟熙在斯坦福人工智能实验室的好友Shengjia Zhao博士,为大家介绍他在无监督学习方向的最新研究成果《多层特征的无监督学习》。

在深度学习中一类非常重要的问题是表征学习 (representation learning),即我们希望学到数据的高层的特征 (feature)来帮助我们完成最终的预测,聚类或者其他任务。一类表征学习的非常有效的方法是变分自编码器(Variational Autoencoders, 简称VAE)。

VAE定义了一个条件分布 p(x|z) 来给定隐变量 z 生成数据 x ,我们的希望是 z 能够捕捉到高层的特征,而x能生成对应于这些特征的图片。同时我们也对称地学习一个从 x 到 z 的映射:q(z|x),使得给定 x 我们可以求出对应的特征。

1

更深不一定更好

通常深的网络往往可以学到多层特征(feature hierarchy),也就是说,每一层逐渐表达更高层和抽象的特征。比如对于在ImageNet上面训练的深度卷积网络,我们发现每一层都表达更高层次的特征,例如,低层会表达简单的边缘或者形状,而更高的层会表达一些物体部分或者特征。

神经网络的分层示意图

对于VAE也有很多工作提议也应当逐层生成来学习多层特征:

这样的模型其实是把多个VAE堆叠起来。每一个VAE的输入隐变量z都是上一层VAE的输出x。

但是我们在论文《Learning Hierarchical Features from Generative Models》里说明,这样的结构不一定能带来好处。在很多模型下这样的结构都是多余的,而不能够学到多层特征。

2

一种简单的学习多层特征的方法

事实上有一种非常简单的学习多层特征的方法。我们称之为变分梯形自编码器Variational Ladder Autoencoder (VLAE)。他的原理非常简单,我们假设更复杂和抽象的特征需要更深的网络去表达,所以我们把z分成几个部分:

并且从 z1 到 z_h 和 x 之间的网络逐渐加深。参考下面的示意图:

我们从

生成 x 的过程是先从 z_h 通过一个网络生成 z_h' ,然后和下一层的特征z_(h-1) 结合,然后依次类推只到生成输出 x 。换言之,我们不断的把 z_h, ..., z_1 连接到网络中,但是越往后连接的和 x 之间的网络深度就会越浅。

对于 q(z|x) 也是一样的,我们不断的输出 z_1, ..., z_h ,越早输出的变量和 x 之间的网络深度也会越浅。我们的希望是这样更简单的特征就会被更低层的隐变量,比如 z_1 所表达,而更复杂的特征会被更高层的变量,比如 z_h 所表达。

训练和普通的VAE是一样的。下面是我们的模型学习到的特征。每一个图片都是只改变而不改变其他层的特征,这样根据这些图片不一样的地方我们可以推断这是对应的变量 z_l 表达的特征。下面的图片依次是从左到右改变 z_1 到 z_4 :

SVHN: Street View House Number 实景拍摄门牌号码的数据集

CelebA: 好莱坞明星头像数据集

我们发现低层(离 x 更近的层)学到了简单的特征,比如颜色,而更高的层学到了更复杂的特征,比如图片的整体结构。我们可以比较之前的堆叠的VAE在同样的问题上面学到的特征。很明显VLAE可以学到更加丰富有意义的多层特征。

代码出处:https://github.com/ermongroup/Variational-Ladder-Autoencoder。

原文地址:https://arxiv.org/abs/1702.08396

END

感谢大家支持心有麟熙。还没有关注心有麟熙公众号的同学们请加DrJimFan或者扫下图二维码。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G0CUGV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券