安妮漂亮的鸭子来自凹非寺

量子出品|公众号QbitAI

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

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

研究表明,网络的泛化能力可以通过“层的旋转”来评价。

层旋转是神经网络中各层权重矢量与初始化之间夹角余弦的变化,可以看作是衡量泛化性能强弱的指标。

研究人员在培训中发布了控制层旋转工具的代码,称这项工作“可以大大降低当前调整超级参数的难度”。

也就是说,可以通过最小限度的超级参数调整,得到最佳的神经网络性能

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

神经网络的泛化性(神经网络性能)-编程之家

层旋转有什么用

论文layer rotation 3360 Asurprisinglypowerfulindicatorofgeneralizationindeepnetworks?研究详细说明了层旋转背后的探索之路。

由于神经网络的泛化能力受训练它的优化程序的影响,决定该程序的哪些要素影响泛化是一个重要的问题。

在这篇论文中,研究者提出了一种新的算法: lay ca ((layer-level control ledamount of weight rotation ),神经网络的优化算法将各层网络的学习速度参数

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

Layca算法的工作流程如下所示。

神经网络的泛化性(神经网络性能)-编程之家

研究人员表示,这种新算法在获得比较明显的控制效果的同时,泛化能力也产生较大差异,精度差异可达30%。

随后,他们利用Layca进一步研究了层的旋转体系结构,并开发了监测和控制层旋转的工具。

研究人员采用SGD (随机梯度下降)作为缺省优化器,用Layca改变相对转速和全局转速的值,分别对5种网络体系结构和数据复杂性不同的神经网络进行了研究。 那些如下所示。

神经网络的泛化性(神经网络性能)-编程之家

他们绘出了不同层转速下层的旋转曲线(CFR )和对应的测试精度))的关系。

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

神经网络的泛化性(神经网络性能)-编程之家

可见各层的层旋转越大,神经网络的泛化能力越高。

据此,可以认为层旋转这个指标可以直接用于判断网络的泛化能力。

层旋转的影响

之后,除了Layca之外,研究者们还用SGD进行了同样的实验。 根据实验结果,得出了几个结论:

对SGD的学习率

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

在以下5个任务中,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

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

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

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