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

news2024/11/15 20:55:58

鑫宝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.coloradmin.cn/o/2053029.html

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

相关文章

科三预约考试,为什么我场次排名在前,后面排名又变了

什么时候知道是否预约成功 系统确认考试预约结果的时间一般为考试前5-7个工作日,同时根据预约人数系统会自行判断提前1-2日或延长1-2日公示预约结果,学员至少考试前三天会收到预约成功短信通知。 如果预约失败了怎么办?会计入考试次数吗&am…

免费下载:1982-2020年全国逐月土壤湿度数据集(附下载方法)

欧洲空间局(英文:European Space Agency),简称欧空局或ESA,成立于1975年,是一个致力于探索太空的政府间组织,拥有22个成员国,总部设在法国巴黎。欧洲航天局的太空飞行计划包括载人航…

【轻松拿捏】Java中ArrayList 和 LinkedList 的区别是什么?

ArrayList 和 LinkedList 的区别是什么? 1. ArrayList 2. LinkedList 3.总结 🎈边走、边悟🎈迟早会好 ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现类,但它们在内部结构和操作性能上有所不同。 1. ArrayLis…

13. 雷达图

13. 雷达图 13.1 填充雷达图 self.add_heading("雷达图", level1)self.add_heading(填充雷达图, level2)self.add_space()# 传入个性化数据修改QuickFilledRadarChart方法的代码就好self.add_flowable(of_ex_quick_charts.QuickFilledRadarChart(width460, height18…

Threejs中的WebGPU实践(1-2)

更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加VX:digital_twin123 此处接上文:Threejs中的WebGPU实践(1-1) 顶点着色器设置 现在我们已经对材质系统和 TSL 着色器…

《框架封装 · 优雅接口限流方案》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

权限审批也能这么人性化?没错,可道云teamOS让团队关系更和谐

作为一位企业管理者,我深知权限审批在企业管理中的重要性。它不仅仅是一个简单的流程,更是保障企业信息安全、提升团队协作效率的关键环节。 然而,过去我们常常面临权限审批流程繁琐、效率低下的问题,这不仅影响了我们的工作效率…

如何在 Odoo 16 Studio 模块中自定义视图和报告

为了有效地运营公司,需要定制的软件系统。Odoo 平台提供针对单个应用程序量身定制的管理解决方案和用户友好的界面,以便开发应用程序,而无需更复杂的后端功能。该平台支持使用简单的拖放功能和内置工具创建和修改更多定制的 Odoo 应用程序。企…

ubuntu如何监控Xvfb虚拟显示器

在Ubuntu中监控Xvfb显示器主要涉及到使用VNC服务器来远程访问这个环境。以下是一些基本步骤: 安装Xvfb和相关工具: 使用apt安装Xvfb和x11vnc,x11vnc是一个VNC服务器,可以远程访问Xvfb创建的虚拟桌面环境。 sudo apt-get install xvfb sudo ap…

Ciallo~(∠・ω・ )⌒☆第十九篇 mysql windows、Ubuntu安装与远程连接配置

一、安装windows版本的mysql (一)、安装mysql 1. 2. 3. 4. 5. (二)、测试mysql 这些步骤完成后记得去配置环境变量,path为mysql的安装目录这里我选择的是默认路径: C:\Program Files\MySQL\MySQL Serve…

零基础学习Redis(5) -- redis单线程模型介绍

前面我们提到过,redis是单线程的,这期我们详细介绍一下redis的单线程模型 1. redis单线程模型 redis只使用一个线程处理所有的请求,并不是redis服务器进程内部只有一个线程,其实也存在多个线程,只不过多个线程是在处…

MySQL常用函数、语法案例

本人MySQL5.7版本 表结构 假设有一个名为 order_summary 的表,其字段如下: order_id (INT): 订单的唯一标识符 customer_id (VARCHAR): 顾客的唯一标识符 order_date (DATETIME): 订单创建时间 total_amount (DECIMAL): 订单总金额 payment_status (E…

贪心+多维度dp

前言:处理简单版本的时候,想到了贪心,以及暴力求解顺便剪枝一下,要注意边界问题 haed版本的时候,完全行不通了,m的范围到了200,这是不可以暴力求解的 但是我不知道如何定义状态转移方程&#…

Hutool糊涂包JSON相关方法汇总

目录 1. JSON 对象 (JSONObject) 的创建 2. 向 JSONObject 添加键值对 3. 从 JSONObject 获取值 4. JSON 对象与字符串之间的转换 5. JSON 对象与 Java Bean(POJO)之间的转换 6. JSON 数组 (JSONArray) 的使用 7. JSON 数组与 Java List 之间的转…

Unity的UI设计

目录 创建和布局 布局与交互 性能优化 最佳实践 学习资源 Unity UI Toolkit与uGUI和IMGUI之间的具体区别和适用场景是什么? Unity UI Toolkit uGUI IMGUI 如何在Unity中实现响应式UI设计以适应不同设备尺寸? Unity UI性能优化的最新技术和方法…

8.MySQL知识巩固-牛客网练习题

目录 SQL228 批量插入数据 描述 SQL202 找出所有员工当前薪水salary情况 描述 示例1 SQL195 查找最晚入职员工的所有信息描述 示例1 SQL196 查找入职员工时间排名倒数第三的员工所有信息描述 SQL201查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t 描述 SQL…

后端Web之数据库多表设计

1.概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对多、多对多、一对一。 数据库的多表设计是关…

JavaWeb——MVC架构模式

一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 ,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户…

字符串专题——字符串相乘

1、题目解析 2、算法解析 1、解法一 使用模拟的方法:模拟小学的列竖式运算 细节1:高位相乘的时候要补上“0” 细节2:处理前导“0” 细节3:注意计算结果的顺序 2、解法二 对比解法一做优化->无进位相乘然后相加&#xff0…