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

卷积神经网络 - 卷积的变种、数学性质

本文我们来学习卷积的变种和相关的数学性质,为后面学习卷积神经网络做准备,有些概念可能不好理解,可以先了解其概念,然后慢慢理解、逐步深入。

在卷积的标准定义基础上,还可以引入卷积核的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取。

一、步长(Stride)

是指卷积核在滑动时的时间间隔,下图给出了步长为 2 的卷积示例:

二、填充

1、零填充(Zero Padding)

      是在输入向量两端进行补零,下图5给出了输入的两端各补一个零后的卷积示例:

2、窄卷积(Valid Convolution)、宽卷积(Full Convolution)和等宽卷积(Same Convolution)

以上三种是标准卷积的三种不同填充策略。它们的主要区别在于输入输出的尺寸关系,而非卷积操作本身的结构创新。

(一)核心定义与数学关系

类型填充策略输出尺寸公式(输入尺寸nn,核大小kk,步幅s=1s=1)直观解释
窄卷积无填充(padding=0n−k+1只处理输入的有效区域,输出缩小
宽卷积全填充(padding=k-1n+k−1覆盖输入的所有可能位置,输出扩大
等宽卷积对称填充(padding=(k-1)/2n保持输入输出尺寸一致

(二)与卷积变种的本质区别

1. 改进目标不同
  • 窄/宽/等宽卷积:调整输入输出的空间关系,解决尺寸匹配问题(如保持分辨率、扩大感受野)。

  • 卷积变种(如空洞卷积、可分离卷积):改进特征提取方式参数效率(如扩大感受野、减少计算量)。

2. 技术手段不同
类型技术手段是否改变卷积核结构
窄/宽/等宽卷积调整填充量否(仅改变输入边界处理)
空洞卷积插入空洞间隔是(改变采样方式)
可分离卷积分解为深度+逐点卷积是(改变操作流程)

(三)具体示例对比

场景:输入信号长度为5(n=5),卷积核大小3(k=3
  • 窄卷积(无填充):

    • 输出长度 = 5−3+1=3

    • 计算区域:[1-3], [2-4], [3-5](忽略边界外数据)

  • 宽卷积(填充2,零填充):

    • 输出长度 = 5+3−1=7

    • 计算区域扩展至输入外(如填充后的输入为[0,0,1,2,3,4,5,0,0]

  • 等宽卷积(填充1,对称填充):

    • 输出长度保持5

    • 填充后的输入为[0,1,2,3,4,5,0]

(四)为何不属于卷积变种?

  1. 不涉及结构创新
    窄/宽/等宽卷积仅通过填充控制输入输出的尺寸,未改变卷积核的权重共享机制或特征提取方式。例如,无论选择哪种填充方式,标准卷积的局部连接和权重共享特性均保持不变。

  2. 通用性
    这三种填充策略可应用于任何标准卷积或变种卷积。例如,空洞卷积可以选择窄填充或等宽填充,分组卷积也可搭配宽卷积使用。

  3. 参数无关性
    填充策略不影响卷积核的参数学习,而变种卷积(如可变形卷积)会直接调整核的采样位置或参数生成方式。

(五)实际应用场景

填充类型典型应用场景
窄卷积特征图尺寸逐步缩减的网络(如VGG)
宽卷积信号恢复任务(如去噪、超分辨率重建)
等宽卷积需保持分辨率的任务(如语义分割、风格迁移)

窄卷积、宽卷积、等宽卷积是标准卷积的不同填充模式,属于卷积操作的基础配置选项,而非结构上的变种。它们的核心作用是控制输入输出的空间映射关系,而非改进特征提取能力或效率。理解这一点有助于避免混淆基础操作与高级改进方法。

三、卷积的变种

卷积神经网络(CNN)的变种在标准卷积的基础上进行改进,以解决不同任务中的特定需求。以下是对几种常见卷积变种的通俗解析:

1. 空洞卷积(Dilated Convolution)

问题:标准卷积的感受野有限,难以捕捉大范围上下文信息。
改进:在卷积核中插入“空洞”,扩大覆盖范围而不增加参数。
比喻:像用“望远镜”观察数据,跳过中间细节直接看远处特征。

例子

  • 输入序列[A, B, C, D, E, F]

  • 空洞率=2的3核卷积
    A ? C ? E → 实际覆盖 A, C, E
    ?表示跳过的位置)

应用场景

  • 语义分割(如识别图像中的大型物体)

  • 时间序列预测(捕捉长期依赖)

2. 可分离卷积(Separable Convolution)

问题:标准卷积参数多、计算量大,尤其对移动设备不友好。
改进:将卷积分解为深度卷积(逐通道) + 逐点卷积(1x1),减少计算量。

数学对比

  • 标准卷积参数量:Cin×Cout×K×K

  • 可分离卷积参数量:Cin×K×K+Cin×Cout
    (假设输入输出通道数均为64,3x3卷积核:标准需 64x64x9=36,864 参数,可分离仅需 64x9 + 64x64=4,672 参数)

应用场景

  • 移动端模型(如MobileNet)

  • 实时视频处理

3. 转置卷积(Transposed Convolution)

问题:标准卷积会缩小特征图尺寸,但某些任务需要放大输出(如生成图像)。
改进:通过“反向滑动”实现上采样,填充间隔后做标准卷积。

操作示例

  • 输入:2x2矩阵

  • 转置卷积核:3x3,步长=2

  • 输出:5x5矩阵(通过插值扩大尺寸)

应用场景

  • 图像生成(GAN生成高分辨率图片)

  • 语义分割(恢复原始图像尺寸)

4. 分组卷积(Grouped Convolution)

问题:标准卷积要求所有通道全连接,计算成本高且缺乏并行性。
改进:将输入通道分为多组,每组独立卷积后再合并。

对比

  • 标准卷积:所有通道混合计算

  • 分组卷积:分组处理(如将64通道分为4组,每组16通道)

优势

  • 参数减少为 1/组数

  • 并行加速(不同组可分配到不同GPU核心)

应用场景

  • 高效模型设计(如ResNeXt)

  • 多任务学习(不同组学习不同特征)

5. 可变形卷积(Deformable Convolution)

问题:标准卷积核形状固定,无法适应不规则物体(如弯曲的动物)。
改进:让卷积核的采样点位置可学习,动态调整形状。

效果演示

  • 标准3x3卷积:固定覆盖9个点

  • 可变形卷积:9个点根据输入内容偏移(如聚焦在弯曲的鱼骨上)

应用场景

  • 目标检测(处理变形物体)

  • 医学图像分析(器官形状不规则)

6. 动态卷积(Dynamic Convolution)

问题:静态卷积核难以适应输入内容的变化
改进:根据输入数据动态生成卷积核参数。

例子

  • 输入一张猫图 → 生成“猫耳检测核”

  • 输入一张车图 → 生成“车轮检测核”

应用场景

  • 多模态数据处理

  • 少样本学习

变种卷积的核心价值

变种类型解决的核心问题关键技术手段
空洞卷积感受野受限间隔采样扩大覆盖范围
可分离卷积参数冗余、计算量大分解为深度+逐点卷积
转置卷积输出尺寸缩小反向滑动实现上采样
分组卷积计算成本高、缺乏并行性通道分组独立处理
可变形卷积几何形变适应差可学习的采样点偏移
动态卷积静态核泛化能力不足输入相关的动态参数生成

核心思想:所有卷积变种都围绕两个方向改进:

  1. 增强特征表达能力(扩大感受野、适应形变等)

  2. 提升计算效率(减少参数量、加速计算等)

通过灵活组合这些变种,现代CNN能够应对从图像分类到自动驾驶等复杂任务的需求。

四、如何理解卷积的数学性质:交换性和导数?

卷积在数学和深度学习中有一些重要的性质,理解这些性质有助于更深入地掌握其工作原理,尤其是在神经网络中的应用。下面从交换性导数两个角度进行解析:

(一)卷积的交换性

1. 数学定义中的交换性

严格数学卷积(信号处理中的定义)是可交换的,即:

证明

例子

  • 信号处理:用滤波器 f 处理信号 g,与用信号 g 处理滤波器 f,结果相同。

  • 图像处理:用边缘检测核 K 卷积图像 I,等价于用图像 I 卷积核 K。

2. 深度学习中的“卷积”是否满足交换性?

在深度学习中,实际使用的是互相关(Cross-Correlation)而非严格卷积。互相关操作不满足交换性

原因
互相关不翻转核,因此核的位置敏感。例如,检测猫耳朵的核放在图像左上角和右下角,结果不同。

实际意义

  • 在训练中,网络通过反向传播自动学习核的方向性特征(如左边缘或右边缘检测器)。

  • 交换性在深度学习中不重要,因为核的参数是数据驱动的。

(二)卷积的导数

1. 卷积的导数规则

在反向传播中,卷积层的导数计算遵循以下规则:

直观理解

  • 对输入的导数 = 核的导数与输入信号的卷积。

  • 对核的导数 = 输入信号与输入梯度的卷积。

2. 反向传播中的具体计算

假设卷积层的输入为 X,核为 K,输出为 Y=X∗K,损失函数为 L。
反向传播时:

  • 输入梯度

  • 核梯度

例子

  • 输入的梯度:

(三)交换性和导数的实际意义

1. 交换性的意义
  • 数学理论:简化计算(如傅里叶变换中 F(f∗g)=F(f)⋅F(g))。

  • 深度学习:无直接应用,因为实际使用互相关,但参数学习自动适应方向性。

2. 导数的意义
  • 参数更新:通过梯度计算优化核权重。

  • 特征可视化:通过梯度反传理解网络关注的特征(如显著图生成)。

(四)总结与记忆

性质数学卷积深度学习中的互相关实际意义
交换性成立不成立理论计算简化,实际无需关心
导数链式法则反向传播规则网络优化的数学基础

口诀
“数学卷积可交换,深度互相关不转;
导数计算链式传,反向传播梯度算。”

相关文章:

卷积神经网络 - 卷积的变种、数学性质

本文我们来学习卷积的变种和相关的数学性质,为后面学习卷积神经网络做准备,有些概念可能不好理解,可以先了解其概念,然后慢慢理解、逐步深入。 在卷积的标准定义基础上,还可以引入卷积核的滑动步长和零填充来增加卷积…...

BLIP论文阅读

目录 现存的视觉语言预训练存在两个不足: 任务领域 数据集领域 相关研究 知识蒸馏 Method 单模态编码器: 基于图像的文本编码器: 基于图像的文本解码器: 三重目标优化 图像文本对比损失:让匹配的图像文本更加…...

Opencv之计算机视觉一

一、环境准备 使用opencv库来实现简单的计算机视觉。 需要安装两个库:opencv-python和opencv-contrib-python,版本可以自行选择,注意不同版本的opencv中的某些函数名和用法可能不同 pip install opencv-python3.4.18.65 -i https://pypi.t…...

批量测试IP和域名联通性2

在前面批量测试IP和域名联通性-CSDN博客的基础上,由于IP和域名多样性,比如带端口号的192.168.1.17:17,实际上应该ping 192.168.1.17。如果封禁http://www.abc.com/a.exe,实际可ping www.abc.com。所以又完善了代码。 echo off se…...

[动手学习深度学习]26. 网络中的网络 NiN

前面的LeNet、AlexNet、VGG在设计上的共同之处在于:先以卷积层构成的模块充分抽取空间特征,再以全连接层构成的模块来输出分类结果 其中AlexNet和VGG对LeNet的改进主要在于如何对这两个模块价款(增加通道数)和加深 这一节的NiN提出…...

C语言论递归函数及其本质

一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。 递归函数成功执行需满足以下两个条件: 必须有一个明显的结束条件。必须有一个趋近于结束条件的趋势。 举个生活例子:数钱 假设你有一叠钞票&#xf…...

碰一碰发视频saas系统技术源头一站式开发文档

碰一碰发视频系统技术源头一站式开发文档 一、引言 在数字化信息传播高速发展的当下,如何让视频分享更便捷、高效,成为商家和开发者们关注的焦点。“碰一碰发视频”系统以其独特的交互方式和强大的功能优势,为视频分享领域带来了革命性变革。…...

Linux目录理解

前言 最近在复习linux,发现有些目录总是忘记内容,发现有些还是得从原义和实际例子去理解会记忆深刻些。以下是个人的一些理解 Linux目录 常见的Linux下的目录如下: 1. 根目录 / (Root Directory) 英文含义:/ 是文件系统的根…...

可视化图解算法:链表中倒数(最后)k个结点

1. 题目 描述 输入一个长度为 n 的链表,设链表中的元素的值为ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0≤n≤105,0 ≤ai≤109,0 ≤k≤109 要求&am…...

Swift 并发中的任务让步(Yielding)和防抖(Debouncing)

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

@SpringBootApplication

SpringBootApplication拓展 一. SpringBootConfiguration注解 是SpringBoot的注解, 标识一个类为配置类, 与Configration功能一致 run方法初始化了SpringBootConfiguration注解 注解源码 Target(ElementType.TYPE)//类型 Retention(RetentionPolicy.RUNTIME)//生命周期 Docu…...

什么是状态管理?有何种方式可以实现?它们之间有什么区别?

目录 一、状态管理的核心概念 二、常见状态管理方案及对比 1. 基础方案:setState 2. 官方推荐:Provider 3. 事件驱动:Bloc (Business Logic Component) 4. 响应式增强:Riverpod 5. 轻量级全能库:GetX 三、方案对比与选型指南 四、实战建议 在 Flutter 中,状态管…...

HW基本的sql流量分析和wireshark 的基本使用

前言 HW初级的主要任务就是看监控(流量) 这个时候就需要我们 了解各种漏洞流量数据包的信息 还有就是我们守护的是内网环境 所以很多的攻击都是 sql注入 和 webshell上传 (我们不管对面是怎么拿到网站的最高权限的 我们是需要指出它是…...

docker-compose install nginx(解决fastgpt跨区域)

CORS前言 CORS(Cross-Origin Resource Sharing,跨源资源共享)是一种安全措施,它允许或拒绝来自不同源(协议、域名、端口任一不同即为不同源)的网页访问另一源中的资源。它的主要作用如下: 同源策略限制:Web 浏览器的同源策略限制了从一个源加载的文档或脚本如何与另一…...

设计模式(创建型)-单例模式

摘要 在软件开发的世界里,设计模式是开发者们智慧的结晶,它们为解决常见问题提供了经过验证的通用方案。单例模式作为一种基础且常用的设计模式,在许多场景中发挥着关键作用。本文将深入探讨单例模式的定义、实现方式、应用场景以及可…...

Leetcode 刷题笔记1 图论part01

图论的基础知识: 图的种类: 有向图(边有方向) 、 无向图(边无方向)、加权有向图(边有方向和权值) 度: 无向图中几条边连接该节点,该节点就有几度&#xff1…...

鸿蒙NEXT开发问题大全(不断更新中.....)

目录 问题1:鸿蒙NEXT获取华为手机的udid ​问题2:[Fail]ExecuteCommand need connect-key? 问题3:测试时如何安装app包 问题1:鸿蒙NEXT开发获取华为手机的udid hdc -t "设备的序列号" shell bm get --udid 问题2&…...

分享一个项目中遇到的一个算法题

需求背景: 需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期&…...

TI的Doppler-Azimuth架构(TI文档)

TI在AWR2944平台上推出新的算法架构,原先的处理方式是做完二维FFT后在RD图上做CFAR检测,然后提取各个通道数据做测角。 Doppler-Azimuth架构则是做完二维FFT后,再做角度维FFT,生成Doppler-Azimuth频谱图,然后在该频谱图…...

电子邮件常用协议技术详解与C++实践(SMTP POP3 IMAP)

一、核心协议概览 协议端口(明文/加密)核心功能数据同步方式典型场景SMTP25 / 587邮件发送单向传输客户端提交邮件POP3110 / 995邮件下载单向同步单设备离线阅读IMAP143 / 993邮件管理双向同步多设备实时同步 二、协议深度解析 1. SMTP(简单…...

机器学习算法:一文掌握 K近邻算法 的详细用法(2个案例可直接运行)

文章目录 一、KNN 算法概述1.1 算法原理1.2 KNN 的优缺点1.3 K 值的选择 二、Python 实现 KNN 案例2.1 使用 KNN 算法进行手写数字识别2.2 使用 Python 实现 KNN 分类 三、总结 KNN(K-Nearest Neighbors,K近邻算法) 是一种简单且常用的分类和…...

设计C语言的单片机接口

一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式,输入为1,输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法: void pin_output(s…...

[从零开始学习JAVA] Stream流

前言: 本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda 匿名内部类 方法引用相…...

「自动驾驶的数学交响曲:线性代数、微积分与优化理论的深度共舞」—— 解析人工智能背后的高阶数学工具链

引言 自动驾驶系统是数学工具链的集大成者。从传感器数据的多维空间映射到控制指令的生成,每一步都隐藏着线性代数、微积分、概率论和优化理论的精妙配合。本文将构建一个数学模型完整的自动驾驶案例,结合Python代码实现,揭示以下核心数学工具: 线性代数:张量运算与特征空…...

调试 Rust + WebAssembly 版康威生命游戏

1. 启用 Panic 日志 1.1 让 Panic 信息显示在浏览器控制台 如果 Rust 代码发生 panic!(),默认情况下不会在浏览器开发者工具中显示详细的错误信息。这使得排查问题变得困难。 我们可以使用 console_error_panic_hook 这个 Rust crate,将 Panic 信息打…...

VSCode通过SSH远程登录Windows服务器

系列 1.1 VSCode通过SSH远程登录Windows服务器 1.2 VSCode通过SSH免密远程登录Windows服务器 文章目录 系列1 准备工作2 远程服务器配置2.1 安装SSH服务器2.2 端口 3 本地电脑配置3.1 安装【Remote - SSH】。3.2 登录 1 准备工作 本地电脑Windows 11,已安装VS Cod…...

qt下载和安装教程国内源下载地址

qt不断在更新中,目前qt6日渐成熟,先前我们到官方下载或者国内镜像直接可以下载到exe文件安装,但是最近几年qt官方似乎在逐渐关闭旧版本下载通道,列为不推荐下载。但是qt5以其广泛使用和稳定性,以及积累大量代码使得qt5…...

使用htool工具导出和导入Excel表

htool官网 代码中用到的hool包里面的excel工具ExcelUtil 1. 引入依赖 <!-- Java的工具类 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version></dependency>&l…...

mysql 到 doris 挪移数据

工具datax..... 下载地址&#xff1a;http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 下载以后解压&#xff1a;tar -xvzf datax.tar.gz 然后&#xff0c;理论上就可以直接使用了。但是&#xff0c;datax本身是python2写的&#xff0c;如果需要python3…...

Springboot中的@ConditionalOnBean注解:使用指南与最佳实践

在使用Spring Boot进行开发时&#xff0c;大家应该都听说过条件注解&#xff08;Conditional Annotations&#xff09;。其中的ConditionalOnBean注解就很有趣&#xff0c;它帮助开发者在特定条件下创建和注入Bean&#xff0c;让你的应用更加灵活。今天就来聊聊这个注解的使用场…...