原文地址:卷积神经网络基础总结
作者:王江源
一、卷积的基本操作过程
卷积也称为滤波,是一种线性的信号处理技术。
不同层之间的连接
(1)第一个问题: vanishing/exploding gradients(即梯度消失或爆炸):这就导致训练难以收敛。但是随着 normalized initialization and BN(Batch Normalization)的提出,解决了梯度消失或爆炸问题。
(2)第二个问题:网络越深,训练误差和测试误差越大。在收敛问题解决后,又一个问题暴露出来:随着网络深度的增加,系统精度得到饱和之后,迅速的下滑。让人意外的是这个性能下降不是过拟合导致的。对一个合适深度的模型加入额外的层数导致训练误差变大。如下图所示,可通过Deep Residual Learning 框架来解决这种因为深度增加而导致准确性下降问题。
二、卷积神经网络的卷积层结构
单层动态演示:
output = W*input + b
卷积层的输入(不考虑Batch):3维张量H1×W1×D1,其中H、W为图像的高度和宽度,D1为图像的深度(如RGB通道,简单理解为图像的张数)
卷积核(kernal)的个数:K,通常为2的n次方
每个卷积核的维度大小:F,(真正的维度是F×F×D1)
卷积的步长:S,指的是卷积核每次滑动的距离
输入图像边缘的Padding: P
偏置的维度:等于卷积核的个数K
卷积层的输出:3维张量H2×W2×D2。
他们之间的关系如下:
(1)输出特征图像的个数等于卷积核的个数:D2 = K
(2)输出图像的宽度:W2 = (W1 - F + 2P)/S + 1
(2)输出图像的高度:H2 = (H1 - F + 2P)/S + 1
一个输出特征图共享一个卷积核参数和偏置。
可训练参数的个数:(F×F×D1 + 1)×K
四、Pooling(池化/降采样)过程
Pooling层一般用于降维,将一个k×k的区域内取平均或取最大值,作为这一个小区域内的特征,传递到下一层。传统的Pooling层是不重叠的,使Pooling层重叠可以降低错误率,而且对防止过拟合有一定的效果。
通常取2×2或3×3 Pooling, 该过程没有可训练的参数。
五、深度神经网络
1、深度革命中遇到的问题:
随着CNN网络的发展,尤其的VGG、GoogLeNet等网络的提出,大家发现网络的层数是一个关键因素,貌似越深的网络效果越好。但是随着网络层数的增加,问题也随之而来。
2、深度卷积网络的演变