AlexNet

news2024/11/25 6:36:06

目录

  • 论文信息
    • 论文名称
    • 论文别名
    • 发表期刊
    • 论文地址
  • 论文详解
    • 摘要
      • 精简翻译和总结
      • 批注
    • 1.引言
      • 1.1 指出问题和可改进方向
      • 1.2本文贡献
      • 1.3 批注
    • 2.数据集
      • 2.1 批注
    • 3.模型结构
      • 3.1 ReLU
      • 3.2 多GPU分布式训练
      • 3.3 Local Response Normalization(LRN 局部响应归一化)
      • 3.4 重叠池化
      • 3.5 模型总体结构
      • 3.6 批注
    • 4. 数据增强
      • 4.1 数据增强
        • 4.1.1 方法一
        • 4.1.2 方法二
      • 4.2 Dropout
    • 5.实现细节
  • 遗留问题
  • 参考文献

论文信息

论文名称

ImageNet Classification with Deep Convolutional Neural Networks

论文别名

AlexNet

发表期刊

NIPS

论文地址

ImageNet Classification with Deep Convolutional Neural Networks

论文详解

本文的难点 Local Response Normailzation ,Dropout ,Weight Decay

摘要

在这里插入图片描述

精简翻译和总结

作者训练了一个大的、深的卷积神经网络来对1200万张高分辨率图像进行分类,这些图片是2010年ILSVRC比赛的图片,总共分为1000个类别。在测试数据上,top-1和top-5错误率分别为37.5%和17%,比现有的SOTA(state-of-the-art)结果还有优越。神经网络总购有6000万参数以及65万个神经元,包含5个卷积层,其中一些卷积层后面跟着最大池化层,包含3个全连接层和一个1000维的softmax。为了使得训练更快,作者使用了非饱和的神经元(ReLU)和一个非常高效的GPU来实现卷积操作,为了减轻全连接层的过拟合,作者使用了一个最近才发布的正则化方法Dropout,并被证明是十分有效的。作者还在2012年的ILSVRC比赛中使用了一个该模型的变种,并且结果比第二名要好很多

批注

SOTA:( state-of-the-art )最佳结果
ILSVRC:the ImageNet Large-Scale Visual Recognition Challenge
ReLU:(Rectified Linear Unit) , 非饱和激活函数, f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
top-1和top-5:top-1 就是使用预测结果和正确结果进行对比,如果相同则表示预测正确,top-5 就是使用预测结果的.top-5(分类结果标签的前五个)与正确结果进行对比,如果五个之中有一个正确那么就认为分类器预测结果正确。
ImageNet:华裔科学家李飞飞牵头构建的数据集

1.引言

1.1 指出问题和可改进方向

在这里插入图片描述

现有的目标识别方法大量采用了机器学习方法 ,为了提升他们的性能,可以考虑收集更大的数据集训练更强大的模型或者使用更好的技术来防止过拟合。迄今为止,数据集的规模仍然是非常小的。简单的分类任务如可以在小规模数据集上表现很好,但是物体在现实世界中存在相当大的可变性,所以想要识别他们必须采用更大的数据集来学习他们的共性的特征。

在这里插入图片描述
为了能够在1200万张图像中学得数千个类别,我们需要具有强大学习能力的模型。物体识别任务的复杂性意味着你不可能把每一个类别的数据集都构建得和ImageNet 一样大,因此模型需要获得先验知识来弥补这方面的不足。CNN的识别能力与他的深度和宽度有着很大的关系。与标准的前馈神经网络相比,CNNs的连接和参数量比较少,容易训练。
在这里插入图片描述
尽管它性能好,但是在2012年的时候训练这样一个网络是非常昂贵的,比较幸运的是当时的GPU已经可以进行2D的卷积运算,减轻了训练的难度,并且ImageNet数据集足够大不会发生严重的过拟合。

1.2本文贡献

在这里插入图片描述

