“彩票假说”是ICLR2019最佳论文《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks》提出的。意思是神经网络通常只有少量的关键参数发挥作用,找到这些少数关键参数就好像买到中奖的彩票一样,幸运但很稀有。本文使用一种提取关键参数的算法,使神经网络的参数稀疏化,以验证彩票假说。我们发现在MNIST集上可以把LeNet参数稀疏至1/50而保持几乎不变的精度,在CIFAR10上也可以把ResNet18参数稀疏至1/10而保持精度。

文章目录

  • 前言
  • 一、在LeNet中观察“彩票假说”现象
  • 二、进一步用ResNet试验
  • 总结

前言

图1. 人脑神经元随年龄增长的稀疏化

  人脑神经元间的连接在6岁左右达到最致密,随后又开始稀疏化。这种稀疏化可能会使记忆力有所下降,但是由于保留了关键连接,反而有更高的归纳综合能力。
  彩票假说指出人工神经网络也有类似的性质,当前使用的深度神经网络多是过参数化的,可以把大部分参数抑制为0,只保留少量关键参数而不影响网络性能。我们来观察这个现象,仍旧先在MNIST集上用LeNet做试验,因为它速度非常快,使用的LeNet代码见第一节https://blog.csdn.net/Brikie/article/details/112253975。使用的提取关键参数的算法见我另一篇博客https://blog.csdn.net/Brikie/article/details/113656685中的改进版代码。

一、在LeNet中观察“彩票假说”现象

  系数τ\tauτ(tau)表示抑制的非关键参数的程度,τ\tauτ越大抑制的参数越多,保留的关键参数越少。我们在MNIST集中运行LeNet网络,batch size=128,lr=0.01, momentum=0.9, weight_decay=0.001。不同τ\tauτ对应的测试集精度如图1,有效参数(定义为绝对值大于0.001的参数)的数量随训练轮数变化情况如图2。

图1. MNIST数据集中使用LeNet观察不同系数tau对应的测试集精度

图2.有效参数数量随训练步数逐渐缩小到关键参数的过程

  我们可以看出,该算法可以把网络参数大幅稀疏化,而测试集精度却几乎没有降低。例如当τ=0.99\tau = 0.99τ=0.99时,最终剩余的关键参数只有全部参数的1/50,但精度比原网络还高一些。当τ=0.999\tau = 0.999τ=0.999时,关键参数可以压缩到1/100,精度仍能保持90%以上。把训练结束后的部分权重参数可视化,如图3,可以看到此时仍保有数值的关键参数已经非常稀疏。

图3.tau = 0.999时conv2和fc1的权重绝对值可视化图(下图放大仔细看有一些白点)

二、进一步用ResNet试验

  我们再用ResNet18在CIFAR10上进行试验,得到曲线如下图:

图4.不同参数tau的ResNet18在CIFAR10上运行试验

  可以看出,参数也能够显著压缩,但精度保持的不如MNIST上面那么好,当tau=0.5时,参数稀疏为总量的约1/10,精度只比原网络低一点。
  为了更好的对比,我们在MNIST上运行ResNet18。由于MNIST是28x28的单通道图片,我们把它补零扩充为32x32,然后复制到三个通道,做成和CIFAR10一样的3x32x32的图片,以适用于刚才的ResNet18。

图5.不同参数tau的ResNet18在MNIST3c上运行试验

  可以看出,MNIST集上确实可以压缩更多的参数,tau=0.999时,参数压缩到了原来的1/70,精度仍差不多。这说明最大压缩比不仅与模型有关,也与数据集有关,复杂的数据集当然需要的参数量也要多一些。

总结

  彩票假说指名了一个事实,即神经网络的参数存在大量冗余,但这只是提出了一个新问题,距离解决这个问题还很远。我觉得在这个领域获得最终突破要解决几个主要问题:
1,对于给定数据集的复杂度和给定的适用该数据集的神经网络模型,在维持相当精度的要求下,这个模型的最稀疏的参数量的极限界是多少,怎么计算?
2,使用什么算法可以较好的得到接近这个极限界的稀疏化权重参数?
3,获得的这个稀疏化网络能否转化为一个紧致的小网络,以缩小模型内存需求,完成这个问题的本质目的——模型压缩。

