跳转至

卷积神经网络

980 个字 预计阅读时间 4 分钟

整体结构

全连接 fully-connected 神经网络:相邻层的所有神经元之间都有连接

image-20260310135006982

这里用 affine 层实现的全连接,可以这么表示。然后 affine 层后面跟着 ReLU 激活函数层。最后是 softmax 输出。

image-20260310135013039

CNN 新增了 Convolution 层和 Pooling 层,连接顺序就是 卷积 -ReLU- 池化(有时池化层会被省略。不过需要注意的是,靠近输出的层用的还是之前的 Affine-ReLU 组合以及 Softmax 输出。

卷积层

全连接层的弊端

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

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

卷积运算

卷积运算类似于图像处理中的滤波器 ( 有时也叫核 )

卷积的运算规则如下:对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算。然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。

image-20260310135937135

在全连接的神经网络中,除了权重参数,还存在偏置,偏置通常只有 1 个,这个值会被加到应用了滤波器的所有元素上。

image-20260310140209934

填充

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

幅度为 1 的填充 : 指用幅度为 1 像素的 0 填充周围

image-20260310140458093

由于卷积运算会缩小空间,因此通过填充来实现在保持空间大小不变的情况下将数据传给下一层

步幅

应用滤波器的位置间隔称为步幅(stride。之前的例子中步幅都是 1,如果将步幅设为 2,则如下图所示,应用滤波器的窗口的间隔变为 2 个元素。

image-20260310141109400

对输入大小为 (7, 7) 的数据,以步幅 2 应用了滤波器。通过将步幅设为 2,输出大小变为 (3, 3)

输入、步幅、填充、输出,这几个数据的关系是什么呢?

假设输入大小为 \((H,W)\),滤波器大小为 \((FH,FW)\),输出大小事 \((OH,OW)\),填充是 \(P\),步幅是 \(S\),那么输出可以表示为

\[ OH=\frac{H+2P-FH}{S}+1\\ OW=\frac{W+2P-FW}{S}+1 \]

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

输入大小:(7, 7);填充:0;步幅:2;滤波器大小:(3, 3)

输入大小:(28, 31);填充:2;步幅:3;滤波器大小:(5, 5)

3 维卷积运算

通道方向上有多个特征图时,会按通道 进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出

image-20260310143004719

输入数据和滤波器的通道数要设为相同的值

池化层

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

image-20260310144805049

Max 池化”是获取最大值的运算,除了 Max 池化之外,还有 Average 池化等。Average 池化则是计算目标区域的平均值。

在图像识别领域,主要使用 Max 池化。

池化的特征

  • 没有要学习的参数:只取值,不多算
  • 通道数不发生变化:按通道独立进行计算
  • 对微小的位置变化具有鲁棒性(健壮:数据的微小变差,池化结果没变