11、卷积神经网络:结构、卷积/汇集层

层、空间布局、层模式、层大小模式、AlexNet/ZFNet/VGGNet 案例研究、计算考虑

卷积神经网络 (CNNs / ConvNets)

卷积神经网络与前一章的神经网络非常相似:它们是由具有可学习的权值和偏置的神经元组成的。每个神经元接收一些输入,执行点积,跟随一个非线性计算(可选项)。整个网络仍然表示一个可微的得分函数:从一端的原始图像像素到另一个的分数。并且它们在最后(完全连接)层上仍然具有损失函数(例如SVM /Softmax),我们在之前章节开发的用于学习规则神经网络的所有技巧/技巧仍然适用。

那有什么不一样呢?ConvNet 架构明确地假设输入是图像,这允许我们将某些属性编码到体系结构中。从而,使得前向功能更有效地实现,并且极大地减少了网络中的参数量。

11.1 体系结构概述

回忆:规则的神经网络。正如我们在前一章看到的,神经网络接收一个输入(一个向量),并通过一系列隐藏层来转换它。每个隐藏层由一组神经元组成,其中每个神经元完全连接到前一层中的所有神经元,其中单个层中的神经元完全独立地运行,并且不共享任何连接。最后一个完全连接的层被称为“输出层”,在分类场景中,它代表类分数。

规则的神经网络不能很好地扩展到完整的图像。在CIFAR-10中,图像仅为大小为32×32×3的(32个宽、32个高、3个颜色通道),因此在规则的神经网络的第一隐藏层中的单个完全连接的神经元将具有32×32×3=3072的权重。这一数量似乎仍然是可控的,但显然这种完全连接的结构不会扩展到更大的图像。例如,正常大小的图像,例如,200×200×3,将导致具有200×200×3=120000权重的神经元。此外,我们几乎肯定希望有几个这样的神经元,所以参数会增加得很快!显然,这种完全连通性是浪费的,大量的参数会很快导致过度拟合。

三维容量的神经元。卷积神经网络利用了输入是由图像这一事实,以更合理的方式约束了体系结构。特别地,不同于规则的神经网络,卷积层具有3个维排列的神经元:宽度、高度、深度。(注意这里的单词深度指的是激活体积的第三个维度,而不是一个完整的神经网络的深度,它可以指网络中的层的总数。)例如,CIFAR-10中的输入图像是激活的输入量,并且体积具有维度32x32×3(分别为宽度、高度、深度)。正如我们将很快看到的,一个层中的神经元将只连接到它之前的层的一个小区域,而不是以完全连接的方式连接所有的神经元。此外,CIFAR-10的最终输出层的维度为1x1x10,因为在ConvNet架构的最后,我们将把整个图像缩减为沿depth维度排列的单个等级分数向量。这是可视化:

左:一个规则的三层神经网络。右:一个卷积神经网络,其神经元在三个维度排列(宽度,高度,深度),如在一个图层中被可视化那样。ConvNet 的每一层将3D输入体积转换成神经元激活的3D输出体积。在这个例子中,红色输入层代表图像,因此它的宽度和高度将是图像的尺寸,深度将为3(红色、绿色、蓝色通道)。


ConvNet 是由多层组成的。每一层都有一个简单的API:它将输入的3D体积转换成输出3D体积,并具有一些可能或可能不具有参数的可微函数。

11.2 构建卷积神经网络的层

如上所述,一个简单的ConvNet 是一层接一层的序列,网络中的每一层通过一个可微函数将一个体积的激活转换为另一个。我们使用三种主要类型的层来构建ConvNet 结构:卷积层汇集层全连接层(与规则神经网络中所述的一样)。我们将堆叠这些层以形成完整的ConvNet 体系结构。

示例架构:概述。我们将在下面介绍更多的细节,但是一个简单的CIFAR-10分类的ConvNet 可能的有架构是:输入- CONV -RELU -POOL -FC]:

  • 输入[32×32×3]将保持图像的原始像素值,在这种情况下,图像宽度为32,高度为32,并且具有三个颜色通道R、G、B
  • 卷积层中,神经元与输入层中的一个局部区域相连,每个神经元都计算自己与输入层相连的小区域与自己权重的点积。卷积层会计算所有神经元的输出。如果我们使用12个滤波器(也叫作核),得到的输出数据体的维度就是[32x32x12] 
  • RELU 层将会逐个元素地进行激活函数操作,例如使用以0为阈值的max(0,x)激活函数。该层对数据尺寸没有改变,还是[32x32x12]。
  • 汇聚层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸有可能变为[16x16x12]。
  • FC(即全连接)层将计算类得分,结果大小为[1x1x10],其中10个数字中的每一个对应于类得分,例如在10个类别的CIFAR-10中。全连接层与常规神经网络一样,顾名思义,这个层中的每个神经元都将连接到前一个卷中的所有神经元。

以这种方式,ConvNets 将原始图像逐层地从原始像素值转换为最终类分数。注意,一些层包含参数,有的层则没有。具体说来,CONV/FC层对输入执行变换操作的时候,不仅会用到激活函数,还会用到很多参数(神经元的突触权值和偏差)。另一方面,RELU/POOL层将实现固定的函数操作。CONV/FC层中的参数将以梯度下降的方式进行训练,从而使神经网络计算的类得分与每个图像的训练集中的标签一致。

