经典网络解析
本文旨在解析前几年部分经典神经网络的实现结构,需要一些优化算法、全神经网络等储备知识,有不明白的可以向我提问。
以下介绍的神经网络大体相似,区别只在神经网络的步步优化方面,比如从大卷积核到多次小卷积核卷积、复杂特征卷积核提取增多等等。
AlexNet神经网络
AlexNet神经网络是神经网络逐渐从人们视野中淡化再到复出的一个转折点,它是2012年ImageNet视觉识别挑战赛的冠军模型
主体贡献
- 提出了一种卷积层加全连接层的卷积神经网络结构(让神经网络从人们视野中复出)
- 首次使用ReLU函数做为神经网络的激活函数(不会因为输入值的大小而输出接近0或1而断掉特征数值的传递)
- 首次提出Dropout正则化来控制过拟合(解决了神经网络参数多而容易过拟合的缺点)
- 使用加入动量的小批量梯度下降算法加速了训练过程的收敛(降低计算量,在优化参数上更快找到最低点)
- 使用数据增强策略极大地抑制了训练过程的过拟合(数据增强比如说图像反转、放大缩小等,增加样本量)
- 利用了GPU的并行计算能力,加速了网络的训练与推断(利用显卡优秀的矩阵计算能力进行实现模型)
神经网络模型
CONV1:96个11 * 11卷积核,步长为4,无零填充
MAX POOL1:窗口大小3 * 3,步长为2 降低图像尺寸,重叠有助于对抗过拟合
NORM1:现在不怎么用了,不做解释
CONV2:256个5 * 5卷积核,步长为1,使用零填充p=2
CONV3、CONV4:384个卷积核,步长为1,使用零填充p=1
CONV5:256个3 * 3卷积核,步长为1,使用零填充
卷积神经网络输出为6 6 256,以此输入到全连接神经网络中
- 用于提取图像特征的卷积层以及用于分类的全连接层是同时学习的
重要技巧:
- Dropout策略防止过拟合
- 使用加入动量的随机梯度下降算法,加速收敛
- 验证集损失不下降时,手动降低10倍的学习率
- 采用样本增强策略增加训练样本的数量,防止过拟合
- 集成多个模型,进一步提高精度
理解卷积层
卷积层就像各种偏导核一样,从多种偏导核中提取偏导核对应的特征,不同的是卷积层对应的是高级复杂的特征,甚至不能称之为特征而是结构。
ZFNet神经网络
ZFNet神经网络与AlexNet神经网络结构基本一致
主要改进:
- 将第一个卷积层的卷积核大小改为了7 * 7
- 将第二、第三个卷积层的卷积步长都设置为2
- 增加了第三、第四个卷积层的卷积核个数
改进理解:
- 减少第一层的卷积核大小,可以提取到更加细致的特征
- 步长设置为2,多次分批缓慢降低图像大小,不会损失过多信息
- 增加第三层第四层卷积核,后层的卷积核以及存在语义信息,个数增多能够学习更多复杂语义特征
VGG神经网络
主要以VGG16为例讲解
模型特征:
主要改进:
- 使用尺度更小的3 * 3卷积核串联来获取更大的感受野
- 放弃使用11 11和5 5这样的大尺寸卷积核
- 深度更深、非线性更强,网络参数也越少
- 去掉了AlexNet中的局部响应归一化层
改进优势:
- 以多个小卷积核多次卷积代替大卷积核一次卷积,二者的感受野相同但是非线性更强、深度更深且计算量少
- 池化操作后增加卷积核一倍,池化降低图像大小而卷积核个数有助于学习到更多特征,一增一减平衡识别精度、计算开销提升网络性能
GoogLeNet神经网络
创新改进:
- 提出了一种Inception结构,它能保留输入信号中的更多特征信息
- 去掉了AlexNet的前两个全连接层,并采用了平均池化,这一设计使得 GoogLeNet只有500万参数,比AlexNet少了12倍
- 在网络的中部引入了辅助分类器,克服了训练过程中的梯度消失问题
改进优势:
- 改变串行结构,串行因为结构后一卷积层只能接受前一卷积层的输出,无可避免会丢失信息,而并行结构分别以1 1卷积核、3 3卷积核、5 * 5卷积核和增强池化层为输入,同时兼顾各式卷积的特征结果提取特征。
- 标记的红框1 1卷积核作用只为减少运算量,以多个1 1卷积核代替直接使用图像,以卷积核个数维度代替图像大小值,可大量减少计算量,层数更深、 参数更少、 计算效率更高、非线性表达能力也更强
- 辅助分类器作用:避免激活函数梯度消失问题,使得梯度回传更好训练模型