什么是卷积神经网络?为什么它们很重要?
原文地址:http://www.hackcv.com/index.php/archives/104/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
卷积神经网络的四个基本操作:
1、卷积
2、非线性处理(Relu)
3、赤化或者亚采样
4、分类(全连接层)
一、先说卷积,卷积的主要目的是为了从输入图像中提取特征。卷积可以通过从输入的一小块数据中
学习到图像的特征,并且可以保留像素的空间关系。
在CNN术语中,3X3的矩阵叫做 滤波器(filter)或者核(kernel) 或者 特征检测器,
通过图像上滑动滤波器并且计算点乘得到的矩阵叫做 “卷积特征(Convolved feature)"
滤波器在原始输入图像上的作用是特征检测器。
在实践中CNN会在训练过程中学习到的这些滤波器的值,我们使用的滤波器越多,提取到的图像特征就越多,网络
所能在未知图像上识别的模式就越好。
特征图的大小由三个参数控制,我们需要在卷积前确定它们:
(1)深度:深度对应的是卷积操作所需要的滤波器的个数。
(2)步长:步长是我们在输入矩阵上滑动滤波器矩阵的像素数。当步长为1时,我们每次移动滤波器一个像素的位置。
当步长为二时,每次移动滤波器会跳动2个像素。步长越大,讲会得到更小的特征图。
(3)零填充,对应padding参数的设置吧。有时,在输入矩阵的边缘使用零值进行填充。这样我们可以对输入图像矩阵的边缘
进行滤波。零填充的一大好处是可以让我们控制特征图的大小。使用零填充的也叫翻卷机,不适用零填充的叫做
严格卷积。
二、非线性处理
这部分主要是激活函数了,relu函数,tanh函数,sigmoid函数
relu用的比价多,可以解决梯度消失的问题,但是讲BN的那篇论文说加了BN操作之后用sigmoid函数效果更好。
不过我自己试了mnist数据集的效果,还是relu更好些,不过BN加在激活函数之前确实是这样。
三、池化操作
池化操作,叫做亚采样或者下采样,降低了各个特征图的维度,但可以保持大部分重要的信心。
常用的池化操作包括:最大化,平均化,加和等。
池化可以控制特征的维度,见识网络中的参数和计算量,控制过拟合
池化可以使网络对输入图像的变化,冗余不敏感,微小的变化不会影响输出。
获得图像最大程度上的尺度不变性
除此之外,池化还是一个无限强的先验。
四、全连接层
卷积和池化层的输出表示了输入图像的高级特征,全连接层的目的是为了使用这些特征把输入图像基于训练数据进行分类。