专栏首页AI科技时讯计算机视觉经典网络回归--AlexNet

计算机视觉经典网络回归--AlexNet

AlexNet模型来源于论文-ImageNet Classification with Deep Convolutional Neural Networks,作者Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton.

1. 前言

在2010年的ImageNet LSVRC-2010上,AlexNet在给包含有1000种类别的共120万张高分辨率图片的分类任务中,在测试集上的top-1和top-5错误率为37.5%和17.0%(top-5 错误率:即对一张图像预测5个类别,只要有一个和人工标注类别相同就算对,否则算错。同理top-1对一张图像只预测1个类别),在ImageNet LSVRC-2012的比赛中,取得了top-5错误率为15.3%的成绩。AlexNet有6亿个参数和650,000个神经元,包含5个卷积层,有些层后面跟了max-pooling层,3个全连接层,为了减少过拟合,在全连接层使用了dropout,下面进行更加详细的介绍。

2. 数据集

数据来源于ImageNet,训练集包含120万张图片,验证集包含5万张图片,测试集包含15万张图片,这些图片分为了1000个类别,并且有多种不同的分辨率,但是AlexNet的输入要求是固定的分辨率,为了解决这个问题,Alex的团队采用低采样率把每张图片的分辨率降为256×256,具体方法就是给定一张矩形图像,首先重新缩放图像,使得较短边的长度为256,然后从结果图像的中心裁剪出256×256大小的图片。

摘自https://www.learnopencv.com/understanding-alexnet/

3. 网络结构

先看几张网络的结构图:

论文原文中的图

细化的结构图

下面对网络中的一些细节进行介绍

3.1 非线性ReLU函数

在当时,标准的神经元激活函数是tanh()函数,即

这种饱和的非线性函数在梯度下降的时候要比非饱和的非线性函数慢得多,因此,在AlexNet中使用ReLU函数作为激活函数

下面这种图展示了在一个4层的卷积网络中使用ReLU函数在CIFAR-10数据集上达到25%的训练错误率要比在相同网络相同条件下使用tanh函数快6倍

3.2 多GPU训练

AlexNet采用两路GTX 580 3G并行训练,并行训练的示意图如下图所示

值得注意的是,这种训练方法使top-1和top-5错误率和使用一个GPU训练一半的kernels相比分别降低了1.7%和1.2%,

3.3 局部响应归一化(Local Response Normalization,LRN)

ReLU函数不像tanh和sigmoid一样有一个有限的值域区间,所以在ReLU之后需要进行归一化处理,LRN的思想来源于神经生物学中一个叫做“侧抑制”的概念,指的是被激活的神经元抑制周围的神经元。计算公式为

其中

:第 个卷积核进行卷积运算再通过ReLU之后的输出在位置 处神经元的激活值 :进行归一化后的值 :与卷积核 毗邻的 个卷积核,超参数,一般设为5 :卷积核的总数 :超参数,一般分别设置为

LRN使AlexNet的top-1和top-5错误率分别降低了1.4%和1.2%. 关于LRN更详细的介绍可以参考-LRN

3.4 重叠池化(Overlapping Pooling)

重叠池化就是指相邻池化窗口之间有重叠部分,更确切地说,池化层可以看作是由间隔为 的池化单元的网格组成,每个池化单元总结了以合并单元的位置为中心的大小为 的邻域,即池化单元大小为 ,步长为 ,当 时就是重叠池化,在AlexNet中 ,这样的设定使他们的top-1和top-5错误率分别降低了0.4%和0.3%(和使用不重叠的池化 相比)。

3.5 总体结构

网络的最后一层(Full8)的输出给了一个包含1000个单元的softmax层,用来对1000个标签进行预测。响应归一化层(Response-normalization layers)跟在第1和第2卷积层后面,Max-pooling层跟在Response-normalization层和第5卷积层后面,ReLU激活函数应用与所有卷积层和全连接层输出后。

4. 减少过拟合

下面介绍AlexNet中使用的缓解过拟合的两个主要方法。

4.1 Data Augmentation(数据增量)

早期最常见的针对图像数据减少过拟合的方法就是人工地增大数据集,AlexNet中使用了两种增大数据量的方法

  • 镜像反射和随机剪裁

先对图像做镜像反射,就像下图这样:

摘自https://www.learnopencv.com/understanding-alexnet/

然后在原图和镜像反射的图(256×256)中随机抽取227×227的块,像这样:

摘自https://www.learnopencv.com/understanding-alexnet/

通过这种方法,使得训练集的大小增大了2048倍(怎么做到的?),尽管由此产生的训练样例会产生高度的相互依赖。但是不使用这种方法又会导致严重的过拟合,迫使我们使用更小的网络。在测试的时候,AlexNet会抽取测试样本及其镜像反射图各5块(总共10块,四个角和中心位置)来进行预测,预测结果是这10个块的softmax块的平均值。

