首页 >> 大全

深度学习之四大经典CNN技术浅析 | 硬创公开课

2023-12-06 大全 31 作者:考证青年

深度学习之四大经典CNN技术浅析 | 硬创公开课

雷锋网按2月28日下午3点《实战》作者黄文坚做客【硬创公开课】为我们讲解了关于四大经典CNN网络、、  Net和的基本原理。本次公开课内容主要节选自作者《实战》第6章关于这四大CNN网络实现方式可参考作者新书《实战》其中有这几种网络的详细实现步骤。

嘉宾介绍

黄文坚 大数据算法总监谷歌 贡献者畅销书《 实战》作者该书获得到了谷歌 团队的官方推荐。前明略数据技术合伙人领导了对诸多大型银行、保险公司、基金的数据挖掘项目包括建立金融风控模型、新闻舆情分析、保险复购预测等。曾就职于阿里巴巴搜索引擎算法团队负责天猫个性化搜索系统。曾参加阿里巴巴大数据推荐算法大赛于 7000 多支队伍中获得前 10 名。本科、研究生就读于香港科技大学曾在顶级会议和期刊 、IEEE on Image 发表论文研究成果获美国计算机协会移动计算大会最佳移动应用技术冠军并获得两项美国专利和一项中国专利。

深度学习之四大经典CNN技术浅析 | 硬创公开课

以下为本次公开课主要内容。

大家好我这次将主要介绍四种经典的卷积神经网络它们分别是

  Net

这4种网络依照出现的先后顺序排列深度和复杂度也依次递进。它们分别获得了 Large Scale   比赛分类项目的2012年冠军top-5错误率16.4%使用额外数据可达到15.3%8层神经网络、2014年亚军top-5错误率7.3层神经网络2014年冠军top-5错误率6.7%22层神经网络和2015年的冠军top-5错误率3.572层神经网络。

这4个经典的网络都在各自的年代率先使用了很多先进的卷积神经网络结构对卷积网络乃至深度学习有非常大的推动作用也象征了卷积神经网络在2012—2015这四年间的快速发展。如图1所示的top-5错误率在最近几年取得重大突破而主要的突破点都是在深度学习和卷积神经网络成绩的大幅提升几乎都伴随着卷积神经网络的层数加深。

而传统机器学习算法目前在上已经难以追上深度学习的步伐了以至于逐渐被称为浅层学习 。目前在数据集上人眼能达到的错误率大概在5.1%这还是经过了大量训练的专家能达到的成绩一般人要区分1000种类型的图片是比较困难的。而 2015年冠军——152层的成绩达到错误率3.57%已经超过了人眼这说明卷积神经网络已经基本解决了数据集上的图片分类问题。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图1  历届比赛代表性模型的成绩及其神经网络深度

前面提到的计算机视觉比赛使用的数据都来自如图2所示。项目于2007年由斯坦福大学华人教授李飞飞创办目标是收集大量带有标注信息的图片数据供计算机视觉模型训练。拥有1500万张标注过的高清图片总共拥有22000类其中约有100万张标注了图片中主要物体的定位边框。项目最早的灵感来自于人类通过视觉学习世界的方式如果假定儿童的眼睛是生物照相机他们平均每200ms就拍照一次眼球转动一次的平均时间那么3岁大时孩子就已经看过了上亿张真实世界的照片可以算得上是一个非常大的数据集。项目下载了互联网上近10亿张图片使用亚马逊的土耳其机器人平台实现众包的标注过程有来自世界上167个国家的近5万名工作者帮忙一起筛选、标注。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图2  数据集图片示例

每年度的比赛数据集中大概拥有120万张图片以及1000类的标注是全部数据的一个子集。比赛一般采用top-5和top-1分类错误率作为模型性能的评测指标图3所示为识别数据集中图片的情况每张图片下面是分类预测得分最高的5个分类及其分值。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图3  识别数据集的top-5分类

