【机器学习】CNN的基本架构模块


鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • CNN的基本架构模块
    • 1. 引言
    • 2. 卷积层
      • 2.1 基本原理
      • 2.2 卷积层的特性
      • 2.3 卷积层的超参数
      • 2.4 输出大小计算
    • 3. 池化层
      • 3.1 目的和作用
      • 3.2 常见的池化方法
      • 3.3 池化层的超参数
    • 4. 激活函数
      • 4.1 作用
      • 4.2 常用的激活函数
      • 4.3 激活函数的选择
    • 5. 全连接层
      • 5.1 作用
      • 5.2 数学表示
      • 5.3 特点
    • 6. Dropout层
      • 6.1 原理
      • 6.2 数学表示
    • 7. 批归一化层(Batch Normalization)
      • 7.1 目的
      • 7.2 数学表示
    • 8. 残差连接(Residual Connection)
      • 8.1 动机
      • 8.2 数学表示
    • 9. 注意力机制(Attention Mechanism)
      • 9.1 原理
      • 9.2 自注意力(Self-Attention)
    • 10. 高级CNN架构
      • 10.1 Inception模块
      • 10.2 DenseNet
      • 10.3 SENet(Squeeze-and-Excitation Network)
    • 11. 结论

CNN的基本架构模块

1. 引言

卷积神经网络(Convolutional Neural Network,CNN)是深度学习中一种强大的神经网络架构,特别适用于处理具有网格状拓扑结构的数据,如图像和时间序列。CNN的成功源于其独特的架构设计,包含了多个精心设计的基本模块。本文将详细介绍CNN的基本架构模块,包括卷积层、池化层、激活函数、全连接层等,以及一些高级组件和优化技术。
在这里插入图片描述

2. 卷积层

在这里插入图片描述

2.1 基本原理

卷积层是CNN的核心组件,负责提取输入数据的局部特征。卷积操作可以表示为:

( f ∗ g ) ( t ) = ∫ − ∞ ∞ f ( τ ) g ( t − τ ) d τ (f * g)(t) = \int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau (fg)(t)=f(τ)g(tτ)dτ

在离散情况下,二维卷积可以表示为:

( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) (I * K)(i,j) = \sum_{m}\sum_{n} I(m,n)K(i-m,j-n) (IK)(i,j)=mnI(m,n)K(im,jn)

其中, I I I是输入, K K K是卷积核(或称为滤波器)。

2.2 卷积层的特性

  1. 局部连接:每个神经元只与输入数据的一个局部区域相连。
  2. 权值共享:同一个特征图内的神经元共享相同的权重。
  3. 平移不变性:卷积操作对输入的平移具有不变性。

2.3 卷积层的超参数

  • 卷积核大小:常见的有3x3,5x5等。
  • 步长(Stride):控制卷积核移动的步长。
  • 填充(Padding):在输入周围添加额外的像素。

2.4 输出大小计算

对于输入大小为 W × H W \times H W×H,卷积核大小为 F × F F \times F F×F,步长为 S S S,填充为 P P P 的卷积层,输出大小为:

O W = W − F + 2 P S + 1 , O H = H − F + 2 P S + 1 O_W = \frac{W - F + 2P}{S} + 1, \quad O_H = \frac{H - F + 2P}{S} + 1 OW=SWF+2P+1,OH=SHF+2P+1

3. 池化层

在这里插入图片描述

3.1 目的和作用

池化层用于降低特征图的空间分辨率,减少参数数量和计算量,同时提高模型对小的位移和失真的鲁棒性。

3.2 常见的池化方法

  1. 最大池化(Max Pooling)
    y i j = max ⁡ ( a , b ) ∈ R i j x a b y_{ij} = \max_{(a,b)\in R_{ij}} x_{ab} yij=(a,b)Rijmaxxab

  2. 平均池化(Average Pooling)
    y i j = 1 ∣ R i j ∣ ∑ ( a , b ) ∈ R i j x a b y_{ij} = \frac{1}{|R_{ij}|} \sum_{(a,b)\in R_{ij}} x_{ab} yij=Rij1(a,b)Rijxab

其中, R i j R_{ij} Rij表示池化窗口, ∣ R i j ∣ |R_{ij}| Rij是窗口中元素的数量。

3.3 池化层的超参数

  • 池化窗口大小:常见的有2x2,3x3等。
  • 步长:通常与窗口大小相同,以避免重叠。

4. 激活函数

4.1 作用

激活函数引入非线性,增强网络的表达能力。

