ImageNet Classification with Deep Convolutional 论文笔记

news2024/11/15 4:41:08

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

    • 标题和作者
    • 摘要
    • 创新点
      • ReLU
      • 多 GPU
      • Dropout
      • 其他
    • 网络结构
      • 输入层(Input layer)
      • 卷积层(C1)
      • 卷积层(C2)
      • 卷积层(C3)
      • 卷积层(C4)
      • 卷积层(C5)
      • 全连接层(FC6)
      • 全连接层(FC7)
      • 输出层(Output layer)


标题和作者

ImageNet Classification with Deep Convolutional Neural Networks,意为使用深度卷积神经网络在 ImageNet 数据集上进行分类,发表于 2012 年。

作者信息:

  • Alex Krizhevsky,本文第一作者,本文提出的网络结构后被称为 AlexNet
  • Ilya Sutskever,本文第二作者,2015 年加入 OpenAI,成为 OpenAI 的联合创始人兼首席科学家。
  • Geoffrey E. Hinton,本文第三作者,2018 年图灵奖得主,神经网络之父,前两位作者的导师。

摘要

We trained a large, deep convolutional neural network to classify the 1.2 million high-resolution images in the ImageNet LSVRC-2010 contest into the 1000 different classes. On the test data, we achieved top-1 and top-5 error rates of 37.5% and 17.0% which is considerably better than the previous state-of-the-art. The neural network, which has 60 million parameters and 650,000 neurons, consists of five convolutional layers, some of which are followed by max-pooling layers, and three fully-connected layers with a final 1000-way softmax. To make training faster, we used non-saturating neurons and a very efficient GPU implementation of the convolution operation. To reduce overfitting in the fully-connected layers we employed a recently-developed regularization method called “dropout” that proved to be very effective. We also entered a variant of this model in the ILSVRC-2012 competition and achieved a winning top-5 test error rate of 15.3%, compared to 26.2% achieved by the second-best entry.

本文提出了一个大型深度卷积神经网络,该网络在 ImageNet LSVRC-2010 比赛任务(120 万张图片的 1000 分类任务)中,取得了 top-1 准确率 62.5%top-5 准确率 83.0% 的好成绩,超越了以往所有的 SOTA 方法。

该网络有 6000 万个参数和 65 万个神经元,由五个卷积层组成,其中一些后面跟着最大池化层,以及三个全连接层和一个最终的 1000 分类的 softmax 层。

为了使训练更快,作者使用 ReLU 作为激活函数(non-saturating neurons),并使用 GPU 加速卷积运算。

为了减少全连接层的过拟合,作者采用了一种新的正则化方法,即 Dropout,实验证明这一方法非常有效。

作者在 ILSVRC-2012 比赛中使用了这个模型的一个变体,并以 84.7% 的 top-5 准确率的好成绩赢得了比赛,该比赛第二名的 top-5 准确率仅为 73.8%

创新点

笔者认为的几个影响比较大的创新点:

  • 使用了 ReLU 作为激活函数,而非传统的 TanhSigmoid 函数。ReLU 未特别压缩输出值的范围(在文中被称为 non-saturating neurons),且运算简单。
  • 将卷积运算置于多 GPU 上进行,大大加快了训练速度(当时的企业普遍还在使用 CPU 或单 GPU 训练模型)。
  • 使用了 Dropout 正则化方法,降低了模型的过拟合风险。

ReLU

ReLU,即 Rectified Linear Unit,是一种激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。相比传统的 TanhSigmoid 函数,ReLU 运算速度更快。

ReLU vs Tanh

在一个 4 层的卷积网络中使用 ReLU 函数在 CIFAR-10 数据集上达到 25% 的训练错误率要比在相同网络相同条件下使用 Tanh 函数快 6 倍。

多 GPU

本文的模型使用两个 GTX 580 3GB GPU 进行训练。

Dropout

Dropout 是一种正则化方法,具体做法是在训练过程中,随机将一些神经元的输出置为 0。

笔者对 Dropout 的理解是:类似于 Bagging,每次的训练数据事实上仅经过了所有的非 Dropout 神经元和一部分 Dropout 神经元,相当于隐式地训练了 2 N 2^N 2N N N N 为 Dropout 神经元个数) 个子网络(尽管这些模型不是相互独立的),最终的输出是所有节点输出的综合值(也即最终网络是所有子网络的综合)。