2012年的学生Alex 提出了深度卷积神经网络模型它可以算是LeNet的一种更深更宽的版本。中包含了几个比较新的技术点也首次在CNN中成功应用了ReLU、和LRN等Trick。同时也使用了GPU进行运算加速作者开源了他们在GPU上训练卷积神经网络的CUDA代码。包含了6亿3000万个连接6000万个参数和65万个神经元拥有5个卷积层其中3个卷积层后面连接了最大池化层最后还有3个全连接层。以显著的优势赢得了竞争激烈的 2012比赛top-5的错误率降低至了16.4%相比第二名的成绩26.2%错误率有了巨大的提升。可以说是神经网络在低谷期后的第一次发声确立了深度学习深度卷积网络在计算机视觉的统治地位同时也推动了深度学习在语音识别、自然语言处理、强化学习等领域的拓展。

将LeNet的思想发扬光大把CNN的基本原理应用到了很深很宽的网络中。主要使用到的新技术点如下。

1成功使用ReLU作为CNN的激活函数并验证其效果在较深的网络超过了成功解决了在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了但是直到的出现才将其发扬光大。

2训练时使用随机忽略一部分神经元以避免模型过拟合。虽有单独的论文论述但是将其实用化通过实践证实了它的效果。在中主要是最后几个全连接层使用了。

3在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化全部使用最大池化避免平均池化的模糊化效果。并且中提出让步长比池化核的尺寸小这样池化层的输出之间会有重叠和覆盖提升了特征的丰富性。

4提出了LRN层对局部神经元的活动创建竞争机制使得其中响应比较大的值变得相对更大并抑制其他反馈较小的神经元增强了模型的泛化能力。

5使用CUDA加速深度卷积网络的训练利用GPU强大的并行计算能力处理神经网络训练时大量的矩阵运算。使用了两块GTX 580 GPU进行训练单个GTX 580只有3GB显存这限制了可训练的网络的最大规模。因此作者将分布在两个GPU上在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便可以互相访问显存而不需要通过主机内存所以同时使用多块GPU也是非常高效的。同时的设计让GPU之间的通信只在网络的某些层进行控制了通信的性能损耗。

6数据增强随机地从256´256的原始图像中截取224´224大小的区域以及水平翻转的镜像相当于增加了(256-224)2´2=2048倍的数据量。如果没有数据增强仅靠原始的数据量参数众多的CNN会陷入过拟合中使用了数据增强后可以大大减轻过拟合提升泛化能力。进行预测时则是取图片的四个角加中间共5个位置并进行左右翻转一共获得10张图片对他们进行预测并对10次结果求均值。同时论文中提到了会对图像的RGB数据进行PCA处理并对主成分做一个标准差为0.1的高斯扰动增加一些噪声这个Trick可以让错误率再下降1%。

整个有8个需要训练参数的层不包括池化层和LRN层前5层为卷积层后3层为全连接层如图4所示。最后一层是有1000类输出的层用作分类。 LRN层出现在第1个及第2个卷积层后而最大池化层出现在两个LRN层及最后一个卷积层后。ReLU激活函数则应用在这8层每一层的后面。因为训练时使用了两块GPU因此这个结构图中不少组件都被拆为了两部分。现在我们GPU的显存可以放下全部模型参数因此只考虑一块GPU的情况即可。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图4  的网络结构

每层的超参数如图5所示。其中输入的图片尺寸为224´224第一个卷积层使用了较大的卷积核尺寸11´11步长为4有96个卷积核紧接着一个LRN层然后是一个3´3的最大池化层步长为2。这之后的卷积核尺寸都比较小都是5´5或者3´3的大小并且步长都为1即会扫描全图所有像素而最大池化层依然保持为3´3并且步长为2。我们可以发现一个比较有意思的现象在前几个卷积层虽然计算量很大但参数量很小都在1M左右甚至更小只占总参数量的很小一部分。这就是卷积层有用的地方可以通过较小的参数量提取有效的特征。而如果前几层直接使用全连接层那么参数量和计算量将成为天文数字。虽然每一个卷积层占整个网络的参数量的1%都不到但是如果去掉任何一个卷积层都会使网络的分类性能大幅地下降。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图5  每层的超参数及参数数量

