图像中拥有丰富的结构,而这些结构可以被人类和机器学习模型使用。
卷积神经网络(convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法。
6.1.1 空间不变性
在机器学习中,空间不变性通常与卷积神经网络(CNN)相关联。
空间不变性包含平移不变性
平移不变性使得CNN在处理图像数据时非常有效,因为它们可以识别出图像中的目标,而不管这些目标位于图像的哪个位置。
卷积网络中,卷积层的权重被称为卷积核(convolution kernel)或者滤波器(filter),通常该权重是可学习的参数。
-
图像的平移不变性使我们以相同的方式处理局部图像,而不在乎它的位置。
-
局部性意味着计算相应的隐藏表示只需一小部分局部图像像素。
-
在图像处理中,卷积层通常比全连接层需要更少的参数,但依旧获得高效用的模型。
-
卷积神经网络(CNN)是一类特殊的神经网络,它可以包含多个卷积层。
-
多个输入和输出通道使模型在每个空间位置可以获取图像的多方面特征。
在卷积神经网络中,对于某一层的任意元素x,其感受野(receptive field)是指在前向传播期间可能影响x计算的所有元素(来自所有先前层)。
-
二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。
-
我们可以设计一个卷积核来检测图像的边缘。
-
我们可以从数据中学习卷积核的参数。
-
学习卷积核时,无论用严格卷积运算或互相关运算,卷积层的输出不会受太大影响。
-
当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络。
6.3 填充和步幅
填充可以增加输出的高度和宽度。这常用来使输出与输入具有相同的高和宽。
应用多层卷积时,我们常常丢失边缘像素
于我们通常使用小卷积核,因此对于任何单个卷积,我们可能只会丢失几个像素。 但随着我们应用许多连续卷积层,累积丢失的像素数就多了。 解决这个问题的简单方法即为填充(padding):在输入图像的边界填充元素(通常填充元素是0)。
需要设置ph=kh−1和pw=kw−1,使输入和输出具有相同的高度和宽度
假设kh是奇数,我们将在高度的两侧填充ph/2行。 如果kh是偶数,则一种可能性是在输入顶部填充⌈ph/2⌉行,在底部填充⌊ph/2⌋行。同理,我们填充宽度的两侧。
有时候为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素。
我们将每次滑动元素的数量称为步幅(stride)
6.4.3. 1×1 卷积层
卷积的本质是有效提取相邻像素间的相关特征
-
多输入多输出通道可以用来扩展卷积层的模型。
-
当以每像素为基础应用时,1×1卷积层相当于全连接层。
-
1×1卷积层通常用于调整网络层的通道数量和控制模型复杂性。
6.5. 汇聚层(pooling)
汇聚(pooling)层,它具有双重目的:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。
默认情况下,深度学习框架中的步幅与汇聚窗口的大小相同。
-
对于给定输入元素,最大汇聚层会输出该窗口内的最大值,平均汇聚层会输出该窗口内的平均值。
-
汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
-
我们可以指定汇聚层的填充和步幅。
-
使用最大汇聚层以及大于1的步幅,可减少空间维度(如高度和宽度)。
-
汇聚层的输出通道数与输入通道数相同。
-
卷积神经网络(CNN)是一类使用卷积层的网络。
-
在卷积神经网络中,我们组合使用卷积层、非线性激活函数和汇聚层。
-
为了构造高性能的卷积神经网络,我们通常对卷积层进行排列,逐渐降低其表示的空间分辨率,同时增加通道数。
-
在传统的卷积神经网络中,卷积块编码得到的表征在输出之前需由一个或多个全连接层进行处理。
-
LeNet是最早发布的卷积神经网络之一。