前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神经网络结构(上)

神经网络结构(上)

作者头像
哒呵呵
发布2018-08-06 17:17:42
4880
发布2018-08-06 17:17:42
举报
文章被收录于专栏:鸿的学习笔记

Jun 4, 2016

Note: updated on 2016-10-25

深度神经网络和深度学习是很强大和流行的算法。他们的成功很大程度上在于神经网络架构的精心设计。所以我想重温过去几年深度学习的神经网络设计的历史。

LeNet5

它来源于1994年,这是最早的卷积神经网络之一,推动了深度学习领域的发展。 Yann LeCun的这一开创性工作自从1988年以来在许多次成功迭代后被命名为LeNet5!

LeNet5架构是基础,特别是在整个图像中的图像特征分布的洞察,并且具有可学习参数的卷积是在具有少量参数的多个位置处提取相似特征的有效方式。那个时候是没有GPU来帮助训练的,甚至CPU都很慢。 因此,能够保存参数并计算是一个关键的优势。这与使用每个像素作为多层神经网络的单独输入形成对比。 LeNet5表明那些不应该在第一层中使用,因为图像是高度空间相关的,并且使用图像的单个像素作为单独的输入特征会无法利用这些相关性。

LeNet5的特征被总结为:

1. 卷积神经网络使用3层序列:卷积,合并,非线性 - >这可能是本文中深度学习图像的关键特征!

2.使用卷积去提取空间特征

3.子样本使用空间平均值

4. tanh或sigmoids形式的非线性

5.多层神经网络(MLP)作为最后的分类

6.各层之间的稀疏连接矩阵是为了避免庞大的计算成本

总体来说,这个网络是许多最近的架构的起源,并为这个领域的许多人提供了灵感。

The gap

1998年至2010年的神经网络是孵化期。大多数人都没有注意到他们力量的增加,而其他领域的研究人员缓慢进展。越来越多的数据可使用,因为手机相机和便宜的数码相机的兴起,并且计算能力也在上升,CPU变得更快,GPU成为通用计算工具。这两个趋势使神经网络开始有了进展,虽然速度缓慢。数据和计算能力使得神经网络可以处理越来越有趣的任务。

Dan Ciresan Net

2010年,Dan Claudiu Ciresan和Jurgen Schmidhuber发布了GPU神经网络的第一个实现,就是在一个高达9层神经网络的NVIDIA GTX 280图形处理器上实现了前向和后向算法。

AlexNet

2012年,Alex Krizhevsky发布了AlexNet,它是LeNet的更深层次和更广泛的版本,并在很大程度上赢得了ImageNet的竞争。

AlexNet将LeNet的洞察力扩展到一个更大的神经网络,可用于学习更复杂的对象和层次结构。这项工作的贡献是:

1. 作为非线性整流线性单位(ReLU)的使用

2. dropout技术在整个训练期间选择性地忽略单个神经元的使用,这是一种避免模型过拟合的方法

3. 重叠最大池,避免平均池的平均效应

4. 使用GPU NVIDIA GTX 580去减少训练时间

此时GPU提供了比CPU更多的核心,并获得了快于10倍的训练时间,这反过来允许使用更大的数据集和更大的图像去训练。AlexNet的成功开始了一场小小的革命。卷积神经网络现在是深度学习的主力,它成为了“大型神经网络现在可以解决有价值任务”的新名称。

Overfeat

2013年12月,来自Yann LeCun的NYU实验室提出了Overfeat,这是AlexNet的衍生品。此文还提出了学习边界盒,后来引出了其他许多论文的同一主题。但我相信更好应该是学习分割对象,而不是学习人工边界盒。

VGG

来自牛津大学的VGG网络首先在每个卷积层中使用了小得多的3×3过滤器,并且还将它们组合为卷积序列。这似乎与LeNet的原理相反,在LeNet的原理中,使用大卷积来捕获图像中的类似特征,不是AlexNet的9×9或11×11过滤器,过滤器开始变小,过于危险地接近LeNet想要避免的臭名昭著的1×1卷积,至少这是在网络的第一层。但是VGG的巨大优势在于能够理解序列中的多个3×3卷积便可以模拟较大接收场的效应,例如5×5和7×7。这些想法也将在更新的网络架构中用作Inception和ResNet。

VGG网络使用了多个3x3卷积层来表示复杂特征。注意:VGG-E:256×256和512×512 3×3过滤器的块3,4,5被按顺序使用多次以提取更复杂的特征和这些特征的组合。这实际上图像具有更大的512×512分类器,此时具有3层,并且是卷积!这显然相当于大量的参数,以及学习力量,但是这些网络的训练是困难的,并且必须被分裂成更小的网络,一层一层地添加。所有这些都是因为缺乏强大的方法来规范模型,或以某种方式限制大量参数所促进的大规模搜索空间。

VGG在许多层中使用了大的特征尺寸,因此在运行时是相当昂贵的。减少特征的数量,如在Inception瓶颈中所做的,会节省一些计算成本。

Network-in-network

