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

深度学习奠基作 AlexNet 论文阅读笔记(2025.2.25)

文章目录

    • 训练数据集
    • 数据预处理
    • 神经网络模型
    • 模型训练
    • 正则化技术
    • 模型性能
    • 其他补充

训练数据集

  • 模型主要使用2010年和2012年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)提供的 ImageNet 的子集进行训练,这些子集包含120万张图像。
  • 最终,模型还使用2009年秋天版本的完整 ImageNet 数据集进行了训练,该数据集包含8900万张图像,分属于10184个类别。数据集中一半的图像用于训练,另一半用于测试。

数据预处理

  • 图像裁剪:因为模型需要固定大小的图像输入,因此首先将数据集中的图像的短边缩放到 256 个像素,再从得到的图像中裁剪出中间的 256 × 256 的图像块。
  • 像素处理:从每张图像的像素中减去了所有图像中该像素的平均值。这样的处理即对像素数据进行了归一化,可以加速模型的训练并使得训练更加稳定。
  • 数据增强
    • CPU运行的数据增强AlexNet 使用了两种计算量都很低的数据增强方式,所以增强后的图像无需存储在计算机的硬盘中备用。数据增强过程使用 Python 进行编程,在CPU上运行。由于数据增强无需使用正在训练模型的GPU,因此作者们认为数据增强是“计算免费”的,即不会影响模型的训练过程。
    • 两种数据增强方式
      • 图像平移和水平翻转:从 256 × 256 的图像中提取正中央和四个角的 224 × 224 的图片块及其水平翻转得到的图片块(共十张),并最终平均网络的 Softmax 对十张新图片的分类结果得到最终的分类结果。作者们发现如果不这样做,模型就会产生严重的过拟合。
      • 改变图像中RGB通道的强度:对整个 ImageNet 训练集中的RGB像素值执行主成分分析(PCA),作者们发现这种方式可以降低模型的分类错误率。

备注:由于GPU技术的发展比CPU快多了,因此如果从现在的角度看,在CPU上做数据增强反而会成为模型效率的瓶颈。

神经网络模型

  • 模型主要特点:非常大且非常深,是截至当时最大的卷积神经网络。
  • 模型参数量6000万 参数和 65万 神经元。
  • 模型基本结构
    • 神经网络层构成:包含五个卷积层(一些卷积层带有最大池化层)、三个全连接层和一个最终的 1000-way 的 Softmax 层。
    • 卷积核情况:第一个卷积层的卷积核大小是 11 × 11 × 3,个数为96个,步长为5;第二个卷积层的卷积核大小为 5 × 5 × 48,个数为256个;第三个卷积层的卷积核大小为 3 × 3 × 256,个数为 384 个;第四卷积层有 384 个大小为 3 × 3 × 192 的核;第五个卷积层有 256个 3 × 3 × 192 的核。
    • 全连接层情况:每个全连接层都有4096个神经元。
  • 层叠池化方法:作者们发现层叠池化可以略微降低模型分类的错误率,但是也会使得模型会变得略微难以收敛。

备注

  • AlexNet 中包含的两个隐藏的全连接层是其性能的一大瓶颈,也是其设计的缺陷。现在的CNN不会使用那么大的全连接层,因此Dropout的使用减少了,反而是循环神经网络系列的模型使用 Dropout 更多。
  • 层叠池化方法在后续的卷积神经网络中已经基本上没有继续使用了。

