卷积神经网络(CNN)基础

原创 2018年04月15日 22:46:16

CNN的基本结构

原文地址:https://www.jianshu.com/p/da0c4cc76a06

CNN分为几层

CNN一共有卷积层(CONV)、ReLU层(ReLU)、池化层(Pooling)、全连接层(FC(Full Connection))下面是各个层的详细解释。

卷积层(CONV)

卷积,尤其是图像的卷积,需要一个滤波器,用滤波器对整个图像进行遍历,我们假设有一个32*32*3的原始图像A,滤波器的尺寸为5*5*3,用w表示,滤波器中的数据就是CNN的参数的一部分,那么在使用滤波器w对A进行滤波的话,可以用下面的式子表示:



其中x为原始图像的5*5*3的一部分,b是偏置项置为1。在对A进行滤波之后,产生的是一个28*28*1的数据。那么假设我们存在6个滤波器,这六个滤波器之间彼此是独立的,也就是他们内部的数据是不同的且没有相关性的。可以理解为一个滤波器查找整幅图像的垂直边缘,一个查找水平边缘,一个查找红色,一个查找黑色这样。那么我就可以产生6个28*28*1的数据,将它们组合到一起就可以产生28*28*6的数据,这就是卷积层主要做的工作。

CNN可以看作一系列的卷积层和ReLU层对原始数据结构进行处理的神经网络,处理的过程可以用下面这幅图表示


特别要注意的是滤波器的深度一定要与上一层传来的数据的深度相同,就像上图的第二个卷积层在处理传来的28*28*6的数据时要使用5*5*6的滤波器.

步长stride

滤波器在图像上不断移动对图像滤波,自然存在步长的问题,在上面我们举的例子都是步长为1的情况,如果步长为3的话,32*32*3的图像经过5*5*3的滤波器卷积得到的大小是(32-5)/3+1=10,注:步长不能为2因为(32-5)/2+1=14.5是小数。

所以当图像大小是N,滤波器尺寸为F时,步长S,那么卷积后大小为(N-F)/S+1

关于控件尺寸的减小

我们从上面的图中可以看到图像的长和宽在逐渐的减小,在经过超过5层之后极可能只剩下1*1的空间尺度,这样是十分不好的,而且也不利于我们接下来的计算,所以我们想让卷积层处理完之后图像在空间尺度上大小不变,所以我们引入了pad the border的操作。pad其实就是在图像周围补0,扩大图像的尺寸,使得卷积后图像大小不变。在CNN中,主要存在4个超参数,滤波器个数K,滤波器大小F,pad大小P和步长S,其中P是整数,当P=1时,对原始数据的操作如图所示:


P=1的操作

那么在pad操作后卷积后的图像大小为:(N-F+2*P)/S+1
而要想让卷积层处理后图像空间尺度不变,P的值可以设为P=(F-1)/2

总结

卷积层输入W1*H1*D1大小的数据,输出W2*H2*D2的数据,此时的卷积层共有4个超参数:
K:滤波器个数
P:pad属性值
S:滤波器每次移动的步长
F:滤波器尺寸
此时输出的大小可以用输入和超参计算得到:
W2=(W1-F+2P)/S+1
H2=(H1-F+2P)/S+1
D2=D1

一些补充

1*1的滤波器也是有意义的,它在深度方向做卷积,例如1*1*64的滤波器对56*56*64的数据卷积得到56*56的数据

F通常是奇数,这样可以综合考虑上下左右四个方向的数据。

用神经元的角度看待卷积层

卷积层从神经元的角度看待可以有两个性质:参数共享和局域连接。对待一个滤波器,例如5*5*3的一个滤波器,对32*32*3的数据卷积得到28*28的数据,可以看作存在28*28个神经元,每个对原图像5*5*3的区域进行计算,这28*28个神经元由于使用同一个滤波器,所以参数相同,我们称这一特性为参数共享

针对不同的滤波器,我们可以看到他们会看到同一区域的图像,相当于在深度方向存在多个神经元,他们看着相同区域叫做局域连接

参数共享减少了参数的数量,防止了过拟合
局域连接为查找不同特征更丰富的表现图像提供了可能。
卷积就像是对原图像的另一种表达。

ReLU层

激活函数,对于每一个维度经过ReLU函数输出即可。不改变数据的空间尺度。

池化层

通过pad操作,输出图像在控件上并没有变化,但是深度发生了变化,越来越庞大的数据给计算带来了困难,也出现了冗余的特征,所以需要进行池化操作,池化不改变深度,只改变长宽,主要有最大值和均值两种方法,一般的池化滤波器大小F为2步长为2,对于最大值池化可以用下面的图像清晰的表示:


最大池化

总结

卷积层输入W1*H1*D1大小的数据,输出W2*H2*D2的数据,此时的卷积层共有2个超参数:
S:滤波器每次移动的步长
F:滤波器尺寸
此时输出的大小可以用输入和超参计算得到:
W2=(W1-F)/S+1
H2=(H1-F)/S+1
D2=D1

全连接层

将最后一层(CONV、ReLU或Pool)处理后的数据输入全连接层,对于W2*H2*D2数据,我们将其展成1*1*W2*H2*D2大小的数据,输入层共有W2*H2*D2个神经元,最后根据问题确定输出层的规模,输出层可以用softmax表示。也就是说,全连接层就是一个常见的BP神经网络。而这个网络也是参数最多的部分,是接下来想要去掉的部分。完整的神经网络可以用下面的图表示:

CNN结构:

[(CONV-ReLU)*N-POOL?]*M-(FC-RELU)*K,SoftMax

CNN趋势

1.更小的滤波器与更深的网络
2.只有CONV层而去掉池化与全链接

集中CNN网络(时间序)

LeNet-5(1998)

最早的CNN,用于识别邮编,结构为:
CONV-POOL-CONV-POOL-CONV-FC
滤波器大小5*5,步长为1,池化层2*2,步长为2

AlexNet(2012)

2012年由于GPU技术所限,原始AlexNet为两个GPU分开计算,这里介绍合起来的结构。

输入图像为227*227*3

具体结构为:
AlexNet
一些细节:

1.首次使用ReLU
2.使用Norm layers,现在已经抛弃,因为效果不大
3.数据经过预处理(例如大小变化,颜色变化等)
4.失活比率0.5
5.batch size 128
6.SGD Momentum 参数0.9(SGD和Momentum见我的其他文章)
7.学习速率 0.01,准确率不在提升时减少10倍,1-2次后达到收敛
8.L2权重减少0.0005
9.错误率15.4%

ZFNet(2013)

改进自AlexNet,主要改变:
1.CONV1的滤波器从11*11步长S=4改为7*7步长为2.
2.CONV3,4,5滤波器数量有384,384,256改为512,1024,512(滤波器数量为2的n次幂有利于计算机计算可以提高效率)
错误率:14.8%后继续改进至11.2%

VGGNet(2014)

当前最好的最易用的CNN网络,所有卷积层滤波器的大小均为3*3,步长为1,pad=1,池化层为2*2的最大值池化,S=2。

主要结构:
主要结构

主要参数来自全连接层,这也是想要去掉FC的原因。

具有高度的统一性和线性的组合,易于理解,十分方便有VGG-16,VGG-19等多种结构。
错误率7.3%

GoogleNet(2014)

完全移除FC层,参数只有500万,使用Inception模块(不太理解,有时间继续看)
准确率6.67%

ResNet残差神经网络

准确率3.6%
拥有极深的网络结构,且越深准确率越高。是传统CNN不具备的特点,传统CNN并非越深越准确。需要训练时间较长但是快于VGG


两者对比
相关细节

1.每个卷积层使用Batch Normalization
2.Xavier/2初始化
3.SGD+Momentum(0.9)
4.Learning rate:0.1,准确率不变减小10倍(因为Batch Normalization所以比AlexNet大)
5.mini-batch size 256
6.Weight decay of 0.00001
7.不适用失活(因为Batch Normalization)



作者:WZFish0408
链接:https://www.jianshu.com/p/da0c4cc76a06
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载——卷积神经网络(CNN)基础入门介绍

该篇写得很详细并且很清楚,转自:http://www.jeyzhang.com/cnn-learning-notes-1.html 概述 卷积神经网络(Convolutional Neur...
  • Chrls_Wang
  • Chrls_Wang
  • 2016-06-18 16:15:53
  • 11119

卷积神经网络(cnn)学习笔记1:入门

卷积神经网络        卷积神经网络(Convolutional Neural Network,CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的Imag...
  • bingningning
  • bingningning
  • 2016-08-30 20:03:36
  • 1661

深度学习笔记五:卷积神经网络CNN(基本理论)

卷积神经网络基本理论
  • xierhacker
  • xierhacker
  • 2016-12-29 15:49:56
  • 6508

CNN卷积神经网络新想法

     最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下。  其实卷积神经网络并不是一项新兴的算法,早在上世纪八十...
  • u013088062
  • u013088062
  • 2015-08-07 22:10:36
  • 9360

卷积神经网络(CNN)应用于自然语言处理(NLP)

说到CNN,大家自然想到图像处理。 说到NLP,大家自然想到LSTM,RNN。 但是,去年的斯坦福论文表明,CNN照样可以应用于NLP,并且效果可能更好。博主做了实验,爬取了各类新闻并对新闻进行分...
  • qq_21460525
  • qq_21460525
  • 2017-03-15 10:21:20
  • 1471

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点

《CNN基础知识点》From:Convolutional Neural Networks (LeNet)原文链接可以查看更多信息:http://blog.csdn.net/niuwei22007/ar...
  • niuwei22007
  • niuwei22007
  • 2015-08-10 15:59:10
  • 6200

卷积神经网络(Convolutional Neural Networks,简称CNN)

卷积神经网络(CNN)算是深度神经网的前身了,在手写数字识别上在90年代初就已经达到了商用的程度。先明确一点就是,Deep Learning是全部深度学习算法的总称,CNN是深度学习算法在图像处理领域...
  • Before1993
  • Before1993
  • 2016-04-25 08:39:40
  • 1961

CNN卷积神经网络入门

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09         ...
  • s151506879
  • s151506879
  • 2016-07-27 14:26:05
  • 1424

CNN 卷积神经网络结构

CNNcnn每一层会输出多个feature map, 每个Feature Map通过一种卷积滤波器提取输入的一种特征,每个feature map由多个神经元组成,假如某个feature map的sha...
  • zhongkeli
  • zhongkeli
  • 2016-07-07 22:02:27
  • 17976

卷积神经网络CNN学习笔记 pdf

  • 2016年11月07日 19:16
  • 3.95MB
  • 下载
收藏助手
不良信息举报
您举报文章:卷积神经网络(CNN)基础
举报原因:
原因补充:

(最多只允许输入30个字)