是牛津大学计算机视觉组  Group和 公司的研究员一起研发的的深度卷积神经网络。探索了卷积神经网络的深度与其性能之间的关系通过反复堆叠3´3的小型卷积核和2´2的最大池化层成功地构筑了16~19层深的卷积神经网络。相比之前state-of-the-art的网络结构错误率大幅下降并取得了 2014比赛分类项目的第2名和定位项目的第1名。同时的拓展性很强迁移到其他图片数据上的泛化性非常好。的结构非常简洁整个网络都使用了同样大小的卷积核尺寸3´3和最大池化尺寸2´2。到目前为止依然经常被用来提取图像特征。训练后的模型参数在其官方网站上开源了可用来在 的图像分类任务上进行再训练相当于提供了非常好的初始化权重因此被用在了很多地方。

论文中全部使用了3´3的卷积核和2´2的池化核通过不断加深网络结构来提升性能。图6所示为各级别的网络结构图图7所示为每一级别的参数量从11层的网络一直到19层的网络都有详尽的性能测试。虽然从A到E每一级网络逐渐变深但是网络的参数量并没有增长很多这是因为参数量主要都消耗在最后3个全连接层。前面的卷积部分虽然很深但是消耗的参数量不大不过训练比较耗时的部分依然是卷积因其计算量比较大。这其中的D、E也就是我们常说的-16和-19。C很有意思相比B多了几个1´1的卷积层1´1卷积的意义主要在于线性变换而输入通道数和输出通道数不变没有发生降维。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图6  各级别网络结构图

_深度教学讲座_基于深度教学的评课

图7  各级别网络参数量单位为百万

拥有5段卷积每一段内有2~3个卷积层同时每段尾部会连接一个最大池化层用来缩小图片尺寸。每段内的卷积核数量一样越靠后的段的卷积核数量越多64 – 128 – 256 – 512 – 512。其中经常出现多个完全一样的3´3的卷积层堆叠在一起的情况这其实是非常有用的设计。如图8所示两个3´3的卷积层串联相当于1个5´5的卷积层即一个像素会跟周围5´5的像素产生关联可以说感受野大小为5´5。而3个3´3的卷积层串联的效果则相当于1个7´7的卷积层。除此之外3个串联的3´3的卷积层拥有比1个7´7的卷积层更少的参数量只有后者的。最重要的是3个3´3的卷积层拥有比1个7´7的卷积层更多的非线性变换前者可以使用三次ReLU激活函数而后者只有一次使得CNN对特征的学习能力更强。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图8  两个串联3´3的卷积层功能类似于一个5´5的卷积层

在训练时有一个小技巧先训练级别A的简单网络再复用A网络的权重来初始化后面的几个复杂模型这样训练收敛的速度更快。在预测时VGG采用Multi-Scale的方法将图像scale到一个尺寸Q并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测将不同窗口的分类结果平均再将不同尺寸Q的结果平均得到最后结果这样可提高图片数据的利用率并提升预测准确率。同时在训练中还使用了Multi-Scale的方法做数据增强将原始图像缩放到不同尺寸S然后再随机裁切224´224的图片这样能增加很多数据量对于防止模型过拟合有很不错的效果。实践中作者令S在[256,512]这个区间内取值使用Multi-Scale获得多个版本的数据并将多个版本的数据合在一起进行训练。图9所示为使用Multi-Scale训练时得到的结果可以看到D和E都可以达到7.5%的错误率。最终提交到 2014的版本是仅使用-Scale的6个不同等级的网络与Multi-Scale的D网络的融合达到了7.3%的错误率。不过比赛结束后作者发现只融合Multi-Scale的D和E可以达到更好的效果错误率达到7.0%再使用其他优化策略最终错误率可达到6.8%左右非常接近同年的冠军  Net。同时作者在对比各级网络时总结出了以下几个观点。

1LRN层作用不大。

2越深的网络效果越好。

