今天在新智元中看到一篇很感兴趣题目,讲深度学习的泛化。
Bengio实验室日前发表了一篇论文,这篇论文将作为ICLR
2017一场研讨会的主题:“深度网络不通过记忆学习”,主要针对谷歌大脑的《理解深度学习需要重新思考泛化》。
结和心智元翻译,我又看了下先来看看谷歌大脑的文章。
我比较感兴趣的是作者的两个观点:
1.神经网路的训练能够拟合任意随机置换的标签,所以能够记忆。
2.神经网络在没有任何正则化方法下本身存在泛化能力。
为了说明作者的观点,作者做了些实验:
第一部分所有实验相同模型下,不使用正则化,
图1,不同数据集(正确标签随机标签,像素点置换,随机橡树,高斯数据)训练误差都随时间的下降,并且都能到达训练误差为0。
图2.随着随机标签替代率的上升收敛时间线性上升。作者认为都能收敛,说明模型不仅在记忆数据,还在记忆噪音。奇怪的是为什么呈线性呢?
图3,随着标签噪音的上升,测试误差也线性上升。
图一证明了的第一个观点,神经网路的训练能够拟合任意随机置换的标签/
作者的另外一个实验,通过加上各种正则化,比较测试正确率。
这个也是比较正常的一个图,加了正则化已后测试误差都有所下降。通常接下来的结论是,某某方法有更好的泛化效果。不过作者的关注点是,什么都不加的时候泛化率也很好啊,为什么呢?
我的小总结一下:作者观点1神经网路的训练能够拟合任意随机置换的标签,所以能够记住。(如果这里的记住是指拟合的话也是对的)
作者观点2,神经网络在没有任何正则化方法下本身存在泛化能力。(我们一般关注使用了正则化方法能够提高多少测试准确率,而本文提醒我们关注基础的测试准确率)
krugger论文
主要反对不是记忆
首先讨论了记忆是什么,该如何定义,作者选了三种:是0训练误差;是0训练误差随机测试误差;不是模式学习。无论从哪个角度看,神经网络都不在记忆,特别是第三个,神经网络在学习不同的模式。
作者首先贴了个图
图1隐藏层神经元个数不同的神经网络在不同的噪音水平下收敛后的测试准确率
相比较上一篇只关注测试准确率收敛。随机输入的测试准确率,上限比较接近提出需要更多的隐藏神经元才能达到相同的测试准确率。(这似乎也暗示了基础的测试准确率从何而来,从很多神经元的竞争中来)。
随机标签的话,上限完全不同。90%一下还可以说,增加神经元能够到达到相同测试准确率。
图2,90%准确率下,不同noiselevel所需要的hiddennumber,
Noiselevel Hidden number
0 约5
0.2 约8
0.4 约12
0.6 约15
0.8 约2000
我粗略的算了一下,这两张图要跑60个模型。
嘴刁的一张图,引用了作者自己另一篇文章观点:随机梯度下降发的batch越大泛化效果越差,可能是因为大批次收敛于损失函数中比较锐利的最小值。于是考察了噪音请款下收敛点的锐利程度。随着噪音增加收敛的电非常的锐利。
后续再做个实验正则化是否能避开这些锐利的点。
可以在有噪音的情况下,训练数据成绩很低(不去拟合训练数据),在真实数据上分数很高。
作者总结:反对说神经网络是记忆。神经网络是学习模式。在真实数据中学习简单模式,在噪音数据中学习了复杂模式。给了我们设计好的先验的方法,反对记忆。
我的总结:
我感觉两篇矛盾不是很大,主要反对,“能够拟合随机函数,则为记忆”这种推论。通过辩论把记忆这个词认真探究了一番。而给出的实验丰富了我们对泛华的认识。
虽然很早就理论证明神经网络能够拟合任意函数,(即任意函数在隐藏神经元足够多的请款下能偶拟合,而任意函数和文中提到的随机标签还是不一样的,随机标签有点像插值)
还是第一次看到神经网络能够把这个函数找出来。还让我们重新关注那个很高的基础泛化率,(很可能是神经元竞争的结果)。以及呼吁大家关注泛化的本质。
两篇文章比较集中在记忆的讨论了,这是一种好现象,使抽象的词分类面,神经网络什么的和日常词汇接轨,扩大听得懂人群。
看完之后很想唠叨一下自己对泛化的理解~~,下次再写。