安妮 郭一璞 发自 凹非寺
量子位 出品 | 公众号 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技术和产品新动态

喜欢就点「在看」吧 !

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

  1. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇

    ★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...

  2. 蚊子变「疫苗」:中科院新研究可以从源头抑制新发传染病 | Nature子刊

    Alex 发自 凹非寺 量子位 | 公众号 QbitAI 世人苦蚊子久矣. 但一群中科院的科学家却脑洞大开,竟然把人人喊打的蚊子变成了行走的疫苗. 他们的相关论文已成功登上了Nature Commun ...

  3. AI眼中的世界是什么样子?谷歌新研究找到了机器的视觉概念

    选自arXiv 作者:Amirata Ghorbani等 机器之心编译 参与:魔王 来自斯坦福大学和谷歌大脑的研究人员为基于概念的解释方法提出了一些原则和要求,在整个数据集上识别更高层次的人类可理解概 ...

  4. 从产品经理能力评估维度,掌握产品经理技能

    产品是企业发展的基石,好的产品经理是好产品的前提,本文通过案例介绍HR用的产品经理能力评估维度,让求职的产品经理能够掌握企业要求的产品经理,企业也可以根据此产品经理必备技能和工具培养产品经理. 我此前 ...

  5. 信息系统建设服务和能力评估和计算机信息系统集成CS资质的区别

    其实计算机信息系统集成及服务CS资质和信息系统建设服务和能力评估资质没有什么不同,只是叫法不一样而已,根据最新的文件,计算机信息系统集成及服务CS资质以后都叫信息系统建设服务和能力评估.不管是从作用上 ...

  6. 【深度学习基础知识 - 25】提升模型泛化能力的方法

    提升模型泛化能力的方法 从数据角度上来说.可以通过数据增强.扩充训练集等方法提高泛化能力. 在训练策略上,可以增加每个batch size的大小,进而让模型每次迭代时见到更多数据,防止过拟合. 调整数 ...

  7. 百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离

    文章目录 余弦相似度 余弦相似度和余弦距离 和欧式距离的比较和关系 余弦距离不是一个严格定义的距离 在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础 ...

  8. 谷歌新研究对神经网络数据并行性提出质疑

    https://www.toutiao.com/a6670724671169626636/ 在训练神经网络时,并行计算和模型并行是很常用的方法,以最大限度地利用有限的算力.然而,谷歌的一项新研究表明, ...

  9. 何恺明、陈鑫磊新研究:提出实例分割新方法,效果比肩Mask R-CNN

    https://www.toutiao.com/a6674769574212141579/ 何恺明大神的团队又有新研究了! 这一次,Facebook的陈鑫磊.何恺明等人,又从全新的角度,再次解决了实例 ...

最新文章

  1. A typical memory leak
  2. fflush(stdin)与fflush(stdout)
  3. Android Service的思考(4)
  4. android软件的data使用方法,实例讲解Android中SQLiteDatabase使用方法
  5. python历史以及基础知识
  6. JAVA入门级教学之(整数型)
  7. 苹果官宣春季发布会!不止有iPhone SE 3,还有紫色iPhone 13 Pro?
  8. 混乱的MVC,.NET非要MVC不可么?
  9. 在github上托管Maven存储库
  10. 基于MATLAB的夜间车牌识别处理
  11. 一个词三个功能,较真人员少啊
  12. imdisk虚拟光驱安装linux,u深度ImDisk虚拟光驱加载iso镜像文件图文详细教程
  13. SQLite崩溃处理
  14. 广达服务器进系统重启,广达 服务器 远程开机
  15. WIN10设置自启动脚本
  16. airpak模拟案例,Airpak模拟教程-体育馆通风模拟案例-CFD数值模拟教程airpak.pdf
  17. MTCTF_Crypto
  18. ROS——一文读懂:param参数
  19. 给你一个团队,你能怎么管?
  20. 解决video视频在ios中不能自动播放的问题

热门文章

  1. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
  2. C#编程(七十四)----------释放非托管资源
  3. paper 123: SVM如何避免过拟合
  4. Linux用户和组相关的配置文件
  5. webService——学习(3):使用JDK开发webService
  6. 蓝桥杯——说好的进阶之去反复元素的排列组合
  7. Data Structures with C++ Using STL Chapter 3算法概述---笔记
  8. 对于访问IIS元数据库失败的解决方案
  9. 交换机背板带宽公式计算
  10. 计算机网络原理课程描述,计算机网络原理