其他

除此之外,本文还有一些其他的创新点,比如:

  • Local Response Normalization,即局部响应归一化,这是一种对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,这样可以使得模型对于输入的微小变化不敏感,从而提高模型的泛化能力。
  • Overlapping Pooling,即重叠池化,池化窗口大于步长,每次池化都有重叠部分,相比传统池化方法有更好效果,能够降低模型的过拟合风险。
  • 一些新的数据增强方法。

网络结构

AlexNet

输入层(Input layer)

输入层的输入是 224x224x3 的图片,即 224x224 的彩色图片,其中 3 通道分别为 RGB 三个通道。

卷积层(C1)

卷积(11x11)–>ReLU–>局部响应归一化(LRN)–>最大池化

卷积(11x11):卷积核大小为 11x11,步长为 4,输出通道数为 96,即输出为 55x55x96 的特征图,分为两组,每组为 55x55x48,分别位于单个 GPU 上。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

局部响应归一化(LRN)

b x , y i = a x , y i / ( k + α ∑ j = m a x ( 0 , i − n / 2 ) m i n ( N − 1 , i + n / 2 ) ( a x , y j ) 2 ) β b_{x,y}^i=a_{x,y}^i/\left(k+\alpha\sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^j)^2\right)^\beta bx,yi=ax,yi/ k+αj=max(0,in/2)min(N1,i+n/2)(ax,yj)2 β

其中 a x , y i a_{x,y}^i ax,yi 表示第 i i i 个通道的第 ( x , y ) (x,y) (x,y) 个像素点的输出, N N N 表示总的通道数, n n n 表示归一化的范围, k k k α \alpha α β \beta β n n n 是超参数,本文中取 k = 2 k=2 k=2 α = 1 0 − 4 \alpha=10^{-4} α=104 β = 0.75 \beta=0.75 β=0.75 n = 5 n=5 n=5

最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 27x27x48。

卷积层(C2)

卷积(5x5)–>ReLU–>局部响应归一化(LRN)–>最大池化

卷积(5x5):卷积核大小为 5x5,步长为 1,padding 为 2,每组输出通道数为 128,即每组输出为 27x27x128 的特征图。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

局部响应归一化(LRN) k = 2 k=2 k=2 α = 1 0 − 4 \alpha=10^{-4} α=104 β = 0.75 \beta=0.75 β=0.75 n = 5 n=5 n=5

最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 13x13x128。

卷积层(C3)

卷积(3x3)–>ReLU

卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 192,即每组输出为 13x13x192 的特征图。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

卷积层(C4)

卷积(3x3)–>ReLU

卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 192,即每组输出为 13x13x192 的特征图。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

卷积层(C5)

卷积(3x3)–>ReLU–>最大池化

卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 128,即每组输出为 13x13x128 的特征图。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 6x6x128。

全连接层(FC6)

全连接(卷积)–>ReLU–>Dropout

全连接(卷积):输入为 6x6x256,使用 4096 个 6×6×256 的卷积核进行卷积,效果等同于全连接,即输出为 1x1x4096。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

Dropout:在训练过程中,随机将一些神经元的输出置为 0。

全连接层(FC7)

全连接(卷积)–>ReLU–>Dropout

全连接(卷积):输入为 1x1x4096,输出也为 1x1x4096。

ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

Dropout:在训练过程中,随机将一些神经元的输出置为 0。

输出层(Output layer)

全连接(卷积)–>Softmax

全连接(卷积):输入为 1x1x4096,输出为 1x1x1000。

Softmax:将输出转化为概率分布。

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

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

相关文章

Leetcode23-数组能形成多少数对(2341)

1、题目 给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤: 从 nums 选出 两个 相等的 整数 从 nums 中移除这两个整数,形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长…

SpringMVC参数接收见解4

# 4.参数接收Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换…

第二证券:大盘探底回升走出底部还看成交量配合

持续震动数日后,大盘再现探底上升走势。 上证指数周二小幅低开后窄幅震动,午后快速回落改写本轮回调新低后,有资金开始出手介入,尾盘指数翻红。深证成指同样是在午后呈现探底上升走势,最终重回5日均线上方。截至收盘&…

mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径

