首页 🌀深度学习

一、直接卷积运算的缺点

如果图像是$n\times n$,过滤器是$f \times f$,那么卷积运算的结果是$(n-f+1)\times (n-f+1)$

  • 随着一次次卷积运算的进行,图像会越来越小,如果神经网络深度很大,图像可能变得特别特别小。
  • 覆盖边缘和角落像素点的过滤器远远比中间像素点少,导致丢失图像边缘位置的信息。

二、Padding

在这里插入图片描述

在原图像的四周填充一层像素点(习惯填充0),使得$n\times n\to (n+2)\times (n+2)$,通过$3\times 3$过滤器的卷积后得到$n\times n$结果,故图像尺寸没有改变。
一般地,设填充数量为$p$,在上面这个例子中,周围填充一层,所以$p=1.$
最终卷积结果为:$(n+2p-f+1)\times(n+2p-f+1)$

三、两种卷积方式

  • Valid 卷积不填充
    $(n\times n) * (f\times f)\to (n-f+1) * (n-f+1)$

$p=0$

  • Same 卷积后保存大小不变
    $[(n+2p)\times(n+2p)]*(f\times f)\to (n+2p-f+1)\times (n+2p-f+1)$

$n+2p-f+1=n\Rightarrow p=(f-1)/2$

在这里插入图片描述
卷积神经网络中,过滤器的$f$通常是奇数(odd)大小的,例如$3\times 3,5\times5$。为什么会有这样一个结论呢?主要的原因如下:

  • 如果$f$是偶数,计算$p=(f-1)/2$不会是整数,所以需要非对称填充
  • 如果$f$是奇数,过滤器存在一个中心像素点,便于指出过滤器的位置。

四、卷积步长Stride

在这里插入图片描述
在前面的基础上,设步长stride为$s$,在上图的例子中$s=2$
一般地,
$$[(n+2p)\times(n+2p)]*(f\times f)\to (\frac{n+2p-f}{s}+1)\times (\frac{n+2p-f}{s}+1)$$

如果除以步长$s$那里不能取整怎么办?通常做法是【向下取整】,即:
$$\lfloor {\frac{n+2p-f}{s}+1} \rfloor \times \lfloor {\frac{n+2p-f}{s}+1} \rfloor$$

向下取整的意义很简单,如果过滤器移动时超出了图像范围,那就不要做这一步卷积操作。

五、互相关(cross-correlation)和卷积(convolution)的技术说明

说这个问题之前,先说明什么是卷积:

  • 官方定义:通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分
  • 卷:翻转
  • 积:积分(离散则求和)
  • 数学中,卷积的过程归纳为:翻转、移位、相乘、相加
  • CNN中,卷积的过程归纳为:移位、相乘、相加

在数学教材中,卷积的定义有一些不同之处,过滤器需要先中心对称(翻转180°),再进行卷积运算。
前面学习的卷积操作实际上是互相关而不是卷积,有同学评论得很形象呀:“没有卷,只有积。”
但是!在深度学习的文献中,我们不需要翻转过滤器,图像和过滤器逐个元素相乘求和的过程称作卷积操作,不需要多纠结这个问题。



文章评论

目录