理解深度学习需要重新思考(深度网络的)泛化能力

临近圣诞,先在这里祝大家圣诞快乐! 圣诞节欧美的同仁们都回家过节与亲人团聚去了, 朋友圈里看到好几个海外生活的华人同胞在晒人去楼空的景象。这个洋节传到中国是完全另一种景象,回家团聚要等春节,于是圣诞节担当起了朋友聚会,各种旅游玩耍的任务。 一个典型的中国式过节“习俗”就是年轻人玩的圣诞节送苹果。据说是因为圣诞节平安夜-平安-苹果的谐音这么联系出来的。而且已经发展到了一到圣诞节前,大学便利店最显眼的位置就会堆满包装精美的小盒子, 大约20-30块钱一个,里面是一只苹果。中国商人的商业嗅觉和想象力真是令人佩服, 这就是创造力啊!说完一堆废话,回来今天的主题, 我们来读一篇google brain的人写的文章, 标题就是本文的题目,作者期望能对深度网络为什么有效做出一点点思考。

写文章也好,做报告也好,核心要义是要在充分把握读者是谁的基础上构思合适的内容。 这样可以比较好的把握内容的深度和趣味。但是我写的文章乱七八糟不聚焦,相信各个层次的读者都有。 因此所谓充分把我读者在我理解就是没法把握。本文基本会按照最容易理解的方式来讲述,特别浅显的解释会写在括号里。 一些有意思的技术点就只好放弃了。 建议有兴趣的读者还是去阅读一下原文。

正式读文章之前再跑一下题。 之前跟我的导师学到过如何读学术论文的秘技。说穿了也不难, 就是先看摘要, 看看文章作者总结的重要贡献,是不是够新够重要。 再看开篇的介绍,主要是看作者是否对学术研究的现状有个适当的把握,再就是研究的问题对不对。 之后看结论,看看文章最后的结果和自己目前在做的事情是不是有关联。 这三步每一步都可以筛掉一些, 走完三步花不了多少时间,但是基本上可以筛掉百分之95以上的文章。 剩下的一些, 可以拿来细读。 这里介绍这篇文章, 就用这种思路。

先看摘要, 作者先提到深度神经网络在训练用的数据(有答案用来学习的)和测试数据(没有答案用来考试的)上的差异令人惊叹的小, 意思是深度网络是个优等生,不论什么都一学就会,而且成绩很好。 用传统思路来解释这种现象(为什么是优等生):要么是模型本身特性好(优质家庭出身好),要么是用到了合适的正则化(不太好简单类比, 可以当做学的时候有个好老师,保证你不会学歪了),二选一。本文做了很多实验, 认为不能这么理解。 我们用当前流行的图像分类任务做了个实验,让深度学习去学随机的类别标记(就是看图分类这种事情, 老师教的是任性随机分类),发现网络一样 学的很好。这种现象就不能用常规的正则化来解释了(老师是胡乱教的,所以其实没有好老师)。甚至我们用随机图像(连题都是胡乱出的)深度网络也能学好。 我们又通过实验来确认这种现象可以用也应该用某种不一样的理论来解释。实验证明,当深度神经网络中的参数数量一旦比要学习数据点个数多,深度网络就有了这种学习能力(原来是个死记硬背的好学生,就靠脑子好, 记忆好, 什么都能记得住)  我们与其它传统模型对比了下(你们不够好, 记性不好,脑容量太小)。

看完摘要,自然会好奇, 啊,真的是这样吗? 就靠死记硬背,那碰上没见过的题为什么也能做的不错? 继续往下看。

介绍:我们知道深度神经网络有很多很多参数(存储的容量), 比训练样本的个数多的多(要学的东西)。深度网络又有很好的泛化能力(没见过的题一样给出正确答案)。传统的模型都不这样(死记硬背的一般没那么灵活聪明啊)。 怎么来解释呢? 统计学习理论提出了各种有关复杂性的度量(可以类比为掌握学习方法), 并且认为通过这些度量能够控制泛化能力(好的学习方法可以让人在死记硬背基础上变的聪明),这些方法包括, VC维数, Rademacher 复杂度,  一致稳定性等. 读者君要是碰到看不顺眼的号称自己是搞机器学习的大师, 就问问他这三个概念, 让他给你解释一下, 要是他说不清楚, 那就是伪大师。 然而这些方法都说,如果参数多,那就一定要做正则化约束(实际上没有做)。要么也可以搞搞early stop(意思是死记硬背的越多,脑子约不灵活, 所以适可而止, 学一部分就算了,糊里糊涂也许碰到没见过反而考得更好 )。到这里的意思是说, 以前的理论都解释不了。

跳过文章下面对实际实验和相关工作的介绍, 要说这个这篇文章就太长啦, 我们直接去看结论。

结论:传统的观点认为机器学习是建立在所谓Parsimony(简约性)的基础上的。 也就是所有学习过程可以被简化为在抽取数据集上的低复杂度模式。而简单粗暴的记忆不被认为是一种有效的学习方式(要聪明的学习, 掌握一般原理,原理都很简单, 不能死记硬背) 。于此同时,全靠死记硬背又是一种解决问题的有效方法(学习好就是记性好)。

本文挑战了这种传统观点。 很多深度神经网络就靠记忆好。记了大量的东西, 就有很好的泛化能力(变聪明了), 那么怎么解释泛化能力(变聪明)呢? 也许是所谓泛化能力(聪明)已经紧密结合在所谓记忆的细节里了。 而传统的理论都没法研究这一点。我们相信,本文是首次探讨这个问题的, 期待今后通过对泛化能力的研究可以对理解网络的学习有所帮助。

文章结论的意思是说, 虽然我们没有给出问题的答案, 但是告诉你们传统的理论解释都行不通, 我们需要找到新的更合适的方法。 一流文章提问题, 二流文章解问题。 以此标准, 这是一篇一流文章。

下面开始作者的胡思乱想。类比人的学习, 从小我们就知道, 聪明的首要因素是记性好, 记性好就聪明。 所以培养小孩, 先培养记忆力。 而培养记忆力的传统方法就是死记硬背多做题 。

还有一个有趣的现象, 就是很多小学,初中的学霸, 一上高中就不行了。 怎么理解呢? 本文给出的启示是, 只靠死记硬背多做题, 基本就可以搞定小学,初中阶段。每个人都具有死记硬背的基本能力, 只要花足够多的时间, 多做练习,严格自律就可以。 而一个人的时间终归是有限的, 要睡觉,要吃饭, 就算剩下的时间都拿来学习也就那么多。 所谓人力终有穷尽,  一到高中,知识量太多,时间有限,死记硬背能够达到的高度就大大的受限了。这些传统的学霸就败下阵来,而聪明脑子,也就是泛化能力强,会举一反三的, 开始制霸学界。

那么怎么培养出聪明脑子呢? 这事就深了, 至少以上这篇文章甚至都还没有触及到这个问题。 我们唯一知道的是,死记硬背多做题仍然有用。 先做好这个再说。