论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet

写在前面

论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:https://arxiv.org/abs/1606.02228 github地址:https://github.com/ducha-aiki/caffenet-benchmark

在这篇文章中,作者在ImageNet上做了大量实验,对比卷积神经网络架构中各项超参数选择的影响,对如何优化网络性能很有启发意义,对比实验包括激活函数(sigmoid、ReLU、ELU、maxout等等)、Batch Normalization (BN)池化方法与窗口大小(max、average、stochastic等)、学习率decay策略(step, square, square root, linear 等)、输入图像颜色空间与预处理、分类器设计、网络宽度、Batch size数据集大小数据集质量等等,具体见下图

实验所用的基础架构(Baseline)从CaffeNet修改而来,有以下几点不同:

  1. 输入图像resize为128(出于速度考虑)
  2. fc6和fc7神经元数量从4096减半为2048
  3. 网络使用LSUV进行初始化
  4. 移除了LRN层(对准确率无贡献,出于速度考虑移除)

所有性能比较均以基础架构为Baseline,实验中所有超参数调整也都是在Baseline上进行,Baseline accuracy为47.1%,Baseline网络结构如下

论文实验结论

论文通过控制变量的方式进行实验,最后给出了如下建议:

  • 不加 BN时使用 ELU,加BN时使用ReLU(加BN时,两者其实差不多)
  • 对输入RGB图学习一个颜色空间变换,再接网络
  • 使用linear decay学习策略
  • 池化层将average与max求和
  • BatchSize使用128或者256,如果GPU内存不够大,在调小BatchSize的同时同比减小学习率
  • 用卷积替换全连接层,在最后决策时对输出取平均
  • 当决定要扩大训练集前,先查看是否到了“平坦区”——即评估增大数据集能带来多大收益
  • 数据清理比增大数据集更重要
  • 如果不能提高输入图像的大小,减小隐藏层的stride有近似相同的效果
  • 如果网络结构复杂且高度优化过,如GoogLeNet,做修改时要小心——即将上述修改在简单推广到复杂网络时不一定有效

需要注意的是,在Batch Size和学习率中,文章仅做了两个实验,一个是固定学习调整BatchSize,另一个学习率与Batch Size同比增减,但两者在整个训练过程中的Batch Size都保持不变,在这个条件下得出了 学习率与Batch Size同比增减 策略是有效的结论。最近Google有一篇文章《Don't Decay the Learning Rate, Increase the Batch Size》提出了在训练过程中逐步增大Batch Size的策略。

论文实验量非常大,每项实验均通过控制变量测试单一或少数因素变化的影响,相当于通过贪心方式一定意义上获得了每个局部最优的选择,最后将所有局部最优的选择汇总在一起仍极大地改善了性能(但不意味着找到了所有组合中的最优选择)。实验结果主要是在CaffeNet(改)上的得出的,并不见得能推广到所有其他网络。

但是,总的来讲,本篇文章做了很多笔者曾经想过但“没敢”做的实验,实验结果还是很有启发意义的,值得一读。

文章全部实验汇总如下,github上有更多实验结果:

论文细节

一图胜千言,本节主要来自论文图表。

激活函数

在计算复杂度与ReLU相当的情况下,ELU的单一表现最好,ELU(卷积后)+maxout(全连接后)联合表现最好,前者提升约2个百分点,后者约4个百分点。值得注意的是,不使用非线性激活函数时,性能down了约8个百分点,并非完全不能用。

池化

方法上,max和average池化结合取得最好效果(结合方式为 element-wise 相加),作者推测是因为同时具备了max的选择性和average没有扔掉信息的性质。尺寸上,在保证输出尺寸一样的情况下,non-overlapping优于overlapping——前者的kernel size更大

学习率

linear decay取得最优效果

BatchSize与学习率

文章中仅实验了固定学习调整BatchSize以及学习率与Batch Size同比增减两个实验,在整个训练过程中Batch Size保持不变,得出了 学习率与Batch Size同比增减 策略是有效的结论。

