ICML新研究提出泛化能力评估新指标:直接上向量余弦距离就OK,还开源了相关代码

百家 作者:量子位 2019-07-04 14:04:36
安妮 郭一璞 发自 凹非寺
量子位 出品 | 公众号 QbitAI

如何去评价一个神经网络的泛化能力?

一篇出自比利时天主教鲁汶大学的研究发表在了ICML 2019识别和理解深度学习现象Workshop上。

研究指出,网络的泛化能力,可以通过“层旋转”来评判。

所谓层旋转,是指神经网络中每一层的权重向量与初始化之间夹角余弦的变化,被研究人员可以当成衡量泛化性能强弱的指标。

研究人员公布了在训练期间控制层旋转工具的代码,表示这项工作“可以大大减少当前调整超参数的难度”:

也就是说,可以通过最少的超参数调整,获得最佳的神经网络性能

在Reddit论坛上,有人指出这是一项“超级有趣的实证结果”,也有人表示这项研究启发出了众多新思考。

层旋转有什么用

在论文Layer rotation: a surprisingly powerful indicator of generalization in deep networks?中,研究详细解释了层旋转背后的探索之路。

神经网络的泛化能力受训练它的优化程序的影响,因此确定这个程序中哪些因素影响泛化是个重要问题。

在这篇论文中,研究人员提出了一种全新的算法:Layca((LAYer-level Controlled Amount of weight rotation),能够直接控制神经网络的优化算法通过每层网络的学习速率参数,进而控制层旋转。

也就是说,使用了Layca算法,可以通过它的学习速率参数,控制每一层网络中每一步权重旋转。

Layca算法的工作流程是下面这样的:

研究人员表示,用这种新的算法,可以达到比较明显的控制效果,同时,泛化能力也会产生巨大的差异,准确度差异达30%。

随后,他们利用Layca,进一步对层旋转架构进行研究,开发监测和控制层旋转的工具。

研究人员采用SGD(随机梯度下降)作为默认优化器,用Layca来改变相对转速和全局旋转速率值,分别对5种网络架构和数据复杂性不同的神经网络进行研究,它们分别为:

他们绘制出一张在不同层旋转速率中层旋转曲线(CFR)与相应测试精度(η)之间的关系。

在下图中,横轴代表迭代次数,纵轴代表夹角的余弦,曲线颜色从浅到深代表网络最后一层与第一层,最终结果如下:

可以看出,每层的层旋转越大,神经网络的泛化能力就越好。

由此看来,研究人员认为,层旋转这个指标,可以用来直接来判断网络的泛化能力。

层旋转的影响

之后,除了Layca,研究者们还用SGD做了类似的实验。根据实验结果,得出了几个结论:

对于SGD学习率

学习率参数直接影响层旋转速率,并影响更新的大小。

从下面五个任务中SGD训练期间不同学习率对层旋转曲线影响的实验结果图来看,测试精度随着层旋转而增加,到临界点后开始减少。

对于权重衰减

权重衰减的范数会增加由给定训练步骤引起的旋转量,根据下面的实验结果图可以看出,所有层的权重在初始化时达到1的余弦距离,并且得到的测试性能与使用Layca获得的性能相当。

对于学习率预热

高学习率会产生突然的层旋转,不会影响训练损失。

在学习率预热方面,研究者用ResNet-110做实验,在CIFAR-10数据集上训练。使用的预热策略是以小10倍的学习速率开始,线性增加逐渐达到指定的最终学习率。

结果如下图:

SGD产生不稳定的层旋转,始终转化为无法提高训练精度。使用预热可以大大减少这些不稳定性,在Epoch超过25之前,训练京都没有显著提高。

而Layca表现更优。归功于Layca的控制能力,它稳定性较高,并且在不需要预热的情况下达到高泛化性能。

对于自适应梯度法

研究者们基于ICLR 2015论文《A method for stochastic optimization》中的算法,在C10-CNN1任务上做了实验。

根据第10,第50和第90百分位每个层的状况可以看出,自适应梯度方法可能对层旋转产生巨大影响,自适应梯度方法使用的参数级统计数据主要在层之间变化,而在层内可忽略不计。

另外,对比自适应梯度法在训练前面的5个任务和自适应梯度法层旋转与SGD诱导层旋转的结果,可以发现,自适应梯度法能够让Layca达到SGD的泛化能力。

根据自适应梯度法、SGD+权重衰减和SGD+L2正则化在5个训练任务上的表现得出,SGD可以通过Layca实现自适应梯度法的训练速度。

对于中间层特征

那么,基于这些层旋转和各属性之间的联系,如何去具体的解释层旋转呢?

研究者们做了另一个实验,在一个简化的MNIST数据集上训练多层感知机(MLP),从相同的初始化状态开始,我们用Layca训练四种学习率不同的网络,让四种不同的层旋转配置均达到100%的训练准确度,同时拥有不同的泛化能力。

将图旋转对中间层特征的影响画出来就会发现:

层旋转不会影响学习哪些特征,而是影响在训练过程中学习的程度。层旋转越大,特征越突出,初始化可检索的越少,而当层旋转接近1的时候,网络的最终权重消除了初始化的所有残余。

层旋转与特征学习程度之间的这种联系表明:完全学习中间层特征对于达到100%的训练准确性是不必要的,但训练过程如果完全学习了中间层特征,可以产生更好的泛化性能。

传送门

Layer rotation: a surprisingly powerful indicator of generalization in deep networks?

https://arxiv.org/abs/1806.01603v2

代码:
https://github.com/ispgroupucl/layer-rotation-paper-experiments

层旋转工具:
https://github.com/ispgroupucl/layer-rotation-tools


AI社群 | 与优秀的人交流

小程序 | 全类别AI学习教程

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 ! 

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接