模型训练

  • 激活函数:使用 ReLU 作为激活函数,文中称为一种非饱和神经元,用于加速训练过程。作者们认为相较于当时主流的激活函数 tanhReLU 激活函数可以大大加快模型的训练过程。在模型中,每一个卷积层和全连接层的输出都使用了 ReLU 激活函数进行处理。
  • 训练设备:使用GPU进行高效的卷积操作。具体而言,使用的是两个型号为 GTX 580 的GPU,两个GPU的显存都是 3GB
  • 分布式训练
    • 基本模式:受限于GPU的显存,作者们将模型分布在两个GPU上进行训练。作者们将模型的卷积核对半分到两个GPU上,且两个GPU只在模型中的某些层进行交互。作者们发现使用双GPU的网络训练时间比使用单GPU的网络更快一些。
    • 两个GPU训练结果的区别:作者们最后发现第一个GPU对颜色敏感,而第二个GPU对颜色不敏感,并且每一次训练模型都是这样,他们不清楚是什么原因。
  • 优化器
    • 优化器类型:使用随机梯度下降优化器(SGD)进行模型训练。
    • 优化器超参数设置:批次大小设置为 128,动量设置为 0.9,权重衰减设置为 0.0005。作者们发现少量的权重衰减非常重要,因为减少了模型的训练误差。所有的层采用相同的学习率,初始化为 0.01,当验证错误率随着学习率的提高而升高时,将学习率除以 10。现在设置模型的学习率时,往往从小到大,然后慢慢减小。
  • 模型初始化
    • 权重初始化:以标准差为 0.01 的零均值高斯分布来初始化模型每一层的权重。
    • 偏置初始化:用常数 1 来初始化第二、第四和第五卷积层以及全连接隐藏层中的神经元偏置,剩余层的偏置初始化为 0。作者们认为这样的偏置设置可以为 ReLU 提供积极的输入来加速早期的学习。
  • 迭代次数和训练时间:迭代了 90 次,总共花费了五到六天的时间进行模型训练。

备注

  • 现在看起来,使用 ReLU 作为激活函数并没有比其他的激活函数对模型训练有多强的加速效果,只是单纯因为它足够简单。
  • 在目前看来,将 AlexNet 拆分到两个GPU上进行训练,这个非常工程化的细节并不是特别重要。并且,实际上 在代码编写得好的情况下,使用一个 GTX 580 GPU也是可以训练模型的。
  • 当年SGD并不是主流的模型训练器,因为其调参过程相对而言比较困难。但是现在SGD已经是最主流的模型学习器。
  • 权重衰减实际上就是L2正则项,其不是加在模型上,而是优化算法上。
  • 现在设置模型优化器的学习率时,往往从小到大,然后慢慢再减小,类似于一个余弦曲线。

正则化技术

  • Dropout
    • 功能和原理:用于缓解全连接层的过拟合现象。对每一个隐藏神经元,有 0.5 的概率将其输出设置为 0,使得它们不参与前向传播和反向传播过程。在测试阶段,将所有神经元的输出都乘 0.5。作者们发现如果不使用 Dropout,模型就会存在严重的过拟合现象,但是 Dropout 也会使得模型需要的迭代次数翻倍。
    • 文中的观点:作者们认为,在处理模型的输入时,增加了 Dropout 之后相当于每一次都是不同的神经网络,这样迫使模型学习更加稳健的特征。
  • 局部响应归一化:一种正则化方法,作者们发现使用了该归一化方法也可以降低模型分类的错误率。局部响应归一化层在第一和第二卷积层之后。

备注

  • 目前的观点认为 Dropout 不是模型融合,而是在线性模型上等价于一个L2正则项。它产生一个正则的效果,但是无法构造出一个和它相同的正则方式。
  • 局部响应归一化也不是很重要,后面基本上没有人继续使用。

模型性能

  • 2010年 ImageNet 大规模图像识别挑战赛:top-1 和 top-5 的错误率分别为 37.5%17.0%,显著优于之前最先进的模型。
  • 2012年 ImageNet 大规模图像识别挑战赛:top-5 的错误率为 15.3%,远高于第二名的 26.2% 的水平。
  • 特征向量使用:如果两张图像通过模型后获得的特征向量之间的欧氏距离很小,则可以认为这两张图像是相似的。
  • 未来展望:作者们指出该模型的性能在出现了更快的GPU和更大的数据集时还可以继续提升。

