积卷神经网络(Convolutional Neural Network,CNN):神经网络中的一种拓展
朴素的CNN和朴素的NN没有任何区别。
CNN主要思想:
局部连接
权值共享
CNN应用在特征提取领域
前向传播:
实现的层面上和NN是一样的,不同之处在于:
接收的输入形式不同
层与层之间的连接方式不同
NN将输出的图像拉直成一个列向量,合并后输入。
CNN将原始图像数据作为输入
前向传播算法图:
前向传播也是一个卷积的过程
NN和CNN的异同:
NN和CNN的主要结构是层;NN是一维的,CNN是高维的
NN处理的一般是线性的数据;CNN是直观上更合适处理结构性的数据
NN层结构间会有权值矩阵作为连接的桥梁;CNN没有层结构间的权值矩阵,只有层结构自身的局部视野。
NN层结构称为普通层;CNN层结构称为卷积层。
CNN存在层结构自身的局部视野,该局部视野会在前向传播算法中与层结构进行卷积运算得到结果,并将结果传给下一层。
卷积的常用解决方案:
1、将卷积不在变换成比较大规模的矩阵相乘
2、利用快速傅里叶变换(FFT)求解
Stride和Padding:
Stride(步长):描述局部视野在频道上的浏览速度
Padding(填充):保持输入和输出的频道形状一致,一般有填充0或者不填充
卷积网络可以很好地适应图片的平移不变性。共享权重和偏置被称为卷积核或者滤波器。
根据输入的滤波器,进行卷积:
图像分类中我们会卷积多次,也称为特征映射,下图卷积了3次,识别了3种特征:
共享权重和偏置的一个很大的优点是,大大减少了网络的参数数量。
一次卷积需要5x5=25个共享权重,加上一个共享偏置共26+1=26个参数。如果我们卷积了20次,那么共有20x26=520个参数。
全连接层(FC):
全连接层(FC),可能会出现在CNN中,一个比较特殊的结构。
FC和普通层相似,FC是连接卷积层和普通层的普通层。
FC将从卷积层得到的高维数据用列向量的方式铺平输出,利用激活函数进行一些非线性变换,将结果输出给FC后面的各个普通层结构的系统。
卷积层:自输入开始至FC终止的卷积块
普通层:自FC开始,至输出终止的NN块
卷积块 =特征提取器
NN块= 决策分类器
CNN中有卷积块和NN块的原因:
卷积块中卷积的基本单元是局部视野,而NN块可以将卷积块得到的局部视野做出相应的决策。
池化(Pooling):
池化层一般在卷积层之后使用,主要是简化从卷积层输出的信息。
池化层的每个单元概括了前一层的一个小区域
池化的本质:对局部信息的总结
池化能减少特征的维度,减少过拟合的出现。
常见池化:
极大池化(Max Pooling):输出接收到的所有输入中的最大值
平均池化(Average Pooling):输出接收到的所以输入的均值
池化的过程和卷积类似,局部视野对输入信息的转换
池化的Stride通常会比卷积的Stride要大,因为:
池化是对局部信息的总结,所以希望池化能够得到信息的某种压缩处理。
参考:
http://blog.csdn.net/login_sonata/article/details/77488383