CNN中减少网络的参数的三个思想
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://zhuanlan.zhihu.com/p/25005808
CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?
以上几个不相关问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。如下图:低层次的直线/曲线等特征,组合成为不同的形状,最后得到汽车的表示。

CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。
局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。如下图:

上图中,如果每一个点的处理使用相同的Filter,则为全卷积,如果使用不同的Filter,则为Local-Conv。
参考文献:
https://yq.aliyun.com/articles/161164
http://www.cnblogs.com/zf-blog/p/6075286.html
一文读懂卷积神经网络CNN
CNN中减少网络的参数的三个思想的更多相关文章
- MXNet/Gluon 中网络和参数的存取方式
		
https://blog.csdn.net/caroline_wendy/article/details/80494120 Gluon是MXNet的高层封装,网络设计简单易用,与Keras类似.随着深 ...
 - HALCON初步:算子参数部分三个冒号的意义
		
HALCON中存在两类基本变量:图像变量(iconic data)和控制变量(control data),其中图像变量包括image, region和XLD contours,控制变量包括intege ...
 - 从 python 中 axis 参数直觉解释 到 CNN 中 BatchNorm 的工作方式(Keras代码示意)
		
1. python 中 axis 参数直觉解释 网络上的解释很多,有的还带图带箭头.但在高维下是画不出什么箭头的.这里阐述了 axis 参数最简洁的解释. 假设我们有矩阵a, 它的shape是(4, ...
 - 由浅入深:CNN中卷积层与转置卷积层的关系
		
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由forrestlin发表于云+社区专栏 导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷 ...
 - CNN中的局部连接(Sparse Connectivity)和权值共享
		
局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...
 - Neutron VxLAN + Linux Bridge 环境中的网络 MTU
		
1. 基础知识 1.1 MTU 一个网络接口的 MTU 是它一次所能传输的最大数据块的大小.任何超过MTU的数据块都会在传输前分成小的传输单元.MTU 有两个测量层次:网络层和链路层.比如,网络层 ...
 - CNN中的卷积核及TensorFlow中卷积的各种实现
		
声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...
 - CNN中的经典结构之AlexNet
		
AlexNet的基本结构 Alexnet是由5个卷积层和三个全连接层组成,一共8个权重层(池化层不是权重层因为其没有参数),其中ReLU激活函数作用在每个卷积层和全连接层上,在第一个卷积层和第二个卷积 ...
 - CNN中,1X1卷积核到底有什么作用呢?
		
CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...
 
随机推荐
- Java过滤器Filter使用详解
			
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的项目中有具体应用:https://github.com/ygj0930/Coupl ...
 - iOS开发-LayoutGuide(从top/bottom LayoutGuide到Safe Area)
			
iOS7 topLayoutGuide/bottomLayoutGuide 创建一个叫做LayoutGuideStudy的工程,我们打开看一下Main.storyboard: storyboard-t ...
 - Nginx+Tomcat动静分离及Nginx优化
			
目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能. 准备软件: 下载jdk ...
 - KMP(构建next数组)
			
字符串匹配算法KMP, 核心思想是尽可能利用已经匹配的结果, 跳过尽可能多的不需要匹配的情况 重点和难点都在next数组的建立上 1. KMP算法的next数组求解 以模式串 a b a c a b ...
 - 0x00-Kali Linux 系列入门篇
			
Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Li ...
 - 痛吻过YY寻找到真爱的三非渣本春招之路
			
写下这篇文章可能就不是大家乐于见闻的面经了,更多是深入一些面试细节. 前言 我猜拿到了BAT等一线互联网公司Offer的小伙伴或者那些老鸟看到这条标题的时候会不屑一顾,认为YY这种级别的公司是属于二线 ...
 - [bzoj1565][NOI2009]植物大战僵尸_网络流_拓扑排序
			
植物大战僵尸 bzoj1565 题目大意:给你一张网格图,上面种着一些植物.你从网格的最右侧开始进攻.每个植物可以对僵尸提供能量或者消耗僵尸的能量.每个植物可以保护一个特定网格内的植物,如果一个植物被 ...
 - 转载:解决微信OAuth2.0网页授权回调域名只能设置一个的问题
			
项目地址:https://github.com/HADB/GetWeixinCode 说明:微信项目很多,但是回调域名有限,经常使用,做个笔记. 解决微信OAuth2.0网页授权只能设置一个回调域名的 ...
 - swift 相关小随笔
			
关键词 typealias 对已经存在的类重命名 let 修饰不可变值 var 修饰可变的值 lazy 懒加载修饰符,用到的时候才会加载 convenience 原方法的备用方法,方法一致,但是 ...
 - 2018最新版本Sublime Text3注册码(仅供测试交流使用)
			
-– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...