Eugenio Culurciello的神经网络结构解析(Part 2)

简介: 我们的神经网络结构之旅来到了现代工业级应用中最常见的结构——Google的Inception系列模型以及微软的ResNet。

本文来源于Eugenio Culurciello's blog
作者: Eugenio Culurciello
Linkedin: https://www.linkedin.com/in/eugenioculurciello

翻译: 郭昕 (蚂蚁金服 – 人工智能部)

原文标题:Neural Network Architectures

接上文,感兴趣的童鞋可以翻到小天的上一篇文章《Eugenio Culurciello的神经网络结构解析(Part 1)》。此外,本篇将分享Eugenio Culurciello的深度学习课程(含视频&文档),感兴趣的小伙伴可以拉到文末查看学习。


我们的神经网络结构之旅来到了现代工业级应用中最常见的结构——Google的Inception系列模型以及微软的ResNet。

GoogLeNet及Inception系列模型
Google实验室的Christian Szegedy开始了一系列致力于降低深度学习模型的尝试(例如VGG)的计算压力,这一系列尝试的第一篇文章就是Going Deeper with Convolutions。
(https://arxiv.org/abs/1409.4842)

截止2014年秋天,深度学习模型在图片以及视频帧内容的分类里已经取得了极大进展,大部分对深度学习和神经网络的质疑也基本上偃旗息鼓了。鉴于这类技术取得的巨大成功,像Google这样的科技巨头开始探索这类模型结构在他们服务器集群上的高效以及大规模部署。

Christian思考了很多方法来降低计算压力,同时还能保持最好的分类效果;或者能够在同样的计算资源下,可以获得更好的图像处理效果。

他以及他在Google的组提出了Inception模型:

image.png

这个模型第一眼看起来,基本上是一个对1x1,3x3以及5x5卷积滤波器的并行归并,但是Inception模型一个最重要的直觉,是在于通过使用1x1卷积滤波器(NiN)来大大减少了在并行模块前的大量特征,这一思想一般我们称之为”bottleneck”, 关于这一思想,我们会在Bottleneck Layer这一章节来详细介绍。

GoogLeNet使用了一个不包含Inception模块的主干来作为初始层,然后使用了类似NiN的平均pooling以及softmax分类器的结构。这一模型相比于AlexNet以及VGG,也是属于使用了极少的可训练参数的模型之一,具体的细节可以参见我们的论文:https://arxiv.org/abs/1605.07678

Bottleneck Layer
受到NiN的模型设计的启发,Inception模型的Bottleneck Layer在每一层减少了使用的特征,这也减少了所需要的计算操作,所以在运行时所花费的时间能保持在一个较少的水平。在传输数据到计算量较大的卷基层之前,特征的数目被减少了大约4倍。这一设计大大减少了计算耗时,使得这一模型得到了成功的工业级应用。

下面让我们来看看Bottleneck Layer的设计细节。假设你有256维特征输入,256维特征输出,Inception层仅进行3x3的卷积运算,那么将要进行 256x256 x 3x3 的卷积操作(这个大约是589000多的MAC基础操作),这可能已经超过了我们所能提供的计算资源预算(假设对这一层计算,使用Google的服务器,我们需要在0.5毫秒内完成)。那么如果我们不是直接对这256维特征做直接的卷积计算,而是减少特征维度,比如减少到64维(256 / 4)。针对这个方式,我们需要 256 –> 64 的1x1 卷积,然后这64维特征进入Inception的全部并行分支进行计算,然后再通过 1x1的卷积操作来恢复256维的输出 64 –> 256,那么我们所要进行的全部操作数据可以计算如下:

λ 256x64 x 1x1 = 16000

λ 64x64 x 3x3 = 36000

λ 64x256 x 1x1 = 16000

这总计是大约70000的操作数量,相比我们之前接近600000的操作数量,我们获得了接近10倍的加速。

虽然我们进行了更少的操作,但是我们并没有在这一层损失什么泛化性能,实时上,Bottleneck Layer在ImageNet的实验中取得了非常好的结果,同时这一结构也被应用于ResNet等下一代架构中。

这一设计之所以会成功,主要的原因还是在于输入的数据特征是相互关联的,他们之间的冗余性可以通过1x1的卷积来去除并大致模拟他们的基本特性。而使用较少数量的特征经过真正的卷积操作之后,他们还能通过1x1的卷积来恢复出有意义的特征用于下一层的输入。

Inception V3(以及V2)
Christian以及他的团队是非常高效的研究者,在2015年2月,他们提出了批量归一化(Batch-normalized)版本的Inception模型,并命名为Inception V2 (https://arxiv.org/abs/1502.03167) 批归一化(batch normalization)通过计算每一层输出特征的均值以及标准差,来归一化这些输出值,这相当于对数据做了”白噪声化”的处理,这能够把所有神经网络输出层的数据限制在同样的范围内,同时保持均值为0。这一设计帮助神经网络在训练的过程中不需要关注如何对数据做平移等问题,而仅仅专注在如何更好的拟合特征,可以加速训练。

在2015年12月,他们又发表了一个新版本的Inception模型以及对应结构 (https://arxiv.org/abs/1512.00567) 。在这篇文章中,涉及到更多对原始GoogLeNet结构的解释,对更多设计的选择给出了详尽的解答。其中一些原创性的工作列举如下:

  1. 通过合理设计网络的深度和广度来最大化网络中的信息流;在每一层pooling之前,都需要增加特征映射数量
  2. 当深度增大的时候,相应的广度(即特征的维度)也需要相应增加
  3. 每一层广度的增加都能够增加更多的特征组合,然后用于下一层的作为输入
  4. 尽量使用3x3的卷积操作,因为5x5或者7x7的卷积操作都可以通过3x3卷积的级联来获得,具体可以见下图:

image.png

  1. 于是新的Inception模块就如下图所示:

image.png

  1. 滤波器也可以通过扁平化卷积(https://arxiv.org/abs/1412.5474) 来级联获得,从而组合出更为复杂的模块:

image.png

  1. Inception模块同样也可以使用Pooling操作来减少inception计算中的数据大小,这基本等同于在进行卷积操作的同时也进行简单的pooling操作:

image.png

此外,Inception还是使用一个pooling层加一个softmax来作为最终的分类器。

目录
相关文章
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
11月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
7月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
617 11
|
7月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1652 0
|
11月前
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
1094 66
|
8月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
180 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
10月前
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
11月前
|
网络架构
广播域与冲突域:解析网络技术中的复杂性。
总的来说,理解广播域和冲突域的概念可以使我们在设计或维护网络的过程中,更有效地管理通信流程,避免出现网络瓶颈,提成整体网络性能。就像是如何有效地运作一个市场,把每个人的需求和在合适的时间和地点配对,确保每个人的声音都被听到,每个人的需求都被满足。
347 11
|
11月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
362 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
12月前
|
网络安全
网络问题解析:如何解决CondaHTTPError HTTP 000 CONNECTION FAILED错误。
以上就是斯诺普为你准备的解决Conda出现HTTP连接错误的手术室。希望这辆小车可以顺利驶出棘手的泥潭,再次在自由的大路上疾驰。一切的尝试和努力,只为更好的探索与开发。
452 17

热门文章

最新文章

推荐镜像

更多
  • DNS