学界 | 谷歌大脑提出对抗正则化方法,显著改善自编码器的泛化和表征学习能力

选自arXiv

机器之心编译

参与:Pedro、王淑婷

自编码器因其优越的降维和无监督表征学习能力而知名,而过去的研究表明自编码器具备一定程度的插值能力。来自谷歌大脑的 Ian Goodfellow 等研究者从这一角度提出了一种新方法,显著改善了自编码器的平滑插值能力,这不仅能提高自编码器的泛化能力,对于后续任务的表征学习也会大有帮助。

1 引言

无监督学习的目标之一是不依靠显式的标注得到数据集的内在结构。自编码器是一种用于达成该目标的常见结构,它学习如何将数据点映射到隐编码中——利用它以最小的信息损失来恢复数据。通常情况下,隐编码的维度小于数据的维度,这表明自编码器可以实施某种降维。对于某些特定的结构,隐编码可以揭示数据集产生差异的关键因素,这使得这些模型能够用于表征学习 [7,15]。过去,它们还被用于预训练其它网络:先在无标注的数据上训练它们,之后将它们叠加起来初始化深层网络 [1,41]。最近的研究表明,通过对隐藏空间施加先验能使自编码器用于概率建模或生成模型建模 [18,25,31]。

某些情况下,自编码器显示了插值的能力。具体来说,通过在隐藏空间中混合编码以及对结果进行解码,自编码器可以生成对应数据点的语义上有意义的组合。这种行为本身就很有用,例如用于创造性应用 [6]。尽管如此,我们还认为它展示了一种广义上的「泛化」能力——这意味着自编码器并不只是简单地记忆如何重建一小部分数据点。从另一个角度来看,它还表明自编码器发现了一些数据的内在结构并在其隐藏空间中捕获了它。这些特点使得插值经常出现在关于自编码器 [5,11,14,26,27,32] 及隐变量生成模型研究的实验结果中 [10,30,38]。基于无监督表征学习 [3] 和正则化 [40] 的插值与「平面」数据流形之间的联系已经被探索过。

尽管插值应用广泛,其定义仍然有些不够明确,因为它的定义依赖于「语义上有意义的组合」的概念。此外,人们也很难直观的理解为什么自编码器应该具有插值能力——用于自编码器的目标或结构都没有明确地对其提出过这种要求。本文主要在自编码器的规范化以及插值改进方面做出了以下贡献:

  • 提出了一种对抗正则化策略,该策略明确鼓励自编码器中的高质量插值(第 2 节)。
  • 开发了一个简单的基准,其中插值定义明确且可以量化(第 3.1 节)。
  • 定量地评估了常见的自编码器模型实施有效插值的能力;同时还展示了本文提出的正则化项更优的插值能力(3.2 节)。
  • 证明了正则化项有利于后续任务的表征学习(第 4 节)。

图 1:对抗约束自编码器插值(ACAI)。评估网络试图预测对应于插值数据点的插值系数 α。训练自编码器来欺骗评估网络使输出 α = 0。

论文:Understanding and Improving Interpolation in Autoencoders via an Adversarial Regularizer

论文链接:https://arxiv.org/pdf/1807.07543v2.pdf

通过对隐编码中重建数据点所需的所有信息进行编码,自编码器为学习压缩表征提供了强大的框架。某些情况下,自编码器可以「插值」:通过解码两个数据点的隐编码的凸组合,自编码器可以产生一个语义上混合各数据点特征的输出。本论文提出了一种正则化过程,它鼓励插值输出通过欺骗评估网络(critic network)的方式显得更真实,其中评估网络被训练用于恢复插值数据的混合系数。论文还提出了一个简单的基准测试,可以定量测量各种自编码器可以插值的程度,并表明本文提出的正则化项可以显著改善此设置中的插值。此外,论文还认为正则化项产生的隐编码对后续任务更有效,这表明插值能力和学习有用表征之间可能存在联系。

3 自编码器,以及如何插值

如何衡量自编码器插值是否有效以及正则化策略是否达到其既定目标?如第 2 节所述,定义插值依赖于「语义相似性」的概念,这是一个模糊且依赖于问题的概念。例如,按照「αz_1 + (1 − α)z_2 应该映射到 αx_1 + (1 − α)x_2」定义插值显得过于简单,因为数据空间中的插值通常不会产生真实的数据点——用图像来表现的话,这种情况对应于两个图像像素值之间的简单淡化。然而,我们想要的是自编码器在特征不同的 x1 和 x2 之间平滑地变化;换句话说,是希望沿着插值的解码点平滑地遍历数据的底层流形而不是简单地在数据空间中插值。但是,我们很少能够访问基础数据流。为了使这个问题更加具体,本文引入了一个简单的基准测试,其中数据流形简单且先验已知,这使得量化插值质量成为可能。然后,我们评估各种常见自编码器在基准测试中进行插值的能力。最后,我们在基准测试中测试 ACAI,发现它展示出了显著改善的性能和定性优越的插值。