4.2 常用的激活函数

  1. ReLU (Rectified Linear Unit)
    f ( x ) = max ⁡ ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)

  2. Sigmoid
    f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1

  3. Tanh
    f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=ex+exexex

  4. Leaky ReLU
    f ( x ) = { x , if  x > 0 α x , otherwise f(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{otherwise} \end{cases} f(x)={x,αx,if x>0otherwise
    其中 α \alpha α 是一个小的正常数。

4.3 激活函数的选择

  • ReLU 是目前最常用的激活函数,因为它计算简单,能缓解梯度消失问题。
  • Sigmoid 和 Tanh 在某些特定任务中仍有应用,如二分类问题。
  • Leaky ReLU 等变体旨在解决 ReLU 的"死亡 ReLU"问题。

5. 全连接层

5.1 作用

全连接层通常位于CNN的末端,用于将学到的特征映射到样本标记空间。

5.2 数学表示

全连接层的操作可以表示为:

y = f ( W x + b ) y = f(Wx + b) y=f(Wx+b)

其中, W W W 是权重矩阵, b b b 是偏置向量, f f f 是激活函数。

5.3 特点

  • 参数数量大,易导致过拟合。
  • 可以学习特征的全局组合。

6. Dropout层

在这里插入图片描述

6.1 原理

Dropout是一种正则化技术,在训练过程中随机"丢弃"一部分神经元,防止过拟合。

6.2 数学表示

对于dropout率为 p p p 的层,其输出可表示为:

y = f ( r ∗ ( W x + b ) ) / ( 1 − p ) y = f(r * (Wx + b)) / (1-p) y=f(r(Wx+b))/(1p)

其中, r r r 是一个由0和1组成的随机二元掩码,1的概率为 1 − p 1-p 1p

7. 批归一化层(Batch Normalization)

7.1 目的

批归一化通过标准化每一层的输入来加速训练过程,提高模型的稳定性。

7.2 数学表示

对于输入 x x x,批归一化的操作为:

y = γ x − μ B σ B 2 + ϵ + β y = \gamma \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} + \beta y=γσB2+ϵ xμB+β

其中, μ B \mu_B μB σ B 2 \sigma_B^2 σB2 分别是批次的均值和方差, γ \gamma γ β \beta β 是可学习的参数, ϵ \epsilon ϵ 是一个小常数。

8. 残差连接(Residual Connection)

8.1 动机

残差连接解决了深层网络的梯度消失问题,使得训练更深的网络成为可能。

8.2 数学表示

对于输入 x x x,残差块的输出为:

y = F ( x ) + x y = F(x) + x y=F(x)+x

其中, F ( x ) F(x) F(x) 是残差函数,通常由几个卷积层组成。

9. 注意力机制(Attention Mechanism)

9.1 原理

注意力机制允许模型在处理输入时关注最相关的部分,提高模型的性能。

9.2 自注意力(Self-Attention)

自注意力机制的计算过程可以表示为:

Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

其中, Q Q Q K K K V V V 分别是查询、键和值矩阵, d k d_k dk 是键的维度。

10. 高级CNN架构

10.1 Inception模块

Inception模块并行使用不同大小的卷积核,以捕获不同尺度的特征。

10.2 DenseNet

DenseNet通过密集连接提高了特征的重用,减少了参数数量。

10.3 SENet(Squeeze-and-Excitation Network)

SENet引入了通道注意力机制,自适应地调整特征通道的重要性。

11. 结论

CNN的基本架构模块是深度学习在计算机视觉领域取得巨大成功的关键。从最基本的卷积层和池化层,到高级的残差连接和注意力机制,每个组件都在不断演进,以提高模型的性能和效率。理解这些基本模块及其工作原理,对于设计和优化CNN模型至关重要。

随着研究的深入,我们可以期待看到更多创新的架构组件出现,进一步推动CNN在各个领域的应用和发展。同时,如何有效地组合这些模块以构建高效、鲁棒的网络架构,仍然是一个值得深入研究的方向。未来,自动化神经架构搜索(NAS)等技术可能会在这方面发挥重要作用,帮助我们发现更优的网络结构。

End

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL,解析 json

Google BigQuery数据库的data表存储了若干多层的Json串,其中一条形如: [{"active":true,"key":"key1","values":[{"active":true,"value":"value1"}]},{"active":tru…

Java巅峰之路---进阶篇---面向对象(二)

Java巅峰之路---进阶篇---面向对象(二) 多态介绍多态调用成员的特点多态的优势、弊端以及解决方案综合练习 包和final包的介绍使用其他类的规则(导包)final关键字final的用途常量 权限修饰符和代码块权限修饰符的介绍四个权限修饰…

Halo个人博客Docker部署结合内网穿透为本地站点配置公网地址远程访问

文章目录 前言1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 前言 本文主要介绍如何在Cen…

C#学习第二节课 ,伤害计算

伤害计算 我一直好奇游戏的伤害计算是怎么计算并输出的,这第二节课利用学过的初级语法,Console.WriteLine,Console.ReadLine(),以及基础变量,int,string 和if 判断 组合,来实现打印一下伤害计算吧! 老规矩 先上结果图 代码区域 namespace hello01 {internal class Program …

望繁信科技荣膺上海市浦东新区博士后创新实践基地称号

近日,上海望繁信科技有限公司(简称“望繁信科技”)凭借在大数据流程智能领域的卓越表现,成功入选上海市浦东新区博士后创新实践基地。这一荣誉不仅是对望繁信科技创新能力和技术实力的高度认可,也标志着公司在推动产学…

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展,远程安防监控系统已经成为现代社会中不可或缺的一部分,无论是在小区、公共场所还是工业领域,安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台,其在构建远程安防监控系统方面…

Qt 学习第六天:页面布局

如何设计页面? 有个类似沙盒模式的玩法,Qt Widget Designer可以更好的帮助我们设计页面 点击.ui文件进入 右上方可以看到四种常见的布局: 四种布局 (一)水平布局horizontalLayout:QHBoxLayout H 是 hori…

算法之工程化内容(3)—— Docker常用命令

目录 1. 配置docker镜像加速 2. 创建镜像docker-name 3. 查看正在运行的镜像 4. 拉取镜像 5. 运行镜像 6. 停止/启动指定 id 的容器 7. 删除指定 id 的镜像/容器 8. docker发布和部署 (推荐教程:🚚 发布和部署 - Docker 快速入门) 1. 配置docke…

【蓝桥杯集训100题】scratch时间计算 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第26题

目录 scratch时间计算 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

【网络】UDP和TCP之间的差别和回显服务器

文章目录 UDP 和 TCP 之间的差别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP API 的使用UDP APIDatagramSocket构造方法方法 DatagramPacket构造方法方法 回显服务器(Echo Server)1. 接收请求2. 根据请求计算响应3. 将…

AdMob聚合平台

Google Admob产品介绍 Google给开发者提供了3款用于流量变现的产品,分别是AdMob,通过应用内广告帮助App开发者变现;AdSense,通过网站广告帮助所有者变现;Google Ads Manager,通过全面管理和优化广告资源&a…

[ICLR-24] LRM: Large Reconstruction Model for Single Image to 3D

[pdf | proj | code] 本文首次提出大型重建模型(Large Reconstruction Model, LRM),实现5s内对单图物体的3D重建。在128张A100(40G)上训练30 epochs。 LRM包含三个部分,具体框架如下: 图片编码…

亚马逊测评号生存法则:如何抵御亚马逊封号风波?

距离黑五购物狂欢节还剩99天,相信各位商家都在紧锣密鼓的筹备相关事宜,然而,亚马逊的封号风波再次席卷而来。那如何在这场风暴中让亚马逊矩阵测评号安全航行亦或是脱颖而出呢?本文将给你一个答案,并帮助你的亚马逊店铺…

【java计算机毕设】足浴城消费系统小程序MySQL ssm vue uniapp maven项目设计源代码 编程语言 小组课后作业 寒暑假作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】足浴城消费系统小程序MySQL ssm vue uniapp maven项目设计源代码 编程语言 小组课后作业 寒暑假作业 2项目介绍 系统功能: 足浴城消费系统小程序包括管理员、用户、商家三种角色。 管理员功能&…

Transformer大模型在训练过程中所需的计算量

目录 简介计算需求参数与数据集的权衡计算成本的工程意义内存需求推理模型权重总推理内存训练模型参数优化器状态梯度激活值和批大小总训练内存分布式训练分片优化器3D 并行分片优化器 + 3D 并行参考简介 许多关于Transformer语言模型的基本且重要的信息都可以用相当简单的方式…

C++ 特殊类设计以及单例模式

目录 1 不能被拷贝 2 只能在堆上创建对象 3 只能在栈上创建对象 4 禁止在堆上创建对象 5 不能被继承的类 6 单例类 特殊类就是一些有特殊需求的类。 1 不能被拷贝 要设计一个防拷贝的类,C98之前我们只需要将拷贝构造以及拷贝赋值设为私有,同时只声明…

2024年入职/转行网络安全,该如何规划?_网络安全职业规划

前言 前段时间,知名机构麦可思研究院发布了 《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…

探索802.1X:构筑安全网络的认证之盾

在现代网络安全的世界里,有一个极其重要但又常常被忽视的角色,它就是802.1x认证协议。这个协议可以被称作网络安全的守护者,为我们提供了强有力的防护。今天,我们就来深入探讨一下802.1x的原理、应用和测试,看看它是如…

干货|光伏开发全流程

在当今全球能源转型与应对气候变化的背景下,光伏产业作为可再生能源的重要组成部分,正以前所未有的速度发展。光伏开发,即从项目规划到并网发电的全过程,涉及多个环节,每个步骤都至关重要。而其中户用和工商业光伏开发…

DBAPI如何用SQL将多表关联查询出树状结构数据(嵌套JSON格式)

场景描述 假设数据库中有3张表如下: 客户信息表 订单表 订单详情表 一个客户有多个订单,一个订单包含多个产品信息,客户-订单-产品就构成了3级的树状结构,如何查询出如下树状结构数据呢? [{"customer_age"…