卷积神经网络是含有卷积层的神经网络。
最常见的二维卷积层,它含有高和宽两个空间维度,常用来处理图像数据。
严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算。在卷积层中,输入张量和核张量通过互相关运算产生输出张量。
在二维卷积层中,一个二维输入数组和一个二维核数组通过互相关运算输出一个二维数组。
卷积核窗口(又称卷积窗口)的形状取决于卷积核的高和宽。
在二维互相关运算中,卷积窗口从输入张量的左上角开始,从左到右、从上到下滑动。 当卷积窗口滑动到新一个位置时,包含在该窗口中的部分张量与卷积核张量进行按元素相乘,得到的张量再求和得到一个单一的标量值,由此我们得出了这一位置的输出张量值。
二维卷积层对输入和卷积核权重进行互相关运算,并加上一个标量偏置来得到输出。 所以,卷积层的模型参数包括了卷积核权重和标量偏差。在训练模型的时候,通常我们先对卷积核随机初始化,然后不断迭代卷积核和偏差。
检测图像中物体边缘,即找到像素变化的位置。卷积层可通过重复使用卷积核有效地表征局部空间。
使用物体边缘检测中的输入数据x和输出数据y来学习我们构造的核数组k。我们首先构造一个卷积层,将其卷积核初始化成随机数组。接下来在每一次迭代中,我们使用平方误差来比较y和卷积层的输出,然后计算梯度来更新权重。
为了得到卷积运算的输出,我们只需将核数组左右翻转并上下翻转,再与输入数组做互相关运算。可见,卷积运算核互相关运算虽然类似,但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。
二维卷积层输出的二维数组可以看作输入在空间维度(宽和高)上某一级的表征,也叫特征图。
影响元素x的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做x的感受野。
小结:
· 二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。
· 我们可以设计一个卷积核来检测图像的边缘。
· 我们可以从数据中学习卷积核的参数。
学习卷积核时,无论用严格卷积运算或互相关运算,卷积层的输出不会受太大影响。
· 当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络。
卷积层的输出形状由输入形状和卷积核窗口形状决定。下面介绍卷积层的两个超参数,填充和步幅。它们可以对给定形状的输入华人卷积核改变输出形状。
填充(padding):在输入图像的边界(高和宽的两侧)填充元素(通常填充元素是0)。
卷积神经网络中卷积核的高度和宽度通常为奇数,例如1、3、5或7。 选择奇数的好处是,保持空间维度的同时,我们可以在顶部和底部填充相同数量的行,在左侧和右侧填充相同数量的列。
此外,使用奇数的核大小和填充大小也提供了书写上的便利。对于任何二维张量X,当满足: 1. 卷积核的大小是奇数; 2. 所有边的填充行数和列数相同; 3. 输出与输入具有相同高度和宽度 则可以得出:输出Y[i, j]是通过以输入X[i, j]为中心,与卷积核进行互相关计算得到的。
在计算互相关时,卷积窗口从输入张量的左上角开始,向下、向右滑动。 在前面的例子中,我们默认每次滑动一个元素。 但是,有时候为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素。
小结:
· 填充可以增加输出的高度和宽度。这常用来使输出与输入具有相同的高和宽。
· 步幅可以减小输出的高和宽,例如输出的高和宽仅为输入的高和宽的(是一个大于的整数)。
· 填充和步幅可用于有效地调整数据的维度。
当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有3×h×w的形状。我们将这个大小为的轴称为3通道(channel)维度。下面我们将更深入地研究具有多输入和多输出通道的卷积核。
当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算。
假设输入的通道数为ci,那么卷积核的输入通道数也需要为ci。如果卷积核的窗口形状是kh×kw,那么当ci=1时,我们可以把卷积核看作形状为kh×kw的二维张量。
然而,当ci>1时,我们卷积核的每个输入通道将包含形状为kh×kw的张量。将这些张量ci连结在一起可以得到形状为ci×kh×kw的卷积核。由于输入和卷积核都有ci个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将ci的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。
因为使用了最小窗口,1×1卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。 其实1×1卷积的唯一计算发生在通道上。
小结:
· 多输入多输出通道可以用来扩展卷积层的模型。
· 当以每像素为基础应用时,卷积层相当于全连接层。
· 1×1卷积层通常用于调整网络层的通道数量和控制模型复杂性。
与卷积层一样,汇聚层也可以改变输出形状。和以前一样,我们可以通过填充和步幅以获得所需的输出形状。
在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。
小结:
· 对于给定输入元素,最大汇聚层会输出该窗口内的最大值,平均汇聚层会输出该窗口内的平均值。
· 汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
· 我们可以指定汇聚层的填充和步幅。
· 使用最大汇聚层以及大于1的步幅,可减少空间维度(如高度和宽度)。
· 汇聚层的输出通道数与输入通道数相同。