专栏首页新智元【干货】ICLR-17 最佳论文详解:理解深度学习要重新思考泛化

【干货】ICLR-17 最佳论文详解:理解深度学习要重新思考泛化

【新智元导读】ICLR-17 最佳论文《理解深度学习需要重新思考泛化》引起过广泛争议,但弄清深度神经网络泛化本质无疑是重要的问题。新智元在取得本文作者 Adrian Colyer 授权后,编译了他阅读该论文的感想,也欢迎留下你的看法。

【编者按:有关《理解深度学习需要重新思考泛化》论文介绍见文末;灰色加粗字体代表引自论文;红色加粗是新智元编辑加的】

(文/Adrion Colyer)这篇论文有很多优点:结果简单易懂,还有些出乎意料,会让你在接下来很长一段时间思考这一切可能意味着什么!

作者一开始提出的问题是:

“泛化好的神经网络和泛化不好的神经网络有什么区别?对这一问题做出满意的回答,不仅有助于更好地理解神经网络,还可能带来更正确(principled)可靠的模型架构设计。”

作者说“泛化好”的意思,就是简单指“是什么原因导致在训练数据上表现很好的网络,在(没有接触过的)测试数据上表现也很好?”(与迁移学习不同,迁移学习做的是将一个训练好的网络用于另外一个相关但不同的问题)。

花点时间想一下,这个问题基本可以归结为:“为什么神经网络效果这么好?”至于泛化,一个是只记住部分训练数据而后将其重复出来,一个则是真正对可以用来进行预测的数据集产生一些有意义的发现(intuition),这两者的区别就是泛化。

所以,要是我们对“为什么神经网络表现(泛化)这么好?”给出的回答是:“我们真的不知道!”——事情就有些尴尬了。

不可思议的随机标签案例

故事从一个熟悉的地方开始——CIFAR 10(含有 5 万幅训练图像,分为 10 个类,1 万幅验证图像)和 ILSVRC(ImageNet)2012(1,281,167 训练数据,5 万幅验证图像,1000 个类别)数据集和 Inception 网络架构的变体。

使用训练数据训练网络,然后在“训练数据集”上错误为 0,这没什么好奇怪的。这充分说明了过拟合——记住训练样本,而不是学习对特征进行真正的预测。我们可以使用正则化技术应对过拟合,设计出泛化性能更好的网络。这个话题我们稍后再说。

仍然使用相同的训练数据,但这次将标签打乱(使标签和图像中的内容不再具有真正的对应关系)。使用这些标签随机的数据训练网络,会得到什么?训练错误还是 0!

“在这种情况下,实例和分类标签之间不再有任何关系。因此,学习是不可能发生的。直觉告诉我们,这种不可能会在训练过程中很清楚地表现出来,比如训练不收敛,或者收敛速度大幅减慢。让我们感到意外的是,有多个标准架构的训练过程的好些属性,在很大程度上都没有受这种标签转换的影响。”

正如作者所言,“深度神经网络很容易拟合随机标签”。从第一个实验中可以看出以下 3 个关键点:

  1. 神经网络的有效容量足以记住整个数据集;
  2. 对标签随机的数据进行优化很容易。事实上,与标签正确的训练过程相比,随机标签的训练时间也只增加一个小的常数因子;
  3. 将标签打乱仅仅是做了一个数据转换,其他所有关于学习问题的属性都没有改变。

不过,如果你把使用随机标签训练的网络在测试数据集上跑一遍,结果当然不会好,因为网络实际上并没有从数据集中学到什么。用专业一点的话说,就是网络的泛化误差很高。

综上可得:

“……通过将标签随机化,我们可以强制模型不受改变、保持同样大小、超参数或优化器的情况下,大幅提升网络的泛化误差。我们在 CIFAR 10 和 ImageNet 分类基准上训练了好几种不同标准架构,证实了这一点。”

换句话说:模型本身、模型大小、超参数和优化器都不能解释当前最好的神经网络的泛化性能。因为在其他条件都不变的情况下,唯独泛化误差产生大幅变动,只能得出这一个答案。