31´1的卷积也是很有效的但是没有3´3的卷积好大一些的卷积核可以学习更大的空间特征。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图9  各级别在使用Multi-Scale训练时的top-5错误率

  Net首次出现在 2014的比赛中和同年就以较大优势取得了第一名。那届比赛中的 Net通常被称为 V1它最大的特点是控制了计算量和参数量的同时获得了非常好的分类性能——top-5错误率6.67%只有的一半不到。 V1有22层深比的8层或者的19层还要更深。但其计算量只有15亿次浮点运算同时只有500万的参数量仅为参数量6000万的1/12却可以达到远胜于的准确率可以说是非常优秀并且非常实用的模型。 V1降低参数量的目的有两点第一参数越多模型越庞大需要供模型学习的数据量就越大而目前高质量的数据非常昂贵第二参数越多耗费的计算资源也会更大。 V1参数少但效果好的原因除了模型层数更深、表达能力更强外还有两点一是去除了最后的全连接层用全局平均池化层即将图片尺寸变为1´1来取代它。全连接层几乎占据了或中90%的参数量而且会引起过拟合去除全连接层后模型训练更快并且减轻了过拟合。用全局平均池化层取代全连接层的做法借鉴了 In 以下简称NIN论文。二是 V1中精心设计的 提高了参数的利用效率其结构如图10所示。这一部分也借鉴了NIN的思想形象的解释就是 本身如同大网络中的一个小网络其结构可以反复堆叠在一起形成大网络。不过 V1比NIN更进一步的是增加了分支网络NIN则主要是级联的卷积层和层。一般来说卷积层要提升表达能力主要依靠增加输出通道数但副作用是计算量增大和过拟合。每一个输出通道对应一个滤波器同一个滤波器共享参数只能提取一类特征因此一个输出通道只能做一种特征处理。而NIN中的则拥有更强大的能力允许在输出通道之间组合信息因此效果明显。可以说基本等效于普通卷积层后再连接1´1的卷积和ReLU激活函数。

我们再来看 的基本结构其中有4个分支第一个分支对输入进行1´1的卷积这其实也是NIN中提出的一个重要结构。1´1的卷积是一个非常优秀的结构它可以跨通道组织信息提高网络的表达能力同时可以对输出通道升维和降维。可以看到 的4个分支都用到了1´1卷积来进行低成本计算量比3´3小很多的跨通道的特征变换。第二个分支先使用了1´1卷积然后连接3´3卷积相当于进行了两次特征变换。第三个分支类似先是1´1的卷积然后连接5´5卷积。最后一个分支则是3´3最大池化后直接使用1´1卷积。我们可以发现有的分支只使用1´1卷积有的分支使用了其他尺寸的卷积时也会再使用1´1卷积这是因为1´1卷积的性价比很高用很小的计算量就能增加一层特征变换和非线性化。 的4个分支在最后通过一个聚合操作合并在输出通道数这个维度上聚合。 中包含了3种不同尺寸的卷积和1个最大池化增加了网络对不同尺度的适应性这一部分和Multi-Scale的思想类似。早期计算机视觉的研究中受灵长类神经视觉系统的启发Serre使用不同尺寸的Gabor滤波器处理不同尺寸的图片 V1借鉴了这种思想。 V1的论文中指出 可以让网络的深度和宽度高效率地扩充提升准确率且不致于过拟合。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图10   结构图

人脑神经元的连接是稀疏的因此研究者认为大型神经网络的合理的连接方式应该也是稀疏的。稀疏结构是非常适合神经网络的一种结构尤其是对非常大型、非常深的神经网络可以减轻过拟合并降低计算量例如卷积神经网络就是稀疏的连接。 Net的主要目标就是找到最优的稀疏结构单元即 论文中提到其稀疏结构基于原理这里简单解释一下原理神经反射活动的持续与重复会导致神经元连接稳定性的持久提升当两个神经元细胞A和B距离很近并且A参与了对B重复、持续的兴奋那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结一下即“一起发射的神经元会连在一起”Cells that fire , wire 学习过程中的刺激会使神经元间的突触强度增加。受原理启发另一篇文章  for  Some Deep 提出如果数据集的概率分布可以被一个很大很稀疏的神经网络所表达那么构筑这个网络的最佳方法是逐层构筑网络将上一层高度相关的节点聚类并将聚类出来的每一个小簇连接到一起如图11所示。这个相关性高的节点应该被连接在一起的结论即是从神经网络的角度对原理有效性的证明。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图11  将高度相关的节点连接在一起形成稀疏网络

