神经网络00

CNN

卷积神经网络的个人理解,不足之处还请指出!

神经网络并没有什么神奇之处,也算属于机器学习的算法之一,类似的传统的机器学习选法还有,贝叶斯,逻辑回归,决策树,svm。只不过神经网络的特殊架构与在图像领域的处理效果令其别具一格。

仔细研读之后,对于卷积神经网络,处理图片分类的任务来说,也是类似于其他的机器学习算法提取到一系列“特征向量”,然后基于“特征”对图片进行分类。

以CIFAR为例:

 

1、输入图片的格式:32x32x3。

 

2、卷积层

这里一个卷积核对全部图像操作就是所谓的参数共享。而不同于传统的,将原图像的所有像素映射到一个神经元,让后经过全连接层直接进行分类,(例如cs231n中讲到的直接使用L2范数计算图片与图片之间的距离进行分类)。

这里使用的卷积核是5*5*3,将原图上一块大小为——5*5深度为3的像素区域,映射到大小为1*1深度为1的像素(一个神经元节点,运算方式如上图),如果经过一个这样的卷积核运算,那么原图像就变成深度为1的大小28*28的数据。

但一般经过多个卷积核(k个)对原图像处理,那么就形成了深度为K的大小为28*28的数据,可以认为每个卷积核提取到原图片的不同的特征。

这里卷积核的初值是任意的,经过神经网络的训练,卷积核的值w才会确定,可将w理解成上面三层的感知机组成的网络中连接线上的权重,在神经网络中就是卷积核(矩阵)。

有关卷积后矩阵的大小的计算有公式:(32-5)/步长+1,如果这里步长为1的话,输出就是28,

例如7*7的原矩阵,经过卷积核大小为2*2,步长为1,运算之后输出为:6*6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以将红色区域想象成一辆火车,

首先站位2,之后路程还有5,

以步长为1速度运动,还有5步可走,加上自己本来有一步,所以输出为6;

有时为了保证卷积后输出的矩阵与原图片矩阵大小相同,则在原图片的周围填充0;

这样在整个神经网络中只有池化层才会缩小矩阵的大小。每个滤波器5*5=25个参数和一个bias参数,如果一共6个滤波器,那么这一层的运算需要训练的参数共(5*5+1)*6=156个。

3、RELU :还是一个激励层max(0,x) ,尺寸还是 ([32x32x12]),

如果说卷积的过程相当于多层感知机中的连线部分,那么这一步则是数据经过神经元的“函数运算/激活函数激活”输出的一步。加入非线性的映射函数是为了增加网络的非线性分类的能力。

4、池化层

 

上面可以知道在卷积层之后得到的结果还是挺多,而且由于滑动窗口的存在,很多信息也有重合,于是有了池化pooling 层,他是将卷积层得到的结果无重合的分来几部分,然后选择每一部分的最大值,或者平均值,或者2范数,或者其他你喜欢的值,我们以取最大值的max pool为例: 
5、 全连接层:

输入到全连阶层的矩阵一般深度很深大小却很小1*1,2*2,7*7,例如本例中512深度,一张图像经过神经网络,提取到这么多的特征,下面要使用全连接对“特征”分类,会先将其元算到1*1的大小,形成一个列限量的形式长度为深度。

 

 

图中倒数第三列就是链接层的输入数据,经过一系列的卷积池化激活运算之后,形成了7×7×512(深度),也就是有512张小“卡片”,这些卡片要像上面多层感知机一样通过“全连接”的方式链接到下一级4096个神经元上,各连接线上有权值w(矩阵形式,大小等于“卡片”),每个神经元上输入线有512个。

这最后三层fc可以转化为Conv 的:

1. 使用 F=7*7的权重矩阵运算,输出为 [1x1x4096]; 对应于连接上的权重运算

2. 使用F=1*1的过滤器,输出为 [1x1x4096]; 对应于神经元内激活函数的运算

3. 使用F=1*1的卷积层,输出为 [1x1x1000]。最后来个输出

 

参考:http://blog.csdn.net/bea_tree/article/details/51530165

http://blog.csdn.net/dcxhun3/article/details/46878999

http://scs.ryerson.ca/~aharley/(神经网络动态展示)

http://www.tuicool.com/articles/ny2MriJ  

 

 

posted @ 2017-04-22 20:07  kanuore  阅读(154)  评论(0)    收藏  举报