AlexNet

相关文献:

ImageNet Classification with Deep Convolutional Neural Networks

Alex Krizhevsky Ilya Sutskever Geoffrey E. Hinton

2012 NIPS

http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

AlexNet的特点;

  1. 用relu代替sigmoid
  2. local response normalization,提高泛化能力
  3. 分到多个GPU训练,提高训练效率
  4. 用数据增强和dropout避免过拟合

网络结构

上面是论文中的图,示意GPU并行操作的连接和分离。不过没有画出没一层的内部结构,所以参照下图进行说明:

总体结构:5层卷积,3层全连接。

注意到,这里的激活函数已经不是lenet用的sigmoid形式的tanh函数,而是用了ReLU函数,可以避免sigmoid的饱和区域难以下降的困难。

前面的两层卷积后面跟了一个local contrast norm,局部对比度归一化处理。在第一个convolution,第二个convolution,以及最后一个convolution后跟了一个max pooling,这里的max pooling 池化方法也是第一次应用于CNN分类。对比之前的lenet用的是降采样(局部2×2区域求和乘以系数加bias)。并且,这里的pooling是overlap的,有重叠的池化。在这个model的设计中,作者在实验中观察到,stride=2,kernel=3的时候比起stride和kernel相等的不重叠的pooling可以降低top-1和top-5的error,所以用了重叠的pooling。后面用了两层带relu的全连接,各4096。最后一层是全连接1000,对应于1000个分类。

参照论文中的图,最开始输入的是224×224×3的图像,然后用11×11的大kernel卷积一遍,卷积的stride=4,取4是因为这是相邻的两个感知域的中心点的距离(kernel是11,如果要想该kernel相邻的包含它的中心的话,最多移动4个长度)。注意,到了第二层开始,网络就被分到两个GPU去了。而且在第2,4,5层的时候只在本GPU上运算,而在第3层的时候进行一次GPU的通信,也就是将两个GPU上的feature map都连接到后一层。在最后的dense层的时候在进行综合,从而使得网络的训练可以在多个GPU上进行,提高了效率。

下面介绍AlexNet里的一些技术创新。

ReLU 非线性激活函数

Deep convolutional neural networks with ReLUs train several times faster than their equivalents with tanh units.

ReLU是Hinton提出来用在RBM中的,V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In Proc. 27th International Conference on Machine Learning, 2010,在此处被应用在模型里来加快训练速度。由于ReLU没有饱和区域,所以可以得到很好的训练效果。

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

首先要说的是,由于采用了relu替代了sigmoid,所以其实不必对激活函数的输入有规范化的要求。sigmoid之所以要求规范化是希望输入能落在线性区域而不是饱和区域。但是对于relu来说只要有大于零的训练样本,神经元就可以持续学习。但是在实验中,作者发现,进行local normalization可以提高泛化性能。所以做了一个LRN,局部归一化的操作。如图:

This sort of response normalization implements a form of lateral inhibition inspired by the type found in real neurons, creating competition for big activities amongst neuron outputs computed using different kernels. 也就是说,这种归一化模拟了实际神经元的侧抑制功能,提高了模型的performance。

注意这里的 i 和 j 是 第 i 和 j 个 kernel,xy是位置。其他的都是超参数。

防止过拟合的策略

由于这个网络结构的参数体量较大,所以很容易过拟合。alexnet有两种方式在避免过拟合:data augmentation和dropout

数据增强(data augmentation)

首先是translation和horizontal reflection,然后从256×256的里面分割成224×224的patch,这样数据就大了很多,但是高度inter-dependent。在测试的时候,也切出5个224的patch,然后预测求平均。

除了平移翻转之外,还用了RGB通道扰动的方法:首先对RGB像素值做一个PCA,然后找到主成分。在原来的基础上加上下面的值:

其中p是特征向量,lambda是特征值,而alpha是N(0,0.1)的随机扰动。

This scheme approximately captures an important property of natural images, namely, that object identity is invariant to changes in the intensity and color of the illumination. 物体对于不同的光照的颜色和强度应该表现出同一性(identity)

引入Dropout

G.E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R.R. Salakhutdinov. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580, 2012.

上面是dropout的来源,也是Hinton他们做的…..

通过dropout可以不用做多组模型用来降低test error。实际上dropout本身就有多个模型融合的意味,每个模型就是dropout掉一部分连接后剩余的trainable的网络,然后最后利用概率进行融合。这里用的是Dropout(0.5)。避免了overfitting,也使得收敛慢了一倍。

下降方法

