卷积神经网络(一)

来源:互联网 发布:热力系统计算软件 编辑:程序博客网 时间:2024/06/11 20:05

卷积神经网络是一种特殊的多层神经网络,它是deep learning中的一个算法,现在主要应用在图像处理领域中。

既然说它是deep learning中的一个算法,那么就需要有大量的数据来支持,作为一个深度的神经网络,参数动辄百万以上,如果样本数过小很容易造成overfitting。卷积神经网络可以自主的从原始的输入图像中学习到有用的(利于分类的,利于预测的) features,这样可以将它应用到很多不知道如何设计feature的场景中。


在普通的全连接神经网络下,假设我们现在有一个100*100的图像作为输入。在计算中我们将这个图像表示为一个100*100 = 10000大小的向量(数组),假如我们只有一个hidden layer,并且神经元数量与input layer数目相同,那么光从input layer到hidden layer就有10000*10000 = 10^8个参数。正如前面所说,要想训练出一个好的网络,这么多的参数很容易造成overfitting,减少参数势在必行,于是卷积神经网络应运而生。

卷积神经网络有两大杀器:

1. Local Connectivity Pattern(局部感知野)                 

所谓局部感知野,如果不好理解野字,你可以理解成局部感知模块或者把整个局部感知野理解成,稀疏连接网络。

2. Shared Weights(权值共享)


这两种方法都为减少神经网络参数做出了大贡献,下面我会详细介绍这两种方法。


一:局部感知网络

计算机神经网络科学的初衷就是模拟人的神经网络,期望通过构建的计算机神经网络可以让计算机像人类一样思考,那么自然,对传统神经网络的改进也少不了进一步对人类神经网络的模仿。我们对外界事物的观察都是由局部到全局,但并不是每个像素每个像素的去认知,而是一块区域一块区域的去认识,通过这些区域得到局部信息,然后对这些局部信息的汇总,然后才得到整个全局的信息。

1. 这个也就是说,图像的像素之间也是局部的相关性较强,距离较远的像素之间相关性较弱。

2. 另一个启发来自于人类的视觉接收系统,视觉神经元只是接收局部信息的,也就是说每个神经元并不对全局进行响应。

                          

左上图全连接神经网络,为了表示清晰,我只画了隐含层一个神经元与输入层的连接关系,其他的隐含层神经元都是与其一样的连接方式。而上面中间的和右边的是局部连接网络,一个是overlapping的局部感知,一个是无overlapping的局部感知。我假设每个隐含层神经元只感知两个输入的神经元构建而成的。也可以是3个,4个等等,这个参数后面我将详细叙说,主要和图片大小有一定的关系,和你想获得的feature的大小也有关系。现在为了更方便的画图与描述做了这个假设。

好,我们现在回到开始的那个假设,有一个100*100大小的图像作为输入,假如每个隐含层神经元只与其中10*10 = 100个像素相连在无overlapping的局部感知情况下,现在只需要(10000/(10*10) ) * (10*10) = 100*100 = 10^4个参数。

二:权值共享

虽然我们已经大幅的减小的参数的数目,但对于一个庞大的神经网络里,这样数量级的参数还是太大了,我们需要进一步减少参数。

在刚刚构建的局部感知神经网络结构中,假设隐含层的所有神经元对应的100个像素这样的所有连接的权值都相同,那么就相当于只需要10*10 = 100个参数,简而言之就是隐含层不同的神经元拥有相同的权重。如果你还没有理解,那么下面两幅图应该就能很好的说明何为共享权值了。(不同颜色代表不同的权重,相同的颜色代表权重相同)

                                              

到这儿你应该已经知道什么是权值共享了,那么你可能要问了,我们这么做的理由是什么?

前面我们有说过深度学习可以自主的从原始图片中获得有用的feature。卷积神经网络中权值共享这个操作,可以看做是一种与位置无关的特征提取方法。也就是可以对原始的输入图像应用一个相同的特征。“这其中隐含的原理是:图像一部分的统计特性与其他部分是一样的。” 这个权值共享的操作其实就是将一个卷积核(滤波器)在图像上做卷积的过程,这个卷积核就是去筛选特征的。(绿色是原始图像,黄色是卷积核,红色是得到的是特征我们称之为卷积特征)

一个卷积核只能提取图像中一个特征,这肯定是不完全的,我们怎么办呢??下一篇我们将会继续讨论它。


Created by 苑鹏掣

这里写图片描述