想改进你的卷积神经网络?看看这14种设计模式!

更多深度文章,请关注云计算频道:

https://yq.aliyun.com/cloud


自2011年以来,深度卷积神经网络(CNN)在图像分类的工作中的表现就明显优于人类,它们已经成为在计算机视觉领域的一种标准,如图像分割,对象检测,场景标记,跟踪,文本检测等。
但,想要熟练掌握训练神经网络的能力并不是那么容易。与先前的机器学习思维一样,细节决定成败。但是,训练神经网络有更多的细节需要处理。你的数据和硬件有什么限制?你应该是从何种网络开始?你应该建立多少与卷积层相对的密集层?你的激励函数怎样去设置?即使你使用了最流行的激活函数,你也必须要用常规激活函数。
学习速率是调整神经网络训练最重要的超参数,也是最难优化的参数之一。太小,你可能永远不会得到一个解决方案;太大,你可能刚好错过最优解。如果用自适应的学习速率的方法,这就意味着你要花很多钱在硬件资源上,以此来满足对计算的需求。
设计选择和超参数的设置极大地影响了CNN的训练和性能,但对于深度学习领域新进入者来说,设计架构直觉的培养可能就需要资源的稀缺性和分散性。

《神经网络:权衡技巧》是一本主要着重于实际调优的书,出版于2003年,并在2012年再版。而深度学习的火爆始于2012年《纽约时报》报道的Geoffrey Hinton 的团队在 Merck Drug Discovery Challenge 上的惊人成功。然而,最近几年最先进的研究成果却消失了。
幸运的是,美国海军研究室的研究员 Leslie Smith发表了关于CNN架构改进和技术提升的系统性研究。下面是他所强调的最重要的一些设计模式

14种图像分类的CNN设计模式

根据 Smith 的观点,“这14 种原创设计模式可以帮助没有经验的研究者去尝试将深度学习与新应用结合”。尽管高级的AI研究员可以依靠直觉、经验以及针对性的实验,但这些建议对于那些没有机器学习博士学位的人来说是一个很好的起点。

1) 架构遵循应用
你也许会被 Google Brain 或者 Deep Mind 这些有想象力的实验室所发明的那些耀眼的新模型所吸引,但是其中许多要么是不可能实现的,要么是不实用的对于你的需求。或许你应该使用对你的特定应用最有意义的模型,这种模型或许非常简单,但是仍然很强大,例如 VGG。

2) 路径的激增
每年ImageNet Challenge的赢家都比上一年的冠军使用更加深层的网络。从AlexNet 到Inception到Resnets,Smith和他的团队也观察到“网络的路径数量成倍增长”的趋势,而且,ResNet可以是不同长度的网络的指数集合。
3) 追求简约
更大的并不一定是更好的。在名为“Bigger is not necessarily better”的论文中,Springenberg 等人演示了如何用更少的单元实现最先进的结果。
4)增加对称性
无论是在建筑上,还是在生物上,对称性被认为是质量和工艺的标志。Smith 将 FractalNet 的优雅归功于网络的对称性。
5) 金字塔形状
你总是在表征能力和减少冗余或者无用信息之间权衡。CNNs通常会降低激活函数的采样,并会增加从输入层到最终层之间的连接通道。
6) 过渡训练
另一个权衡是训练准确度和泛化能力。用正则化的方法类似 drop-out 或 drop-path进行提升泛化能力,这是神经网络的重要优势。用比实际用例更难的问题训练你的网络,以提高泛化性能。
7) 覆盖问题的空间
为了扩大你的训练数据和提升泛化能力,要使用噪声和人工增加训练集的大小,例如随机旋转、裁剪和一些图像操作。
8) 递增的功能结构
当架构变得成功时,它们会简化每一层的“工作”。在非常深的神经网络中,每个 层只会递增地修改输入。在ResNets中,每一层的输出可能类似于输入。所以,在 实践中,请在ResNet中使用短的跳过长度。
9) 标准化层的输入
标准化是可以使计算层的工作变得更加容易的一条捷径,并且在实际中可以提升训练的准确性。批量标准化的发明者认为标准化发挥作用的原因在于处理内部的协变量,但Smith 认为,“标准化把所有层的输入样本放在了一个平等的基础上(类似于单位转换),这允许反向传播可以更有效地训练”。
10)输入变换
研究表明,在Wide ResNets中,性能随着通道数量的增加而提升,但是要权衡训练成本与准确性。AlexNet,VGG,Inception和ResNets都是在第一层中进行输入变换,以保证多种方式检查输入数据。
11)可用的资源决定层宽度
可供选择的输出数量并不明显,相应的是,这取决于您的硬件功能和所需的准确性。
12)Summation joining
Summation是一种流行的合并分支的方式。在 ResNets 中,使用求和作为连接机制可以让每一个分支都能计算残差和整体近似。如果输入跳跃连接始终存在,那么Summation会让每一层学到正确地东西(例如:输入的差别)。在任何分支都可以被丢弃的网络(例如 FractalNet)中,你应该使用这种方式保持输出的平滑。
13)下采样变换
在汇聚的时候,利用级联连接来增加输出的数量。当使用大于1的步幅时,这会同时处理加入并增加通道的数量。
14)用于竞争的Maxout
Maxout 用在只需要选择一个激活函数的局部竞争网络中。用的方法包含所有的激活函数,不同之处在于 maxout 只选择一个“胜出者”。Maxout 的一个明显的用例是每个分支具有不同大小的内核,而 Maxout 可以尺度不变。

