自从2012年AlexNet激起新一轮深度学习热潮以来,深度神经网络快速发展,众多教授、博士迅速挖坑、填坑,把神经网络的基础结构研究的透透彻彻。最近整体看了几十篇神经网络基础结构的文章,作为备忘,简单整理记录如下:
名称 | 推出时间 | 核心创新点 |
---|---|---|
AlexNet | 2012 | 深度学习开山之作,ReLU、DropOut、池化 |
VGG | 2014.9 | 小尺寸卷积核,全3*3卷积核 |
GoogLeNet (Inception V1) | 2014.9 | 分组卷积、模块化、1*1卷积、全局平均池化替代全连接 |
Inception V2/V3 | 2015.2/12 | BN、卷积分解(n*n卷积分解为1*n+N*1) |
ResNet | 2015.12 | 残差 |
SqueezeNet | 2016.2 | 轻量化网络,1*1卷积、分组卷积 |
DenseNet | 2016.8 | 各层全连通 |
Xception | 2016.10 | Depthwise卷积 |
MobileNet V1 | 2017.4 | 轻量化网络,depthwise和pointwise(即1*1)卷积 |
ShuffleNet | 2017.7 | 轻量化网络,多种技术的综合优化,多通道卷积时的通道shuffle |
MobileNet V2 | 2018.1 | 轻量化网络,逆向残差模块(ResNet里通过1*1降维,这里是升维)、线性bottleneck |
几点说明:
1. 挂一漏万,这些是个人认为比较重要的基础网络结构;
2. 有些结构可能不是该网络首创,但通常认为是该网络发扬光大;
3. Inception V2/V3在V3那篇文章(Rethinking the Inception Architecture for Computer Vision)里有明确的定义,但是到V4那篇文章里又有了新的说法,两篇文章文章里关于V2的说法好像是不一样的,此处采纳V3文章里的说法。
从以上表格可以看出这么几个趋势:
1. 重要的基础网络基本都在2016年以前发布的,而2016年以后重点已经转到轻量化网络上了;
2. 对于保持网络精度的同时降低网络规模起到重要作用的技术包括:小尺寸卷积(现在的网络基本统一到3*3卷积上了,通过多层级联可以获得大尺寸卷积的作用)、分组卷积(也就是group conv)、卷积分解(用1*n+n*1替代n*n卷积)、depthwise卷积、1*1卷积(或者叫bottleneck或pointwise卷积)、全局平均池化替代全连接;
3. 对于网络加深和训练快速收敛起作用的技术包括:BN和残差。这两个技术目前都得到了广泛的应用;
4. 模块化对于缩小设计空间,简化复杂模型设计非常重要。
关于这些网络的对比,有这么一篇文章做了总体介绍:An Analysis of Deep Neural Network Models for Practical Applications, https://arxiv.org/abs/1605.07678 。下图摘自这篇文章:
从这个图里可以看到:
1. 针对ImageNet分类数据集,top1准确率在75%~80%附近饱和,在现有网络结构下,不管怎么增加计算,也很难进一步快速提升;
2. 饱和点大概在Inception V3和ResNet50附近,之后需要计算量大幅提高才能获得一点准确率的提升;
3. VGG实在是效率很低的网络,参数量多、计算量大,而分类精度却是一般;
4. Inception是效率挺高的网络,但相对来说,需要比较精细的设计,因而可移植性差一些;而ResNet简单很多,只是在普通卷积网络的基础上加上残差连接,通用性非常强,因此这些年应用极广。
以上,个人简单想法,做个记录。