应用开发

综述7大类深度CNN架构创新

时间:2010-12-5 17:23:32  作者:数据库   来源:IT科技  查看:  评论:0
内容摘要:深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前***结果。深度 CNN 架构在挑战性基准任务比赛中实现的高性能表明,创新的架构理念以及参数优化可以提高 CNN 在各种

深度卷积神经网络(CNN)是综述一种特殊类型的神经网络,在各种竞赛基准上表现出了当前***结果。大类深度 CNN 架构在挑战性基准任务比赛中实现的深度高性能表明,创新的构创架构理念以及参数优化可以提高 CNN 在各种视觉相关任务上的性能。本综述将最近的综述 CNN 架构创新分为七个不同的类别,分别基于空间利用、大类深度、深度多路径、构创宽度、综述特征图利用、大类通道提升和注意力。深度

引言

通过 1989 年 LeCun 处理网格状拓扑数据(图像和时间系列数据)的构创研究,CNN ***受到关注。综述CNN 被视为理解图像内容的大类***技术之一,并且在图像识别、深度分割、检测和检索相关任务上表现出了当前***性能。CNN 的成功引起了学界外的注意。在产业界,如谷歌、微软、AT&T、NEC 和 Facebook 这样的亿华云公司都设立了研究团队来探索 CNN 的新架构。目前,图像处理竞赛中的大多数领跑者都会采用基于深度 CNN 的模型。

自 2012 年以来,关于 CNN 架构的不同创新被提出来。这些创新可分为参数优化、正则化、结构重组等。但是据观察,CNN 网络的性能提升应主要归功于处理单元的重构和新模块的设计。自 AlexNet 在 ImageNet 数据集上展现出了非凡的性能后,基于 CNN 的应用变得越来越普及。类似地,Zeiler 和 Fergus 介绍了特征分层可视化的概念,这改变了用深度架构(如 VGG)在简单的低空间分辨率中提取特征的趋势。如今,大多数新架构都是基于 VGG 引入的简单原则和同质化拓扑构建的。高防服务器

另一方面,谷歌团队引入了一个非常著名的关于拆分、转换和合并的概念,称为 Inception 模块。初始块***次使用了层内分支的概念,允许在不同空间尺度上提取特征。2015 年,为了训练深度 CNN,Resnet 引入的残差连接概念变得很有名,并且,后来的大多数网络像 Inception-ResNet,WideResNet,ResNext 等都在使用它。与此类似,一些像 WideResnet、Pyramidal Nets、Xception 这样的架构都引入了多层转换的概念,通过额外的基数和增加的宽度来实现。因此,研究的重点从参数优化和连接再次调整,转向了网络架构设计(层结构)。这引发了许多像通道提升、空间和通道利用、亿华云计算基于注意力的信息处理等新的架构概念。

本文结构如下:

图 1:文章结构

图 2

图 2:典型模式识别(OR)系统的基本布局。PR 系统分为三个阶段:阶段 1 和数据挖掘相关,阶段 2 执行预处理和特征选择,而阶段 3 基于模型选择、调参和分析。CNN 有良好的特征提取能力和强大的鉴别能力,因此在一个 PR 系统中,它可以用于特征提取/生成和模型选择阶段。

CNN 中的架构创新

自 1989 年至今,CNN 架构已经有了很多不同的改进。CNN 中的所有创新都是通过深度和空间相结合实现的。根据架构修改的类型,CNN 可以大致分为 7 类:基于空间利用、深度、多路径、宽度、通道提升、特征图利用和注意力的 CNN。深度 CNN 架构的分类如图 3 所示。

图 3:深度 CNN 架构分类

1. 基于空间利用的 CNN

CNN 有大量参数,如处理单元数量(神经元)、层数、滤波器大小、步幅、学习率和激活函数等。由于 CNN 考虑输入像素的邻域(局部性),可以使用不同大小的滤波器来探索不同级别的相关性。因此,在 2000 年初,研究人员利用空间变换来提升性能,此外,还评估了不同大小的滤波器对网络学习率的影响。不同大小的滤波器封装不同级别的粒度;通常,较小的滤波器提取细粒度信息,而较大的滤波器提取粗粒度信息。这样,通过调整滤波器大小,CNN 可以在粗粒度和细粒度的细节上都表现很好。

