博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CNN中的局部连接(Sparse Connectivity)和权值共享
阅读量:7190 次
发布时间:2019-06-29

本文共 1119 字,大约阅读时间需要 3 分钟。

局部连接与权值共享

下图是一个很经典的图示,左边是全连接,右边是局部连接。

对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。

尽管减少了几个数量级,但参数数量依然较多。能不能再进一步减少呢?能!方法就是权值共享。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10 × 10的局部图像,因此有10 × 10个权值参数,将这10 × 10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这 10 × 10个权值参数(也就是卷积核(也称滤波器)的大小),如下图。

这大概就是CNN的一个神奇之处,尽管只有这么少的参数,依旧有出色的性能。但是,这样仅提取了图像的一种特征,如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像的不同映射下的特征,称之为Feature Map。如果有100个卷积核,最终的权值参数也仅为100 × 100 = 10^4个而已。另外,偏置参数也是共享的,同一种滤波器共享一个。

卷积神经网络的核心思想是:局部感受野(local field),权值共享以及时间或空间亚采样这三种思想结合起来,获得了某种程度的位移、尺度、形变不变性(?不够理解透彻?)。

网络结构

下图是一个经典的CNN结构,称为LeNet-5网络

可以看出,CNN中主要有两种类型的网络层,分别是卷积层池化/采样层(Pooling)。卷积层的作用是提取图像的各种特征;池化层的作用是对原始特征信号进行抽象,从而大幅度减少训练参数,另外还可以减轻模型过拟合的程度。

卷积层

卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。如下图所示。

下面的动图能够更好地解释卷积过程:

摘自:http://www.jeyzhang.com/cnn-learning-notes-1.html

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/8242061.html,如需转载请自行联系原作者

你可能感兴趣的文章
metabase docker-compose 运行说明
查看>>
C# ToShortDateString() ToString() 设置日期格式的区别
查看>>
HDU-1016 Prime Ring Problem DFS
查看>>
MOSS 2007 入门 : 站点定义和站点模板
查看>>
网页性能优化{雅虎[转载]}
查看>>
CentOS6.2下搭建LVS(DR)+Keepalived实现高性能高可用负载均衡
查看>>
强制旋转iPhone界面
查看>>
最近琢磨出了个测试数据的小技巧
查看>>
vector-list-deque(转)
查看>>
linux 设置时间 date命令
查看>>
键盘设备三星在Android上的改进对Developer的影响
查看>>
分区视图(转载)
查看>>
高性能MySql进化论(一):数据类型的优化_上
查看>>
算法起步之Kruskal算法
查看>>
昨天帮同学的学校写了首校歌
查看>>
Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)
查看>>
malloc、calloc、realloc三者的差别
查看>>
百度没出新算法之前这样的最好的的优化方案
查看>>
free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
查看>>
网易微专业大数据工程师
查看>>