阅读笔记:ImageNet Classification with Deep Convolutional Neural Networks
概要:
本文中的Alexnet神经网络在LSVRC-2010图像分类比赛中得到了第一名和第五名,将120万高分辨率的图像分到1000不同的类别中,分类结果比以往的神经网络的分类都要好。为了训练更快,使用了非饱和神经元并对卷积操作进行双GPU实现。为了减少全连接层的过拟合,本文采用了dropout的正则化方法。
一、背景
简单的识别任务在小数据集上可以被解决的很好,但是在数据集很大的情况下,我们需要一个很强的学习模型。CNN可以通过改变数据集的广度和深度来补偿大数据中没有的数据,同时比起层次大小相似的前馈神经网络,CNN有更少的连接和参数,所以更加容易训练,现在由于GPU的出现,CNN可以被大量地训练。
二、模型
1.ReLU非线性
本文使用的是ReLU非线性函数,虽然tanh(x)和(1+e-x)-1函数是标准函数,但是它们梯度下降的时间需要训练很久,所以我们采用max(0,x)函数。
2.多GPU训练
在训练CNN的时候我们采用在GPU上运行,而且我们采用两个GPU同时运行的方式,这里运行有个技巧:只在某些特定的层进行GPU通信,例如第三层的神经网络会将第二层的所有神经网络作为输入,但是第四层的神经网路可能只会讲同GPU的神经网络映射作为输入,这样双GPU的运行效果要比单个GPU处理半个范围类似的神经网络速度快。
3.局部响应归一化
ReLU具有让人满意的特性,不需要通过输入归一化来防止饱和。但是我们发现局部响应归一化有助于泛化。
4.重叠池化
网络使用大小为33,步长为2的池化层,使得池化时有重叠部分,讲top-1和top-5错误率降低了0.4%和0.3%。
5.整体结构
三、减少过拟合
1.数据加强
一种方法是随机选取其中224224图像及其水平翻转后的图像作为训练数据,使得数据扩大2048倍,大大减少过拟合。预测的时候利用图像角落上的4个图像和中间的一个图像,计算结果的平均值。
第二种方法是转变图像RGB通道的强度。对RGB像素值作主成分分析,然后对每张训练图像的像素值,加上主成分乘上对应特征值,再加上均值为1,标准差为0.1的随机值的积。
2.Dropout
将许多模型预测结合起来是降低测试误差的方法,但是花费的时间比较多,用dropout方法以0.5的概率对每个隐层神经元的输出设为0,“失活的”神经元不再进行前向传播并且不参加反向传播,这个技术减少了复杂的神经元相互适应,因为一个神经元不能依赖特定的其他神经元存在。所以神经元被强迫学习更鲁邦的特征。
四、结果
在ILSVRC-2010数据集上网络取得了top-1和top-5错误率37.5%和17.0%。
实验进展:
学习了神经网络简单模型的搭建,做了批训练和优化的实验,正在搭建分析手写数字的卷积神经网络模型。
下周计划:
搭建完分析手写数字的卷积神经网络,看一篇比较经典的CNN论文,看一篇推荐系统相关的论文。
阅读笔记:ImageNet Classification with Deep Convolutional Neural Networks的更多相关文章
- 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析
<ImageNet Classification with Deep Convolutional Neural Networks> 剖析 CNN 领域的经典之作, 作者训练了一个面向数量为 ...
- ImageNet Classification with Deep Convolutional Neural Networks(译文)转载
ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geo ...
- AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks
ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...
- 中文版 ImageNet Classification with Deep Convolutional Neural Networks
ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC ...
- 论文阅读笔记二-ImageNet Classification with Deep Convolutional Neural Networks
分类的数据大小:1.2million 张,包括1000个类别. 网络结构:60million个参数,650,000个神经元.网络由5层卷积层,其中由最大值池化层和三个1000输出的(与图片的类别数相同 ...
- [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)
这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...
- AlexNet——ImageNet Classification with Deep Convolutional Neural Networks
1. 摘要 本文的模型采用了 5 层的卷积,一些层后面还紧跟着最大池化层,和 3 层的全连接,最后是一个 1000 维的 softmax 来进行分类. 为了减少过拟合,在全连接层采取了 dropout ...
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...
- 论文解读《ImageNet Classification with Deep Convolutional Neural Networks》
这篇论文提出了AlexNet,奠定了深度学习在CV领域中的地位. 1. ReLu激活函数 2. Dropout 3. 数据增强 网络的架构如图所示 包含八个学习层:五个卷积神经网络和三个全连接网络,并 ...
随机推荐
- sql查询速度慢分析及如何优化查询
原因分析后台数据库中数据过多,未做数据优化数据请求-解析-展示处理不当 网络问题提高数据库查询的速度方案SQL 查询速度慢的原因有很多,常见的有以下几种:1.没有索引或者没有用到索引(查询慢最常见的问 ...
- js如何替换字符串中匹配到多处中某一指定节点?
抛出一个问题,如图,搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?回到文章的标题,js如何替换字符串中匹配到多处中某一指定节点? 字符串的替换,我们首先想到的一个属性是r ...
- 前端面试:Http协议与浏览器
Http与Https的区别 Http是明文传输的,Https协议是在Http协议上添加了SSL的加密协议,可以进行加密传输和身份验证. 其实就是说Http对网络传输完全是裸奔状态,也就没办法防范中间人 ...
- Tomcat-8.5.23 基于域名和端口的虚拟主机
下载tomcat yum install java -y cd /opt/ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.23/b ...
- Haproxy-1.8.20 根据路径(URI)转发到后端不同集群
HAProxy根据不同的URI 转发到后端的服务器组 1 ) 实验内容说明: 1.1 ) 根据不同的URI 转发到后端的服务器组. /a /b 和其他 默认使用其他. 1.2 ) 使用IP介绍: ha ...
- 【Linux】Centos7 安装redis最新稳定版及问题解决
------------------------------------------------------------------------------------------------- | ...
- ctfshow—web—web签到题
打开靶机,发现只有一句话 查看源码 发现一段字符串,猜是base64加密 拿到flag
- SpringBoot快速掌握(1):核心技术
SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBo ...
- Servlet中的一些注意事项
servlet中的一些注意事项 1 什么是servlet? 1)Servlet是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案.而具体的Servle ...
- smtplib.py
def _print_debug(self, *args): if self.debuglevel > 1: print(datetime.datetime.now().time(), *arg ...