因此一个“好”的稀疏结构应该是符合原理的我们应该把相关性高的一簇神经元节点连接在一起。在普通的数据集中这可能需要对神经元节点聚类但是在图片数据中天然的就是临近区域的数据相关性高因此相邻的像素点被卷积操作连接在一起。而我们可能有多个卷积核在同一空间位置但在不同通道的卷积核的输出结果相关性极高。因此一个1´1的卷积就可以很自然地把这些相关性很高的、在同一个空间位置但是不同通道的特征连接在一起这就是为什么1´1卷积这么频繁地被应用到 Net中的原因。1´1卷积所连接的节点的相关性是最高的而稍微大一点尺寸的卷积比如3´3、5´5的卷积所连接的节点相关性也很高因此也可以适当地使用一些大尺寸的卷积增加多样性。最后 通过4个分支中不同尺寸的1´1、3´3、5´5等小型卷积将相关性很高的节点连接在一起就完成了其设计初衷构建出了很高效的符合原理的稀疏结构。

在 中通常1´1卷积的比例输出通道数占比最高3´3卷积和5´5卷积稍低。而在整个网络中会有多个堆叠的 我们希望靠后的 可以捕捉更高阶的抽象特征因此靠后的 的卷积的空间集中度应该逐渐降低这样可以捕获更大面积的特征。因此越靠后的 中3´3和5´5这两个大面积的卷积核的占比输出通道数应该更多。

 Net有22层深除了最后一层的输出其中间节点的分类效果也很好。因此在 Net中还使用到了辅助分类节点 即将中间某一层的输出用作分类并按一个较小的权重0.3加到最终分类结果中。这样相当于做了模型融合同时给网络增加了反向传播的梯度信号也提供了额外的正则化对于整个 Net的训练很有裨益。

当年的 V1还是跑在的前辈上的并且只运行在CPU上。当时使用了异步的SGD训练学习速率每迭代8个epoch降低4%。同时 V1也使用了Multi-Scale、Multi-Crop等数据增强方法并在不同的采样数据上训练了7个模型进行融合得到了最后的 2014的比赛成绩——top-5错误率6.67%。

同时  Net还是一个大家族包括

2014年9月的论文Going  with 提出的 V1top-5错误率6.67%。

2015年2月的论文Batch :  Deep   by   提出的 V2top-5错误率4.8%。

2015年12月的论文 the   for  提出的 V3top-5错误率3.5%。

2016年2月的论文-v4, - and the  of   on 提出的 V4top-5错误率3.08%。

 V2学习了用两个3´3的卷积代替5´5的大卷积用以降低参数量并减轻过拟合还提出了著名的Batch 以下简称BN方法。BN是一个非常有效的正则化方法可以让大型卷积网络的训练速度加快很多倍同时收敛后的分类准确率也可以得到大幅提高。BN在用于神经网络某层时会对每一个mini-batch数据的内部进行标准化处理使输出规范化到N(0,1)的正态分布减少了  Shift内部神经元分布的改变。BN的论文指出传统的深度神经网络在训练时每一层的输入的分布都在变化导致训练变得困难我们只能使用一个很小的学习速率解决这个问题。而对每一层使用BN之后我们就可以有效地解决这个问题学习速率可以增大很多倍达到之前的准确率所需要的迭代次数只有1/14训练时间大大缩短。而达到之前的准确率后可以继续训练并最终取得远超于 V1模型的性能——top-5错误率4.8%已经优于人眼水平。因为BN某种意义上还起到了正则化的作用所以可以减少或者取消简化网络结构。

当然只是单纯地使用BN获得的增益还不明显还需要一些相应的调整增大学习速率并加快学习衰减速度以适用BN规范化后的数据去除并减轻L2正则因BN已起到正则化的作用去除LRN更彻底地对训练样本进行减少数据增强过程中对数据的光学畸变因为BN训练更快每个样本被训练的次数更少因此更真实的样本对训练更有帮助。在使用了这些措施后 V2在训练达到 V1的准确率时快了14倍并且模型在收敛时的准确率上限更高。

