这篇论文提出了AlexNet,奠定了深度学习在CV领域中的地位。
1. ReLu激活函数
2. Dropout
3. 数据增强


网络的架构如图所示

包含八个学习层:五个卷积神经网络和三个全连接网络,并且使用了最大池化。

RELU非线性层

传统的神经网络的输出包括$tanh$ 和 $ y = (1+e^{-x})^{-1}$,namely sigmoid。 在训练阶段的梯度下降的过程中, 饱和的非线性层比非饱和的非线性层下降得更慢。

-- RELU 可以加快训练的速度,与饱和非线性函数相比达到相同的训练损失率,可以经过更少的迭代时间;

-- 同时指出了 如果使用传统的饱和型的神经元模型,并不能够使这个比较大的神经网络模型很好的工作;

-- 在ImageNet  数据集主要关注的使避免过拟合;

多个GPU进行训练(Traning on Multiple GPUs)

单个GPU的memory 是有限的,对于网络和数据集来说,训练十分困难;

利用两个GPU进行并行训练;

GPU只在某些层进行通信。这意味着,例如,第3层的内核从第2层中的所有内核映射中获取输入。但是,第4层中的内核仅从第3层中驻留在第3层的内核映射中获取输入。 相同的GPU。 选择连通模式是交叉验证的一个问题,但这使我们能够精确调整通信量,直到它是计算量的可接受部分。

Local Response Normalization

尽管RELU激活函数的使用,可以在加快训练速度的同时,取得比饱和非线性映射更好的效果,但是作者在采用了局部归一化技术后,泛化性得到了提高。

在RELU后使用这些技术;

减小过拟合(Reducing Overfitting)

动机:由于整个网络拥有6000万个参数;尽管ILSVRC的1000个类使得每个训练示例对从图像到标签的映射施加10位约束,十分有必要去考虑过拟合的问题。

数据扩充(Data Augmentation)

图像数据扩充,即人工的扩大数据集, 是减小过拟合现象最简单和常用的方法,作者使用两者不同的数据扩充方法:

--第一种形式是包括生成图像平移(image translations)和水平反射(horizontal reflection,镜像)具体的,他们从256*256的图像种随机抽取了224*224的图像patch用于训练,这将我们的训练集的大小增加了2048倍,尽管由此产生的训练示例当然是高度相互依赖的。在测试阶段,取每一个测试样本四个角以及中间区域,一共5个patch然后再镜像后得到10个样本输入到网络中,最后将10个softmax输出平均后作为最后的输出(测试阶段的处理有意思)。

--第二种形式是使用PCA对于训练数据进行增强:对于每一个RGB图像进行一个PCA的变换,完成去噪功能,同时为了保证图像的多样性,在特征值上加了一个随机的尺度因子,每一轮重新生成一个尺度因子,这样保证了同一副图像中在显著特征上有一定范围的变换,降低了过拟合的概率,作者指出这种方法近似的捕获了自然图像的主要属性,即对象标识不受光照强度和颜色变化的影响;

Dropout

将每个隐藏层的神经元以50%的概率进行随机置零;这些被随机置零的神经元并不在前向传播中产生作用,也不参与反向传播。使得每次的输入,神经网络都会对不同的体系结构进行采样,但是这些结构是分享权重的;减小了神经元之间复杂的协同适应能力。

所以dropout 强迫网络学习与其他神经元的许多不同的子集一起使用的更加健壮的特征。作者在前连个全连接层使用了dropout , 指出 付出了两倍的收敛时间‘


Overlapping Pooling

CNNs中的池化层总结了同一核映射中相邻神经元群的输出。传统的池化都是不重叠的,也就是说池化操作的步长是等于filter的尺寸的;而作者采用了重叠池化的操作,即步长小于filter的尺寸,减小了损失。


论文解读《ImageNet Classification with Deep Convolutional Neural Networks》的更多相关文章

  1. 《Population Based Training of Neural Networks》论文解读

      很早之前看到这篇文章的时候,觉得这篇文章的思想很朴素,没有让人眼前一亮的东西就没有太在意.之后读到很多Multi-Agent或者并行训练的文章,都会提到这个算法,比如第一视角多人游戏(Quake ...

  2. ImageNet Classification with Deep Convolutional Neural Networks 论文解读

    这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...

  3. 《Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Neural Networks》论文笔记

    论文题目<Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Ne ...

  4. Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

    1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...

  5. Training Deep Neural Networks

    http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html  //转载于 Training Deep Neural ...

  6. Training (deep) Neural Networks Part: 1

    Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...

  7. [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  8. Training spiking neural networks for reinforcement learning

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 原文链接:https://arxiv.org/pdf/2005.05941.pdf Contents: Abstract Introduc ...

  9. CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲

    前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...

  10. 论文翻译:BinaryConnect: Training Deep Neural Networks with binary weights during propagations

    目录 摘要 1.引言 2.BinaryConnect 2.1 +1 or -1 2.2确定性与随机性二值化 2.3 Propagations vs updates 2.4 Clipping 2.5 A ...

随机推荐

  1. 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!

    前言 前面小飞已经讲解了NIO和Netty服务端启动,这一讲是Client的启动过程. 源码系列的文章依旧还是遵循大白话+画图的风格来讲解,本文Netty源码及以后的文章版本都基于:4.1.22.Fi ...

  2. windows提权之mimikatz

    mimikatz privilege::debug #提权命令 sekurlsa::logonPasswords #抓取密码 winmine::infos #扫雷作弊 lsadump::lsa /pa ...

  3. Spring Eureka 本地Docker集群部署

    故事背景 最近因为产线使用的服务与发现服务,使用的是Spring Cloud Eureka集群部署,为了以后调试产线的问题,想在本地搭建和产线一样的环境.产线的所有服务都是基于K8s和Docker部署 ...

  4. django_apscheduler 0.4.0删除了name字段

    使用django_apscheduler时默认使用了最新版本,为0.4.2版本,但是在这个版本中,使用migrate 生成定时任务模型时没有了name字段,导致之前写的定时任务不能执行. 翻了下 dj ...

  5. CTFweb方向小知识点

    1)转义字符 \x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39 这玩意叫转义字符,在C.C++里直接用cout << "\x35\x2c\ ...

  6. Java知识系统回顾整理01基础03变量06变量的作用域

    一.变量根据所处的位置对应不同的名称 变量处于不同的位置,有不同的名称 名称分别是  字段,属性 参数 局部变量 不同名称的变量,其作用域是不一样的 二.字段,属性,Field 当一个变量被声明在类下 ...

  7. vector专题

    <C++程序设计语言(第4部分:标准库)> 31.4 容器 31.4.1 vector 31.4.1.1 vector和增长 重要知识点:vector的内存布局 vector不会在添加每个 ...

  8. 多测师讲解pthon_002字符,列表,元组,字段等

    # # # 索引:# # # 正向索引:  0  1  2  3  4  5  6# # #      l=   a  b  c  d  e  f  g# # # 反向索引: -7 -6 -5 -4 ...

  9. SpringBoot+Activiti+bpmn.js+Vue.js+Elementui(OA系统审批流)

    引言:OA系统用到请假.加班.调休.离职,需要使用工作流进行流程审批 一:activiti流程设计器的选择(通过学习activiti工作流过程中,发现一款好的流程设计器将会更好的方便的设计好流程(主要 ...

  10. 网络编程—【自己动手】用C语言写一个基于服务器和客户端(TCP)!

    如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字). socket(套接字):简单来讲,socket就是用于描述IP地 ...