菜鸡学习CNN

我是一个东拼西凑的Vegetable Chicken,lalala……^-^

代牛--K.Fukushima 在 1980 年提出的新识别机【1】是卷积神经网络的第一个实现网络。随后,更多的科研工作者改进了该网络。卷积神经网络包括一维卷积神经网络、二维卷积神经网络以及三维卷积神经网络。一维卷积神经网络常应用于序列类的数据处理;二维卷积神经网络常应用于图像类文本的识别;三维卷积神经网络主要应用于医学图像以及视频类数据识别。卷积神经网络由卷积层、池化层以及全连接层组成,卷积层是卷积神经网络的核心,通过引入局部连接、参数共享等原理,使前馈神经网络的结构更加合理、计算更加高效。

CNN的公式:
菜鸡学习CNN

其中, w 为权重系数,即卷积核, b 为偏置, φ 为**函数


菜鸡学习CNN

一、卷积层(Convolutional layer)由若干个卷积核(卷积单位)组成,每个卷积核对图像做卷积运算(滑动窗口),把卷积核与对应的图像像素做乘积然后求和。最后每个卷积单位的参数都由反向传播算法(BP算法)优化得到

那么卷积层到底在干嘛呢?作用是啥呢?https://blog.csdn.net/qq_37591637/article/details/103457148

菜鸡学习CNN

A.卷积层的运算过程      如上图所示,原始输入数据为二维图像(Source pixel),让他的每个像素(除去外面一圈)和卷积核(Convolution kernel)分别做卷积运算(滑动窗口),每一次运算结果作为输出图像对应位置的像素值。

看起来有点像滤波哎,但是有点细微的差别。https://blog.csdn.net/ljhsxgz/article/details/90515467

a.滤波器通常是M*M的矩阵,对原图像进行离散卷积运算,滤波器的中心对应图像的像素并依次滑动。                                       为了保证滤波输出图像与原图像尺寸保持一致,处理之前会在原图像边界填充零。

b.卷积操作中的滤波器称为卷积核,在做卷积前翻转180°,再和原图像做乘积求和。  {先翻转再平移}                                             输出图像会发生尺度的变化,M_out = ( M - 2*padding ) / stride + 1, M_out表示输出图像宽度,padding表示填充边界的大小, stride是每次卷积核移动的步长。

那么那么那么???卷积层做了这么多,有什么用???????????呢??????

https://blog.csdn.net/m0_37407756/article/details/80904580

B.卷积层的意义     

卷积层提取的是局部特征,输入图像中的不同特征可以**不同的卷积核关于特征提取

由于CNN有会有多次卷积操作

前期卷积提取的是最初级或最原始的特征,然后每一次卷积操作都是对上一层的特征进行二次抽象

后期提取的特征就越抽象,也就越接近我们人眼能识别的东西。

 

 

二、池化层(Pooling layer)是用来降低数据尺寸的,使得计算更快,并且能控制训练过拟合

将特征切成几个区域,取其最大值(Max-Pooling)或者平均值(Mean-Pooling),得到新的维度较小的特征。常用最大值池化

池化层的作用是啥呢?这个名字真的好奇怪,费解555555555,但B乎有另一种叫法:汇合层(pooling)可能更好理解哦。。。

https://www.zhihu.com/question/36686900/answer/130890492
目的:保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

如果一个图像样本的特征维数减少,那么其参数w规模也随之减少,整个模型得以简化(模型泛化能力提高),可防止过拟合。

特性:不变性(invariance),这种不变性包括平移(translation),旋转(rotation),尺度(scale)

菜鸡学习CNN菜鸡学习CNN菜鸡学习CNN

上述三图分别表示平移、旋转、缩放变化经过多次max_pooling获得相同结果的示意图

依靠pooling的特性使平移、旋转、缩放无效,去除冗余,让本该一致的特征变成一致,仅保留主要的特征,最终达到降维目的

 

 

三、全连接层为神经网络中的普通神经元结构,其与前后两层的神经元全部成对连接,后面跟着分类层

全连接层(Full Connected layer)的作用是什么?

在卷积层中,我们提取出了所有的局部特征,全连接使用权值矩阵将前面所有的局部特征连接起来。可以理解为将feature map整合成一系列数值,值大,**特征 or 值小,不能**

**函数的作用是什么呢?——增加模型的非线性表达能力!

菜鸡学习CNN菜鸡学习CNN

红色的神经元表示该特征被找到了(**了)当喵的主要特征都被**时,网络便认为输入图像里面存在喵!!!

菜鸡学习CNN

如上图,无论喵在左上角还是右下角,喵的特征都存在;

优点:避免特征所在位置对分类带来的影响。

缺点:由于空间结构特性被忽略了,所以全连接层不适合用于 基于位置的识别任务,如segmentation。

 

CNN使用代牛--Werbos等人提出的误差反向传播算法【2】进行训练

正向传播 获得输出结果,与期望结果进行比较获得误差。

然后将误差反向传播,计算梯度下降,根据一定的策略(随机梯度下降 stochastic gradient descent、批量梯度下降 batch gradient descent、小批量梯度下降 mini-batch gradient descent)https://www.cnblogs.com/lliuye/p/9451903.html

来调整网络参数,直至训练迭代结束。

 

参考文献

[1]  Fukushima K,Murakami S,Matsushima J,et al.Vestibular
Responses and Branching of Interstitiospinal Neurons[J].Exp Brain Res,1980,40(2):131-145.
[2]  P.J.Werbos.Beyond Regression:New Tools for Prediction
and Analysis in the Behavioral Sciences[D].Cambridge:Harvard University,1975:89.