CNN总结   CNN原理详解


1. 三个基本层:

① 卷积层:作为特征提取器。

输出的feature_map尺寸计算公式:(原图尺寸-卷积核尺寸)/步长 + 1

说明:这个尺寸是输入的单边长,1000*1000的尺寸就是1000

现原图size:1000*1000,卷积核尺寸10*10,步长10,则输出feature_map尺寸:

(1000 - 10)/10 +1 = 100

即输出的feature_map为100*100

② 池化层:压缩数据,减少内存消耗。

常用池化方法有两种:

    1)Maxpooling:取滑动窗口内最大的值。

    2)Averagepooling:取滑动窗口内所有值的平均值。

计算公式同上。

③激励层

把卷积层输出结果做非线性映射。常用激活函数为Relu函数,特点是收敛快,求梯度简单,首先试RELU,因为快,但要小心点。如果失效,请用Leaky ReLU或者Maxout。不要用sigmoid,计算量大并且容易梯度消失。

 2. Zero Padding:保证每次经过卷积或池化输出后图片的大小不变。一个Zero Padding即是补一圈。

若原始图片为4*4,则我们一般会选择尺寸为3*3的卷积核和1的zero padding,或者5*5的卷积核与2的zero padding,这样计算后,可以保留图片的原始尺寸。加入zero padding后的feature_map尺寸 =( width + 2 * padding_size

CNN filter计算公式 cnn算法公式_CNN filter计算公式

3. 怎么理解卷积层的深度和神经元个数?

1)卷积层深度为几,则对应的神经元(滤波器)个数就为几,得到几个feature_map,计算时需将该神经元对应的每个w矩阵中,对应位置的值相加求和再加偏置,得到feature_map中的一个值。

2)卷积核的通道数,与输入图片的通道数保持一致。

CNN filter计算公式 cnn算法公式_CNN filter计算公式_02

蓝色的矩阵(输入图像)对粉色的矩阵(filter)进行矩阵内积计算并将三个内积运算的结果与偏置值b相加(比如上面图的计算:2+(-2+1-2)+(1-2-2) + 1= 2 - 3 - 3 + 1 = -3),计算后的值就是绿框矩阵的一个元素。

4. 卷积神经网络之训练算法
  1. 同一般机器学习算法,先定义Loss function,衡量和实际结果之间差距。
  2. 找到最小化损失函数的W和b, CNN中用的算法是SGD(随机梯度下降)。

5. 卷积神经网络之优缺点
优点
  • 共享卷积核,对高维数据处理无压力
  • 无需手动选取特征,训练好权重,即得特征分类效果好
缺点
  • 需要调参,需要大样本量,训练最好要GPU
  • 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)

6. 边缘过渡不平滑应对之道:采样窗口彼此重叠。