而 V3网络则主要有两方面的改造一是引入了 into small 的思想将一个较大的二维卷积拆成两个较小的一维卷积比如将7´7卷积拆成1´7卷积和7´1卷积或者将3´3卷积拆成1´3卷积和3´1卷积如图12所示。一方面节约了大量参数加速运算并减轻了过拟合比将7´7卷积拆成1´7卷积和7´1卷积比拆成3个3´3卷积更节约参数同时增加了一层非线性扩展模型表达能力。论文中指出这种非对称的卷积结构拆分其结果比对称地拆为几个相同的小卷积核效果更明显可以处理更多、更丰富的空间特征增加特征多样性。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图 12  将一个3´3卷积拆成1´3卷积和3´1卷积

另一方面 V3优化了 的结构现在 有35´35、17´17和8´8三种不同结构如图13所示。这些 只在网络的后部出现前部还是普通的卷积层。并且 V3除了在 中使用分支还在分支中使用了分支8´8的结构中可以说是 In  In 。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图13   V3中三种结构的 

而 V4相比V3主要是结合了微软的而将在6.4节单独讲解这里不多做赘述。因此本节将实现的是 V3其整个网络结构如表1所示。由于  Net V3相对比较复杂所以这里使用tf..slim辅助设计这个网络。.slim中的一些功能和组件可以大大减少设计 Net的代码量我们只需要少量代码即可构建好有42层深的 V3。

表1   V3网络结构

深度学习之四大经典CNN技术浅析 | 硬创公开课

  由微软研究院的 He等4名华人提出通过使用 Unit成功训练152层深的神经网络在 2015比赛中获得了冠军取得3.57%的top-5错误率同时参数量却比低效果非常突出。的结构可以极快地加速超深神经网络的训练模型的准确率也有非常大的提升。6.3节我们讲解并实现了 V3而 V4则是将 和相结合。可以看到是一个推广性非常好的网络结构甚至可以直接应用到 Net中。本节就讲解的基本原理以及如何用来实现它。

_基于深度教学的评课_深度教学讲座

在之前瑞士教授提出了 原理与很相似。这位教授同时也是LSTM网络的发明者而且是早在1997年发明的可谓是神经网络领域元老级的学者。通常认为神经网络的深度对其性能非常重要但是网络越深其训练难度越大 的目标就是解决极深的神经网络难以训练的问题。 相当于修改了每一层的激活函数此前的激活函数只是对输入做一个非线性变换 则允许保留一定比例的原始输入x即其中T为变换系数C为保留系数论文中令。这样前面一层的信息有一定比例可以不经过矩阵乘法和非线性变换直接传输到下一层仿佛一条信息高速公路因此得名 。

 主要通过 units学习如何控制网络中的信息流即学习原始信息应保留的比例。这个可学习的机制正是借鉴自教授早年的LSTM循环神经网络中的。几百乃至上千层深的 可以直接使用梯度下降算法训练并可以配合多种非线性激活函数学习极深的神经网络现在变得可行了。事实上 的设计在理论上允许其训练任意深的网络其优化方法基本上与网络的深度独立而传统的神经网络结构则对深度非常敏感训练复杂度随深度增加而急剧增加。

和 非常类似也是允许原始输入信息直接传输到后面的层中。最初的灵感出自这个问题在不断加神经网络的深度时会出现一个的问题即准确率会先上升然后达到饱和再持续增加深度则会导致准确率下降。这并不是过拟合的问题因为不光在测试集上误差增大训练集本身误差也会增大。假设有一个比较浅的网络达到了饱和的准确率那么后面再加上几个的全等映射层起码误差不会增加即更深的网络不应该带来训练集上误差上升。而这里提到的使用全等映射直接将前一层输出传到后面的思想就是的灵感来源。

假定某段神经网络的输入是x期望输出是如果我们直接把输入x传到输出作为初始结果那么此时我们需要学习的目标就是。如图14所示这就是一个的残差学习单元 相当于将学习目标改变了不再是学习一个完整的输出只是输出和输入的差别即残差。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图14  的残差学习模块

