卷积核

  • 在数字图像处理中,边缘检测常用一些33的算子做卷积运算,这类算子被称为过滤器*核
  • 卷积运算,就是进行元素乘积求和。例如矩阵区域L4W1-CNN 的原理 - 图1与垂直边缘检测的过滤器L4W1-CNN 的原理 - 图2相乘得L4W1-CNN 的原理 - 图3,求和等于 -5,-5就是结果。
  • 在深度学习中进行边缘检测,不一定要用研究出来的特定33算子,而是把这9个数字当成参数,用反向传播去*学习这9个参数
  • 如果我们有一个 n×n 的图像,用 f×f 的过滤器做卷积,那么输出的维度就是 (n−f+1)×(n−f+1)。这样的话会有两个缺点:

    • 第一个缺点是每次做卷积操作,你的图像就会缩小。
    • 第二个缺点,角落边缘的像素只被一个输出所使用,但是在中间的像素点会有许多3×3的区域与之重叠。所以边缘的像素点在输出中采用较少,意味着你丢了图像边缘位许多信息。
    • 为了解决这些问题,我们引入了填充padding。

      padding 填充

  • 在图像外围填充 p 圈像素,通常使用0来填充。卷积后输出大小为(n+2p−f+1) * (n+2p−f+1)。

    • 比如原始图像 66,卷积后变成 44。如果将图像填充 p=1 圈像素点,变成 88的图像,卷积后输出大小为 66。
    • L4W1-CNN 的原理 - 图4
  • Valid 卷积,意思是不填充。那么 n×n 的图像用 f×f 的过滤器卷积后,得到 (n−f+1)×(n−f+1) 维的输出。
  • Same 卷积,就是卷积后输出的大小与原始图像大小相同。用 n+2p−f+1=n 这个等式求解p,得到 p=(f−1)/2。所以当f是一个奇数的时候,选择相应的 p 就能得到和输入尺寸相同的输出。

    stride 步幅

  • 步长为2,7×7的矩阵用 3*3 的过滤器卷积后,得到3×3的输出。

    • image.png
  • 用f×f 的过滤器卷积一个n×n的图像,padding为p,stride 为s,那么输出大小L4W1-CNN 的原理 - 图6。如果商不是整数,向下取整。

    彩色图像的卷积

  • 与RBG三个通道相对应,过滤器也需要三层,每层对应一个通道。

image.png

  • 计算RBG图像的卷积,同样也是计算元素乘积求和,3个通道分别计算完卷积后得到的数字相加,就得到第一个位置的数字。滑动过滤器,计算下一个位置。
  • 如果我们想同时检测垂直边缘和水平边缘,或者其他特征,可以叠加多个过滤器,每个过滤器卷积后的输出也是堆叠在一起。输出大小的最后一个维度一般称为通道数,文献里也称为立方体的深度。

image.png

  • 我们总结一下维度,如果你有一个L4W1-CNN 的原理 - 图9的输入图像,这里的L4W1-CNN 的原理 - 图10是通道数目,然后卷积上L4W1-CNN 的原理 - 图11的过滤器,按照惯例,图像的通道数L4W1-CNN 的原理 - 图12和过滤器的L4W1-CNN 的原理 - 图13必须数值相同。过滤器可以有L4W1-CNN 的原理 - 图14个,然后你就得到了L4W1-CNN 的原理 - 图15,这个输出通常是下一层的输入。这里L4W1-CNN 的原理 - 图16其实就是下一层输入的通道数。换句话说,输出的通道数会等于你要检测的特征数(即过滤器个数)。

    单层卷积神经网络

  • 还记得前向传播怎么计算吗?L4W1-CNN 的原理 - 图17,执行非线性函数得到L4W1-CNN 的原理 - 图18,其中L4W1-CNN 的原理 - 图19是输入图像。卷积操作中的这些过滤器就是变量W^{[1]}。

  • 所以在一层卷积神经网络中,首先执行线性函数做卷积,再加上偏差;然后应用激活函数ReLU。这样就通过神经网络的一层把一个6×6×3的维度L4W1-CNN 的原理 - 图20演化为一个4×4×2维度的L4W1-CNN 的原理 - 图21
  • 计算参数量:假设你有10个过滤器,每个过滤器是3×3×3,那么这一层有多少个参数呢?我们来计算一下,每个过滤器有27个参数,再加上一个偏差b,28个参数。而现在我们有10个过滤器,所以共有28×10=280个参数。
  • 请注意一点,不论输入图片有多大,参数量始终都是280个。这就是卷积神经网络的一个特征,叫作“避免过拟合”。
  • 设计卷积神经网络时,要决定过滤器的大小、步幅、padding,以及使用多少个过滤器,确定这些超参数需要费工夫。
  • 只有卷积层的卷积网络示例,图片分类问题,判断是否是猫图:
    • 假设图片大小是39×39×3,第一层我们用一个3×3的过滤器来提取特征,L4W1-CNN 的原理 - 图22,有10个过滤器。 L4W1-CNN 的原理 - 图23 ,所以第一层激活值的维度是(37×37×10)。
    • 假设第二层我们采用的过滤器是5×5的矩阵,即L4W1-CNN 的原理 - 图24,步幅为2,即L4W1-CNN 的原理 - 图25padding为0,即L4W1-CNN 的原理 - 图26,且有20个过滤器,所以其输出结果为17×17×20。
    • 最后一个卷积层,假设过滤器还是5×5,步幅为2,即L4W1-CNN 的原理 - 图27,假设使用了40个过滤器,padding为0,最后结果为7×7×40。
    • 到此,我们从这张39×39×3的输入图像中提取了7×7×40=1960个特征。将其平滑处理,展开成有1960个单元的向量。为了预测输出结果,我们把这个长向量传入softmax回归函数,用 L4W1-CNN 的原理 - 图28 表示最终的预测输出。