其他补充

  • 训练模型的启示
    • 为了提升机器学习算法的性能,我们可以收集更大的数据集、训练更强大的模型和使用更好的技术来防止过拟合。
  • 数据集相关
    • 在 AlexNet 提出的时代,大部分有标注的图像数据集相对而言都比较小,只有数万张图片,例如 NORBCaltech-101/256CIFAR-10/100 等。
    • LabelMe 是一个包含有数十万张全分割的图像的数据集。
    • ImageNet 包含有1500万张有标注的高分辨率的图像,这些图像分属于超过2200个类别。
  • 模型相关
    • 卷积神经网络具有先验知识来弥补图像数据集不够大的问题,因为它们对图像的本质特征有假设。相较于相似规模的标准前馈神经网络,卷积神经网络的参数量和连接数都少得多,因此更加容易训练,它们的理论最优性能仅仅略低于前馈神经网络。
    • 作者们发现模型的深度(即神经网络中的层数)非常重要,移除任意一个卷积层都会导致模型性能的下降,尽管卷积层的参数数量非常少。现在看来,这个观点不太对,因为虽然神经网络的深度非常重要,但是移除一个神经网络层不一定会导致性能下降,通过优化超参数可以达到相同的性能。
    • ReLU 的一个理想特性是,它不需要对输入进行归一化来防止饱和。只需要一些训练样本向 ReLU 产生了正输入,那么学习就可以发生。
    • 卷积神经网络中的池化层用于汇总同一特征图中相邻神经元组的输出。
    • 最简单和最常用的降低过拟合的方式是使用保留标注的数据增强来人为地扩大数据集。
    • 结合多个不同模型的预测结果是一种降低测试错误率的好用的方法,但是往往代价高昂。
    • 无监督预训练可以帮助神经网络获取较为优秀的早期权重,本文中作者也提到,虽然他们出于简化没有这么做,但是他们认为这么做是有帮助的。
    • 神经网络的深度很重要,但是宽度也很重要,不能特别宽特别浅,也不能特别深但是特别窄。
    • 过拟合是深度学习的一个派别,现在研究者们又认为正则不是那么重要,最重要的是模型本身的结构。
  • 硬件相关
    • 2007年 NVIDIA 推出了 CUDA 库,使得用GPU训练模型变得普遍。当时的研究人员研究人员主要是使用 Matlab 进行编程。
    • GPU对2D卷积进行了高度优化,能够很好地促进大型卷积神经网络的训练过程。
    • 现代的GPU设计非常适合跨GPU并行,因为它们可以直接读写其他GPU的显存,而不需要以计算机的内存作为中介。
  • 论文阅读相关
    • 阅读机器学习和深度学习领域的论文,对于工程上的细节,如果不是需要复现,则可以暂时忽略掉。
    • 论文的实验部分,如果不是领域专家或者需要复现论文,一般不用太了解,这样可以节约时间。

相关文章:

深度学习奠基作 AlexNet 论文阅读笔记(2025.2.25)

文章目录 训练数据集数据预处理神经网络模型模型训练正则化技术模型性能其他补充 训练数据集 模型主要使用2010年和2012年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)提供的 ImageNet 的子集进行训练,这些子集包含120万张图像。最终&#xff…...

MongoDB 数据库简介

MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...

Transformer LLaMA

一、Transformer Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。 Transformer 架构摆脱了RNNs,完全依靠 Attention的优…...

【DeepSeek开源:会带来多大的影响】

DeepSeek 开源,震撼登场对云计算行业的冲击 巨头云厂商的新机遇 DeepSeek 开源后,为云计算行业带来了巨大的变革,尤其是为巨头云厂商创造了新的发展机遇。以阿里云为例,它作为云计算行业的领军者,与 DeepSeek 的合作…...

Redis7——基础篇(七)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...

边缘计算:通俗易懂的全方位解析

1. 什么是边缘计算? 边缘计算(Edge Computing)是一种数据处理方式,它将计算任务从云端或数据中心下放到更靠近数据源(边缘)的设备上。 通俗理解: 想象你住在一个偏远的村庄,而最近…...

