[DL]深度学习_AlexNet

news2025/4/17 0:12:26

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.coloradmin.cn/o/1348678.html

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

相关文章

Javascript 循环结构while do while for实例讲解

Javascript 循环结构while do while for实例讲解 目录 Javascript 循环结构while do while for实例讲解 一、while语句 二、do…while语句 三、for循环 疑难解答 我们从上一节课知道&#xff0c;JavaScript循环结构总有3种&#xff1a; &#xff08;1&#xff09;while语…

S7.Net与西门子PLC通讯

开发环境准备 同时由于设备还未采购,没有设备进行测试开发,会安装一个仿真模拟器进行调试。(真心的,谁想到还能仿真模拟设备) 需要安装的软件包括 ◦TIA Portal V14 ◦S7-PLCSIM V14 ◦NetToPLCsim-S7o-v-1-2-2-0 TIA Portal 西门子官方管理设备数据块的客户端,每一…

【网络安全】upload靶场pass11-17思路

目录 Pass-11 Pass-12 Pass-13 Pass-14 Pass-15 Pass-16 Pass-17 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x…

盾构机数据可视化监控平台 | 图扑数字孪生

2002 年,中国 863 计划把盾构机列为国家关键技术&#xff0c;以国家力量为主导&#xff0c;集中力量进行盾构机专项研究。在 2008 年&#xff0c;中国成功研制出属于自己的国产盾构机——中国中铁一号&#xff0c;同时还打通了天津地铁 1500m 的隧道。此举更彻底地打破了国内盾…

基于Java SSM框架实现企业销售人员培训系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现企业销售人员培训系统演示 摘要 目前由于我国企业销售人员培训系统的规模较小,同发达国家相比,人员培训比重始终偏低,用户意识比较低下,为进一步提高用户的销售意意识的提升,我觉得开发一套关于企业销售人员培训系统很人必要,虽然许多企业主动选用人员培…

测试新字符设备驱动代码

一. 简介 上一篇文章编写了新字符设备驱动框架的代码&#xff0c;并编写了 LED灯IO初始化工作&#xff0c;也编写了Led的开与关函数。文章地址如下&#xff1a; 向新字符设备驱动代码框架中添加Led功能函数-CSDN博客 本文对所完成的新字符设备驱动代码进行测试。通过测试程…

[电磁学]大学物理陈秉乾老师课程笔记

主页有博主其他上万字的精品笔记,都在不断完善ing~ 第一讲 绪论,库仑定律 主要讲解了电磁学中的库伦定律和电场的相关概念&#xff0c;介绍了电荷和电磁相互作用的规律&#xff0c;并讲解了电场强度和电势的概念。 03:14 &#x1f393; 库伦定律&#xff1a;电势能与电荷的关…

学习华为企业无线网络,有这篇文章就够了。

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; •以有线电缆或光纤作为传输介质的有线局域网应用广泛&#xff0c;但有线传输介质的铺设成本高&#xff0c;位置固定&#xff0c;移动性差。随着人们对…

智安网络|实现安全与网络功能一体化:SASE的全新安全策略

随着企业信息化和数字化程度的不断提升&#xff0c;网络安全面临着前所未有的挑战。传统的网络安全模式已经无法满足日益复杂的安全需求。在这一背景下&#xff0c;安全访问服务边缘&#xff08;SASE&#xff09;崭露头角&#xff0c;并逐渐成为新一代网络安全架构的关键概念。…

丢失VCRUNTIME140_1.dll怎么办,多种dll问题解决方法分享

丢失VCRUNTIME140_1.dll是许多计算机用户经常遇到的问题之一。VCRUNTIME140_1.dll是一个动态链接库文件&#xff0c;它是Visual C Redistributable Package的一部分。Visual C Redistributable Package是微软为了支持运行使用Visual C编写的软件而提供的一个可再发行组件包。当…

SpringCloud-高级篇(十)

&#xff08;1&#xff09;单节点Redis问题 缓存大家都不陌生&#xff0c;在企业里面只要做缓存都会用到Redis&#xff0c;我们在使用的时候都是做的单节点部署&#xff0c;单节点部署是存在一些问题的&#xff0c;分布式缓存正是Redis的集群&#xff0c;正是为了解决单节点部署…

Linux调试工具—gdb

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;HEART BEAT—YOASOBI 2:20━━━━━━️&#x1f49f;──────── 5:35 &#x1f504; ◀️ ⏸ ▶️ ☰ …

Django 学习教程- Django模板(Template)

系列 Django 学习教程-介绍与安装-CSDN博客 Django 学习教程- Hello world入门案例-CSDN博客 前言 在上一章节中我们使用django.http.HttpResponse() 来输出 "Hello World&#xff01;"。该方式将数据与视图混合在一起&#xff0c;不符合 Django 的 MTV 思想。 本…

【Java进阶篇】JDK新版本中的新特性都有哪些

JDK新版本中的新特性都有哪些 ✔️经典解析✔️拓展知识仓✔️本地变量类型推断✔️Switch 表达式✔️Text Blocks✔️Records✔️封装类✔️instanceof 模式匹配✔️switch 模式匹配 ✅✔️虚拟线程 ✔️经典解析 JDK 8中推出了Lambda表达式、Stream、Optional、新的日期API等…

c++_08_操作符重载(操作符重定义) 友元

1 操作符标记 单目操作符&#xff1a; - -- * -> 等 双目操作符&#xff1a; - > < - << >> 等 三木操作符&#xff1a; ? : 2 操作符函数 2.0 前言 C编译器有能力把一个由操作…

Ubuntu之修改时区/时间

1、查看当前时间及时区状态 sudo timedatectl status # 显示当前时区为Asia/Shanghai 2、查看当前系统时间 sudo date 3、查看当前系统时间及时区 sudo date -R # 显示当前时间及对应时区&#xff0c;时区为“0800”北京时区 4、修改硬件时间 修改日期格式&#xff1a…

论虚继承的作用

虚继承 实验介绍 在上一小节中学习了多继承与多重继承,实际在开发的时候可能会遇到一种情况,既用到了多继承又用到了多重继承,这种继承方式通常又称为菱形继承。但这样一来就会产生新的问题,过多消耗空间。希望通过本小节学习能知道菱形继承以及产生的问题和解决方式。 …

buuctf-Misc 题目解答分解103-105

103.[GKCTF 2021]签到 追踪流发现类似flag 字符 f14g 下面有大量的是16进制字符 64306c455357644251306c6e51554e4a5a3046355355737764306c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e655…

动态内存管理篇

为什么要动态内存分配&#xff1f; 之前&#xff0c;我们向内存申请空间&#xff0c;有两种方式&#xff0c;一种是定义变量&#xff0c;一种是建立数组&#xff1b;但是&#xff0c;这两种方式都有缺陷&#xff0c;创建的空间大小是固定的&#xff0c;在程序的运行过程中&…

操作系统(Operator System)

这里写目录标题 1. 什么是操作系统2. 主要功能3. 计算机的层状结构4. 什么叫做管理5. 总结6. 为什么要有操作系统7. 最后 1. 什么是操作系统 操作系统&#xff08;英语&#xff1a;Operating System&#xff0c;缩写&#xff1a;OS&#xff09;是一组主管并控制计算机操作、运…