博客:blog.shinelee.me | 博客园 | CSDN
写在前面
论文状态: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修改而来,有以下几点不同:
- 输入图像resize为128(出于速度考虑)
- fc6和fc7神经元数量从4096减半为2048
- 网络使用LSUV进行初始化
- 移除了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有一篇文章
论文细节
一图胜千言,本节主要来自论文图表。
激活函数

在计算复杂度与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种设计:
- 特征提取最后一层为max pooling,分类器为一层或两层全连接层,如LeNet、AlexNet、VGGNet
- 使用spacial pooling代替max pooling,分类器为一层或两层全连接层
- 使用average pooling,直接连接softmax,无全连接层,如GoogLeNet、ResNet
作者实验发现,将全连接替换为卷积层(允许zero padding),经过softmax,最后average pooling,即Pool5-C3-C1-CLF-AvePool取得了最好效果。
网络宽度
 
                        
