[DL]深度学习_AlexNet

AlexNet网络详解

目录

一、AlexNet

 1、详细介绍

2、网络框架

二、网络详解 

1、首次使用ReLu激活函数

2、模型基本结构与双GPU实现

 3、局部响应归一化(LRN)

4、重叠池化(Overlapping Pooling)

5、数据增强

6、Dropout


一、AlexNet

 1、详细介绍

        AlexNet是一种经典的卷积神经网络模型,由Alex Krizhevsky、Ilya Sutskever和Geoffrey E. Hinton于2012年提出。它是第一个在ImageNet比赛中获得冠军的深度神经网络模型,引领了深度学习在计算机视觉领域的发展。

AlexNet的结构包含了8个图层,其中前5个是卷积层,后3个是全连接层。下面是对每个图层的详细介绍:

  1. 输入层(Input Layer):接受输入的图像,并进行预处理。ImageNet数据集的图像大小为224x224x3,即224个像素的高度、224个像素的宽度和3个颜色通道(RGB)。

  2. 卷积层1(Convolutional Layer 1):使用96个大小为11x11x3的卷积核对图像进行卷积操作,步长为4,不进行零填充(zero-padding)。这一层的目的是提取低级特征,例如边缘和纹理等。

  3. 激活函数1(Activation Function 1):在卷积层之后,通过ReLU(线性整流函数)激活函数处理卷积层的输出。ReLU函数将所有负值变为零,保留正值不变。这一步帮助网络更好地拟合数据。

  4. 池化层1(Pooling Layer 1):使用大小为3x3的最大池化操作,步长为2。这一步有助于减小特征图的尺寸,并且在一定程度上保留重要的特征。

  5. 卷积层2(Convolutional Layer 2):使用256个大小为5x5x48的卷积核对特征图进行卷积操作,步长为1,零填充。这一层进一步提取高级特征。

  6. 激活函数2(Activation Function 2):同样使用ReLU函数对卷积层输出进行激活。

  7. 池化层2(Pooling Layer 2):同样使用大小为3x3的最大池化操作,步长为2。这一步继续减小特征图的尺寸。

  8. 卷积层3(Convolutional Layer 3):使用384个大小为3x3x256的卷积核对特征图进行卷积操作,步长为1,零填充。这一层进一步提取高级特征。

  9. 激活函数3(Activation Function 3):同样使用ReLU函数对卷积层输出进行激活。

  10. 卷积层4(Convolutional Layer 4):使用384个大小为3x3x192的卷积核对特征图进行卷积操作,步长为1,零填充。这一层继续提取高级特征。

  11. 激活函数4(Activation Function 4):同样使用ReLU函数对卷积层输出进行激活。

  12. 卷积层5(Convolutional Layer 5):使用256个大小为3x3x192的卷积核对特征图进行卷积操作,步长为1,零填充。这一层继续提取高级特征。

  13. 激活函数5(Activation Function 5):同样使用ReLU函数对卷积层输出进行激活。

  14. 池化层3(Pooling Layer 3):同样使用大小为3x3的最大池化操作,步长为2。这一步再次减小特征图的尺寸。

  15. 全连接层1(Fully Connected Layer 1):有4096个神经元,将池化层输出的特征图展平为一个向量,并通过该层进行分类。

  16. 全连接层2(Fully Connected Layer 2):有4096个神经元,同样用于分类。

  17. 输出层(Output Layer):有1000个神经元,代表了ImageNet数据集的1000个类别。通过Softmax函数将全连接层2的输出转化为概率分布,得到最终的分类结果。

        AlexNet通过使用多个卷积层和全连接层,以及采用ReLU激活函数和池化操作,能够在ImageNet数据集上取得非常好的分类性能,标志着深度学习在计算机视觉领域的重要突破。

notes:

  • 首次将深度卷积神经网络用在图像分类上
  • 首次利用GPU进行网络加速训练
  • 使用了ReLu激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数,Sigmoid激活函数求导复杂并且网络比较深的时候会引起梯度消失
  • 使用了LRN局部响应归一化
  • 在全连接层的前两层中使用了Dropout随机失活神经元操作,以减少过拟合