Flink 中的滚动策略(Rolling Policy)

在 Apache Flink 中,滚动策略(Rolling Policy)是针对日志(或数据流)文件输出的一种管理策略,它决定了在日志文件的大小、时间或其他条件满足特定标准时,如何“滚动”生成新的日志文件。滚动策略…...

GPU和FPGA的区别

GPU(Graphics Processing Unit,图形处理器)和 FPGA(Field-Programmable Gate Array,现场可编程门阵列)不是同一种硬件。 我的理解是,虽然都可以用于并行计算,但是GPU是纯计算的硬件…...

网易云音乐分布式KV存储实践与演进

随着网易云音乐业务的快速发展,推荐和搜索场景对分布式KV存储的需求日益增长。本文将深入探讨网易云音乐在分布式KV存储方面的实践和演进,分析其技术选型、架构设计以及未来发展方向。 一、业务背景 网易云音乐的业务场景对分布式KV存储提出了高并发、…...

WordPress平台如何接入Deepseek,有效提升网站流量

深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...

【嵌入式】STM32内部NOR Flash磨损平衡与掉电保护总结

1. NOR Flash与NAND Flash 先deepseek看结论: 特性Nor FlashNAND Flash读取速度快(支持随机访问,直接执行代码)较慢(需按页顺序读取)写入/擦除速度慢(擦除需5秒,写入需逐字节操作&…...

什么是磁盘阵列(RAID)?如何提高磁盘阵列的性能

什么是磁盘阵列 ‌磁盘阵列(RAID)是一种将多个独立的硬盘组合成一个逻辑存储单元的技术,旨在提高数据存储的性能、容量、可靠性和冗余性‌。‌磁盘阵列通过将数据分割成多个区段并分别存储在不同的硬盘上,利用个别磁盘提供数据加…...

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki?架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...

k8s集群部署

集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型,差别主要在设备树和数据传输上,由于SPI是由4根线实现主从机的通信,在设备树上配置时需要对SPI进行设置。 原理图可知,数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…...

系统基础与管理(2025更新中)

‌一、Linux 核心架构与组件‌ ‌内核架构‌ ‌核心职责‌: 管理进程生命周期、内存分配、硬件驱动交互及文件系统操作。 模块化设计支持动态加载硬件驱动(如modprobe加载内核模块),提升灵活性和扩展性。 ‌内存管理‌&#xff1a…...

Python--内置函数与推导式(下)

3. 内置函数 数学运算类 函数说明示例​abs​绝对值​abs(-10) → 10​​pow​幂运算​pow(2, 3) → 8​​sum​求和​sum([1,2,3]) → 6​​divmod​返回商和余数​divmod(10, 3) → (3, 1)​ 数据转换类 # 进制转换 print(bin(10)) # 0b1010 print(hex(255)) # 0x…...

可狱可囚的爬虫系列课程 14:10 秒钟编写一个 requests 爬虫

一、前言 当重复性的工作频繁发生时,各种奇奇怪怪提高效率的想法就开始萌芽了。当重复代码的模块化封装已经不能满足要求的时候,更高效的方式就被揭开了神秘的面纱。本文基于这样的想法,来和大家探讨如何 10 秒钟编写一个 requests 爬虫程序。…...

Windows golang安装和环境配置

【1】、golang 1.19 sdk下载 https://download.csdn.net/download/notfindjob/90422529 【2】、安装 【3】、配置 GOPATH目录 【4】、LiteIDE下载安装 https://download.csdn.net/download/notfindjob/90422580 【5】、打开LiteIDE,选择查看->管理GOPATH&…...

IP-------GRE和MGRE

4.GRE和MGRE 1.应用场景 现实场景 居家工作,公司工作,分公司工作----------需要传输交换数据--------NAT---在该场景中需要两次NAT(不安全) 为了安全有两种手段-----1.物理专线---成本高 2.VPN--虚拟专用网---隧道技术--封装技…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...