Understanding Convolutional Neural Network

Convolutional Neural Network 由两部分组成:convolution 和 neural network。想要深入了解CNN,我们首先需要了解什么事convolution,以及如何将convolution引入到neural network中。

Convolution

在数学上,convolution 定义为:

In mathematics (and, in particular, functional analysis) convolution is a mathematical operation on two functions (f and g) to produce a third function that expresses how the shape of one is modified by the other

卷积可以看作是两个函数 $f$ 和 $g$ 生成第三个函数的一种数学算子,表征函数(不动的)$f$ 与经过反转或者平移 $g$ 的乘积所生成的新函数围成的曲边梯形面积。上述文字的确很难理解,我们首先观察convolution的数学表达式:

简单来说,我们固定一个“不动”的函数$f$ , 我们想要知道如果另一个函数$g$“路过”这个$f$函数,这两个相互作用会发生什么奇怪的行为。真实的例子比如我们想从一段音频中,提取出一些对我们有用的音频信息。

onvolution_of_box_signal_with_itself

简单来说,就是让 $g$ “走过整”个 $f$ (用某种滤波函数遍历音频资料),看两者交叠地方的面积变化情况,不同的$g$ 作用在 $f$ 上会有不同的结果。某种程度上来说,我用不同的滤波函数 $g$ 可以从 $f$ 中提取不同方面的信息或特点。比如,上图所展示的就是用正方形 $g$ 来遍历 $f$,得到的是一个新的三角形卷积函数。如果我们用三角形,或者半圆形,那么我们得到的自然是不同的卷积函数。

接下来的问题可能是为何新的卷积函数是三角形的呢?而且为何是从”-1”这个点开始的呢?为回答上述问题,我们首先 从卷积的定义出发,卷积相当于两个函数相乘得到一个新的函数,但不是简单的 $f(3)g(2)$, 而是给定某个点,比如 $5$ , 看所有能够到达5的新函数($f(\tau)g(5-\tau)$)乘积加总,从而构成新函数在$5$的上面的值,即:$(fg)(5)=\int^{\infty}_{-\infty} f(\tau)g(5-\tau)d\tau $。如果上述解释还是过于抽象,那么下面扔球的小例子可能更有助于理解:

当我们扔一个球到地上的时候,球到地面的运动距离就是一个简单一维的运动情况。但假如我们固定让小球要运动$c$ 距离,但允许我们扔两次,并且第二次从第一次触碰地方开始扔。我们标记第一次运动落点的密度函数为$f(a)$,第二次落点的密度函数为$g(b)$。

robConv-fag

那么其两次加起来移动$c$ 距离可以有多种可能。因为如果固定$c=3$,那么 a 和 b 的选择可以是 $a=2,b=1; a=1,b=2; a=0,b=3; … $

robConv-OnePat

因此为了找到所有的可能,我们需要把其全部加总。所以,两次合起来小球移动距离$c$的密度函数应当表达为:

robConv-SumPath

上述讨论的是一维的情况,高维的情况遵循同样的原理,比如一个球落地时我们不仅考虑在一条直线上的运动,进一步,我们考虑在一个平面上的落点:

robConv-TwoDi

而计算convolution还是跟之前一样:

些许不同的地方在于现在 $a$ 和 $b$ 是向量形式, 即:

当我们加总后,从落点$a$出发,到最终$c$位置的密度函数的convolution,可以表示为:

robConv-Intermediat

那么不同位置的新函数可以表示为(第一个为较为稠密的新convolution,第二个为较为稀疏的新convolution):

robConv-Intermediate-Alig

robConv-Intermediate-Se

图像识别

convolution 一个主要应用领域就是图像识别。因为图像可以被简单看作二维函数(矩阵)(当然还有不同的色彩),而进行图像的各种变换就是利用可中过滤(filter or kernel)函数来对图像进行各种convolution处理。

iverTrain-ImageConvDiagra

例如,对图像进行虚化,我们可以通过平均kernel矩阵上面的像素(pixel)来做到,通过kernel 作用到原图像上,进而生成新图像,我们得到:

iverTrain-ImageConvDiagra

我们同样可以侦测图像的形状边缘,通过设定-1 和 1 在两个相邻像素(pixel)上并且其他位置设定为0,这构成来用来侦测边缘的过滤矩阵。

imp-Edg

Convolutional Neural Network

接下来的问题就是convolution如何跟convolutional neural network 联系上的?

现在考虑一个一维的convolutional layer, 输入$x_n$,输出$y_n$ ,$A$ 代表着neurons,而neuron在neural network可以被表示为:

权重系数$\omega_0, \omega_1, …, $ 描述了每个neuron如何与输入数据进行联系的。值得注意的是权重系数$\omega$是神经网络的核心,控制着每一层神经网络的表现。注意,当我们说每一层中若干个neurons一样,相当于这些neurons 的权重系数(矩阵)都相同。

用图像表示一般情况下的neural network 则是:

onv-9-Conv2-X

但在convolutional neural network 中, 有许多相同的neuron作用于不同的输入数据上,因此,许多相同的权重矩阵重复出现在不同的neuron上。

onv-9-Conv2-XY-

简单来说,正常的neural network中,权重矩阵用不同的权重系数连接不同的输入数据和输出位置。

但在convolutional layer 中,同样的权重重复出现在不同的位置,而且每一个neuron不是连接所有的输入数据,因此,其权重矩阵表现为:

当输入数据(向量)与该矩阵相乘时,就相当于被某个函数在进行convolution操作一样。