一、第一步:下载步骤 下载链接:MySQL :: Download MySQL Installer 选择版本8.0.35,社区版, 点击 Download 下载 安装包 二、第二步:安装步骤 添加环境变量,C:\Program Files\MySQL\MySQL Server 8.0\bin 可以点开MySQL 8.0 Co…

如何用AI提高论文阅读效率?

已经2024年了,该出现一个写论文解读AI Agent了。 大家肯定也在经常刷论文吧。 但真正尝试过用GPT去刷论文、写论文解读的小伙伴,一定深有体验——费劲。其他agents也没有能搞定的,今天我发现了一个超级厉害的写论文解读的agent &#xff0c…

HNU-模式识别-作业2-面向应用分类系统

模式识别-作业2 计科210X 甘晴void 202108010XXX 【具体实现思路是按照去年数学建模国赛题来做的,就放个思路,完整不放全了】 题目: 查阅文献资料,构建一个面向应用的分类系统。 要求: 至少3页A4纸,文…

机器人制作开源方案 | AI校园服务机器人

作者:李强、李振宁、毛维雷、李文文、张奥 单位:山西能源学院 指导老师:姚志广、程晟 在这个科技飞速发展的时代,在工业智造、人工智能的飞速发展中,出现了越来越多的智能化机械装置,也有许多创新类的比赛…

STM32F103标准外设库—— 新建工程与库函数(四)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

力扣刷MySQL-第二弹(详细解析)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

基于Yolov5+Deepsort+SlowFast算法实现视频目标识别、追踪与行为实时检测

前言 前段时间打算做一个目标行为检测的项目,翻阅了大量资料,也借鉴了不少项目,最终感觉Yolov5DeepsortSlowfast实现实时动作检测这个项目不错,因此进行了实现。 一、核心功能设计 总的来说,我们需要能够实现实时检测视…

SAP PI之Rest adapter

一,简介 REST风格接口是以http为传输协议,以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程,一个REST接口包含的信息有:服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…

debian12部署Gitea服务之二——部署git-lfs

Debian安装gitlfs: 先更新下软件包版本 sudo apt update 安装 sudo apt install git-lfs 验证是否安装成功 git lfs version cd到Gitea仓库目录下 cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git 执行lfs的初始化命令 git lfs install客户机Windows端在官网下载并安装Git-Lfs 再…

编译原理1.3习题 程序设计语言的发展历程

图源:文心一言 编译原理习题整理~🥝🥝 作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡 第1版:自…

内存操作函数

一、memcpy函数 memcpy(void * destination, const void * source, num)表示将source中的前num个字符复制到destination中,不允许source和destination的内存区域重叠memcpy(a, bn1, n2)表示从b中第n11个字符开始复制,复制n2个字符到a中为了防止溢出&…

框架基础-Maven+SpringBoot入门

框架基础 Maven基础 Maven概述 Maven是为Java项目提供项目构建和依赖管理的工具 Maven三大功能 - 项目构建构建:是一个将代码从开发阶段到生产阶段的一个过程:清理,编译,测试,打包,安装,部署…

给WordPress网站增加一个带时间的led广告牌

WordPress 后台》外观》小工具》自定义html》添加到合适位置 其他系统可自行添加合适位置 <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;hei…

Spring IOC 之加载 BeanDefinition

1、前言 前面的文章我们已经对IOC之Spring统一资源加载策略有了一定的了解&#xff0c;本文我们将探讨Spring IOC 加载 BeanDefinition的整个过程。 我们先先看一段熟悉的代码&#xff1a; ClassPathResource resource new ClassPathResource("bean.xml"); // &l…

Java NIO (二)NIO Buffer类的重要方法(备份)

1 allocate()方法 在使用Buffer实例前&#xff0c;我们需要先获取Buffer子类的实例对象&#xff0c;并且分配内存空间。需要获取一个Buffer实例对象时&#xff0c;并不是使用子类的构造器来创建&#xff0c;而是调用子类的allocate()方法。 public class AllocateTest {static…

Flutter GetX 之 国际化

今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大家起到了…

CAN 节点状态转换

CAN节点 按照错误严重程度可分为三种不同的状态 主动错误状态&#xff08;Error Active&#xff09; 被动错误状态&#xff08;Error Passive&#xff09; 总线关闭状态&#xff08;Bus Off&#xff09; 存在两种错误计数器 发送错误计数值 TEC : Transmit Error Counter …