文:Sabrina Göllner
翻译:陈之炎
校对:zrx
本文约4800字,建议阅读10分钟
本文来自 Niantic 和 UCL 等机构的研究者使用精心设计和训练的 2D 网络,实现了高质量的深度估计和 3D 重建。
标签:CNN训练
性能优良的神经网络不一定要很大。
图Uriel SC (Unsplash)
近年来,图像识别领域的研究主要集中在深度学习技术上,并且取得了很好的进展。卷积网络(CNNs)在感知图像结构方面非常有效,它能够自动提取独特的特征。然而,大型神经网络往往需要大量的算力和长时间的训练,才能达到尽可能高的准确度。
本项工作中,将展示3种方法,即在不影响准确度的情况下,如何确保卷积网络中参数的数量尽可能少。
在本实验中,将使用“修改后的国家标准与技术研究所(MNIST)”(来源)数据集。
提示:为了更好地理解这个实验,需要有一些机器学习的基础知识。例如,将处理池化、归一化、正则化和剪枝。在继续学习之前,最好先了解一下这些技巧。
动机
现有的大多数有效解决MNIST数据集的方法虽然都具有较高的准确度,但模型的参数通常在100,000-20万甚至更高的[1,2]范围内。究其原因,这些方法通常有大量的卷积层,以较大的特征映射作为特征提取器,而全链接层则用于生成分类。因此,该架构会产许多参数。CNN分类的典型架构如下图所示:
图1:典型的CNN架构,来源[2]
具体来说,这个实验的挑战是将模型参数数目减少到小于10,000(即,降低到原参数数目的10%),同时将准确度保持在99% 的 范围内。
实施
准备数据集
首先,归一化训练数据的格式,在这里使用了独热编码。然后,将数据集加载到内存中,以获得更好的性能。扰乱训练数据,使每次运行训练时不总是获取相同顺序的数据集。最后,将数据划分为大小相等的批,使得每个epoch能获取到相同批大小的数据。除数据扰乱之外,对测试数据集也做同样的操作过程。
方法
在本小节中,实验采用了现存的架构,在MNIST数据集训练模型,并在每个epoch后测量准确度,每种方法中观察40 epoch。
为每个案例创建不同架构,测试其性能,按照实验要求,每种架构的可训练参数少于10,000个(Keras中的可训练参数定义为:可以在训练过程中发生变化的参数。例如,激活层中的参数、最大池化、扁平化和Dropout的参数)。
1.方法 1
本方法采用了“典型CNN架构”的简化变体(见图1)。由于对可训练参数数量的限制,只使用卷积层进行特征提取,只采用一个全链接层进行分类。因此,该模型只有7968个可训练参数。
架构详情:
图2:方法1的Keras模型概要,来源:作者自创的图表
该模型共由11层组成。由于图像为28x28像素,颜色值带有一个灰度通道,所以数据以(28,28,1)的格式进入输入层。接下来是两个连续的块,每个块由以下层组成:一个激活函数为ReL的Conv2D层,然后是批处理归一化,最后是Max池化层。
MaxPooling池化对输入数据向下采样,所以它有助于减少参数。第一个块中的卷积层由32个不同的滤波器组成,滤波器的核非常小,大小为3x3;第二个块中,滤波器的数量减少到14个。因为假设图像的基本部分位于中心,而不是在边缘,所以没有使用填充,将步长(步幅)设置为1。激活函数采用ReLU,因为它是目前最先进的技术。批归一化提供了一种正则化,以防止过拟合。大小为2的最大池化层将先前应用的滤波器的输出结果减少了2倍。作为向全连接神经网络的过渡,目前采用了一个平坦层,它将张量减少成长度为126(14x3x3)的向量。然后,添加10%的Dropout 。最后一层是具有Softmax激活的全连接层。该模型共有8060个参数,其中7968个参数是可训练的。
配置:
为了避免模型进行不必要的训练,使用早停方法。
观察10 个epoch之后的测试准确度,准确度的下限设置为98%。如果测试准确度没有提高,则启动最佳权重的恢复(由Keras“恢复最佳权重”来实现)。Plateau上的降低学习率一次设置为4个epoch。在训练了4个epoch后,测试的准确度稳步下降,使得学习率降低了0.5倍。采用分类交叉熵法计算损失,优化器为Adam。批大小设置为125,可以均匀获得批量数据,开始时设置的学习率为0.01。使用批处理归一化之后,准确度收敛速度会更快,在无需降低学习率的情况下,也能加快学习过程。
实验结果:
图2:方法1的训练曲线图,来源:作者自创的图表
平均而言,测试准确度在第二阶段后已经达到98%以上,随后收敛到99%。在Plateau上通过降低学习率来稳定训练过程。训练早期,平均在30到40个epoch之间停止训练。该网络产生的最佳测试准确率为99.24%。因此,从实验结果可以看出,该网络具有较高的泛化能力,即便学习参数较少,泛化能力也超过了较少参数的网络。
2. 方法2
该方法只使用卷积层进行特征提取,分类方法采用了全局平均池化的方法。利用池化方法实现分类,取代全链接层完成分类任务。这种方法保存了由全链接层生成的大量参数。在[4]和[5]中已经提到,窄而深的网络具有更好的泛化能力。为了与方法1进行比较,该架构设计了更多数目的层。
架构详情:
图2:方法2的Keras概要,来源:作者自创的图表
如前所述,本方法选择了一种深度网络的架构,它由5个 “卷积块”组成,每个卷积块是由以下连续的层组成:卷积层、ReLU、批归一化。卷积层中的滤波器数量定义为4-8-16-10,核大小为3x3的。没有使用填充,步长为1。最大池化在第二个块之后执行,从而有助于减少参数。由于滤波器的数量众多,后续两个块的参数最多。这些因素对于模型的特征提取和结果的准确率都非常重要。最后一个块只有10个滤波器,经过测试,滤波器的数量已经足够。最后一层的最后三个块有10% dropout,用于正则化。该模型共有5490个参数,其中5382个参数可以被训练。
配置:
将该网络设置为早停( Early Stopping),Plateau平台上的学习率、损失、优化器、批大小和学习率的配置与方法1的配置相同。
方法2的训练曲线图,来源:作者自创的图表
观察:
测试准确度经过初始波动后,在10个epoch后缓慢地收敛到99%,该网络的最佳测试准确率为99.47%。
3. 方法3
该架构在本质上类似于方法2,本方法同样只采用卷积层进行特征提取,采用全局平均池化方法进行分类。然而,它由更少的层组成,并且没有dropout,配置也没变。
架构详情:
方法3的Keras屏幕截图,来源:作者自创的图表
该架构同样是一个深度网络,包含5个块,每个块由一个ReLU激活追加批归一化的卷积层组成。在本架构中,滤波器定义如下:滤波器的大小按2-4-8-16-10的升序定义。因此,前三个卷积层的数量减半,后两个层与方法2相同。与方法2的主要区别是删除了 Dropouts ,因为发现 Dropouts 会导致训练和测试的准确性显著下降。可以得出结论,在小型网络中过频繁地使用Dropouts 会导致过多的正则化。该模型共有3170个参数,其中3090个参数可以被训练。
图2:方法3的训练曲线图,来源:作者自创的图表
观察:
前三个卷积层中滤波器尺寸的减小对准确度没有预期那么高的影响,该网络的准确率仍可达到99%以上。
方法比较,来源:作者自创的图表
结论:
在本小节中,测试了3种不同架构的学习模型,带有约5000个参数的模型的最佳准确度为99,47%。此外,还需要有足够多的滤波器来有效地提取特征。正则化和标准化的使用确保了训练过程的稳定性。
借助“彩票假说”实施剪枝
本小节的目的是采用“彩票假说”进行一个简短的实验,评估其结果。该假设基于原始网络中存在子网络的假设,子网络负责大部分结果的输出。这意味着准确度主要由子网决定的。利用方法2测试网络中是否存在“中奖彩票”。
也可以称之为“全局剪枝”方法,将它应用于深度卷积网络。深层次的网络剪枝是通过在所有卷积层上去除最小的权值来实现的,对于更深层次的网络,其中某些层比其他层有更多的参数。当对所有层的参数以相同的速度减少时,那些参数较少的层就会成为瓶颈,无法识别 “中奖彩票”的最小概率。全局剪枝可以避免这种陷阱。本实验中的网络不同层中的参数数目有很大的差异,所以这里采用了该方法。
迭代剪枝:
方法2中的网络采用随机初始化的权值进行训练。正如Frankle & Cabin [3]在论文中所描述的那样,经过训练之后,达到了最佳的准确度。在那之后,再进行n轮剪枝。在每一轮剪枝中,用p 1/n %修剪剩余的权重,计算出屏蔽字;其余的权重将重置为初始值,并再次进行训练。
这个实验进行了两次迭代。在这里,采用了Plateau 的“早停”和“降低学习率”两种配置,与之前的实验条件相同。在训练过程中,每次迭代减少的权重数与原始网络进行比较(见表2)。只有卷积层的权重受到剪枝过程的影响(可分调参数)。在下表中,参数列列出的是“参数”,术语“减少”是指在本次迭代中减少的参数的数量。
来源:作者自创的图表
观察:
每经过一次迭代,准确率下降约0.1%。如下图所示,在第一次迭代的训练开始时(20%剪枝),比原来有更高的波动,但在15个epoch之后,会稳定下来。第二次迭代(55.77%的剪枝)过程中,在开始时观察到更高的测试准确度波动,但在随后的过程中会越来越稳定。本次迭代过程中,在31个epoch后开始了早停。总体而言,每次迭代的预期测试准确度均达到99%。论文提到,修剪后的网络学习率更快,而且准确度也有所提高 [3,第5页]。相比之下,修剪后的网络的准确度不会有很快的提高。大型网络剪枝的影响要大得多,虽然会对训练产生较大的影响,但这种情况也仅会在很小的范围内发生。
比较全部学习曲线(蓝色=初始,橙色=20%,green=55.78%),来源:作者自创的图
结果:
从5220个可用于修剪的参数开始,减少到2309个可分割的参数。经过剪枝后,最终模型得到2471个可训练参数(使用Keras计算5380个“可训练参数”的求和差,剪枝将参数权重减小到2309个),剪枝后模型的最终测试准确度为99.2%。
总结和展望
在实际训练中,神经网络有过度参数化的倾向。对于本实验中使用的MNIST数据集中产生的问题,用到的参数比大多数架构中使用的参数数目要少。这大大节省了训练时长和算力。如本工作所示,适当的架构可以提取出足够多的信息,同时又不牺牲准确率。此外,像剪枝这样的方法可以帮助限制剩余的权重,只留下网络的重要部分,即所谓的“中奖彩票”。
参考文献
[1] Ahlawat, Savita ; Choudhary, Amit ; Nayyar, Anand ; Singh, Saurabh ; Yoon, Byungun:使用卷积神经网络改进手写数字识别(CNN)。见:传感器20号(2020年),Nr。12, S. 3344
[2] Siddique, Fathma ; Sakib, Shadman ; Siddique, Md Abu B.:;利用卷积神经网络识别手写数字,并对不同隐含层性能进行比对。见:2019年第5届先进电气工程会议(ICAEE)IEEE(Veranst.),2019, S. 541–546
[3] Frankle, Jonathan ; Carbin, Michael::彩票假说:寻找稀疏的、可训练的神经网络。见:arXiv预印本arXiv:1803.03635(2018)
[4] Goodfellow, Ian ; Bengio, Yoshua ; Courville, Aaron ; Bengio, Yoshua::深度学习。麻省理工学院出版社剑桥,2016
[5] Simonyan, Karen ; Zisserman, Andrew:用于大规模图像识别的深度卷积网络。见:arXiv预印本arXiv:1409.1556(2014)
原文标题:
How to reduce training parameters in CNNs while keeping accuracy >99%
原文链接:
https://towardsdatascience.com/how-to-reduce-training-parameters-in-cnns-while-keeping-accuracy-99-a213034a9777
编辑:王菁
校对:林亦霖
译者简介
陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步
翻译组招募信息
工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。
你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。
其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。
点击文末“阅读原文”加入数据派团队~
转载须知
如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。
发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。
点击“阅读原文”拥抱组织