图15所示为-19以及一个34层深的普通卷积网络和34层深的网络的对比图。可以看到普通直连的卷积神经网络和的最大区别在于有很多旁路的支线将输入直接连到后面的层使得后面的层可以直接学习残差这种结构也被称为或skip 。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图15  VGG-19直连的34层网络的34层网络的结构对比

传统的卷积层或全连接层在信息传递时或多或少会存在信息丢失、损耗等问题。在某种程度上解决了这个问题通过直接将输入信息绕道传到输出保护信息的完整性整个网络则只需要学习输入、输出差别的那一部分简化学习目标和难度。

在的论文中除了提出图14中的两层残差学习单元还有三层的残差学习单元。两层的残差学习单元中包含两个相同输出通道数因为残差等于目标输出减去输入即因此输入、输出维度需保持一致的3´3卷积而3层的残差网络则使用了 In 和 Net中的1´1卷积并且是在中间3´3的卷积前后都使用了1´1卷积有先降维再升维的操作。另外如果有输入、输出维度不同的情况我们可以对x做一个线性映射变换维度再连接到后面的层。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图16  两层及三层的残差学习模块

图17所示为在不同层数时的网络配置其中基础结构很类似都是前面提到的两层和三层的残差学习单元的堆叠。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图17  不同层数时的网络配置

在使用了的结构后可以发现层数不断加深导致的训练集上误差增大的现象被消除了网络的训练误差会随着层数增大而逐渐减小并且在测试集上的表现也会变好。在推出后不久就借鉴了的精髓提出了 V4和--V2并通过融合这两个模型在数据集上取得了惊人的3.08%的错误率。

可见及其思想对卷积神经网络研究的贡献确实非常显著具有很强的推广性。在的作者的第二篇相关论文  in Deep  中 V2被提出。 V2和 V1的主要区别在于作者通过研究残差学习单元的传播公式发现前馈和反馈信号可以直接传输因此skip 的非线性激活函数如ReLU替换为 。同时 V2在每一层中都使用了Batch 。这样处理之后新的残差学习单元将比以前更容易训练且泛化性更强。

根据教授的观点类似于一个没有gates的LSTM网络即将输入x传递到后面层的过程是一直发生的而不是学习出来的。同时最近也有两篇论文表示基本等价于RNN且的效果类似于在多层网络间的集成方法。在加深网络层数上做出了重大贡献而另一篇论文The Power of Depth for   则从理论上证明了加深网络比加宽网络更有效算是给提供了声援也是给深度学习为什么要深才有效提供了合理解释。

总结

以上我们简单回顾了卷积神经网络的历史图18所示大致勾勒出最近几十年卷积神经网络的发展方向。

感知机于1957年由Frank 提出而不仅是卷积网络也是神经网络的始祖。神经认知机是一种多层级的神经网络由日本科学家 于20世纪80年代提出具有一定程度的视觉认知的功能并直接启发了后来的卷积神经网络。LeNet-5由CNN之父Yann LeCun于1997年提出首次提出了多层级联的卷积结构可对手写数字进行有效识别。

深度学习之四大经典CNN技术浅析 | 硬创公开课

图18  卷积神经网络发展图

可以看到前面这三次关于卷积神经网络的技术突破间隔时间非常长需要十余年甚至更久才出现一次理论创新。而后于2012年的学生Alex依靠8层深的卷积神经网络一举获得了 2012比赛的冠军瞬间点燃了卷积神经网络研究的热潮。成功应用了ReLU激活函数、、最大覆盖池化、LRN层、GPU加速等新技术并启发了后续更多的技术创新卷积神经网络的研究从此进入快车道。

在之后我们可以将卷积神经网络的发展分为两类一类是网络结构上的改进调整图18中的左侧分支另一类是网络深度的增加图18中的右侧分支。

