神经网络:卷积神经网络

2017-09-12 18:52 浏览次数:

这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征。这个概括可能有点抽象,我尽量在下面描述细致一些,但如果要更深入了解整个过程的原理,需要去了解DeepLearning。

这篇文章会涉及到卷积的原理与图像特征提取的一般概念,并详细描述卷积神经网络的实现。但是由于精力有限,没有对人类视觉的分层以及机器学习等原理有进一步介绍,后面会在深度学习相关文章中展开描述。

二、卷积

卷积是分析数学中一种很重要的运算,其实是一个很简单的概念,但是很多做图像处理的人对这个概念都解释不清,为了简单起见,这里面我们只介绍离散形式的卷积,那么在图像上,对图像用一个卷积核进行卷积运算,实际上是一个滤波的过程。我们先看一下卷积的基本数学表示:

$$f(x,y)\circ w(x,y)=\sum_{s=-a}^a \sum_{t=-b}^b w(s,t)f(x-s,y-t)$$

其中$I=f(x,y)$是一个图像,$f(x,y)$是图像I上面$x$行$y$列上点的灰度值。而$w(x,y)$有太多名字叫了,滤波器、卷积核、响应函数等等,而$a$和$b$定义了卷积核即$w(x,y)$的大小。

从上面的式子中,可以很明显的看到,卷积实际上是提供了一个权重模板,这个模板在图像上滑动,并将中心依次与图像中每一个像素对齐,然后对这个模板覆盖的所有像素进行加权,并将结果作为这个卷积核在图像上该点的响应。所以从整个卷积运算我们可以看到以下几点:

1)卷积是一种线性运算

2)卷积核的大小,定义了图像中任何一点参与运算的邻域的大小。

3)卷积核上的权值大小说明了对应的邻域点对最后结果的贡献能力,权重越大,贡献能力越大。

4)卷积核沿着图像所有像素移动并计算响应,会得到一个和原图像等大图像。

5)在处理边缘上点时,卷积核会覆盖到图像外层没有定义的点,这时候有几种方法设定这些没有定义的点,可以用内层像素镜像复制,也可以全设置为0。

image

三、卷积特征层

其实图像特征提取在博客里的一些其他文章都有提过,这里我想说一下图像特征提取与卷积的关系。其实大部分的图像特征提取都依赖于卷积运算,比如显著的边缘特征就是用各种梯度卷积算子对图像进行滤波的结果。一个图像里目标特征主要体现在像素与周围像素之间形成的关系,这些邻域像素关系形成了线条、角点、轮廓等。而卷积运算正是这种用邻域点按一定权重去重新定义该点值的运算。

水平梯度的卷积算子:

image

竖直梯度的卷积算子:

image

根据深度学习关于人的视觉分层的理论,人的视觉对目标的辨识是分层的,低层会提取一些边缘特征,然后高一些层次进行形状或目标的认知,更高层的会分析一些运动和行为。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。

而深度学习就是通过这种分层的自动特征提取来达到目标分类,先构建一些基本的特征层,然后用这些基础特征去构建更高层的抽象,更精准的分类特征。

那整个卷积神经网络的结构也就很容易理解了,它在普通的多层神经网络的前面加了2层特征层,这两层特征层是通过权重可调整的卷积运算实现的。

四、卷积神经网络

在原来的多层神经网络结构中,每一层的所有结点会按照连续线的权重向前计算,成为下一层结点的输出。而每一条权重连结线都彼此不同,互不共享。每一个下一层结点的值与前一层所有结点都相关。

与普通多层神经网络不同的是,卷积神经网络里,有特征抽取层与降维层,这些层的结点连结是部分连接且,一幅特征图由一个卷积核生成,这一幅特征图上的所有结点共享这一组卷积核的参数。

这里我们设计一个5层的卷积神经网络,一个输入层,一个输出层,2个特征提取层,一个全连接的隐藏层。下面详细说明每一层的设计思路。

image