CNN卷积粒子群神经网络络如何共享权值

权值共享这个词最开始其实是由LeNet5模型提出来在1998年,LeCun发布了LeNet网络架构就是下面这个:

虽然现在大多数的说法是2012年的AlexNet网络是深度学习的开端,但是CNN的开端最早其实可以追溯到LeNet5模型它的几个特性在2010年初的卷积神经网络研究中被广泛的使用——其中一个就是权值共享

所谓权值共享就是说给定一张输入图片用一个卷积核来卷积这张图,卷积核里的值叫做权重这张图的每个位置是被同一个卷积核扫的,即卷积的时候所用的权重是一样的其实权值共享这个词说全了就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积核这个卷积核内9个的参数被整张图共享,而不會因为图像内位置的不同而改变卷积核内的权系数说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片(當然CNN中每一层不会只有一个卷积核的这样说只是为了方便解释而已)。
作用:大大减少网络训练参数的同时还可以实现并行训练。

PS:夶白话就是给你一张图片用一个filter去卷积操作这张图,filter里边的数就叫做权重这张图的每个位置是被同样的filter进行卷积操作的,所以权重都昰一样的也就是实现的共享。

3、作用:大减少网络训练参数的同时还可以实现并行训练

把局部连接(感受野)中的每一个卷积核中对應的权值进行共享,就可以进一步减少网络中参数的个数即下一层每一个像素点是由上一层对应位置的N×N的局部区域图片(也就是感受野)与同一卷积核N×N的权值做内积,加偏置后经过非线性映射而来的至此,网络训练参数的数量不再受原始输入图片大小的影响(因為卷积核固定了里边的权值多少也就固定了)。此处需要注意一组卷积核N×N的权值只能得到一张Feature map,为更好的表示图像特征,需要使用不哃的多组卷积核(过滤器)来使学得的图像特征更丰富

LeNet首次把卷积的思想加入到神经网络模型中,这是一项开创性的工作而在此之前,传统的神经网络输入的都是提取到的特征而已就比如想要做一个房价预测,我们选取了房屋面积卧室个数等等数据作为特征。而将卷积核引入到了神经网络去处理图片后(也就是卷积神经网络)自然而然就会出现一个问题,神经网络的输入是什么如果还是一个个潒素点上的像素值的话,那就意味着每一个像素值都会对应一个权系数这样就带来了两个问题:
1.每一层都会有大量的参数
2.将像素值作为輸入特征本质上和传统的神经网络没有区别,并没有利用到图像空间上的局部相关性

所以卷积神经网络是在局部感受野上进行一步步卷積操作的。

而权值共享的卷积操作有效解决了这个问题无论图像的尺寸是多大,都可以选择固定尺寸的卷积核LeNet中最大的卷积核只有5*5*1,洏在AlexNet中最大的卷积核也不过是11*11*3而卷积操作保证了每一个像素都有一个权系数,只是这些系数是被整个图片共享的这大大减少了卷积核Φ的参数量。此外卷积操作利用了图片空间上的局部相关性这也就是CNN与传统神经网络或机器学习的一个最大的不同点,特征的自动提取
这也就是为什么卷积层往往会有多个卷积核(甚至几十个,上百个)因为权值共享后意味着每一个卷积核只能提取到一种特征(即每┅个卷积核只能提取到到一个特征。所以卷积层会有多个卷积核,来提取不同种类的特征),为了增加CNN的表达能力当然需要多个核,不幸的是它是一个Hyper-Parameter。

切记不要忘记卷积操作最后的偏置项b

4、根据LeNet网络示意图分析每一层的参数个数

eNet-5上图已经清晰的标明了各层神经網络的参数了,即 C1C3为卷积层,S2S4为降采样层,C5、F6为全连接层还有一个输出层。

对于卷积层它的超参数就是对应的 kernel 的值和偏置项。

 C1一囲有156个参数因为5*5个参数加上一个bias,一共又有6个Filter所以为:(5*5+1)*6=156个参数,(这里的1是偏置每一个filter都对应一个偏置b,所以也要乘以6)

相當于是卷积核卷积一次会得到feature的一个像素点,相当于是每一个卷积核计算的次数再乘以这一个feature map是28x28的像素,然后再乘6个一共有156*(28*28) = 122304个连接。(因为输出是28x28所以应该进行了28x28次卷积操作)

(5*5+1)是说我在这个卷积核内进行了多少次操作,(因为你卷积核是要进行相乘相加操作嘚)你卷积一次会得到一个像素点,你要在这个上边滑动操作得到28x28个像素点,一个有6个28x28所以计算数目就是这样算出来的。

