卷积神经网络 - 卷积的变种、数学性质
本文我们来学习卷积的变种和相关的数学性质,为后面学习卷积神经网络做准备,有些概念可能不好理解,可以先了解其概念,然后慢慢理解、逐步深入。
在卷积的标准定义基础上,还可以引入卷积核的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取。
一、步长(Stride)
是指卷积核在滑动时的时间间隔,下图给出了步长为 2 的卷积示例:

二、填充
1、零填充(Zero Padding)
是在输入向量两端进行补零,下图5给出了输入的两端各补一个零后的卷积示例:

2、窄卷积(Valid Convolution)、宽卷积(Full Convolution)和等宽卷积(Same Convolution)
以上三种是标准卷积的三种不同填充策略。它们的主要区别在于输入输出的尺寸关系,而非卷积操作本身的结构创新。
(一)核心定义与数学关系
| 类型 | 填充策略 | 输出尺寸公式(输入尺寸nn,核大小kk,步幅s=1s=1) | 直观解释 |
|---|---|---|---|
| 窄卷积 | 无填充(padding=0) | n−k+1 | 只处理输入的有效区域,输出缩小 |
| 宽卷积 | 全填充(padding=k-1) | n+k−1 | 覆盖输入的所有可能位置,输出扩大 |
| 等宽卷积 | 对称填充(padding=(k-1)/2) | n | 保持输入输出尺寸一致 |
(二)与卷积变种的本质区别
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]
-
(四)为何不属于卷积变种?
-
不涉及结构创新:
窄/宽/等宽卷积仅通过填充控制输入输出的尺寸,未改变卷积核的权重共享机制或特征提取方式。例如,无论选择哪种填充方式,标准卷积的局部连接和权重共享特性均保持不变。 -
通用性:
这三种填充策略可应用于任何标准卷积或变种卷积。例如,空洞卷积可以选择窄填充或等宽填充,分组卷积也可搭配宽卷积使用。 -
参数无关性:
填充策略不影响卷积核的参数学习,而变种卷积(如可变形卷积)会直接调整核的采样位置或参数生成方式。
(五)实际应用场景
| 填充类型 | 典型应用场景 |
|---|---|
| 窄卷积 | 特征图尺寸逐步缩减的网络(如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)
问题:静态卷积核难以适应输入内容的变化。
改进:根据输入数据动态生成卷积核参数。
例子:
-
输入一张猫图 → 生成“猫耳检测核”
-
输入一张车图 → 生成“车轮检测核”
应用场景:
-
多模态数据处理
-
少样本学习
变种卷积的核心价值
| 变种类型 | 解决的核心问题 | 关键技术手段 |
|---|---|---|
| 空洞卷积 | 感受野受限 | 间隔采样扩大覆盖范围 |
| 可分离卷积 | 参数冗余、计算量大 | 分解为深度+逐点卷积 |
| 转置卷积 | 输出尺寸缩小 | 反向滑动实现上采样 |
| 分组卷积 | 计算成本高、缺乏并行性 | 通道分组独立处理 |
| 可变形卷积 | 几何形变适应差 | 可学习的采样点偏移 |
| 动态卷积 | 静态核泛化能力不足 | 输入相关的动态参数生成 |
核心思想:所有卷积变种都围绕两个方向改进:
-
增强特征表达能力(扩大感受野、适应形变等)
-
提升计算效率(减少参数量、加速计算等)
通过灵活组合这些变种,现代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语言论递归函数及其本质
一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。 递归函数成功执行需满足以下两个条件: 必须有一个明显的结束条件。必须有一个趋近于结束条件的趋势。 举个生活例子:数钱 假设你有一叠钞票…...
碰一碰发视频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
图论的基础知识: 图的种类: 有向图(边有方向) 、 无向图(边无方向)、加权有向图(边有方向和权值) 度: 无向图中几条边连接该节点,该节点就有几度࿱…...
鸿蒙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..... 下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 下载以后解压:tar -xvzf datax.tar.gz 然后,理论上就可以直接使用了。但是,datax本身是python2写的,如果需要python3…...
Springboot中的@ConditionalOnBean注解:使用指南与最佳实践
在使用Spring Boot进行开发时,大家应该都听说过条件注解(Conditional Annotations)。其中的ConditionalOnBean注解就很有趣,它帮助开发者在特定条件下创建和注入Bean,让你的应用更加灵活。今天就来聊聊这个注解的使用场…...
