首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ICML新研究提出泛化能力评估新指标:直接上向量余弦距离就OK,还开源了相关代码

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

作者头像
量子位
发布2019-07-09 15:35:56
3970
发布2019-07-09 15:35:56
举报
文章被收录于专栏:量子位量子位

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

一篇出自比利时天主教鲁汶大学的研究发表在了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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 层旋转有什么用
  • 层旋转的影响
    • 对于SGD学习率
      • 对于权重衰减
        • 对于学习率预热
          • 对于自适应梯度法
            • 对于中间层特征
            • 传送门
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档