图 2:合成线数据集中的数据和插值示例。(a) 来自数据集的 16 个随机样本。(b) 从 Λ=11π/ 14 到 0 的完美插值。(c) 在数据空间而不是「语义」或隐藏空间中插值。显然,以这种方式插值会产生不在数据流形上的点。(d) 从一幅图像突然转换成另一幅图像、而不是平滑改变的插值。(e) 平滑插值,从开始到结束点的路径比最短路径更长。(f) 采用正确路径但中间点虚化了的插值。

图 3:以下自编码器在合成线基准上插值的效果:(a) 标准自编码器,(b) 对隐藏空间施加 dropout 的标准编码器,(c) 去噪自编码器,(d) 变分自编码器,(e) 对抗自编码器,(f) 矢量量化变分自编码器,(g) 对抗约束自编码器插值(我们的模型)。

表 1:不同自编码器在合成基准测试中获得的分数(越低越好)。

4 优化表征学习

到目前为止,本文只专注于测试不同自编码器的插值能力。现在,我们想知道改进插值是否与后续任务的性能改进有关。具体来说,我们将评估使用本文提出的正则化项是否会产生隐藏空间表征,从而改善在监督学习和聚类中的表现。换句话说,我们试图测试改进插值是否会影响隐藏表征:它可以揭示数据集产生差异的关键因素。为了回答这个问题,我们在 MNIST [21],SVHN [28] 和 CIFAR-10 [20] 数据集上用不同自编码器训练过的隐藏空间来进行分类聚类测试。

4.1 单层分类器

表 2:不同自编码器达到的单层分类器准确率

4.2 聚类

表 3:在不同自编码器(左)和先前报告的方法(右)的隐藏空间上使用 K-Means 的聚类准确率。右边的「Data」是指直接对数据执行 K-Means。标 * 的结果来自 [16],标 ** 的结果来自 [42]。

图 6:MNIST 上的插值示例,隐维数为 256:(a) 标准编码器,(b)Dropout 编码器,(c) 去噪编码器,(d)VAE,(e)AAE,(f)VQ-VAE,(g)ACAI 自编码器。

图 10:CelebA 上的插值示例,隐维数为 256:(a) 标准编码器,(b)Dropout 编码器,(c) 去噪编码器,(d)VAE,(e)AAE,(f)VQ-VAE,(g)ACAI 自编码器。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-08-05

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 简述表征句子的3种无监督深度学习方法

选自Medium 作者:yonatan hadar 机器之心编译 参与:Nurhachu Null、路 本文介绍了三种用于表征句子的无监督深度学习方法:自编码器...

5295
来自专栏机器之心

教程 | 从字符级的语言建模开始,了解语言模型与序列建模的基本概念

选自imaddabbura 机器之心编译 你有没有想过 Gmail 自动回复是如何进行的?或者手机在你输入文本时如何对下一个词提出建议?生成文本序列的通常方式是...

4065
来自专栏人工智能头条

实战 | 手把手教你用PyTorch实现图像描述(附完整代码)

2.7K7
来自专栏量子位

自编码器是什么?有什么用?这里有一份入门指南(附代码)

? 自编码器(Autoencoder,AE),是一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。...

3386

如何实现自然语言处理的集束搜索解码器

自然语言处理任务(例如字幕生成和机器翻译)涉及生成单词序列。

4208
来自专栏AI研习社

完全图解RNN、RNN变体、Seq2Seq、Attention机制

本文主要是利用图片的形式,详细地介绍了经典的RNN、RNN几个重要变体,以及Seq2Seq模型、Attention机制。希望这篇文章能够提供一个全新的视角,帮助...

4555
来自专栏悦思悦读

【文本分析】怎样把文档转换成向量

文本分析 文本分析指从文本中抽取出的特征来量化来表示文本信息,并在此基础上对其进行基于数学模型的处理。它是文本挖掘、信息检索的一个基本问题。 在“大数据”盛行的...

58611
来自专栏专知

【NAACL 2018】Self-attention考虑相对位置,谷歌Vaswani团队最新工作

2545
来自专栏wOw的Android小站

[Tensorflow] Tensor维度理解

Tensor在Tensorflow中是N维矩阵,所以涉及到Tensor的方法,也都是对矩阵的处理。由于是多维,在Tensorflow中Tensor的流动过程就涉...

2193
来自专栏MyBlog

#数值分析读书笔记(4)求非线性方程的数值求解

是否同号, 然后即可知根落在左侧还是右侧, 用这个中点来代替掉原来的端点, 然后得到一个新的区间, 如此反复迭代下去之后, 我们会发现区间收敛到接近一个数

1892

扫码关注云+社区

领取腾讯云代金券