图像预处理

灰度及其他颜色空间均比RGB差,通过两层1x1卷积层将RGB图映射为新的3通道图取得了最好效果

BN层

Sigmoid + BN 好于 ReLU无BN,当然,ReLU+BN更好。

分类器设计

若将CNN网络拆成两个部分,前为特征提取,后为分类器。分类器部分一般有3种设计:

  1. 特征提取最后一层为max pooling,分类器为一层或两层全连接层,如LeNet、AlexNet、VGGNet
  2. 使用spacial pooling代替max pooling,分类器为一层或两层全连接层
  3. 使用average pooling,直接连接softmax,无全连接层,如GoogLeNet、ResNet

作者实验发现,将全连接替换为卷积层(允许zero padding),经过softmax,最后average pooling,即Pool5-C3-C1-CLF-AvePool取得了最好效果。

网络宽度

对文章采用的基础网络,增大网络宽度,性能会提升,但增大超过3倍后带来的提升就十分有限了,即对某个特定的任务和网络架构,存在某个适宜的网络宽度。

输入图像大小

准确率随图像尺寸线性增长,但计算量是平方增长。如果不能提高输入图像的大小,减小隐藏层的stride有近似相同的效果。

Dataset size and noisy labels

增大数据集可以改善性能,数据清理也可改善性能,但数据清理比数据集大小更重要,为了获得同样的性能,有错误标签的数据集需要更大。

Bias有无的影响

卷积层和全连接层无Bias比有Bias降了2.6个百分点。

改善项汇总

将 学到的颜色空间变换、ELU作为卷积层激活函数、maxout作为全连接层激活函数、linear decay学习率策略、average+max池化 结合使用,在CaffeNet、VGGNet、GoogLeNet上对比实验,如下:

CaffeNet和VGGNet的表现均得以改善,GoogLeNet则不是,对于复杂且高度优化过的网络,一些改进策略不能简单推广

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

机器都会学习了,你的神经网络还跑不动?来看看这些建议

在很多机器学习的实验室中,机器已经进行了上万小时的训练。在这个过程中,研究者们往往会走很多弯路,也会修复很多bug,但可以肯定的是,在机器学习的研究过程中,学到...

1110
来自专栏本立2道生

卷积神经网络之卷积计算、作用与思想

在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如\(3\times3\)、\(5\times5\)等,数字图像是相对较大尺寸的2维(多维)矩阵(张量)...

1224
来自专栏人工智能头条

TensorFlow下构建高性能神经网络模型的最佳实践

1302
来自专栏小詹同学

轻松玩转 Scikit-Learn 系列 —— 梯度下降法

接触过机器学习的小伙伴都应该知道,梯度下降法并不是一个机器学习算法,而是一种基于搜索的最优化方法,在机器学习尤其是深度学习的凸优化中使用尤为广泛。给定一个损失函...

973
来自专栏机器学习算法与Python学习

教你如何用python解决非平衡数据建模(附代码与数据)

8116
来自专栏人工智能头条

机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size

1854
来自专栏CSDN技术头条

基于卷积神经网络(CNN)的中文垃圾邮件检测

前言 文本分类任务是一个经久不衰的课题,其应用包括垃圾邮件检测、情感分析等。 传统机器学习的做法是先进行特征工程,构建出特征向量后,再将特征向量输入各种...

4617
来自专栏人工智能

6种机器学习算法要点

本文旨在为人们提供一些机器学习算法,这些算法的目标是获取关于重要机器学习概念的知识,同时使用免费提供的材料和资源。当然选择有很多,但哪一个是最好的?哪两个互相补...

2239
来自专栏数据科学与人工智能

【算法】从头开始编写任何机器学习算法的6个步骤:感知器案例研究

有些算法比其他算法更复杂,所以从一些简单的算法开始,从一些非常简单的算法开始,比如单层感知器。

1493
来自专栏GAN&CV

全面解读Group Normbalization-(吴育昕-何凯明)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

1193

扫码关注云+社区

领取腾讯云代金券