提示&技巧

除了这些设计模式,还有几个技巧和诀窍,以减少架构复杂性和培训时间。
1)使用细调过的预训练网络
机器学习公司 Diffbot 的 CEO Mike Tung 说,“如果你的视觉数据和 ImageNet 相似,那么用预训练网络会帮助你学习得更快”。低水平的CNN通常可以被重复使用,因为它们大多能够检测到像线条和边缘这些常见的模式。用你自己的层替换分类层,并且用你特定的数据去训练最后的几个层。
2)使用 freeze-drop-path
Drop-path 会在迭代训练的过程中随机地删除一些分支。Smith 测试了一种相反的方法,被称为 freeze-path,就是一些路径的权重是固定的、不可训练的,而不是整体删除。该网络可能会获得更高的精度,因为下一个分支比以前的分支包含更多的层,并且修正项更容易得到。
3)使用循环的学习率
学习率的实验会消耗大量的时间,并且会让你遇到错误。自适应学习率在计算上可能是非常昂贵的,但是循环学习率不会。使用循环学习率时,你可以设置一组最大最小边界,并且在这个范围改变它。Smith 在论文中提供了计算学习率的最大值和最小值的方法。
4)在有噪声的标签中使用 bootstrapping
在实践中,很多数据都是混乱的,标签都是主观性的或是缺失的,而且目标有可能是从未遇到过的。Reed 等人在文章中描述了一种给网络预测目标注入一致性的方法。直观地讲,这可以实现,通过网络对环境的已知表示(隐含在参数中)来过滤可能具有不一致的训练标签的输入数据,并在训练时清理该数据。
5)用有 Maxout 的 ELUs,而不是 ReLUs
ELUs是 ReLUs 的一个相对平滑的版本,它能加速收敛并提高准确度。研究调查表明,与 ReLUs 不同,ELUs 拥有负值,这就能允许它们以更低的计算复杂度将平均单位激活推向更加接近0的值,就像批量标准化一样。如果您使用具有全连接层的 Maxout,它们是特别有效的。
作者介绍:
Mariya是TOPBOTS的研究和设计主管。
Linkedin:https://www.linkedin.com/in/mariyayao
Twitter:http://www.twitter.com/thinkmariya
以上为译文
本文由北邮@爱可可-爱生活老师推荐,阿里云组织翻译。
文章原标题《14 DESIGN PATTERNS TO IMPROVE YOUR CONVOLUTIONAL NEURAL NETWORKS》,作者:Mariya Yao ,译者:袁虎,审校:我是主题曲哥哥。
文章为简译,更为详细的内容,请查看原文

时间: 2024-10-03 22:13:39

想改进你的卷积神经网络?看看这14种设计模式!的相关文章

改进卷积神经网络,你需要这14种设计模式

深度学习领域近来已经发展出大量的新架构,而如何选择使用这些新架构提升卷积神经网络的性能就显得越发重要了.机器之心之前报道过提交 ICLR 2017 的论文: 解析深度卷积神经网络的14种设计模式 也正是关注于此.而本文在描述14种设计模式之余更加注重于阐述构建和训练卷积网络的小技巧. 自从 2011 年深度卷积神经网络(CNN)在图像分类任务中优于人类开始,它们就成为了计算机视觉任务中的行业标准,这些任务包括图像分割.目标检测.场景标记.跟踪以及文本检测等等. 然而,训练神经网络的技巧并不容易掌