小结:

  • ConvNet 架构在最简单的情况下是将图像转换为输出(例如保持类分数)的层列表
  • 其中有几种不同类型的层(例如CONV/FC/RELU/POOL是目前最流行的)
  • 每个层的输入是3D数据,然后使用一个可导的函数将其变换为3D的输出数据
  • 每个层可能有或可能没有参数(例如CONV/FC层有参数,RELU/POOL就没有)
  • 每个层可能有或可能没有额外的超参数(例如CONV/FC/POOL有,RELU 层没有)

一个卷积神经网络的激活输出例子。左边的输入层存有原始图像像素,右边的输出层存有类别分类评分。在处理流程中的每个激活数据体是铺成一列来展示的。因为对3D数据作图比较困难,我们就把每个数据体切成层,然后铺成一列显示。最后一层装的是针对不同类别的分类得分,这里只显示了得分最高的5个评分值和对应的类别。完整的网页演示在我们的课程主页。本例中的结构是一个小的VGG网络,VGG网络后面会有讨论


下面描述各个层和它们的超参数及连通性的细节。

11.2.1 卷积层

Conv 层是卷积网络的核心构建块,它承担了网络中大部分的计算量。

概述和直觉。首先讨论的是,在没有大脑和生物意义上的神经元之类的比喻下,CONV 层到底在计算什么。卷积层的参数由一些可学习的滤波器组成。每个滤波器在空间上(宽度和高度)都比较小,但是深度和输入数据一致。举例来说,卷积神经网络第一层的一个典型的滤波器的尺寸可以是5x5x3(宽高都是5像素,深度是3。因为图像为RGB颜色通道,所以有3的深度)。在前向传播的时候,让每个滤波器都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个滤波器和输入数据任一处的内积。当滤波器沿着输入数据的宽度和高度滑过后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处滤波器的反应。直观地来说,网络会让滤波器学习到当它看到某些类型的视觉特征时就激活,具体的视觉特征可能是某些方位上的边界,或者在第一层上某些颜色的斑点,甚至可以是网络更高层上的蜂巢状或者车轮状图案。在每个卷积层上,我们会有一整个集合的滤波器(比如12个),每个都会生成一个不同的二维激活图。将这些激活映射在深度方向上层叠起来就生成了输出数据。

以大脑做比喻:如果你喜欢用大脑和生物神经元来做比喻,那么输出的3D数据中的每个数据项可以被看做是神经元的一个输出,而该神经元只观察输入数据中的一小部分,并且和空间上左右两边的所有神经元共享参数(因为这些数字都是使用同一个滤波器得到的结果)。现在开始讨论神经元的连接,它们在空间中的排列,以及它们参数共享的模式。

局部连接:在处理图像这样的高维度输入时,让每个神经元都与前一层中的所有神经元进行全连接是不现实的。相反,我们让每个神经元只与输入数据的一个局部区域连接。该连接的空间大小叫做神经元的接收域,它的尺寸是一个超参数(其实就是滤波器的空间尺寸)。在深度方向上,这个连接的大小总是和输入量的深度相等。需要再次强调的是,我们对待空间维度(宽和高)与深度维度是不同的:连接在空间(宽高)上是局部的,但是在深度上总是和输入数据的深度一致。

例1。例如,假设输入卷大小为[32×32×3],(例如RGB CIFAR-10图像)。如果接收域(或滤波器大小)为5x5,那么Conv 层中的每个神经元将在输入卷中具有[5x5x3]区域的权重,总共为5×5×3=75权重(和1个偏置参数)。请注意,沿着深度轴的连通度必须是3,因为这是输入卷的深度。

例2。假设输入卷的大小[16x16x20]。然后使用3x3的接收域,Conv 层中的每个神经元现在总共有3×3×20=180个连接到输入卷。注意,同样地,连通性在空间中是局部的(例如3x3),但与输入的深度(20)一样。

    

:红色的示例输入体(例如,32×32×3 CIFAR-10图像),以及第一卷积层中的神经元的示例体积。卷积层中的每个神经元在空间上只连接到输入空间中的局部区域,但连接到全深度(即所有颜色通道)。注意,沿着深度有多个神经元(在这个例子中有5个),它们都在输入中的同一个区域——参见下面文本中的深度列的讨论。:神经网络章节中介绍的神经元保持不变,它们还是计算权重和输入的内积,然后进行非线性激活函数运算,只是它们的连接被限制在一个局部空间


空间布局。我们已经解释了Conv 层中每个神经元与输入体积的连接性,但是我们还没有讨论输出神经元中有多少神经元,或者它们如何排列。三个超参数控制输出量的大小:深度步幅零填充。我们接下来讨论:

  1. 首先,输出量的深度是一个超参数:它对应于我们想要使用的滤波器的数量,每个滤波器学习在输入中寻找不同的东西。比如,如果第一个卷积层的输入是原始图像,那么在深度维度上的不同神经元将可能被不同方向的边界,或者是颜色斑点激活。我们将这些
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值