当前位置: 首页 > news >正文

AlexNet论文精读

1:该论文解决了什么问题?

图像分类问题

2:该论文的创新点?

  1. 使用了大的深的卷积神经网络进行图像分类;
  2. 采用了两块GPU进行分布式训练;
  3. 采用了Relu进行训练加速;
  4. 采用局部归一化提高模型泛化能力;
  5. 重叠池化,充分利用信息,提高精度;
  6. dropout减少神经元之间的依赖性,提高模型泛化能力;

3:训练策略?

  1. 使用SGD(随机梯度下降)来训练,每个batch128,动量为0.9,权重衰减为0.0005(防止过拟合,在损失函数中添加一个惩罚项,对网络的权重进行约束,使其趋向于较小的值);
  2. 使用方差为0.1 均值为0的分布来初始化权重,用常数1来初始化第二、四、五层卷积和全连接隐藏层的偏置;
  3. 学习率初始化为0.1,当验证集的精度不再提高时,将学习率除以10;

4:代码地址?

5:论文还有什么改进之处?

1)对视频流进行处理,利用时间特征

摘要

  1. 训练了一个很大很深的卷积神经网络在ImageNet上进行1000个种类的分类任务;
  2. top1的精度达到了62.5%;
  3. 该网络包含了五个卷积层以及全连接层;
  4. 采用了两块gpu进行分布式训练;
  5. 对于overfitting问题采用了dropout。

介绍

  1. 现实物体的识别需要较大的数据集,例如LabelMe 和ImagNet;
  2. 卷积网络可以通过深度和宽度来控制其识别能力;
  3. 编写了一个高性能程序让gpu可以很好的训练2D卷积;
  4. 经过实验,发现卷积网路的深度很重要;

数据集

  1. ImageNet有1.5亿张高达22000个种类并且由人工进行标注的图片;
  2. 并没有对图像进行预处理,在原始的RGB上进行网络的训练。

结构

  1. relu可以大大减少神经网络的训练时间;
  2. 如图所示训练时间对比,实线为relu,虚线为tanh;

4)relu(x)=Max(0,x)

  1. 在当时,单块gpu的显存仅3GB,这无法训练一个大型的神经网络,因此采用了两块GPU进行分布式训练;
  2. 并行化方案采用的是讲一半的卷积核各放到一块gpu上,gpu仅在某些层进行交流,并且gpu之间可以先相互读取内存而不经过主机;
  3. 带来的结果就是降低了top1和top5的错误率,加快了训练。
  4. 虽然Relu不需要归一化来防止饱和,但依然发现了一种归一化方法来提高模型的泛华能力;(泛华:模型在未见过的数据集的能力)
  5. 仅在某些层使用Relu后使用该归一化,因此称为局部响应归一化,这一操作同样降低了top1和5的错误率;
  1. 池化通常用来降低卷积层之后结果的维度;
  2. 不仅可以提升精度,还可以防止过拟合;
  3. 池化步长小于池化窗口,再池化的过程中添加相邻像素的信息以重新或得非重叠部分失去的特征;
  1. 结构如图所示,包含了五个卷积和三个全连接;

2)网络被分为两个部分,各自训练各自的;

3)第二个卷积层的输出进行了一个交叉,也就是第三个卷积层的输入,此时两个GPU互相交换参数;

4)第一个、第二个卷积层使用了LRN(局部归一化);

5)第一个、第二个、第五个卷积层使用了最大池化。

  1. 降低过拟合的方法之一就是人为的进行数据集扩充;
  2. 从256*256的图里随机提取224*224的块,这也是为什么结构里的输入为224*224;
  3. 对图片进行PCA(高维数据转换为低维数据,保留数据中的主要变化方向。在这里,PCA应用于RGB像素值,以找到它们之间的主要方向。)
  1. 为了减少误差,降低训练成本,采用了dropout(随机失活法);

2)在学习的过程中进行神经元的随机失活,以降低各个模块的依赖性,提高鲁棒性。

  1. 使用SGD(随机梯度下降)来训练,每个batch128,动量为0.9,权重衰减为0.0005(防止过拟合,在损失函数中添加一个惩罚项,对网络的权重进行约束,使其趋向于较小的值);
  2. 使用方差为0.1 均值为0的分布来初始化权重,用常数1来初始化第二、四、五层卷积和全连接隐藏层的偏置;
  3. 学习率初始化为0.1,当验证集的精度不再提高时,将学习率除以10;
  1. 卷积神经网络的精度和深度有关;
  2. 对于视频,希望用大的深度神经网络去预测并利用好时间结构。

相关文章:

  • 领域驱动模型之各层实体严格分层处理
  • Git分支学习
  • 考研个人经验总结【心理向】
  • Scikit-Learn线性回归(三)
  • (23)Linux的软硬连接
  • 如何在 Photoshop 中创建草文本效果
  • Open CASCADE学习|一种快速定位缺失的链接库的方法
  • 流程挖掘在优化核心业务、增强可见性和提升自动化方面的三重效应
  • uniapp 创建组件
  • 海外代理IP在游戏中有什么作用?
  • 产品的流程
  • YOLOv8融合改进 更换检测头为Detect_DyHead同时添加C2f-EMSC和C2f-EMSCP模块
  • 开始卷TED:第1篇 —— 《Embrace the near win》—— part: 3
  • 平衡搜索二叉树(AVL树)
  • Python画国旗
  • Android框架之Volley
  • Django 博客开发教程 8 - 博客文章详情页
  • Joomla 2.x, 3.x useful code cheatsheet
  • Next.js之基础概念(二)
  • SQLServer之创建数据库快照
  • TCP拥塞控制
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 安卓应用性能调试和优化经验分享
  • 闭包--闭包之tab栏切换(四)
  • 观察者模式实现非直接耦合
  • 记一次和乔布斯合作最难忘的经历
  • 今年的LC3大会没了?
  • 浏览器缓存机制分析
  • 排序算法之--选择排序
  • scrapy中间件源码分析及常用中间件大全
  • 进程与线程(三)——进程/线程间通信
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #HarmonyOS:基础语法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (30)数组元素和与数字和的绝对差
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (九十四)函数和二维数组
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET4.0并行计算技术基础(1)
  • .NetCore部署微服务(二)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • [20140403]查询是否产生日志
  • [2023年]-hadoop面试真题(一)
  • [Android]通过PhoneLookup读取所有电话号码
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [CF543A]/[CF544C]Writing Code
  • [emuch.net]MatrixComputations(7-12)
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [Hibernate] - Fetching strategies
  • [HNOI2008]水平可见直线