2、网络框架

        上图框架因为作者使用了两块GPU并行计算,完全相同只需要看一条路径。

经卷积后的矩阵尺寸大小计算公式为: 

N=\frac{(W-F+2P)}{S}+1

其中输入图片大小W\times W,卷积核大小F\times F,步长S,填充的像素数量P。

二、网络详解 

1、首次使用ReLu激活函数

        激活函数必须是非线性的,非线性的激活函数给神经网络模型引入了非线性,才能解决非线性的问题。传统的Sigmoid激活函数和Tanh都是饱和激活函数,输入的x过小或者过大就会被局限在一个很小的区域内,不能再进行变化,也就是梯度消失问题。

        ReLu激活函数在x<0时全部置0,x>0时等于x,而且易于求导。只要输出大于0就可以回传梯度,可以大大加快学习速度。

        使用ReLu激活函数比使用Tanh激活函数会快6倍。

2、模型基本结构与双GPU实现

        在2012年时受限于硬件算力发展,Alex将模型并行放在了双GPU上,每个GPU各自拥有一半神经元,这两个GPU只在部分层有显存读取和通信。

各层参数数量和运算次数: 

 3、局部响应归一化(LRN)

        局部响应归一化(Local Response Normalization,LRN)是一种在卷积神经网络中常用的归一化操作。它的主要作用是增强模型的泛化能力和稳定性。

        LRN操作是在卷积层后的激活函数之前应用的。它基于局部区域内的活跃度进行归一化,以调整神经元的响应程度。具体来说,对于卷积层的输出特征图中的每个位置,LRN操作将该位置的激活值除以它的局部邻域的平方和。这种归一化操作可以通过以下公式表示:

b_{x,y} = \frac{ a_{x,y}}{ (k + alpha * sum(a_{x,y}^2))}

其中,a_{x,y}代表卷积层输出特征图中位置(x,y)上的激活值,b_{x,y}代表归一化后的激活值,sum(a_{x,y}^2)表示局部邻域内激活值的平方和,k是一个较小的正数,alpha是一个正的缩放参数。

        LRN操作的主要目的是增强对比度,即通过抑制较大的响应值和增强较小的响应值,使得相邻神经元之间的响应差异更加明显。这有助于提高模型对于局部模式的感知能力,并且增强了鲁棒性和泛化能力。

        需要注意的是,LRN操作主要在早期的卷积网络中使用,如AlexNet和GoogLeNet等,在后续的一些网络结构中逐渐被更加有效的归一化方法如批归一化(Batch Normalization)所取代。批归一化通过对每个小批次的数据进行归一化,实现了更好的效果和稳定性。因此,尽管LRN是一种常用的操作,但在现代的深度学习模型中已经较少使用。

notes:

        每个色块代表不同通道维度的特征图,通过将不同通道的特征图叠在一起,某一像元的值通过与相邻通道同一位置的像元值进行计算得到局部响应归一化的值。

        同一位置不同通道中不需要太高激活的神经元,同一位置有太高激活值就会压制其他通道的同一位置的值,起到侧向抑制的效果。 

4、重叠池化(Overlapping Pooling)

        最大池化的窗口在滑动的时候,每个窗口之间是不会重叠的,AlexNet提出,如果池化步长小于窗口尺寸大小,也就是窗口之间会有重叠的时候,可以防止过拟合。

        事实证明后续并没有广为采用,AlexNet为以后的网络设计进行了探索。 

5、数据增强

AlexNet是个较为庞大深层的模型,参数量多,有过拟合的风险。

  • 水平翻转
  • 随机裁剪、平移变换
  • 颜色、光照变换(PCA主成分分析,求出RGB3x3协方差矩阵的特征值特征向量,对颜色在主成分上加了个随机的变换)

扩充训练集防止过拟合。