2013年颜水成教授的 in 工作首次发表优化了卷积神经网络的结构并推广了1´1的卷积结构。在改进卷积网络结构的工作中后继者还有2014年的  Net V1提出了 这个可以反复堆叠的高效的卷积网络结构并获得了当年比赛的冠军。2015年初的 V2提出了Batch 大大加速了训练过程并提升了网络性能。2015年年末的 V3则继续优化了网络结构提出了 in Small 的思想分解大尺寸卷积为多个小卷积乃至一维卷积。

而另一条分支上许多研究工作则致力于加深网络层数2014年比赛的亚军全程使用3´3的卷积成功训练了深达19层的网络当年的季军MSRA-Net也使用了非常深的网络。2015年微软的成功训练了152层深的网络一举拿下了当年比赛的冠军top-5错误率降低至3.46%。其后又更新了 V2增加了Batch 并去除了激活层而使用 或进一步提升了网络性能。此后  V2融合了 Net优良的网络结构和训练极深网络的残差学习模块集两个方向之长取得了更好的分类效果。

我们可以看到自于2012年提出后深度学习领域的研究发展极其迅速基本上每年甚至每几个月都会出现新一代的技术。新的技术往往伴随着新的网络结构更深的网络的训练方法等并在图像识别等领域不断创造新的准确率记录。至今比赛和卷积神经网络的研究依然处于高速发展期CNN的技术日新月异。当然其中不可忽视的推动力是我们拥有了更快的GPU计算资源用以实验以及非常方便的开源工具比如可以让研究人员快速地进行探索和尝试。在以前研究人员如果没有像Alex那样高超的编程实力能自己实现cuda-可能都没办法设计CNN或者快速地进行实验。现在有了研究人员和开发人员都可以简单而快速地设计神经网络结构并进行研究、测试、部署乃至实用。

雷锋网(公众号雷锋网)群友问答

问题1最新版本的 1.0到底有什么实质性的提升如何看待加入的动态图

1.0版本的是第一个稳定版本提供了可以长期支持的API。相比于之前的0.12这个版本主要添加了编译优化Java接口 Fold动态图框架同时在分布式计算上的性能也有了重大提升目前训练 V3网络在8块GPU上可获得7倍多的提速。

Fold主要是学习了、、DyNet等框架使用命令式变成生成计算图同时执行计算这样训练某些网络比如RNN、LSTM等更灵活。不过Fold和这些框架略有不同它属于使用 的方式可以对不同长度、大小、尺寸的 输入做batch训练效率比、、DyNet等完全动态生成计算图的方式效率更高。

问题2以上谈到的几种网络分别适用于什么类型的任务

这几种网络都属于2维的卷积网络主要任务可以做图像分类、定位等他们功能上应该是递进的关系越新的网络使用到的技术越好性能越高而--V2则是把这几种网络的优势都融为一体。

当然卷积网络不止2维也可以有1维的可以处理时间序列的信号也可以有3维的可以处理3维空间的信息或者处理视频信息。卷积网络适应的场景应该是输入信号在空间上和时间上存在一定关联性的场景满足了这个条件都可以很好的利用深度卷积神经网络解决问题。

问题3看过一些写的程序总觉不是特别清晰简洁。Keras就是清楚的多但Keras是否可以完全覆盖的功能呢

Keras目前已经准备正式进入代码库了以后可以使用Keras创建网络但是功能肯定是不能完全覆盖的。比如多GPU、分布式训练或者生成各种中间训练结果给展示或者是一些复杂的多分支的、条件控制的网络等这些用keras都实现不了。但是Keras可以用来实现一些逻辑简单结构不复杂的网络。

问题4深度学习相关的开源社区如何能够对其做出是需要算法或网络结构上的创新吗

这个一般不用算法或网络结构的创新一般是发Paper。协助开发一些框架就简单的多一开始可能是修复Bug而后是完成一些开发团队任务可以交给社区完成的相对简单的功能。到后面随着对框架和代码的熟悉可以逐渐参与一些有趣的新功能的开发当然也可以把最新出的一些论文中的网络结构实现在中提供接口不过这个要求就比较高了甚至需要有开发CUDA程序的能力。

附中奖名单

本期公开课中奖名单小哒、云杉、Devin-2、大大白。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了