深度学习入门之6--卷积神经网络1(理论讲解)

目录

1、架构

2、卷积层

2.1、优点

2.1.1、全连接存在的问题:

2.1.2、卷积的优点:

2.2、卷积运算

2.3、填充

2.4、步幅

2.5、三维卷积运算

2.6、结合方块思考

2.7、批处理

3、池化层

3.1、计算方式

3.2、特征


该文章是对《深度学习入门 基于Python的理论与实现》的总结,作者是[日]斋藤康毅

本片文章将讲述卷积神经网络(Convolutional Neural Network,CNN)。CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。

1、架构

CNN和前面介绍神经网络有很多相似的地方,不同的是CNN中新出现了卷积层(Convolution层)池化层(Pooling层)

首先了解一下全连接层:相邻层的所有神经元之间都有连接,在前面的文章中使用的是Affine层实现了全连接层如果使用这个Affine层,一个5层的全连接的神经网络就可以通过下图所示的网络结构来实现。

深度学习入门之6--卷积神经网络1(理论讲解)_第1张图片

那么如果使用CNN,则网络结构图如下:

深度学习入门之6--卷积神经网络1(理论讲解)_第2张图片

【注】由上图知,CNN中新增了Convolution层和Pooling层。CNN的层的连接顺序是“Convolution - ReLU -(Pooling)” (Pooling层有时会被省略)。这可以理解为之前的“Affi ne - ReLU”连接被替换成了“Convolution -ReLU -(Pooling)”连接。

另外,靠近输出的层中使用了之前的“Affi ne - ReLU”组合。此外,最后的输出层中使用了之前的“Affi ne -Softmax”组合。这些都是一般的CNN中比较常见的结构。

2、卷积层

CNN中出现了一些特有的术语,比如填充、步幅等。此外,各层中传递的数据是有形状的数据(比如,3维数据),这与之前的全连接网络不同。

2.1、优点

在前面使用的全连接层(Affine层),在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定。

2.1.1、全连接存在的问题:

数据的形状被忽视,比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。

对于3维形状的图像,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、RBG的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。

2.1.2、卷积的优点:

卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。

在CNN中,有时将卷积层的输入输出数据称为特征图(featuremap)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。

2.2、卷积运算

卷积层进行的处理就是卷积运算,卷积运算就相当于图像处理中的"滤波器运算",下面举例来说明。

深度学习入门之6--卷积神经网络1(理论讲解)_第3张图片

【注】表示卷积运算,

在这个例子中,输入数据是有高长方向的形状的数据,滤波器也一样,有高长方向上的维度。假设用(height, width)表示数据和滤波器的形状,则在本例中,输入大小是(4, 4),滤波器大小是(3, 3),输出大小是(2, 2)。另外,有的文献中也会用“”这个词来表示这里所说的“滤波器”。

下面来说明计算顺序,如下图

深度学习入门之6--卷积神经网络1(理论讲解)_第4张图片

【注】计算方法:对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。这里所说的窗口是指上图中灰色的3 × 3的部分。如上图所示,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。

在全连接的神经网络中,除了权重参数,还存在偏置。CNN中,滤波器的参数就对应之前的权重。并且,CNN中也存在偏置。如下图

深度学习入门之6--卷积神经网络1(理论讲解)_第5张图片

【注】偏置通常只有1个(1 × 1) (本例中,相对于应用了滤波器的4个数据,偏置只有1个),这个值会被加到应用了滤波器的所有元素上。

2.3、填充

在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充(padding),例如下图。

深度学习入门之6--卷积神经网络1(理论讲解)_第6张图片

【注】卷积运算的填充处理:向输入数据的周围填入0(图中用虚线表示填充,并省略了填充的内容“0”)

通过填充,大小为(4, 4)的输入数据变成了(6, 6)的形状。然后,应用大小为(3, 3)的滤波器,生成了大小为(4, 4)的输出数据。

使用填充原因:为了调整输出的大小。因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为1,导致无法再应用卷积运算。为了避免出现这样的情况,就要使用填充。

2.4、步幅

应用滤波器的位置间隔称为步幅(stride)。前面的例子中步幅都是1,如果将步幅设为2,如下图。