卷积神经网络实战(可视化部分)——使用keras识别猫咪

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 作者介绍:Erik Reppel,coinbase公司程序员 作者博客:https://hackernoon.com/@erikreppel 作者twitter:https://twitter.com/programmer 在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题.但是对于大多数人来说,CNN仿佛戴上了神秘的面纱.我经常会想,要是能将神经网络的过程

卷积神经网络算法的简单实现

前言 从理解卷积神经到实现它,前后花了一个月时间,现在也还有一些地方没有理解透彻,CNN还是有一定难度的,不是看哪个的博客和一两篇论文就明白了,主要还是靠自己去专研,阅读推荐列表在末尾的参考文献.目前实现的CNN在MINIT数据集上效果还不错,但是还有一些bug,因为最近比较忙,先把之前做的总结一下,以后再继续优化. 卷积神经网络CNN是Deep Learning的一个重要算法,在很多应用上表现出卓越的效果,[1]中对比多重算法在文档字符识别的效果,结论是CNN优于其他所有的算法.CNN在手写体

能帮你更好理解分析深度卷积神经网络,今天要解读的是一款新型可视化工具——CNNVis,看完就能用!

以下为译文: 更好的理解分析深度卷积神经网络   图1 CNNVis,一个能够帮助专家理解,分析与改进深度卷积神经网络的视觉分析工具 摘要:深度卷积神经网络(CNNs)在许多模式识别任务中取得了很大的性能突破, 然而高质量深度模型的发展依赖于大量的尝试,这是由于没有很好的理解深度模型是怎么工作的,在本文中,提出了一个可视化分析系统,CNNVis,帮助机器学习专家更好的理解.分析.设计深度卷积神经网络. 关键词:深度卷积神经网络,矩形填充,矩阵排序,边缘捆绑,双聚类 1 引言 深度卷积神经网络在许

卷积神经网络(CNN)在无人驾驶中的应用

无人驾驶的感知部分作为计算机视觉的领域范围,也不可避免地成为CNN发挥作用的舞台.本文是无人驾驶技术系列的第八篇,深入介绍CNN(卷积神经网络)在无人驾驶3D感知与物体检测中的应用. CNN简介 卷积神经网络(Convolutional Neural Network,CNN)是一种适合使用在连续值输入信号上的深度神经网络,比如声音.图像和视频.它的历史可以回溯到1968年,Hubel和Wiesel在动物视觉皮层细胞中发现的对输入图案的方向选择性和平移不变性,这个工作为他们赢得了诺贝尔奖.时间推进

一步一步学用Tensorflow构建卷积神经网络

0. 简介 在过去,我写的主要都是"传统类"的机器学习文章,如朴素贝叶斯分类.逻辑回归和Perceptron算法.在过去的一年中,我一直在研究深度学习技术,因此,我想和大家分享一下如何使用Tensorflow从头开始构建和训练卷积神经网络.这样,我们以后就可以将这个知识作为一个构建块来创造有趣的深度学习应用程序了. 为此,你需要安装Tensorflow(请参阅安装说明),你还应该对Python编程和卷积神经网络背后的理论有一个基本的了解.安装完Tensorflow之后,你可以在不依赖G

变形卷积核、可分离卷积?卷积神经网络中10大拍案叫绝的操作

CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中探讨日后的CNN变革方向. 注:水平所限,下面的见解或许有偏差,望大牛指正.另外只介绍其中具有代表性的模型,一些著名的模型由于原理相同将不作介绍,若有遗漏也欢迎指出. 1. 卷积只能在同一组进行吗?-- Group convolution Group convolution 分组卷积,最早在Alex

入门篇:卷积神经网络指南(一)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 卷积神经网络听起来像一个奇怪的生物学和数学的组合,但它是计算机视觉领域最具影响力的创新之一.2012年是卷积神经网络最流行的一年,因为Alex Krizhevsky用它赢得当年的ImageNet竞争(基本上算得上是计算机视觉的年度奥运),它将分类错误记录从26%降至15%,这是惊人的改善.从那时起,深度学习开始流行起来,Facebook使用神经网络进行自动标记算法,Google进行照片搜索,亚马逊的产品推荐,

TensorFlow教程之完整教程 2.6 卷积神经网络

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. 卷积神经网络 注意: 本教程适用于对Tensorflow有丰富经验的用户,并假定用户有机器学习相关领域的专业知识和经验. 概述 对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组32x32RGB的图像进行分类,这些图像涵盖了10个类别:飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船以及卡车. 目标 本教程的目标是建立一个用于识别图像的相对较小的卷积神经网络,在这一过程中