2. 基于深度的 CNN

深度 CNN 架构基于这样一种假设:随着深度的增加,网络可以通过大量非线性映射和改进的特征表示更好地逼近目标函数。网络深度在监督学习的成功中起了重要作用。理论研究已表明,深度网络能够以指数方式比浅层网络更有效地表示特定的 20 个函数类型。2001 年,Csáji 表示了通用近似定理,指出单个隐藏层足够逼近任何函数,但这需要指数级的神经元,因而通常导致计算上行不通。在这方面,Bengio 和 elalleau 认为更深的网络有潜力在更少的成本下保持网络的表现能力。2013 年,Bengio 等人通过 实证表明,对于复杂的任务,深度网络在计算和统计上都更有效。在 2014-ILSVR 竞赛中表现***的 Inception 和 VGG 则进一步说明,深度是调节网络学习能力的重要维度。

一旦特征被提取,只要其相对于其他位置的近似位置被保留,其提取位置就变得没那么重要了。池化或下采样(如卷积)是一种有趣的局部操作。它总结了感受野附近的类似信息,并输出了该局部区域内的主要反应。作为卷积运算的输出结果,特征图案可能会出现在图像中的不同位置。

3. 基于多路径的 CNN

深度网络的训练颇具挑战性,这也是近来很多深度网络研究的主题。深度 CNN 为复杂任务提供了高效的计算和统计。但是,更深的网络可能会遭遇性能下降或梯度消失/爆炸的问题,而这通常是由增加深度而非过拟合造成的。梯度消失问题不仅会导致更高的测试误差,还会导致更高的训练误差。为了训练更深的网络,多路径或跨层连接的概念被提出。多路径或捷径连接可以通过跳过一些中间层,系统地将一层连接到另一层,以使特定的信息流跨过层。跨层连接将网络划分为几块。这些路径也尝试通过使较低层访问梯度来解决梯度消失问题。为此,使用了不同类型的捷径连接,如零填充、基于投影、dropout 和 1x1 连接等。

激活函数是一种决策函数,有助于学习复杂的模式。选择适当的激活函数可以加速学习过程。卷积特征图的激活函数定义为等式(3)。

4. 基于宽度的多连接 CNN

2012 至 2015 年,网络架构的重点是深度的力量,以及多通道监管连接在网络正则化中的重要性。然而,网络的宽度和深度一样重要。通过在一层之内并行使用多处理单元,多层感知机获得了在感知机上映射复杂函数的优势。这表明宽度和深度一样是定义学习原则的一个重要参数。Lu 等人和 Hanin & Sellke 最近表明,带有线性整流激活函数的神经网络要足够宽才能随着深度增加保持通用的近似特性。并且,如果网络的***宽度不大于输入维度,紧致集上的连续函数类无法被任意深度的网络很好地近似。因此,多层堆叠(增加层)可能不会增加神经网络的表征能力。与深度架构相关的一个重要问题是,有些层或处理单元可能无法学习有用的特征。为了解决这一问题,研究的重点从深度和较窄的架构转移到了较浅和较宽的架构上。

5. 基于特征图(通道特征图)开发的 CNN

CNN 因其分层学习和自动特征提取能力而闻名于 MV 任务中。特征选择在决定分类、分割和检测模块的性能上起着重要作用。传统特征提取技术中分类模块的性能要受限于特征的单一性。相较于传统技术,CNN 使用多阶段特征提取,根据分配的输入来提取不同类型的特征(CNN 中称之为特征图)。但是,一些特征图有很少或者几乎没有目标鉴别作用。巨大的特征集有噪声效应,会导致网络过拟合。这表明,除了网络工程外,特定类别特征图的选取对改进网络的泛化性能至关重要。在这一部分,特征图和通道会交替使用,因为很多研究者已经用通道这个词代替了特征图。

6. 基于通道(输入通道)利用的 CNN

图像表征在决定图像处理算法的性能方面起着重要作用。图像的良好表征可以定义来自紧凑代码的图像的突出特征。在不同的研究中,不同类型的传统滤波器被用来提取单一类型图像的不同级别信息。这些不同的表征被用作模型的输入,以提高性能。CNN 是一个很好的特征学习器,它能根据问题自动提取鉴别特征。但是,CNN 的学习依赖于输入表征。如果输入中缺乏多样性和类别定义信息,CNN 作为鉴别器的性能就会受到影响。为此,辅助学习器的概念被引入到 CNN 中来提升网络的输入表征。

