码迷,mamicode.com
首页 > 其他好文 > 详细

CNN中减少网络的参数的三个思想

时间:2017-09-24 00:29:58      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:http   生物学   sha   www   区域   href   图像   cal   综合   

CNN中减少网络的参数的三个思想:

1) 局部连接(Local Connectivity)

2) 权值共享(Shared Weights)

3) 池化(Pooling)

局部连接

  局部连接是相对于全连接来说的。全连接示意图如下:

技术分享

  比如说,输入图像为1000*1000大小,即输入层有1000*1000=10^6维,若隐含层与输入层的数目一样,也有10^6个,则输入层到隐含层的全连接参数个数为10^6 * 10^6=10^12,数目非常之大,基本很难训练。

  一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。如下图所示:左图为全连接,右图为局部连接。

技术分享

       在上右图中,假如每个神经元只和10*10个像素值相连,那么权值数据为10^6*100=10^8个参数(在有padding=same,stride=1,即输出输出尺寸相同,相邻两个卷积核距离1个像素的情况下计算得到),减少为原来的千分之一。而那10*10个像素值对应的10*10个参数,其实就相当于卷积操作。

  注:感受野(receptive field),其大小等同于卷积核的大小(比如说5×5)。

权值共享

  通过局部连接处理后,神经元之间的连接个数已经有所减少。可是实际上并没有减少很多,参数数量还是很大。而权值共享就是来解决这个问题的,它能显著降低参数的数量。该如何理解权值共享呢?首先从生物学意义上来看,相邻神经元的活性相似,从而它们可以共享相同的连接权值。其次单从数据特征上来看,我们可以把每个卷积核当作一种特征提取方式,而这种方式与图像等数据的位置无关。这就意味着,对于同一个卷积核,它在一个区域提取到的特征,也能适用于于其他区域。

  在上面的局部连接中,每个神经元都对应100个参数,一共10^6个神经元,如果这10^6个神经元的100个参数都是相等的,那么参数数目就变为100了。由此可见,权值共享可以大大减少网络的参数。

  注:上面说明均是在一个卷积核的情况下。

 池化

  池化一般分为max pooling和average pooling。我们定义池化窗口的大小为sizeX,即下图中红色正方形的边长,定义两个相邻池化窗口的水平位移/竖直位移为stride。一般池化由于每一池化窗口都是不重复的,所以sizeX=stride。最大池化为取窗口中最大的那个值,平均池化为取窗口中所有数的平均值。

技术分享

       如上图所示,为最大池化,其中sizeX=stride=2。

       经过池化层之后,模型参数会减少很多。

 

参考文献:

https://yq.aliyun.com/articles/161164

http://www.cnblogs.com/zf-blog/p/6075286.html

一文读懂卷积神经网络CNN

CNN中减少网络的参数的三个思想

标签:http   生物学   sha   www   区域   href   图像   cal   综合   

原文地址:http://www.cnblogs.com/hejunlin1992/p/7583444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!