动量为0.9,weight decay 0.0005, 梯度epsilon,batch size 128 。如下图:

2018年04月16日18:47:49

classical CNN models : AlexNet 模型结构详解相关推荐

  1. AlexNet模型思想详解及核心代码实现

    摘要 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的.也是在那年之后,更多更深的神经网络被提出,网络开始往深水区涉入,比如优秀的vg ...

  2. classical CNN models : ZF Net 模型结构详解

    ZF Net 相关文献: Visualizing and Understanding Convolutional Networks Matthew D. Zeiler and Rob Fergus D ...

  3. 经典Seq2Seq与注意力Seq2Seq模型结构详解

    介绍 在本文中,我们将分析一个经典的序列对序列(Seq2Seq)模型的结构,并演示使用注意解码器的优点. 这两个概念将为理解本文提出的Transformer奠定基础,因为"注意就是您所需要的 ...

  4. AutoRec模型结构详解

    一.前言 这个模型2015年由澳大利亚国立大学提出, 是个单隐层的神经网络推荐模型,网络结构简单,非常适合深度学习推荐系统的入门模型,但由于比较简单, 表达能力不足, 并没有真正的被应用. 二.Aut ...

  5. Transformer(二)--论文理解:transformer 结构详解

    转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...

  6. [Python图像识别] 五十.Keras构建AlexNet和CNN实现自定义数据集分类详解

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  7. 【直播】陈安东,但扬:CNN模型搭建、训练以及LSTM模型思路详解

    CNN模型搭建.训练以及LSTM模型思路详解 目前 Datawhale第24期组队学习 正在如火如荼的进行中.为了大家更好的学习"零基础入门语音识别(食物声音识别)"的课程设计者 ...

  8. Django 模型层(models) 复杂查询详解

    Django 模型层(models) 复杂查询详解 一般Django orm 和原生sql混合使用 1.测试文件 只单独测试django中的某一个py文件 不一定是tests.py 1.配置 在任意一 ...

  9. 卷积神经网络CNN里经典网络模型之 AlexNet全网最详解(理论篇)

    1.背景 2. AlexNet模型结构 3. 特点(创新及新知识点) 一.背景   第一个典型的CNN是LeNet5网络,而第一个大放异彩的CNN却是AlexNet.2012年在全球知名的图像识别竞赛 ...

最新文章

  1. css属性cusor
  2. tf.sign和tf.reduce_sum
  3. 计算机没有autoCAD_挑战在一年内用晚上业余时间学会灵活运用CAD(1)|cad|autocad|图学|计算机|电子电路...
  4. python基础教程:多态、多继承、函数重写、迭代器详细教程
  5. Python学习笔记——条件分支和while循环
  6. HTML5该怎么学?HTML5入门知识汇总
  7. java 含有package cmd_如何在命令提示符下编译运行含有Package的java文件
  8. Spring源码之事务(二)
  9. 使用腾讯AI开放平台api进行车牌OCR识别和其他比如图片文字识别等通用
  10. 振动噪声测试分析软件,DASP-V11专业版 振动噪声应变冲击
  11. 层次分析法(AHP法)
  12. 3D扁平化高绩效五项管理PPT模板
  13. 漫步数理统计二十三——泊松分布
  14. 如何幽默的介绍php是撒,终于明白如何幽默介绍自己名字
  15. VJ—今年暑假不AC
  16. oracle consistent gets,Oracle数据库consistent gets使用的特例
  17. 基于javaweb+mysql的电影院售票购票电影票管理系统(前台、后台)
  18. 算法学习:我终于明白二分查找的时间复杂度为什么是O(logn)了
  19. quartz学习 图灵
  20. kinect V2开发API

热门文章

  1. python百度云盘搜索引擎_PHP百度云盘搜索引擎爬虫程序源码
  2. 个人日记-电影《夏日友晴天》观后感-2021-08-25
  3. 客户端:Lync 2011 for Mac体验
  4. python操作Excel、Word、PDF集合大全
  5. 攻防世界xctfweb题leaking题解
  6. VC驿站《实用C++》教程开篇
  7. 《计算机组成与CPU设计实验》5有限状态机的Verilog HDL描述(Finite State Machine,FSM)
  8. python 字典循环赋值,Python字典循环添加一键多值的用法实例
  9. 1-十六烷基-3-三乙氧基丙基硅烷咪唑溴盐离子液体([HDTIm]Br)修饰磁性纳米颗粒(MNPs)|[HDTIm]Br-MNPs
  10. sdi线缆标准_常用线缆传输距离的汇总