image.png

Pooling 池化层

  • 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。池化类型有最大池化和平均池化。
  • 最大池化(max pooling),输出的每个元素都是其对应颜色区域中的最大元素值。f 和 s 是最大池化的超参数,但池化过程中没有需要学习的参数。一旦确定了 f 和 s,它就是一个固定运算,梯度下降不会改变它的值。
  • 举例1:假设我们使用 2×2 矩阵,步幅s是2,输出如下图
    • image.png
  • 举例二:f = 3,s = 1.
    • image.png
  • 最大池化的直观理解:只要在任何一个区域内提取到某个特征,它都会保留在最大化的池化输出里。如果没有这个特征,那么其中的最大值也还是很小。
  • 平均池化(average pooling),选取的是每个区域的平均值。f 和 s 也是超参数。
  • 目前来说,最大池化比平均池化更常用。但也有例外,就是深度很深的神经网络,你可以用平均池化来分解规模为7×7×1000的网络的表示层,在整个空间内求平均值,得到1×1×1000。
  • 池化的超参数包括过滤器大小 f 和步幅 s,常用的参数值为 f=2,s=2,应用频率非常高,其效果相当于高度和宽度缩减一半,也有使用f=3,s=2的情况。你也可以根据自己意愿增加表示padding等其他超级参数,但是很少这么做。

    卷积神经网络示例(仿LeNet-5)

  • 人们在计算神经网络有多少层时,通常只统计具有权重和参数的层。因为池化层没有权重和参数,只有一些超参数。本课程中,我们把CONV1POOL1共同作为一个卷积,并标记为Layer1

  • CNN的一种常见结构是,一个或多个卷积后面跟随一个池化层,然后一个或多个卷积层后面再跟一个池化层,然后是几个全连接层,最后是一个softmax

image.png

  • 计算一下示例神经网络中的激活值形状,激活值大小和参数数量
    • image.png
  • 此例中的卷积神经网络很典型,看上去它有很多超参数,关于如何选定这些参数,常规做法是尽量不要自己设置超参数,而是查看文献中别人采用了哪些超参数,选一个在别人任务中效果很好的架构。根据我的经验,找到整合基本构造模块最好方法就是大量阅读别人的案例。
  • 有几点要注意,第一,池化层和最大池化层没有参数;第二卷积层的参数相对较少,其实大部分参数都在全连接层。
  • 随着神经网络的加深,激活值尺寸会逐渐变小,如果激活值尺寸下降太快,也会影响神经网络性能。

    why CNN

  • 和只用全连接层相比,卷积层的两个主要优势在于参数共享稀疏连接。通过这两种机制可以减少参数,以便我们用更小的训练集来训练神经网络,从而预防过度拟合

  • 参数共享
    • 特征检测(如垂直边缘检测)如果适用于图片的某个区域,那么它也适用于图片的其他区域。
    • 你们也可能听过,卷积神经网络善于捕捉平移不变。通过观察可以发现,向右移动几个像素,图片中的猫依然清晰可见,这张图片依然具有非常相似的特征,应该属于同样的输出标记。
    • 实际上,我们用同一个过滤器生成各层中图片的所有像素值,希望网络通过自动学习变得更加健壮,以便更好地取得所期望的平移不变属性
  • 稀疏连接
    • 如下图所示,右边这个输出单元(元素0)是通过3×3的卷积计算得到的,仅与36个输入特征中的9个相连接,其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。
    • image.png