NiN使用1x1卷积为卷积层的特征提供更多组合能力的巨大而简单的见解。NiN结构在每次卷积之后使用空间MLP层,以便在另一层之前更好地组合特征。同样,人们可以认为1x1卷积与LeNet的原本的原则相反,但是实际上它们有助于以更好的方式组合卷积特征,而这不可能是简单地堆叠更多的卷积层。这不同于使用原始像素作为下一层的输入。这里使用1×1卷积在卷积之后在特征地图上空间地组合特征,因此它们有效地使用非常少的参数,并在这些特征的所有像素之间共享!

MLP的能力可以通过将单个卷积特征组合成更复杂的组合来大大增加其效率。这个想法将在最近的架构中被用作ResNet和Inception及其衍生物。NiN也使用平均池层作为最后分类器的一部分。这是为了在分类之前平均网络对输入图像的多个的响应。

GoogLeNet and Inception

来自Google的ChristianSzegedy开始了旨在减少深层神经网络的计算负担的任务,并设计了GoogLeNet的第一个Inception体系结构。到目前为止,2014年秋季,深度学习模型在分类图像及视频帧内容方面变得非常有用。鉴于这些技术的有用性,像谷歌这样的互联网巨头对他们的服务器上的架构的高效性和大型部署都非常感兴趣。

Christian思考了很多关于如何减少深层神经网络的计算负担,并同时获得最优秀的性能(例如在ImageNet上)。或者能够保持计算成本不变,同时能提供改进后的性能。他和他的团队想出了Inception模块:乍一看基本上是1×1,3×3和5×5卷积过滤器的并行组合。但是,开始模块是使用1×1卷积块(NiN)来减少在昂贵的并行块之前的特征数量。这通常被称为“瓶颈”。GoogLeNet使用一个枝干(stem)模块而不是没有(inception)模块作为初始层,平均池和softmax分类器类似于NiN。与AlexNet和VGG相比,这种分类器的操作数量也非常少。这也有助于非常有效的网络设计。

Bottleneck layer

受NiN的启发,Inception的瓶颈层减少了特征的数量,从而减少了每一层的操作,因此学习时间可以保持较低水平。在将数据传递到昂贵的卷积模块之前,特征的数量减少了差不多4倍。这使得节省了大量计算成本,并且这种架构获得了成功。

让我们详细研究一下。 假设您有256个特征进来,256个特征出来,让我们假设Inception层只执行3x3的卷积。 这是必须执行的256x256 x 3x3卷积(589,000s乘法累加或MAC运算)。 这可能超过了我们所预想的计算量,但在Google服务器上会以0.5毫秒运行此层。 并且我们决定减少必须卷积的特征的数量,例如64或256/4。在这种情况下,我们首先执行256 - > 64 1×1卷积,然后在所有Inception分支上进行64卷积,然后再次使用64 - > 256个特征的1x1卷积。操作现在是:

  • 256×64 × 1×1 = 16,000s
  • 64×64 × 3×3 = 36,000s
  • 64×256 × 1×1 = 16,000s

总共约70,000,而我们以前有近60万。 这几乎减少10倍的操作!虽然我们做的操作较少,但我们并没有失去这一层的一般性。实际上,瓶颈层已经被证明是在ImageNet数据集上的最优秀的执行,例如,并且也会在稍后的架构中使用,例如ResNet。成功的原因是输入特征是相关的,并且因此可以通过将它们适当地与1x1卷积组合来去除冗余。然后,在卷积具有较少数目的特征之后,它们可以再次扩展成用于下一层的有意义的组合。

Inception V3 (and V2)

Christian和他的团队是非常强大的研究人员。 2015年2月,Batch-normalized Inception被升级为Inception V2。Batch-normalization计算了图层输出处所有特征图的平均值和标准偏差,并使用这些值对其响应进行归一化。这对应于“白化”数据,并且因此使得所有神经图在相同范围内和零均值的响应。这有助于训练,因为下一层不必学习输入数据中的偏移,并且可以专注于如何最佳地组合特征。

2015年12月,他们发布了一个新版本的Inception模块和相应的架构。此文更好地解释了原来的GoogLeNet架构,并提供了更多的关于设计选择的细节。原始想法的列表是:

1. 通过精心构建深度和宽度的网络的平衡,最大化信息流入网络。在每次pooling之前,增加特征图。

2. 当深度增加时,特征的数量或层的宽度也会系统的增加

3. 在每一层增加宽度以增加在下一层之前的特征组合

4. 如果可能,假设5x5和7x7的过滤器可以用多个3x3分解,则只使用3x3卷积。

5. 初始化模块还可以通过在执行初始计算时提供pooling来减小数据的大小。

Inception仍然使用pooling层加上softmax作为最终分类器。

--未完待续

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LeNet5
  • The gap
  • Dan Ciresan Net
  • AlexNet
  • Overfeat
  • VGG
  • Network-in-network
  • GoogLeNet and Inception
  • Bottleneck layer
  • Inception V3 (and V2)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档