《动手学深度学习笔记》5-卷积神经网络
| 2022-5-12
0  |  阅读时长 0 分钟
日期
Apr 28, 2022
Tags
深度学习
pytorch

基本知识

卷积神经网络(convolutional neural network,CNN)

卷积神经网络是一类强大的、为处理图像数据而设计的神经网络。
  • 卷积神经网络需要的参数少于全连接架构的网络,而且卷积也很容易用GPU并行计算。
  • 卷积神经网络除了能够高效地采样从而获得精确的模型,还能够高效地计算。

全连接层

多层感知机(由全连接层构成)适合处理表格数据,但对于高维感知数据,这种缺少结构的网络可能会变得不实用。
当处理百万级像素的图片时,全连接层网络的输入维度很高,训练这样的模型几乎不可能实现,想要学习到良好的图像特征,巨量参数的拟合也需要收集大量的数据。
卷积神经网络是机器学习利用自然图像中一些已知结构的创造性方法。

不变性

图像的平移不变性使我们以相同的方式处理局部图像,而不在乎它的位置。
  • 空间不变性(spatial invariance):当想从图片中找到某个物体时,无论哪种方法找到这个物体,都应该和物体的位置无关
卷积神经网络正是将空间不变性的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示。
  • 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
    • 为隐藏表示,使用系数对位置附近的像素进行加权得到
  • 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
    • 训练参数的相关信息不应偏离很远,在的范围之外,我们可以设置,所以对进行了重写,该式子就是一个卷积层,而被称为卷积核
    • 局部性意味着计算相应的隐藏表示只需一小部分局部图像像素。

卷积核(convolution kernel)或者滤波器(filter)

可以简单地称之为该卷积层的权重,通常该权重是可学习的参数。
  • 高度和宽度分别为h和w的卷积核可以被称为h×w卷积或h×w卷积核。 我们也将带有h×w卷积核的卷积层称为h×w卷积层。
  • 卷积核是从数据中学习到的,因此无论这些层执行严格的卷积运算还是互相关运算,卷积层的输出都不会受到影响
  • 卷积的本质有效提取相邻像素间的相关特征

卷积层(convolutional layer)

卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出。
  • 在图像处理中,卷积层通常比全连接层需要更少的参数,但依旧获得高效用的模型。
  • 卷积神经网络是包含卷积层的一类特殊的神经网络

卷积层

因为使用了最小窗口,卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。
卷积层的位移计算发生在通道上,我们可以将 卷积层看作是在每个像素位置应用的全连接层,它通常用于调整网络层的通道数量和控制模型复杂性。

卷积网络与多层感知机的区别

多层感知机可能需要数十亿个参数来表示网络中的一层,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。
参数大幅减少的代价:
  • 现在的特征是平移不变的,当确定每个隐藏活性值时,每一层只包含局部的信息
  • 所有的权重学习都将依赖于归纳偏置。当这种偏置与现实相符时,能得到样本有效的模型,可以很好地泛化到未知数据中。 但当偏置与现实不符时,如图像不满足平移不变时,模型可能难以拟合训练数据。

通道

我们可以把隐藏表示想象为一系列具有二维张量的通道(channel)。 这些通道有时也被称为特征映射(feature maps),因为每个通道都向后续层提供一组空间化的学习特征。

互相关运算(cross-correlation)

即通常讲的卷积运算(两者略有不同),在卷积层中,输入张量和核张量通过互相关运算产生输出张量。
卷积核张量上的权重被称为元素。
notion image

应用:图像中目标的边缘检测

构造一个高度为1、宽度为2的卷积核K。当进行互相关运算时,如果水平相邻的两元素相同,则输出为零,否则输出为非零。
局限:这个卷积核K只可以检测垂直边缘,无法检测水平边缘。

感受野(receptive field)

在卷积神经网络中,对于某一层的任意元素,感受野是指在前向传播期间可能影响计算的所有元素(来自所有先前层)

形状

假设输入形状为,卷积核形状为,那么输出形状将是
卷积的输出形状取决于输入形状和卷积核的形状,填充和步幅可用于有效地调整数据的维度。

填充(padding)

卷积核的宽度和高度设置,经过多层卷积后,可能丢失原始图像边界的许多有用信息,填充是解决此问题最有效的方法。
notion image
添加行填充和列填充时,输出形状为
一般情况下设置,使输入和输出具有相同的高度和宽度。
  • 这样可以在构建网络时更容易地预测每个图层的输出形状。

卷积核的大小

卷积神经网络中卷积核的高度和宽度通常为奇数,例如1、3、5或7。
选择奇数的好处:
  • 保持空间维度的同时,我们可以在顶部和底部填充相同数量的行,在左侧和右侧填充相同数量的列。
  • 使用奇数的核大小和填充大小也提供了书写上的便利。对于任何二维张量X,当满足:
      1. 卷积核的大小是奇数;
      1. 所有边的填充行数和列数相同;
      1. 输出与输入具有相同高度和宽度
      则可以得出:输出Y[i, j]是通过以输入X[i, j]为中心,与卷积核进行互相关计算得到的。
填充的使用补充:
当卷积核的高度和宽度不同时,我们可以填充不同的高度和宽度,使输出和输入具有相同的高度和宽度

步幅(stride)

当原始的输入分辨率十分冗余时,步幅可以实现大幅降低图像的宽度和高度的效果。
卷积窗口在张量上滑动进行计算,为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素,每次滑动元素的数量被称为步幅。
notion image
垂直步幅为,水平步幅为时,输出形状为:
设置,输出形状将简化,更进一步,如果输入的高度和宽度可以被垂直和水平步幅整除,则输出形状将为
默认情况下,填充为0,步幅为1。在实践中,我们很少使用不一致的步幅或填充

多输入通道

当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算。
  • 输入的通道数为,卷积核的输入通道数也需要为
notion image
多输入通道互相关运算:可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将的结果相加)得到二维张量。

多输出通道

在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。
我们可以将每个通道看作是对不同特征的响应,每个通道不是独立学习的,而是为了共同使用而优化的。
  • 多输出通道并不仅是学习多个单通道的检测器。
总结:多输入多输出通道可以用来扩展卷积层的模型

技巧

 
Loading...
目录