更加不可思议的随机图像案例

不仅仅打乱标签,把图像本身也打乱,会发生什么呢?或者,干脆用随机噪声代替真实图像??

论文给出的图中,将这一实验标记为“高斯”实验,因为作者为每幅图像生成随机像素的方法,是使用了匹配原始图像数据集均值和方差的高斯分布。

结果,网络的训练错误依然为 0,而且所用的时间还比随机标签更少!对此,一种假说是,随机标签图像都属于一个类别,但由于交换了标签,不得不作为不同类别的图像数据进行学习,而随机像素图像彼此之间更分散。

作者团队做了多次实验,将一系列不同程度和类型的随机性加入数据集:

  • 真实标签(原始数据集,没做修改)
  • 部分损坏的标签(将其中一部分标签打乱了)
  • 随机标签(把所有标签都打乱)
  • shuffle 像素(选择一个像素排列,然后将其统一[uniformly]用于所有图像)
  • 随机像素(对每幅图像单独做一个不同的随机排列)
  • 高斯方法(如上文所述,给每幅图像增加随机生成的像素)

一路下来,网络仍然能够完美地拟合训练数据。

“此外,我们进一步改变了随机性的数量,在无噪声和完全噪声的情况下平滑地插入数据集。这样一来,标签还是保有某种程度的信号,从而会造成一系列间接的学习问题。随着噪声水平的提高,我们观察到泛化误差呈现出稳定的恶化。这表明神经网络能够理解数据中的剩余信号,同时用暴力计算适应噪声部分。”

对我而言,最后一句话是关键。我们在设计模型架构的过程中,某些决定显然会影响模型的泛化能力。当数据中没有其他真实信号时,世界上泛化性能最好的网络也不得不退回去诉诸于记忆。

所以,也许我们需要一种方法,将数据集真正的泛化潜力梳理清楚,同时弄明白给定模型架构获取这种潜力效果如何。对此,一个简单的方法是在同一个数据集上训练不同的架构!——当然,我们一直都在这么做。但这对于我们初衷——理解为什么一些模型比其他模型泛化得更好——仍然没什么用处。

正则化方法救场?

模型架构本身显然不足以作为一个合格的正则化函数(不能防止过拟合/记忆)。但是,常用的正则化技术呢?

“我们表明,显式正则化方法,如权重衰减、dropout 和数据增强,都不能充分解释神经网络的泛化误差:显式正则化确实可以提高泛化性能,但其本身既没必要也不足以控制泛化误差。”

显式正则化更像是做调整参数,有助于改善泛化能力,但不使用显示正则化方法也不一定意味着会产生泛化错误。并不是所有拟合训练数据的模型都能够很好地泛化。这篇论文中一个有趣的分析表明,通过使用梯度下降也能获取一定量的正则化:

“我们分析了作为隐式正则化函数的随机梯度下降(SGD)的表现。对于线性模型,SGD 总是收敛到一个小正态(norm)的解决方案。因此,算法本身将解决方案隐性地正则化了……尽管这并不能解释为什么某些架构比其他架构泛化得更好,但它确实表明,要准确理解使用 SGD 训练的模型继承了哪些属性,还需要更多的调查。”

机器学习模型的有效容量

假设有个神经网络,训练样本是有限数的 n。如果网络有 p 个参数(p>n),那么即使是简单到只有两层的神经网络也可以对输入样本的任何函数进行表征。论文作者(在附录中)证明以下定理:

“存在一个激活函数为 ReLU 的两层神经网络,权重为 2n + d,可以对维度为 d 大小为 n 的样本的任何函数进行表征。”

就连线性大小的 2 层深网络也可以表征训练数据的任何标签!

结论:需要新的衡量模型复杂度的方法

“这种情况对统计学习理论构成了一个概念上的挑战,因为衡量模型复杂度量的传统方法不能很好地解释大规模人工神经网络的泛化能力。我们认为,我们目前还没有发现一个精确的正式衡量方法,在这个衡量方法下,这些庞大的模型都很简单。从我们的实验得出的另一个见解是,即使最终的模型不能泛化,在实际操作中优化还是很容易的。这也表明了为什么实践中容易做优化的原因与神经网络泛化能力的原因是不同的。”

