前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机视觉经典网络回归--AlexNet

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

作者头像
用户3578099
发布2020-04-01 20:05:46
1K0
发布2020-04-01 20:05:46
举报
文章被收录于专栏:AI科技时讯AI科技时讯

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.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技时讯 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 数据集
  • 3. 网络结构
  • 4. 减少过拟合
  • 5. 更多细节
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档