深度学习入门之6--卷积神经网络1(理论讲解)_第7张图片

【注】对输入大小为(7, 7)的数据,以步幅2应用了滤波器。通过将步幅设为2,输出大小变为(3, 3)。步幅可以指定应用滤波器
的间隔。综上,增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。

步幅的计算公式:假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S。则

深度学习入门之6--卷积神经网络1(理论讲解)_第8张图片

例:输入大小:(4, 4);填充:1;步幅:1;滤波器大小:(3,3)

深度学习入门之6--卷积神经网络1(理论讲解)_第9张图片

问题:对于上述的公式,当输出大小无法除尽时(结果是小数时),需要采取报错等对策。根据深度学习的框架的不同,当值无法除尽时,有时会向最接近的整数四舍五入,不进行报错而继续运行。

2.5、三维卷积运算

对于前面的卷积运算的例子都是以有高、长方向的2维形状为对象的,但是,图像是3维数据,除了高、长方向之外,还需要处理通道方向

通过下图来举例说明三维卷积运算:

深度学习入门之6--卷积神经网络1(理论讲解)_第10张图片

【注】由图可知,对于三通道的图像,在纵深方向(通道方向)上特征图增加了,通道方向上有多个特征图时,会按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出。

下图为计算过程

深度学习入门之6--卷积神经网络1(理论讲解)_第11张图片

【注】需要注意的是,在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值

2.6、结合方块思考

将数据和滤波器结合长方体的方块来考虑,3维数据的卷积运算会很容易理解。

例:通道数为C、高度为H、长度为W的数据的形状可以写成(C, H, W)。

       通道数为C、滤波器高度为FH(FilterHeight)、长度为FW(Filter Width)时,可以写成(C, FH, FW)。

深度学习入门之6--卷积神经网络1(理论讲解)_第12张图片

在上图中,数据输出是1张特征图。所谓1张特征图,换句话说,就是通道数为1的特征图。那么,如果要在通道方向上也拥有多个卷积运算的输出,该怎么做呢?为此,就需要用到多个滤波器(权重),见下图

深度学习入门之6--卷积神经网络1(理论讲解)_第13张图片

【注】上面还是一张图片,只是加了多次卷积运算

通过应用FN个滤波器,输出特征图也生成了FN个。如果将这FN个特征图汇集在一起,就得到了形状为(FN, OH, OW)的方块。将
这个方块传给下一层,就是CNN的处理流。

CNN也存在偏置,计算如下图。

深度学习入门之6--卷积神经网络1(理论讲解)_第14张图片

【注】对于1X1的偏置,不同形状的方块相加时,可以基于NumPy的广播功能轻松实现

2.7、批处理

神经网络的处理中进行了将输入数据打包的批处理。

例:对于网络间传递的4维数据,就是按(batch_num, channel, height, width)的顺序保存的数据,计算见下图

深度学习入门之6--卷积神经网络1(理论讲解)_第15张图片

3、池化层

3.1、计算方式

池化是缩小高、长方向上的空间的运算。如下图

深度学习入门之6--卷积神经网络1(理论讲解)_第16张图片

上图是按步幅2进行2 × 2的Max池化时的处理顺序。“Max池化”是获取最大值的运算,“2 × 2”表示目标区域的大小。如图所示,从2 × 2的区域中取出最大的元素。此外,这个例子中将步幅设为了2,所以2 × 2的窗口的移动间隔为2个元素。另外,一般来说,池化的窗口大小会和步幅设定成相同的值。比如,3 × 3的窗口的步幅会设为3,4 × 4的窗口的步幅会设为4等。

3.2、特征

1、没有要学习的参数

池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。

2、通道数不发生变化

经过池化运算,输入数据和输出数据的通道数不会发生变化。

例:计算式通道数是独立的

深度学习入门之6--卷积神经网络1(理论讲解)_第17张图片

3、对微小的位置变化具有鲁棒性(健壮)

输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。比如,3 × 3的池化的情况下,如下图所示,池化会吸收输入数据的偏差(根据数据的不同,结果有可能不一致)。

深度学习入门之6--卷积神经网络1(理论讲解)_第18张图片

 

你可能感兴趣的:(python,人工智能)