前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从AlexNet(2012)开始

从AlexNet(2012)开始

作者头像
李拜六不开鑫
修改2020-04-26 16:16:24
8660
修改2020-04-26 16:16:24
举报
文章被收录于专栏:本立2道生本立2道生

目录

  • 写在前面
  • 网络结构
  • 创新点
  • 其他有意思的点
  • 参考

博客:blog.shinelee.me | 博客园 | CSDN

写在前面

本文重点在于回顾深度神经网络在CV领域的First Blood——AlexNet,AlexNet是首个在大规模图像识别问题取得突破性进展的深度神经网络,相比基于SIFT+FVs、稀疏编码的传统方法,性能提升了10多个百分点(error rate 26.2% → 15.3%,ILSVRC-2012),并由此开启了深度神经网络血洗CV各领域的开端,如下图所示(SuperVision即AlexNet)。

ImageNet Classification error throughout years and groups
ImageNet Classification error throughout years and groups

截止本文时间2019年9月2日,AlexNet论文的引用量达45305,论文作者Alex Krizhevsky、Ilya Sutskever和“深度学习之父”Geoff Hinton。

citations
citations

网络结构

AlexNet的原始网络结构如下,可以参见caffe的网络定义bvlc_alexnet,pytorch等也给出了变种实现,见torchvision/models/alexnet.py

AlexNet architecture
AlexNet architecture

整个网络大体由5个卷积层和3个全连接层组成,受限于当时的计算资源,网络通过2块GTX580 3GB的GPU训练,上图可见,整个网络上下一分为二,各用1块GPU训练(在caffe中通过group层实现),每个GPU放一半的神经元,网络中第3个卷积层和3个全连接层跨GPU连接。与使用单个GPU和50%神经元的网络相比,这个双GPU方案的Top1和Top5错误率分别降低了1.7%和1.2%。

每层的配置如下,第一个卷积层的kernel size为11,stride为4:

AlexNet architecture
AlexNet architecture

创新点

为了获得最佳表现,论文中综合应用了很多技术,有些后来已成为通用的标准做法。

  • 使用ReLU作为激活函数,作为non-saturating非线性激活函数有效避免了梯度消失问题,同时与tanh(saturating非线性激活函数)相比,训练速度提升了数倍(CIFAR-10上训练达到25%错误率速度快了6倍)。
  • 多GPU训练,实际上相当于增加了网络的宽度,如上节所述,Top1和Top5错误率比单GPU网络分别降低了1.7%和1.2%。
  • 提出了LRN(Local Response Normalization)层,使用相邻n个特征图上同位置的值对当前值进行归一化,公式如下。LRN被认为没有太大效果,已不被后来者采用。
b_{x, y}^{i}=a_{x, y}^{i} /\left(k+\alpha \sum_{j=\max (0, i-n / 2)}^{\min (N-1, i+n / 2)}\left(a_{x, y}^{j}\right)^{2}\right)^{\beta}
  • 对前2个全连接层使用Dropout技术,训练时每次随机让50%的神经元输出为0,以此来降低过拟合,预测时将权重乘以0.5。这样可以强迫网络学习到更鲁棒的特征,也可以从集成学习的视角理解,预测阶段相当于对随机到的所有模型求了个期望。
dropout
dropout
  • batchsize 128,SGD Momentum 0.9,weight decay 0.0005,initial learning rate 0.01 停滞时divide by 10,
\begin{aligned} v_{i+1} & :=0.9 \cdot v_{i}-0.0005 \cdot \epsilon \cdot w_{i}-\epsilon \cdot\left\langle\left.\frac{\partial L}{\partial w}\right|_{w_{i}}\right\rangle_{D_{i}} \\ w_{i+1} & :=w_{i}+v_{i+1} \end{aligned}

其他有意思的点

回顾AlexNet论文,发现论文中提及了很多有意思的点,有些仅仅是一笔带过,但是可能启发了后面大量的工作,翻回来看才发现“祖师爷”早有预兆。

  • finetune,在一个库上训练,在另一个库上finetune
AlexNet finetune
AlexNet finetune
  • 权重可视化,仅可视化第1个卷积层的96个卷积核权重,发现网络学到了频率方向性的特征,更有意思的是,GPU1上的48个卷积核是颜色无关的,GPU2上的是颜色相关的。
96 Convolutional Kernels
96 Convolutional Kernels
  • 匹配与检索,使用最后一个全连接层的输出作为特征,通过欧氏距离可计算图像间的特征相似度,可做匹配,提出可以通过auto-encoder进一步压缩获取到short binary code,可用于检索,如下图所示,检索与最左边一列特征最近的图像
retrieve images
retrieve images
  • 深度十分重要,增加深度可以进一步提升性能,当前性能只是受限于计算资源和训练时间(微笑)
depth is important
depth is important
depth is important
depth is important
  • 在ILSVRC 2012上做的报告展示了使用AlexNet做detection的结果,如下
AlexNet Localization
AlexNet Localization

不愧是开创性工作的paper,给这含金量跪了。

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 网络结构
  • 创新点
  • 其他有意思的点
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档