6、Dropout

        在训练每一步的时候,随机地关闭(输出为0)一些神经元,得不到反向传播也得不到训练,每一个神经元都有0.5的概率被关闭,在下一个batch的时候又重新随机关闭一部分神经元。

        预测阶段保留所有神经元,预测结果乘以0.5

        每一个神经元在每一轮batch中都有概率被关闭,每一次batch中启用的神经元都不相同,导致每一个神经元都要与不同神经元相协作,每一轮batch的训练时模型的状态都不相同,打破了神经元之间的联合依赖适应性,防止过拟合。

notes:

        多个模型集成可以有效防止过拟合,但对于大型神经网络来说并不经济

Dropout为什么可以减少过拟合:

  • 模型集成,P=0.5,意味着有2^{n}个共享权重的潜在网络
  • 记忆随机抹去,不再强行记忆
  • Dropout减少神经元之间的联合依赖性,每个神经元都充当重要角色
  • 每个神经元都要与来自另一个随机网络结构的神经元协同工作
  • 总可以找到一张图片,输入网络后这些神经元的输出就是Dropout之后的输出,有些神经元是关闭的,有些是正常的
  • 稀疏性

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深入浅出RocketMQ原理及实战】「云原生升级系列」打造新一代云原生“消息、事件、流“统一消息引擎的融合处理平台

打造新一代云原生"消息、事件、流"统一消息引擎的融合处理平台 云原生架构RocketMQ的云原生架构实现RocketMQ的云原生发展历程互联网时期的诞生无法支持云原生的能力 云原生阶段的升级云原生升级方向促进了Mesh以及多语言化发展可分合化的存算分离架构存储分离架构的…

RabbitMQ核心概念记录

本文来记录下RabbitMQ核心概念 文章目录 什么叫消息队列为何用消息队列RabbitMQ简介RabbitMQ基本概念RabbitMQ 特点具体特点包括 Rabbitmq的工作过程RabbitMQ集群RabbitMQ 的集群节点包括Rabbit 模式大概分为以下三种单一模式普通模式镜像模式 本文小结 什么叫消息队列 消息&am…

前后端分离架构的特点以及优缺点

文章目录 一、前后端不分离架构(传统单体结构)1.1 什么是前后端不分离1.2 工作原理1.3 前后端不分离的优缺点1.4 应用场景 二、前后端分离架构2.1 为什么要前后端分离2.2 什么是前后端分离2.3 工作原理2.4 前后端分离的优缺点 参考资料 一、前后端不分离架构(传统单体结构) 首…

虚拟专线网络(IP-VPN)

虚拟专线网络(IP-VPN)&#xff0c;因为它的安全性和可靠性。通过亚洲领先的 IP VPN 提供商。享受更高的可管理性和可扩展性&#xff0c;在多个站点之间交付 IP 流量或数据包&#xff0c;拥有亚太地区最大的 IP 骨干网。 1&#xff0c;保证正常运行时间&#xff0c;在网络链路发…

【兔子王赠书第14期】《YOLO目标检测》涵盖众多目标检测框架,附赠源代码和全书彩图!

文章目录 写在前面YOLO目标检测推荐图书本书特色内容简介作者简介 推荐理由粉丝福利写在后面 写在前面 小伙伴们好久不见吖&#xff0c;本期博主给大家推荐一本关于YOLO目标检测的图书&#xff0c;该书侧重目标检测的基础知识&#xff0c;包含丰富的实践内容&#xff0c;是目标…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用&#xff1f; AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

气象预报与计算机技术:深度融合与未来展望

气象预报与计算机技术:深度融合与未来展望 一、引言 气象预报,作为人类对自然界气象变化的探索与预测,随着时间的推移和技术的进步,已经逐渐从单纯的经验模式转变为依赖于精密的仪器与强大的计算机技术的科学预测。在本文中,我们将深入探讨气象预报与计算机技术之间的密…

UCi数据集处理技巧记录