在OverFeat这篇文章中,作者指出,这样裁剪测试的方法会忽略掉图片中的很多区域,并且从计算角度讲,裁剪窗口重叠存在很多冗余的计算,另外,裁剪窗口只有单一的尺寸,这可能不是ConvNet的最佳置信度的尺寸。

  • 改变训练样本RGB通道的强度值

Alex团队在整个训练集中对图片的RGB像素值集执行PCA(主成分分析,Principal Components Analysis)。对于每一张训练图片,他们增加了多个找到的主成分,它们的大小比例是相应的特征值乘以一个随机值(来自均值为0,标准差为0.1的高斯分布),因此,对于每个RGB图片像素点 ,增加如下量:

其中, 和 是3×3的RGB像素值的协方差矩阵中第 个特征向量和特征值, 就是前面所提到的随机量,每个 仅针对特定训练图像的所有像素绘制一次,直到该图像再次用于训练,此时将其重新绘制。这种方法近似地捕获自然图像的重要特性,即,对象的身份对于照明的强度和颜色的变化是不变的。该方法使top-1错误率降低了1%以上。

4.2 Dropout

关于Dropout的详细介绍参考-《深度学习》课程总结-深度学习的实用层面,在AlexNet中设置的失活概率为0.5,在测试的时候,再使用所用的神经元但是要给它们的输出都乘以0.5。

5. 更多细节

AlexNet使用随机梯度下降算法,batch大小是128,动量衰减参数设置为0.9,权重衰减参数为0.0005,这里的权重衰减不仅仅是一个正规化器,同时它减少了模型的训练误差,权重 的更新过程变为:其中, 是迭代次数索引, 是momentum变量, 是学习速率, 是第 个batch中 的梯度的平均值。

另外,在AlexNet中,所以层的权重 初始化为服从0均值,标准差为0.001的高斯分布,第2、4、5卷积层以及全连接层的偏置量 初始化为1,这样做的好处是它通过给ReLU函数一个正激励从而加速早期学习的速度。其他层的偏置量初始化为0.

本文分享自微信公众号 - AI科技时讯(aiblog_research)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-31

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 卷积核3x3 vs 7x7

    感受野:原指听觉、视觉等神经系统中一些神经元的特性,即 神经元只接受其所支配的刺激区域内的信号。在视觉神经系统中,视觉皮层中神经细胞的输出依赖于视网膜上的光感受...

    用户3578099
  • 神经引导演绎搜索:两全其美的程序合成方法

    程序合成——自动生成满足给定规范的程序——是AI领域的一个主要挑战。它除了改变设计软件的方法外,它还具有彻底创新任务自动化的潜力。没有编程技能的终端用户可以很容...

    用户3578099
  • 算法面试中应该注意的事

    通过学习拉勾网资深软件工程师su yong的算法面试课程,收获很大。如果您也有兴趣,欢迎点击这里聆听。下面对算法面试内容进行总结。

    用户3578099
  • 《实现模式》读书总结

    这是一本关于如何写好代码的书,是一本关于“如何编写别人能懂的代码”的书。

    wxdut.com
  • php7高效生成二维码:composer和荷兰PHP开发者的QrCode

    关于QrCode这个类库没必要详细介绍,基于php的GD库,用于生成任意尺寸的二维码,并且可以将logo水印也打上去,还可以在二维码图片下方加入文字。QrCod...

    V站CEO-西顾
  • Oracle Database 20c 十大新特性一览

    在2019年的Oracle OpenWorld 大会上,关于Oracle Database 20c 的新特性已经逐步呈现出来。

    数据和云
  • [Linux][kernel]sched delay和steal time的原理分析以及atop的监控改进

    前言 在虚拟化场景下,经常会用到steal time来判断虚拟机的vCPU执行是否被抢占,进而来衡量虚拟机的性能指标。同时,在延迟敏感型的业务上(例如redis...

    皮振伟
  • 【小家Spring】聊聊Spring中的格式化:Formatter、AnnotationFormatterFactory、DateFormatter以及@DateTimeFormat...

    Converter只完成了数据类型的转换,却不负责输入输出数据的格式化工作,日期时间、货币等虽都以字符串形式存在,却有不同的格式。

    YourBatman
  • 产品级敏捷开发关键的第一步: 制订版本发布的节奏

    前言:   产品级敏捷开发主要的目的是要达到: 以最少的产出, 却能对客户产生最大的正面影响◦   PI(Program Increment) 则是制定版本发布...

    Ken Fang 方俊贤
  • 如何优雅地用TensorFlow预测时间序列:TFTS库详细教程

    作者:何之源 转载自知乎专栏:AI Insight 量子位 已获授权编辑发布 这篇文章中,作者详细介绍了TensorFlow Time Series(TFTS)...

    量子位

扫码关注云+社区

领取腾讯云代金券