从全连接层到卷积
多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。但对于图片等数据,全连接层会导致参数过多。卷积神经网络(convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法。
不变性
不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
局部性
神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
多层感知机的限制
全连接层的输入和输出变为二维矩阵(含有高度和宽度)。全连接层的参数W变为4-D张量,即四维张量。假设𝑈包含偏置参数,我们可以将全连接层形式化地表示为:
隐藏层i,j位置的像素值Hi,j可以通过上述公式得到。
引入平移不变性
平移不变性。 这意味着检测对象在输入𝑋中的平移,应该仅导致隐藏表示𝐻中的平移。也就是说,𝑉和𝑈实际上不依赖于(𝑖,𝑗)的值,即[𝑉]𝑖,𝑗,𝑎,𝑏=[𝑉]𝑎,𝑏。并且𝑈是一个常数,比如𝑢。因此,我们可以简化𝐻定义为:
这就是卷积(convolution)。使用系数[𝑉]𝑎,𝑏对位置X(𝑖,𝑗)附近的像素X(𝑖+𝑎,𝑗+𝑏)进行加权得到[𝐻]𝑖,𝑗。 注意,[𝑉]𝑎,𝑏的系数比[𝑉]𝑖,𝑗,𝑎,𝑏少很多,因为前者不再依赖于图像中的位置。这就是显著的进步!
引入局部性
为了收集用来训练参数[𝐻]𝑖,𝑗的相关信息,我们不应偏离到距(𝑖,𝑗)很远的地方。这意味着在|𝑎|>Δ或|𝑏|>Δ的范围之外,我们可以设置[𝑉]𝑎,𝑏=0。因此,我们可以将[𝐻]𝑖,𝑗重写为:
可以理解为卷积核只在图像矩阵的一定范围内工作,超出范围后,隐藏层矩阵H[i,j]的值设为 𝑢。
总结
卷积是一个特殊的全连接层。
卷积神经网络是包含卷积层的一类特殊的神经网络。 在深度学习研究社区中,𝑉被称为卷积核(convolution kernel)或者滤波器(filter),亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。 当图像处理的局部区域很小时,卷积神经网络与多层感知机的训练差异可能是巨大的:以前,多层感知机可能需要数十亿个参数来表示网络中的一层,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。 参数大幅减少的代价是,我们的特征现在是平移不变的,并且当确定每个隐藏活性值时,每一层只包含局部的信息。
卷积层
一个简单的二维卷积层例子:
使用卷积核对输入逐行逐列进行扫描,对扫描到的数值做乘法再相加,得到输出层对应的数值。
二维卷积层
输入:X:h(高度)w(宽度)的矩阵,卷积核W:的矩阵,变差b:一个实数,输出Y:。卷积核W和偏置b是可学习的参数。
一维数据:文本、语言、时序序列。三维数据:视频、医学图像、气象地图。
卷积层总结
卷积层将输入和卷积核进行交叉相关(卷积运算),加上偏移b后得到输出。
卷积核W和偏移是可学习的参数。
卷积核的大小是超参数。
卷积层使参数不会随着输入的变大而变得过大。
填充和步幅
填充
若给定32x32的输入图像,应用5x5大小的卷积核。第一个卷积层输出大小为28x28(公式计算得出),第七个卷积层输出大小为4x4。更大的卷积核可以更快地减小输出大小。
问题:卷积核较大,但不想输出减小过快?
答:填充。在输入四周添加额外的行和列。
填充行和列,输出形状为:。通常取 。当为奇数,在上下两侧填充。当为偶数,在上下某一侧多填充一行即可。
步幅
步幅指行/列的滑动步长。
若输入大小较大,卷积核较小,则需要较多卷积层才能把输出降低到较小维度。如给定输入大小为224x224,卷积核大小为5x5时,需要44层才能将输出降低到4x4。这时便可增大步幅。
指定步幅后输出形状为:。步幅不能整除时向下取整。如果输入高度和宽度可以被步幅整除:。
步幅和填充总结
填充和步幅时卷积层的超参数。
填充在输出周围添加额外的行和列以控制输出形状的减少量。
步幅时每次滑动核窗口时的行和列的步长,可以成倍减少输出形状。
版权归原作者 Landy_Jay 所有, 如有侵权,请联系我们删除。