如何起步使用UCI数据集 这里记录一下如何把带分号的数据变成经常使用的csv形式。这里使用wine的例子 https://archive.ics.uci.edu/dataset/186/winequality 原始数据 Wine UCI数据操作 这种带分号的使用python的不好阅读&#xff0c;可以尝试以下步骤&#xff1a; 转变为t…

7.11全排列(LC46-M)

算法&#xff1a; 排列和组合很像&#xff0c;但是有顺序。 还是用回溯算法。 与组合不同之处&#xff08;无startindex&#xff0c;有used数组&#xff09;&#xff1a; 首先排列是有序的&#xff0c;也就是说 [1,2] 和 [2,1] 是两个集合。 可以看出元素1在[1,2]中已经使…

Vue.js和Node.js的关系--类比Java系列

首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到&#xff0c;node.js是基础&#xff0c;提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式&#xff0c;以加速开发。

Linux学习笔记(一)

如果有自己的物理服务器请先查看这篇文章 文章目录 网卡配置Linux基础指令ls:列出目录内容cd(mkdir.rmkdir): 切换文件夹(创建,删除操作)cp:复制文件或目录mv:文件/文件夹移动cat:查看文件vi:文件查看编辑man:查看命令手册more: 查看文件内容less : 查看文件内容 ps: 显示当前进…

简单Diff算法

简单Diff算法 渲染器的核心 Diff算法 解决的问题 比较新旧虚拟节点的子节点&#xff0c;实现最小化更新。 虚拟节点key属性的作用 就像虚拟节点的“身份证号”&#xff0c;在更新时&#xff0c;渲染器会通过key属性找到可复用的节点&#xff0c;然后尽可能地通过DOM移动操…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系&#xff1b; 数据库注入&#xff1a;access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入&#xff1a;数字型、字符型、搜索型、加密型&#xff08;base63 json&#xff09;等提交方式注入&#xff1a;get、post、…

Javaweb-servlet

一、servlet入门 1.Servlet介绍 (1)什么是Servlet Servlet是Server Applet的简称&#xff0c;是用Java编写的是运行在 Web 服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#…

【Unity动画系统】Animator有限状态机参数详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【DevOps 工具链】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境&#xff08;以php7.0为例 &#xff09;3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

Java基础语法(注释,关键字,字面量,变量,数据类型,标识符,键盘录入,IDEA安装,类,模块,项目)

文章目录 day02 - Java基础语法1. 注释使用的技巧注意点 2. 关键字2.1 概念2.2 第一个关键字class 3. 字面量区分技巧 4. 变量4.1 什么是变量&#xff1f;4.2 变量的定义格式4.2.1 格式详解4.2.2 常用的数据类型4.2.3 变量的注意事项 4.3 变量的练习 5. 数据类型5.1 Java语言数…

机器学习作业--PCA

目录 特征约减&#xff1a; 为什么进行特征约减&#xff1f; 怎么获得更具有代表性的数据&#xff1f; 怎么找到主成分&#xff0c;满足上述条件&#xff1f; 代码&#xff1a; 学习资料&#xff1a;PCA算法 - 知乎 (zhihu.com) 特征约减&#xff1a; 将高维的特征向量X…

【Qt之Quick模块】6. QML语法详解_3 QML对象特性

概述 每一个QML对象类型都包含一组已定义的特性。当进行实例时都会包含一组特性&#xff0c;这些特性是在对象类型中定义的。 一个QML文档中的对象类型声明了一个新的类型&#xff0c;即实例出一个类型。 其中包含以下特性。 the id attribute &#xff1a; id特性property a…

vmware部署docker+springboot+MySQL(超详细)

一、前期准备 (一)安装jdk #docker search openjdk #docker pull openjdk:8 (二)确认网络 如果局域网其他终端(如手机访问),虚拟机网络连接需要选择《桥接》模式,而且,需要使用有线连接,不能使用Wi-Fi,切忌切忌! 并且要选择实际的那个有线连接。比如我这里是“R…