① 使用了ImageNet的子集,训练了当时最大的网络之一,并运用在了2010年和2012年的比赛中,并获得了最好的结果。
② 实现了2D的GPU卷积运算,并运用在了网络的训练中,我们将它开源了。(从我的视角来看,这个相当牛逼
③网络使用到了许多新的不常规的特征来提升性能,减少训练时间
④ 重点研究过拟合问题,并使用了几个技术来解决过拟合
⑤最终网络包含5个卷积层,三个全连接层,并且作者认为深度是非常重要的,移除任何一个卷积层会降低性能。

1.3 批注

CNN:convolutional neural networks

2.数据集

在这里插入图片描述

使用ImageNet 的子集,包含1200万张训练图片,5万张验证图片和15万张测试图片(有个很奇怪的现象,在随后的七八年,构建了很多更大的数据集,但是只有训练集和测试集,验证集消失了,不知道是不是数据集足够大,测试集数据可以近似等价与现实中的数据分布,所以不很出现过拟合和泛化性能下降问题,所以不需要验证集了,当然这仅是我个人的猜测

ImageNet 包含不同分辨率的图片(其实也就是大小不同的意思),作者把图像的短边缩放到256,然后根据中心点进行裁剪,得到256x256的图片。此外没有对图像再做其他任何的预处理。

2.1 批注

ImageNet数据集的均值和方差为:mean=(0.485, 0.456, 0.406),std=(0.229, 0.224, 0.225),在之后出现的很多卷积神经网络的训练过程中很多都用到了这个值,当然它的结果并不一定会很好。

3.模型结构

作者根据相关部分的重要性进行先后的叙述。

3.1 ReLU

使用了新的非饱和激活函数ReLU,可以加速模型的收敛,减少模型的训练时间

3.2 多GPU分布式训练

随着GPU的发展,现在AlexNet不需要多GPU训练了,但是这个分布式训练的方法可以用在其他大型网络的训练中,比如GPT

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

批注:这一部分真得很难懂,一开始看了好几遍没看懂,不过这个也不是特别重要,批量归一化出来后这个就不太用了。

在这里插入图片描述
ReLU 有理想的属性,不需要输入归一化来防止饱和,如果有一遇到正值,神经元就会被激活,然而,我们仍然找到了下面的局部归一化方法,它可以增加泛化。
——————————————————————————————————————————————————
a x , y i a_{x,y}^i ax,yi是第 i i i个卷积核在 ( x , y ) (x,y) (x,y)位置计算,并经过激活函数后得到的值, b x , y i b_{x,y}^i bx,yi通过那个复杂的公式得到,这个求和作用在 n n n个近邻核的相同空间位置上, N N N是这一层卷积核的数量,假设作用在AlexNet的第一层,那么卷积核的个数 N N N为96。其中 k = 2 , n = 5 , a = 1 0 − 4 , β = 0.75 k=2,n=5,a=10^{-4},\beta=0.75 k=2,n=5,a=104,β=0.75,把值带入公式后,你会发现公式变得简单了很多,变量只有 i , j i,j i,j,再结合下面这张图你就明白了
b x , y i = a x , y i / ( 2 + 1 0 − 4 ∑ j = m a x ( 0 , i − 5 / 2 ) m i n ( 95 , i + 5 / 2 ) ( a x , y j ) 2 ) 0.75 b_{x,y}^i =a_{x,y}^i /(2+10^{-4}\sum_{j=max(0,i-5/2)}^{min(95,i+5/2)} (a_{x,y}^j)^2)^{0.75 } bx,yi=ax,yi/(2+104j=max(0,i5/2)min(95,i+5/2)(ax,yj)2)0.75

在这里插入图片描述
n = 5 {n=5} n=5表示当我们在对一个元素进行归一化的时候,只考虑到沿channel维度上(也就是一维的情况),这个元素的前两个元素和后两个元素。这意味着,我们在计算{(i,x,y)}这个点归一化后的值时,只需要考虑 ( i − 2 , x , y ),( i − 1 , x , y ),( i , x , y ) , ( i + 1 , x , y ) , ( i + 2 , x , y ) {(i-2,x,y),(i-1,x,y),(i,x,y),(i+1,x,y),(i+2,x,y)} i2xy),(i1xy),(ixy,i+1xy,i+2xy的值即可,如果超过边界则默认为0。
https://zhuanlan.zhihu.com/p/434773836
https://towardsdatascience.com/difference-between-local-response-normalization-and-batch-normalization-272308c034ac

3.4 重叠池化

一般情况下池化的步长stride和filter过滤器的大小是相等的,但在本文中,stride为2,filter过滤器的边长是3

3.5 模型总体结构

在这里插入图片描述

3.6 批注

这里需要注意的是归一化层是分别接在第一个和第二个卷积层之后的,最大池化层是接在第一个和第二个归一化层之后以及第五个卷积层之后的。ReLU 接在每一个卷积层之后以及全连接层之后。

4. 数据增强

4.1 数据增强

4.1.1 方法一

在这里插入图片描述
第一种方法是对生成图像以及水平的翻转。从256x256的图像中取出224x224大小的图像,这使得训练集的大小增大了2048倍,虽然数据是独立的,但是没有这个操作的话,我们的网络会过拟合。在测试阶段,我们从256x256的图像中选取了4个边角位置,1个中心位置的224x224的patch,并进行水平翻转,这样就得到了10个patch,将它们送入网络进行预测,并计算平均值。

4.1.2 方法二

在这里插入图片描述
在这里插入图片描述
在整个ImageNet训练集中对RGB像素值集执行PCA。PCA(主成分分析),PCA 颜色增强的大概含义是,比如说,如果你的图片呈现紫色,即主要含有红色和蓝色,绿色很少,然后 PCA 颜色增强算法就会对红色和蓝色增减很多,绿色变化相对少一点,所以使总体的颜色保持一致。
https://www.codenong.com/78de8ccd09dd2998ddfc/
https://blog.csdn.net/CSDNJERRYYAO/article/details/120068107
https://www.cnblogs.com/zhangleo/p/16076052.html

4.2 Dropout

https://blog.csdn.net/qq_37555071/article/details/107801384

5.实现细节

主要交代了具体的超参数的设置,动量为0.9,权重衰减为0.0005,作者在这个过程中发现权重衰减非常重要,随后作者交代了一个权重初始化。所有的层使用相同的学习率,初始学习率为0.01,每三个回合衰减一次,总共迭代了大概90个epoch

遗留问题

卷积和池化过程中的越界问题怎么处理

参考文献

https://blog.csdn.net/sunshine_youngforyou/article/details/99767600
https://blog.csdn.net/qq_45843546/article/details/124331168
http://www.datalearner.com/blog/1051558919769185(写得很不错)
https://blog.csdn.net/qq_45843546/article/details/124331168

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】Java核心要点总结:62

文章目录 1. 线程中的线程是怎么创建的,是一开始就随着线程池的启动创建好的吗?2. 既然Volatile能够保证变量的可见性,是否意味着基于其的运算是并发安全的3. ThreadLoadl是什么 有哪些使用场景4. ThreadLoadl是怎么解决并发安全的5. 有人说要…

WPF开发txt阅读器3:目录控件

文章目录 目录提取列表控件整改 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录 目录提取 在实现标题类之后,就可以实战演习一番。首先在mainWindow中添加Catalog类 public Catalog catalog;然后更改 然后在标题栏中添加…

【高危】泛微 e-cology9 存在任意用户登录漏洞

漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微e-cology9部分版本中存在前台任意用户登录漏洞,由于系统默认配置固定密钥进行用户身份验证。 当存在/mobile/plugin/1/ofsLogin.jsp文件时(可能通过插件方式安装&#xff0…

TCP/IP详解(一)

TCP/IP协议是Internet互联网最基本的协议,其在一定程度上参考了七层OSI(Open System Interconnect,即开放式系统互联)模型 OSI参考模型是国际组织ISO在1985年发布的网络互联模型,目的是为了让所有公司使用统一的规范来…

基于stata的DID平行趋势检验

前言 DID平行趋势检验定义 定义:评估两变量数据之间是否会存在某种同幅度增减情况的相关关系检验方法 重要性:为何要做平行趋势检验?平行趋势检验在DID模型中是非常重要的一步,用于验证处理组和对照组在干预前的趋势是否平行。只…

微信服务商快速进件,商户自己提交资料,减少工作量

大家好,我是小悟 用好技术,让经营更高效。为了减少服务商工作量,移动端服务商进件来了,分为移动端和管理端。 移动端 包括四大模块,主体资料、经营资料、法人资料和银行账户。 点击顶部步骤条可以切换,…

在IDE中使用altair无法显示绘图结果

同学们以及熟悉Pycharm编辑运行python代码。正如文章末尾给出的pycharm运行altair的建议方法视觉效果一般。 因为数据可视化在IDE实现效果不理想,这是因为altair使用Vega和Vega-Lite语法来创建交互式图表,而IDE无法直接渲染这些图表。 习惯了pycharm的同学是时候考虑…

Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较以及为什么禁止使用double直接构造BigDecimal

场景 阿里Java开发手册嵩山版中明确指出: 1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法 equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度 2、禁止使用构造方法BigDeci…

深度学习简介

什么是深度学习? 一、深度学习–神经网络简介 深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierachical Learning】或者 深度机器学习【Deep Machine Learning】)是一类算法…

CSDN送了我一本书:《写作脑科学》| 记我与写博客

文章目录 收到之前收到之后番外——我与写博客从日记开始写博客至今 收到之前 CSDN有个深读计划的活动,在报名者中抽取一些小伙伴免费送书,但是收到书籍后需要写一篇书评,否则不能继续参加下次的活动。要求写书评可能是出版社或作者希望可以…

Little’s Law 利特尔法则

1 A simple definition: Little’s Law states that the long-term average number of customers in a stable system L L L is equal to the long-term average effective arrival rate, λ \lambda λ, multiplied by the average time a customer spends in the system, …

ISO21434 网络安全验证(八)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 五、输出 一、概述 本条款描述了该项目的车辆级别的网络安全验证活动。该项目被考虑在车辆层面的操作环境以及系列生产的配置。 二、目标 本条款的目的是: 验证网络安全目…

软考A计划-系统架构师-官方考试指定教程-(4/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

建议收藏:超详细ChatGPT(GPT 4.0)论文润色指南+最全提示词/咒语

在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。 本篇文章持续更新,祝大家写作顺利,如果对你有帮助,记得三连! 欢迎大家在评论区补充…

switch语句详细逆向分析

首先需要明确一点switch语句在游戏当中至关重要,而且基本都会使用它来提高效率! 因为我们在找call的时候,如果能够识别出来switch语句,只要找到一个call,后面的就都搞定了 switch:case必须是整数&#xf…

C#,码海拾贝(37)——求解“托伯利兹方程组“的“列文逊方法“之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

【高危】Linux kernel Netfilter UAF漏洞(POC公开)

漏洞描述 Netfilter 是 Linux kernel 的一个子系统&#xff0c;用于提供网络数据包过滤和网络地址转换功能。 Linux kernel 6.3.1及之前版本中&#xff0c;当 Netfilter 处理批量请求以更新 nf_tables 配置时&#xff0c;由于对匿名集合的操作处理不当会导致use-after-free&a…

【Java】Java核心要点总结:61

文章目录 1. java中的线程池是如何实现的2. 创建线程池的几个核心参数3. Java 中线程池的执行流程4. 为什么要使用线程池5. 线程池的拒绝策略 1. java中的线程池是如何实现的 Java 中的线程池是通过 ThreadPoolExecutor 类实现的。ThreadPoolExecutor 继承自 AbstractExecutorS…

chatgpt赋能python:如何快速复制Python库到其他电脑

如何快速复制Python库到其他电脑 作为一名拥有10年Python编程经验的工程师&#xff0c;我深知Python库在项目开发中扮演着非常重要的角色。Python库能够帮助我们快速实现功能、减少重复工作以及提高代码质量。但是&#xff0c;在换电脑或在新的团队合作时&#xff0c;我们常常…

【PWN · ret2libc | Canary】[2021 鹤城杯]littleof

最近比较忙&#xff0c;这道题用了好长时间来debug&#xff0c;甚至贡献了第一次在csdn上提问。。。 目录 前言 一、题目重述&思路分析 二、exp 三、Canary 四、萌新遇到的困难 总结 前言 Canary作为经典且基本的栈保护措施&#xff0c;在后期的题目中必然是基本标…