理解卷积神经网络(Convolutional Neural Networks, CNN)

1 对于卷积的粗浅理解

数学角度:

\int_{-\infty}^{\infty} f(\tau) g(x-\tau) \mathrm{d} \tau(1)

公式(1)所示的积分被称为卷积。判断一个积分是不是卷积,其核心在于将两个函数的自变量相加后,看其积分变量是否能够被消去,若可以被消去,那就是卷积。

物理角度:卷积就是瞬时行为导致的持续性后果之总和。

应用角度:如果需要求解一个输入不稳定而输出稳定的系统之存量,则可以使用卷积。

无论是数学、物理角度角度也好,还是应用角度也罢,对于我们理解卷积似乎没有太大的帮助——数学公式晦涩难懂,物理角度抽象如镜花水月,应用角度飘渺如海市蜃楼。

通俗角度:

图1

上图存在两个函数,其中f(t)表示一个人的进食量,t表示进食时间点;其中g(t)为进食t小时后该食物的剩余率(百分数),t表示进食后所经过的时间(两个函数中的t含义不同)。此外,g(t)与f(t)相互独立。

若要求在x时间点进食某物后,t时间点时肚子里该实物的剩余量应该怎么办呢?很简单,只需要求得x时间点的进食量,再将该进食量乘以t-x小时后的食物剩余率即可得到。

x时间点的食物进食量看f(t)函数,代入即可得f(x)

t-x小时后的食物剩余率看g(t)函数,代入即可得g(t-x)

将两式相乘,即可得在x时间点进食某事物后,t时间点时肚子里该实物剩余的量f(x)g(t-x)

更进一步地,现在不仅仅要求x时刻进食后,t-x小时后剩余的该食物量,而是假设从0时刻到t时刻这个时间段都在进食的情况下,在t时刻肚子里剩余的所有食物量。

显然,与刚才的问题相比,x不再是一个固定的时刻,而是整个0-t这一段时间。这个也很简单,所谓的时间段,不过是相当于对无穷多个时刻进行了叠加求和而已。我们把0-t这一段时间划分为无穷多个时间点,每一个时间点都能够产生一个f(x)与g(x)之间的对应关系(如上图中黑线所示);将它们分别相乘,然后再做一个无穷级数求和(此无穷项级数求和也就是积分了):

\int_{0}^{t} f(x) g(t-x) d x

我们注意到,这就是一个卷积计算公式 。此外,图1表示f(t)与g(t)对应关系的连线并不美观,下面将g(t)的图像左右翻转一波便可得到以下对应关系:

图2

这样看起来就顺眼多了。另外补充一点,以上的翻转操作似乎就是卷积名称的由来。

2 对卷积操作的再理解

看完第1节后,相信我们都对卷积有了一个较为粗浅的理解,但是如果你认为你已经掌握了卷积,乃至于已经掌握了卷积神经网络中的卷积含义的话,那你可真是太天真了。

确实,第1节通过一种通俗易懂的方法对卷积的内涵进行了阐释,但如果仅仅局限于此的话,我们将跳不出卷积的应用圈子,也就更不用谈理解卷积神经网络。下面从更高维度对卷积进行再理解:

现在依然有f(t)与g(t)两个函数,但是不再表示进食与剩余食物:f(t)现在表示在t发生了一个事件,该事件的发生受到之前发生的很多事件的影响,而g(t)则是表示这种影响大小是随着t变化的函数(此时的t不一定表示时间,而是表示一种变化)。那么整个卷积计算就是为了评估t时刻前发生的所有事件对于t这一刻所发生事件的影响。

3 图像的卷积操作

基于第2节对于卷积的理解,我们知道了所谓的卷积不过是评估t时刻前(或者t空间范围内)发生的所有事件对于t时刻所发生事件的影响。从这点出发,再来谈谈对于图像卷积操作的内涵。

众所周知,图像都是由像素阵列组成。对于图像的卷积操作就是构造一个方阵(通常为3*3,5*5等奇数尺寸,这个方阵也叫卷积核、过滤器)对构成图像的像素阵列进行对应元素相乘再相加,完成一个位置的运算后再按照从左到右、从上到下的顺序移动一格卷积核(或者卷积核不动,移动图像的像素阵列)。具体的计算流程如下图3所示:

图3.1 

 图3.2

现在我们对于图像具体的卷积操作已经明白,但这背后的含义是什么呢?或者说图像的卷积操作与第2节我们所理解的卷积操作两者之间有什么联系呢?后者是评估t前发生的所有事件对于t所发生事件的影响,前者其实也是为了评估影响,只不过是为了评估一个像素点周围一圈像素(也就是3*3方阵,不过既然可以是一圈像素对其的影响,当然也就能够是两圈,三圈,也即为5*5,7*7的方阵)对于该像素产生的影响而已。

 下面从数学上解释对于图像的卷积操作:

与之前的卷积公式不同,像素是一个一个的离散点,因此需要将积分符号改为求和符号(此时的卷积从数学上应该叫做卷和):

f(x, y) * g(m, n)=\sum f(x, y) \cdot g(m-x, n-y)(2)

对于一个3*3的卷积核,将上式展开为:

图4

下面以f(x-1,y-1)对f(x,y)的影响为例讲解如何得到g(t1,t2)。类比第1节消化食物的例子,使用x-(x-1)=1以及y-(y-1)=1便可得到g(1,1),其余的计算同理可得。

注意到图4中左边代表像素的阵列与右边代表卷积核的阵列之间的对应关系并不美观,同第1节一样,进行一个翻转工作。因此,图4左边的并不是卷积核,而是将其旋转180度之后得到的才是图3所示的卷积核(这个旋转步骤在卷积神经网络中通常不会体现出来,因此也有的数学工作者认为卷积神经网络中的“卷积”二字名不副实,应该叫做“互相关”):

 图5

4 对于卷积神经网络(CNN)中卷积的理解

在计算机看来,所有的图片均是一个个像素阵列,如果两张图片的像素阵列不同,那就会判定为不同的图像。但是显然,如果让人来判断的话,下图中的8张图片分别代表x和o(事实上也确实如此),但是计算机就很难做出如此判断。虽然说从全局来看,他们的像素点分布不同,但是如果考察某个局部的话,他们的像素点分布还是有很大的相似性的。如果能够根据这种局部特征的相似性来进行图像识别,其识别准确性一定能够有所提高。

图6 

那么局部特征识别如何与卷积产生联系的呢? 要回答这个问题,还需要先来看卷积核的作用。

我们可以认为卷积核是当前像素点对于周围像素点的一个试探。随着卷积核选择的不同,可以实现对图片中某些位置上像素点的过滤,以挑出图片的某些特征(将卷积核中的某些位置设置为0即可,此卷积核也被称为过滤器)或者衡量周围像素点对于当前像素点的影响(比如可以利用卷积核实现对像素点取平均的操作,此卷积核也被称为平滑卷积核,池化层也会用到)。图7给出了一个使用卷积核实现图片过滤的例子;图8给出了一个使用平滑卷积核对像素点取平均的实例。

 图7

 图8

总的来看,卷积核有两个作用,其一是提取特征,其二是衡量影响。卷积的第一个作用正是我们利用局部特征识别图像所需要的,这也就是卷积神经网络中卷积的内涵。

5 参考资料

[1] 从“卷积”、到“图像卷积操作”、再到“卷积神经网络”,“卷积”意义的3次改变_哔哩哔哩_bilibili

[2] CNN笔记:通俗理解卷积神经网络_结构之法 算法之道-CSDN博客_卷积神经网络通俗理解

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syphomn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值