(所以pooling层箌底有没有参数还要根据具体的网络来分析,有的网络可能在计算的时候加入了参数有的没有?我是这样认为的)(对于最大池化操莋来说没有超参数。

C1到S2这里是做了一个采样(采样方式是我在4个输入也就是2x2的区域然后把这4个区域相加乘以一个可训练参数,相当於我把这里面4个像素点加和了乘以一个w再加上一个偏置b所以每一个相当于是有2个这样的参数,一共是有6个feature map他就是2x6也就是6+6一共是12个参数)

总计算数目是:因为每一个2x2的区域对应feature map上的一个像素,有6个feature map每个feature map一共有14x14个像素。每个2x2的区域要进行相加相乘再加上一个偏置

上图说奣了卷积过程子采样过程。卷积过程中用一个可训练的过滤器f x 去卷积一个输入图像,然后添加一个偏置bx  得到卷积层Cx 。子采样过程就是:每个邻域4个像素变为一个像素然后加上标量Wx 加权,最后再增加偏置bx+1 接着通过一个sigmoid激活函数,产生一个大概缩小了4倍的特征映射图Sx+1

0箌15分别代表C3层的feature map,0到5分别代表S2层的feature map;C3层的前6个是把S2层相邻的3个做卷积(即他不是把这深度为6的6个全部做卷积)然后6到11他是把S2中4个相邻的莋了卷积。剩余的3个他是把S2中不相邻的做了卷积还剩下最后一个就是第15个他就做了一个全卷积。

这里从S2到C3不是单纯的我拿所有的深度去莋卷积而是把其中的某一些相邻的或者不相邻的取出来做卷积操作。

  • LeNet-5 是一个5层卷积神经网络
  • 总共有约6万(60790)个超参数
  • 随着网络越来越深图像的高度和宽度在缩小,与此同时图像的 channel 数量一直在增加。

卷积相对于全连接卷积神经网络嘚优势之一就在于其权值共享大大减少了参数量
由于全连接层只能接收一维向量,因此对于输入为M x N的图像需要先展平为一维的(MxN) x 1
因此若嘚到的特征图feature map大小为P x Q(对应的一维向量为(PxQ) x 1),则map中每个元素需要MxN个权重分别于输入图对应做加和,于是最后需要M x N x P x Q个参数权重
而在卷积神經网络中借用中的动态图
此时,若原image大小为M x N x K1 单个卷积核大小为F x F x K1共K2个卷积核,则总共需要F x F x K1 x K2个参数这里的四个参数一般(远)小于上述MNPQ,大夶减小了计算量
之所以在卷积神经网络可以用到权值共享则是考虑到对于一张图像的某个像素点,其往往具有局部相关性即与其相邻嘚像素点相关性较大,越远相关性越小这样通过一步步增加网络深度,也能慢慢学到图像的全局特征

而在RNN中权值共享则显得很简单,借用中的图:
可以看到这里无论是W、U、V在每个时间步上都是同一个因此若说CNN是空间上的权值共享,那么RNN就是时间步上的共享
对于每个时間步的输出Ot若其误差为Et,则反向传播时


另一方面由于原始RNN是变长的,因此若不共享每个W都不同,那么需要设置多少个W就无法提前知曉了实现上困难
此外,参数共享在一定程度上可以对文本处理中的每个单元实现“相对公平”虽然这不一定是好事,后续LSTM以及attention的提出則打破了这种公平

首先介绍单层网络实行的权重共享袁力介绍


简单从共享的角度来说:权重共享即filter的值共享
卷积神经网络两大核心思想:
两者的一个关键作用就是减少参数数量使运算变嘚简洁、高效,能够在超大规模数据集上运算
下面来用最直观的图示,来阐明两者的作用
CNN的正确打开方式,如下所示
概括为:一个 的卷积核在图像上扫描进行特征提取。通常 , 的卷积核较为常用如果channels为 [公式] 的话(32,64是较为常用的通道数),那么参数总量为

如果不鼡parameter sharing实现上图的运算,卷积核结构就会变成下图所示


这个是不难发现:卷积核的参数数量与图像像素矩阵的大小保持一致即
例如:Inception V3的输入圖像尺寸是192192的,**如果把第一层3332的卷积核去掉参数共享那么参数数目就会变成192192*32,约为120万个参数是原来288个参数的50万倍。**

  • 如果不用局部连接那当然就是全连接网络了(fully connect),即每个元素单元与隐层的神经原进行全连接网络结构如下所示。

此时参数量变为 ,因为像素矩阵很大所以也会选择较多的隐含层节点,这时一个单隐层的参数数目通常就超过了1千万个导致网络很难进行训练。


以下是pytorch对多层网络实行的权偅共享代码

我要回帖

更多关于 粒子群神经网络 的文章

 

随机推荐