7. 基于注意力的 CNN

不同的抽象级别在定义神经网络的鉴别能力方面有着重要的作用。除此之外,选择与上下文相关的特征对于图像定位和识别也很重要。在人类的视觉系统中,这种现象叫做注意力。人类在一次又一次的匆匆一瞥中观察场景并注意与上下文相关的部分。在这个过程中,人类不仅注意选择的区域,而且推理出关于那个位置的物体的不同解释。因此,它有助于人类以更好的方式来抓取视觉结构。类似的解释能力被添加到像 RNN 和 LSTM 这样的神经网络中。上述网络利用注意力模块来生成序列数据,并且根据新样本在先前迭代中的出现来对其加权。不同的研究者把注意力概念加入到 CNN 中来改进表征和克服数据的计算限制问题。注意力概念有助于让 CNN 变得更加智能,使其在杂乱的背景和复杂的场景中也能识别物体。

论文:A Survey of the Recent Architectures of Deep Convolutional Neural Networks

论文地址:https://arxiv.org/abs/1901.06032

摘要:深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前***结果。深度 CNN 的超强学习能力主要是通过使用多个非线性特征提取阶段实现的,这些阶段能够从数据中自动学习分层表征。大量数据的可用性和硬件处理单元的改进加速了 CNN 的研究,最近也报道了非常有趣的深度 CNN 架构。近来,深度 CNN 架构在挑战性基准任务比赛中实现的高性能表明,创新的架构理念以及参数优化可以提高 CNN 在各种视觉相关任务上的性能。鉴于此,关于 CNN 设计的不同想法被探索出来,如使用不同的激活函数和损失函数、参数优化、正则化以及处理单元的重构。然而,在表征能力方面的主要改进是通过重构处理单元来实现的。尤其是,使用块而不是层来作为结构单元的想法获得了极大的赞赏。本综述将最近的 CNN 架构创新分为七个不同的类别。这七个类别分别基于空间利用、深度、多路径、宽度、特征图利用、通道提升和注意力。此外,本文还涵盖了对 CNN 组成部分的基本理解,并揭示了 CNN 目前面临的挑战及其应用。

【本文是专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】 

戳这里,看该作者更多好文