LeNet试验(五)观察“彩票假说”现象相关推荐

  1. 「彩票假说」要修正?王言治团队:神经网络要「中奖」,秘密在于学习率!|ICML 2021...

     视学算法报道   作者:刘宁 编辑:好困 [新智元导读]「彩票假说」指出神经网络可能存在准确率和原始网络相近的子网络.然而,这种中奖特性在许多情况中很难被观测到.最近,王言治教团队发现并揭示了中奖特 ...

  2. 归纳偏置是什么?从现实生活中观察到的现象中归纳出一定的规则,然后对模型做一定的约束,从而可以起到“模型选择”的作用

    归纳偏置在机器学习中是一种很微妙的概念:在机器学习中,很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏置(Inductive Bias). 归纳偏置这个译名可能不能很好地帮助理解,不妨拆 ...

  3. C语言/C++常见习题问答集锦(六十五) 之彩票幸运星

    C语言/C++常见习题问答集锦(六十五) 之彩票幸运星 程序之美 1.L1-062 幸运彩票 (15 分) 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张 ...

  4. LeNet试验(四)使用shuffle label观察网络的记忆能力

      神经网络既有记忆能力又有泛化能力,这对应了我们现实世界的情况,既有多样性又有规律性,所以神经网络能够学习现实世界很多领域的问题.(多说一句,我认为现实世界的规律性是由宇宙的同源性(宇宙大爆炸,基本 ...

  5. LeNet试验(二)权重参数随训练的变化

      神经网络训练的过程就是权重参数寻优的过程,我们想知道随着训练的进行,参数到底发生怎样的变化.本文以LeNet为例,进行一些试验观察.   LeNet代码见上一小节,这里只给出conv2层的权重,其 ...

  6. 超级计算机“看”新冠疫情,进一步观察缓激肽假说

    全文共4118字,预计学习时长11分钟 图源:unsplash 今年夏天早些时候,田纳西州橡树岭国家实验室(Oak Ridge National Lab)的Summit超级计算机开始处理17000个基 ...

  7. LeNet试验(一) 搭建pytorch版模型及运行

      LeNet非常简单,在MNIST数据集运行速度很快,所以开辟LeNet试验系列文章,以试验各种语句.技巧的效果,分析神经网络的一些特性. 1,Pytorch版本LeNet代码   数据路径为'mi ...

  8. 汇编试验五:编写、调试具有多个段的程序

    ds 数据段放入数据正确: 两次push 操作后,ss栈段正确: 由于pop 操作顺序,ds数据段并没有发生改变: Source Code: assume cs:code, ds:data, ss:s ...

  9. matlab振荡环节的频率特性,试验五典型环节和系统频率特性的测量

    实验三 控制系统的频率特性(综合性实验) (实验地点:崇实楼407 仿真技术实验室) 一.实验目的 1. 掌握二阶振荡环节频率特性的MA TLAB 测试方法. 2. 利用MA TLAB 描点作图.软件 ...

最新文章

  1. paloalto防火墙版本升级
  2. 利用who,w,ps和top等指令查看linux下的进程执行情况.,UNIXLINUX操作系统实验指导书...
  3. Java assertion 介绍和用法
  4. 攻防世界(Pwn) forgot---栈溢出;(方法一)
  5. 解决win7下无法安装突击者NO.69驱动,“WINDOWS已找到设备的驱动程序,但在试图安装它时错误”...
  6. html scale方法的作用,HTML Canvas scale() 方法
  7. 16-修改文件内容 - vi
  8. OpenCV(C++版)图像读取,创建,复制,保存,显示
  9. sublime_text_2 注册
  10. Kejin Game UVALive - 7264 (最大流转最小割)
  11. 基于片内Flash的提示音播放程序
  12. Pano2VR制作全景漫游
  13. 循环结构——分数化简
  14. 可能的克服拖延症的方法
  15. 《孽海记·思凡》唱段·风吹荷叶煞
  16. 小米电视刷android系统升级,MIUI 7 升级到 Android M!最近就折腾小米了!
  17. 序号 html ol自动缩进,ol自定义序号样式的方法
  18. RMAN恢复Oracle数据库到不同的服务器
  19. CSS重叠解决边框相邻变粗问题
  20. ubuntu18.04 升级内核后,进入系统页面卡在“started gnome display manager“的解决方案

热门文章

  1. gentoo rt-thread scons --menuconfig libs/lxdialog/util.o: undefined reference to symbol 'nodelay'
  2. 面试lua笔试题各种坑
  3. Django-发送注册、忘记密码邮件验证-send_mail
  4. 在Windows下基于libx264.a的Qt 4.8.2视频压缩
  5. 使用enterTextInWebElement处理qq授权页报“网络异常,请稍后再试”的解决方法
  6. JavaScript单元测试ABC
  7. 自学python接单_Python接私活,兼职也可以月薪过万,会技术就可走遍天下
  8. 帧同步_什么是帧同步什么是状态同步
  9. python写小说阅读器_用python实现自己的小说阅读器!
  10. Android studio | From Zero To One ——TextView实现跑马灯效果及聊天室、文字直播间