论文及 ICLR-17 公开评审简介

摘要

尽管体积巨大,成功的深度人工神经网络在训练和测试性能之间可以展现出非常小的差异。过去一般将其归功于泛化误差小,无论是对模型谱系的特点还是对于训练中使用的正则技术来说。

通过广泛的系统的实验,我们展示了传统方法无法解释为什么大规模神经网络在实践中泛化表现好。 具体来说,我们的实验证明了用随机梯度方法训练的、用于图像分类的最先进的卷积网络很容易拟合训练数据的随机标记。这种现象本质上不受显式正则化影响,即使我们通过完全非结构化随机噪声来替换真实图像,也会发生这种现象。我们用一个理论结构证实了这些实验结果,表明只要参数的数量超过实践中通常的数据点的数量,简单两层深的神经网络就已经具有完美的有限样本表达性(finite sample expressivity)。我们通过与传统模型进行比较来解释我们的实验结果。

【一句话总结】通过深入系统的实验,我们指出传统方式无法解释为什么大规模神经网络在实践中泛化表现良好,同时指出我们为何需要重新思考泛化问题。

【ICLR 评委会最终决定】作者提供了深度神经网络拟合随机标注数据能力的迷人研究结果。调查深入,有启发性,鼓舞人心。作者提出了a)一个理论实例,显示具有大量参数和足够大的 wrt 样本的简单浅层网络产生了完美的有限样本表达性;b)系统广泛的实验评价,以支持研究结果和论点。实验评价的考虑非常周全。

  • 论文地址:https://openreview.net/forum?id=Sy8gdB9xx&noteId=Sy8gdB9xx
  • Adrian 原文:https://blog.acolyer.org/2017/05/11/understanding-deep-learning-requires-re-thinking-generalization

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-21

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Bengio vs 谷歌】深度学习兄弟对决,神经网络泛化本质之争

    【新智元导读】一场或许有关深度学习本质的争论正在火热进行中。去年底,MIT、DeepMind 和谷歌大脑合著的论文《理解深度学习需要重新思考泛化》引发热论。论文...

    新智元
  • 你真的看懂了登上Nature 封面的清华“天机”芯片?

    近日Nature杂志封面刊登了清华类脑计算团队的最新成果:天机芯片以及由其操控的自行车。(详见《“天机”今登Nature封面:清华施路平团队发布全球首款异构融合...

    新智元
  • 秒变莫扎特、贝多芬,Facebook提出完美转换音乐风格的神经网络

    新智元
  • 解读 | ICLR-17 最佳论文:理解深度学习需要重新思考泛化问题

    选自morning paper 机器之心编译 参与:黄玉胜、黄小天 本文是一篇很好的综述论文:结果很容易理解,也让人有些惊讶,但其意指又会让人思考良久。 对于文...

    机器之心
  • Dubbo剖析-服务消费端泛化调用

    前面我们讲解基于Spring和基于dubbo api方式搭建一个简单的分布式系统时候服务消费端是引入了一个sdk的,这个SDK是个二方包,里面存放了服务提供端提...

    加多
  • UML类图,阅读源码的利器

    行百里er
  • 死锁案例十四

    这是我同事问我的一个问题,在网上看到了如下案例,本案例RC RR都可以出现,其实这个死锁原因也比较简单,我们来具体看看:

    用户1278550
  • kubernetes创建pods失败解决 顶

    虽然每次通过yaml创建rc都显示成功了,但是 kubectl get pods却没显示任何的pod.

    算法之名
  • 用phpmailer发邮件 中文乱码问题解决

    deepcc
  • 学习zepto.js(对象方法)[5]

    学习zepto.js(对象方法)[5] clone: 该方法不接收任何参数,会返回对象中的所有元素集合,但不会对象绑定的事件. var...

    贾顺名

扫码关注云+社区

领取腾讯云代金券