athckm55及其表现
关于iptables有价值的信息很多,但是大多都描述的很复杂。假如你想做些基本的配置,下面的 How To 很适合你。 # iptables -L 列出您当前iptables中在规则。假如您是刚刚建立您的服务器,那么可能此时还没有任何规则,而且您应该看到如下: Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) ◆ 允许建立会话 我们可以允许建立会话来接受流量: # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ◆ 在指定端口上允许入站流量 阻断所有流量您也可以启动系统,但是您可能正在通过SSH工作,所有在您阻断其他流量前有必要允许SSH流量。 为了在22端口号(默认的SSH端口)上的允许流量入站,您可以告诉iptables允许您的网卡接受所有的目的端口为22的TCP流量。 # iptables -A INPUT -p tcp -I eth0 --dport ssh -j ACCEPT 特别的,这将向表中追加(-A)INPUT规则,允许目的端口号为SSH的所有流量进入接口(-i) eth0,以便iptables完成跳转(-j)或动作:ACCEPT 让我们核对下这些规则:(这里仅显示了少数行,您应该看到更多) # iptables -L 现在,让我们允许所有的web流量 # iptables -A INPUT -p tcp -I eth0 --dport 80 -j ACCEPT 检查我们现有的规则 # iptables -L 我们已经指定SSH和web端口为允许通过的TCP流量,但是因为我们还没阻断任何流量,所以到目前为止所有的流量仍然可以进入。 ◆ 阻断流量 一旦一条规则对一个包进行了匹配,其他规则不再对这个包有效。因为我们的规则首先允许SSH和WEB流量,所以只要我们阻断所有流量的规则紧跟其後,我们依然能接受我们感兴趣的流量。大家要做的仅仅是把阻断所有流量的规则放在最後,所以我们需要再次用到它。 # iptables -A INPUT -j DROP 因为我们刚才没有指定一个接口或一个协议,所以除了web和ssh流量外其他任何流量都会被阻断。 ◆ 编辑 iptables 到目前为止我们设置过程中唯一的问题是回环端口(loopbakc)也被阻断了。我们本可以通过指定 -I eth0 来仅仅丢弃eth0上的数据包,但我们也可以为回环端口(loopback)添加一条规则。假如我们追加这条规则,这将太晚了----因为所有的流量已经 被丢弃。我们必须插入这条跪着到第4行。 # iptables -I INPUT 4 -I lo -j ACCEPT 最後2行看起来几乎一样,因此我们可以让iptables列的更详细些。 # iptables -L -v ◆ 日志记录 在上面的例子中,所有的流量都不会被记录。假如您愿意在syslog中记录被丢弃的包, 下面将是最快捷的方式: # iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix iptables denied: --log-level 7 看 提示 段获得更多关于logging的ideas. ◆ 保存 iptables 假如您现在要重新启动机器的话,您的iptables配置将会消失。为了不用每次重新启动时敲入这些命令,您可以保存你的配置,让它在系统启动时自动启动。你可以通过iptables-save 和iptables-restore命令来保存配置。 保存您的防火墙股则到一个文件 # iptables-save >/etc/iptables.up.rules 接着修改 /etc/network/interfaces 脚本自动应用这些规则(末行是添加的) auto eth0 你也可以准备一组规则冰并自动应用它 auto eth0 ◆ 提示 下面的步骤复习了怎样建立你的防火墙规则,并假定它们相对固定(而且对于大多数人来说它们也应该是)。但是假如你要做许多研究工作,你也许想要你的 iptables在你每次重启时保存一次。你可以在 /etc/network/interfaces 里添加像下面的一行: pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-save >/etc/iptables.up.rules 此行将保存规则用于下次启动时使用。 假如你超出了这个指南来编辑iptables,你可能想利用iptables-save和iptables-restore来编辑和测试你的规则。你可以通过使用你喜爱的文本编辑器(此处为gedit)来打开这些规则文件来完成编辑。 # iptables-save >/etc/iptables.test.rules 你会得到一个如下类似的文件(下面是紧接上的例子文件): # Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006 注意到这些都是减去iptables命令的iptables语句。随意编辑这些命令、完成後保存它们。然後简单的测试下: # iptables-restore < /etc/iptables.test.rules 测试完毕後,假如你还没添加iptables-save命令 到 /etc/network/interfaces 里面,记得不要丢失了你的更改: # iptables-save >/etc/iptables.up.rules ◆ 更详细的日志 # Generated by iptables-save v1.3.1 on Sun Apr 23 05:32:09 2006 请注意 一个名为 LOGNDROP的链在文件顶部。而且,INPUT链底部标准的DROP被替换成了LOGNDROP,同时添加了协议描述so it makes sense looking at the log。最後我们在LOGNDROP链尾部丢弃了这些流量。下面的行告诉我们发生了什么: * --limit 设置记录相同规则到syslog中的次数 ◆ 禁用防火墙 假如您要临时禁用防火墙,您可以通过下面的命令清空所偶的规则: # iptables -F ◆ 轻松配置通过 GUI 新手可以利用 Firetarter(一个gui工具)---仓库中的可用软件(新立德或apt-get 获得)来配置她或他的iptables规则,而需要命令行知识。请查看指南,尽管…… 配置很简单,但是对于高级用户来说可能远远不能满足。然而它对于大多数的家庭用户来说是足够的…… 。(我)建议您使用firestarter在策略表中将出站配置为 “限制”,而将您需要的连接类型(如用于http的80、https的443,msn chat的1683等等)加入白名单。您也可以通过它查看进出您计算机的活动连接…… 。防火墙会一直保持下去一旦通过向导配置完毕。拨号用户必须在向导中指定它在拨号时自动启动。 firestarter主页: http://www.fs-security.com/ (再次, 仓库源中可用, 不需要编译) 指南: http://www.fs-security.com/docs/tutorial.php 个人笔记:不幸运的是,它没有阻断(或询问用户)特定应用/程序的选项……。因此,我的理解是一旦启用了80端口(例如,用于访问网页),那么任何程序都可以通过80端口连接任何服务器、做任何它想做的事……
copyright © 2025 powered by 编程之道  滇ICP备2023006006号-34sitemap