卷积神经网络 - 卷积运算篇

news2024/11/13 14:56:41

序言

在探索深度学习尤其是计算机视觉领域的奥秘时,卷积神经网络( Convolutional Neural Networks, CNNs \text{Convolutional Neural Networks, CNNs} Convolutional Neural Networks, CNNs)无疑占据了核心地位。而卷积运算,作为 CNN \text{CNN} CNN中最基础也是最关键的组成部分,更是其能够高效提取图像特征、实现卓越性能的关键所在。卷积运算不仅深刻影响了 CNN \text{CNN} CNN的架构设计,也为我们理解图像数据、构建更加智能的视觉系统提供了有力的工具。

卷积运算的核心思想在于利用一个可学习的卷积核(或称为滤波器)在输入图像上进行滑动,通过计算卷积核与图像局部区域的点积来提取该区域的特征。这一过程模拟了生物视觉系统中神经元对视觉刺激的局部响应机制,使得 CNN \text{CNN} CNN能够自动学习到图像中的边缘、纹理、形状等低层特征,并通过多层的卷积操作逐步构建出更高层次的抽象特征表示。

在卷积运算中,卷积核的大小、步长以及填充方式等参数对提取特征的效果具有重要影响。通过调整这些参数,我们可以控制卷积层输出的特征图的尺寸和感受野的大小,从而实现对不同尺度图像特征的有效提取。此外,卷积运算还具有权值共享和局部连接的特点,这些特点极大地减少了网络参数的数量,降低了计算复杂度,并增强了模型的泛化能力。

随着深度学习技术的不断发展,卷积运算也在不断创新和演进。从传统的二维卷积到三维卷积、可分离卷积、空洞卷积等新型卷积方式的出现,不仅丰富了卷积运算的形式和内涵,也为 CNN \text{CNN} CNN在处理不同类型的数据和任务时提供了更多的选择和灵活性。这些新型卷积方式在提升模型性能、降低计算成本等方面展现出了巨大的潜力。

卷积运算

  • 在通常形式中,卷积是对两个实值函数的一种数学运算。为了给出卷积的定义,我们从两个可能会用到的函数的例子出发。
  • 假设我们正在用激光传感器追踪一艘宇宙飞船的位置。我们的激光传感器给出一个单独的输出 x ( t ) x(t) x(t),表示宇宙飞船在时刻 t t t的位置。 x x x t t t都是实值的,这意味着我们可以在任意时刻从传感器中读出飞船的位置。
  • 现在假设我们的传感器含有噪声。为了得到飞船位置的低噪声估计,我们对得到的测量结果进行平均。显然,时间上越近的测量结果越相关,所以我们采用一种加权平均的方法,对于最近的测量结果赋予更高的权值。我们可以采用一个加权函数 w ( a ) w(a) w(a)来实现,其中 a a a表示测量结果据当前时刻的时间间隔。如果我们对任意时刻都采用这种加权平均的操作,就得到了对于飞船位置的连续估计函数 s s s
    s ( t ) = ∫ x ( a ) w ( t − a ) d a s(t)=\displaystyle\int x(a)w(t-a)da s(t)=x(a)w(ta)da — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1
  • 这种运算就叫做卷积( convolution \text{convolution} convolution)。卷积运算通常用星号表示:
    s ( t ) = ( x ∗ w ) ( t ) s(t)=(x\ast w)(t) s(t)=(xw)(t) — 公式2 \quad\textbf{---\footnotesize{公式2}} 公式2
  • 在我们的例子中, w w w必须是一个有效的概率密度函数,否则输出就不再是一个加权平均。另外, w w w在参数为负值时必须为 0 0 0,否则它会涉及到未来,这不是我们能够做到的。但这些限制仅仅是对我们这个例子来说。通常,卷积被定义在满足上述积分式的任意函数上,并且也可能被用于加权平均以外的目的。
  • 在卷积神经网络的术语中,第一参数(在上面这个例子中,函数 x x x)叫做输入 input \text{input} input),第二参数(函数 w w w)叫做核函数 kernel function \text{kernel function} kernel function)。输出有时被称作特征映射 feature map \text{feature map} feature map)。
  • 在我们的例子中,激光传感器能够在任意时刻给出测量结果的想法是不现实的。一般地,当我们用计算机处理数据时,时间会被离散化,传感器会给出特定时间间隔的数据。所以比较现实的的假设是传感器每秒给出一次测量结果,这样,时间 t t t只能取整数值。如果我们假设 x x x w w w都定义在整数时刻 t t t上,就得到了离散形式的卷积:
    s ( t ) = ( x ∗ w ) ( t ) = ∑ a = − ∞ ∞ x ( a ) w ( t − a ) s(t)=(x\ast w)(t)=\sum\limits_{a=-\infty}^\infty x(a)w(t-a) s(t)=(xw)(t)=a=x(a)w(ta) — 公式3 \quad\textbf{---\footnotesize{公式3}} 公式3
  • 在机器学习的应用中,输入通常是高维数据数组,而核也是由算法产生的高维参数数组。我们把这种高维数组叫做张量。因为输入与核的每一个元素都分开存储,我们经常假设在存储了数据的有限点集以外,这些函数的值都为零。这意味着在实际操作中,我们可以统一地把无限的求和当作对有限个数组元素的求和来用。
  • 最后,我们有时对多个维度进行卷积运算。例如,如果把二维的图像 I I I作为输入,我们也相应的需要使用二维的核 K K K
    S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) S(i,j)=(I\ast K)(i,j)=\sum\limits_m\sum\limits_n I(m,n)K(i-m,j-n) S(i,j)=(IK)(i,j)=mnI(m,n)K(im,jn) — 公式4 \quad\textbf{---\footnotesize{公式4}} 公式4
  • 卷积是可交换的 (commutative),我们可以等价地写作:
    S ( i , j ) = ( K ∗ I ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) S(i,j)=(K\ast I)(i,j)=\sum\limits_m\sum\limits_n I(i-m,j-n)K(m,n) S(i,j)=(KI)(i,j)=mnI(im,jn)K(m,n) — 公式4 \quad\textbf{---\footnotesize{公式4}} 公式4
  • 通常,下面的公式5在机器学习库中更方便应用,因为它在 m m m n n n的有效范围内变化更少。
  • 卷积运算可交换性的出现是因为我们相对输入翻转( flip \text{flip} flip)了核,这意味着当 m m m增大时,输入的索引增大,但核的索引相应的减小。翻转核的唯一目的就是为了得到可交换性。尽管可交换性在证明时很有用,但在神经网络的应用中却不是一个重要的性质。与之不同的是,许多神经网络库会实现一个相关的函数,称为互相关函数( cross-correlation \text{cross-correlation} cross-correlation),和卷积运算几乎一样但是并不翻转核:
    S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i + m , j + n ) K ( m , n ) S(i,j)=(I\ast K)(i,j)=\sum\limits_m\sum\limits_n I(i+m,j+n)K(m,n) S(i,j)=(IK)(i,j)=mnI(i+m,j+n)K(m,n) — 公式5 \quad\textbf{---\footnotesize{公式5}} 公式5
  • 许多机器学习的库使用互相关函数但是叫它卷积
    • 在这里我们遵循把两种运算都叫做卷积的这个传统,只有在用到核的翻转时才会在上下文中特别指明区别。
    • 在机器学习中,学习算法会在核合适的位置学得恰当的值,所以一个基于核翻转的卷积运算的学习算法所学得的核,是对未进行翻转的算法学得的核的翻转。
    • 单独使用卷积运算在机器学习中是很少见的,卷积经常和其他的函数一起使用,无论卷积运算是否翻转了它的核,这些函数的组合通常是不可交换的。
  • 图例1演示了一个在 2 2 2维张量上的卷积运算(核没有翻转)的例子。
  • 离散卷积可以看作矩阵的乘法,然而,这个矩阵的一些元素被限制为必须和另一些元素相等。
    • 例如,对于单变量的离散卷积,矩阵的每一行都必须和上一行移动一个元素后相等。这种矩阵叫做 T o e p l i t z \bold{Toeplitz} Toeplitz矩阵( Toeplitz matrix \text{Toeplitz matrix} Toeplitz matrix)。
    • 对于二维情况,卷积对应着一个双重块循环矩阵( doubly block circulant matrix \text{doubly block circulant matrix} doubly block circulant matrix)。
    • 除了这些元素相等的限制以外,卷积通常对应着一个非常稀疏的矩阵(几乎所有的元素都为零)。这是因为核通常要远小于输入的图像。任何一个使用矩阵乘法但是并不依赖矩阵结构的特殊性质的神经网络算法,都适用于卷积运算,并且不需要对神经网络做出大的修改。典型的卷积神经网络为了更有效地处理大规模输入,确实使用了一些专门化的技巧,但这些在理论分析方面并不是严格必要的。

  • 图例1:一个2维卷积的例子(核没有翻转)
    • 一个2维卷积的例子(核没有翻转)
      在这里插入图片描述

    • 说明:

      • 我们限制只对核完全处在图像中的位置输出,在一些上下文中称为“有效”卷积。
      • 我们用画有箭头的盒子说明输出张量的左上角元素是如何通过对输入张量相应的左上角区域使用核进行卷积得到的。

总结

卷积运算作为卷积神经网络的核心组成部分,其重要性不言而喻。通过模拟生物视觉系统中的局部响应机制,卷积运算使得CNN能够自动学习和提取图像中的层次化特征表示,为图像识别、视频分析等领域提供了强大的技术支持。在卷积运算中,卷积核的大小、步长以及填充方式等参数对提取特征的效果具有重要影响,通过合理设置这些参数可以实现对不同尺度图像特征的有效提取。

同时,随着深度学习技术的不断进步和创新,卷积运算也在不断演进和发展。新型卷积方式的出现不仅丰富了卷积运算的形式和内涵,也为CNN在处理不同类型的数据和任务时提供了更多的选择和灵活性。这些创新不仅推动了CNN技术的进一步发展,也为计算机视觉乃至整个人工智能领域带来了新的机遇和挑战。

总之,卷积运算是卷积神经网络中不可或缺的重要组成部分,其独特的优势和广泛的应用前景使得它成为人工智能领域研究的热点之一。我们有理由相信,在未来的发展中,卷积运算将继续发挥重要作用,推动CNN技术的不断创新和进步,为人类社会的进步和发展贡献更大的力量。

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

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

相关文章

书生大模型基础岛-第二关:8G 显存玩转书生大模型 Demo

1.来源 https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/Demo/task.md 2.过程 在 /root/share/pre_envs 中配置好了预置环境 icamp3_demo conda activate /root/share/pre_envs/icamp3_demo创建一个目录,用于存放我们的代码。并创建一个 cli_demo.py …

【JVM基础09】——垃圾回收-对象什么时候可以被垃圾回收器回收?

目录 1- 引言:垃圾回收1-1 什么是垃圾回收?(What)1-2 为什么要进行垃圾回收?(Why) 2- ⭐核心:对象什么时候可以被垃圾回收器回收?(How)2-1 对象什么时候可以被回收?2-2 引用计数法引用计数法存在的问题&…

误删文件大救星!4款必备数据恢复软件,轻松恢复各类文档照片

在数字化的时代信息就是王道,很多时候丢失了信息就以为着丢失了资源。这时候就需要失易得数据恢复这样的数据恢复工具来帮我们守护信息的安全。 1.福昕数据恢复 https://www.pdf365.cn/foxit-restore/链接直达:https://www.pdf365.cn/foxit-restore/ …

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

创建型模式提供创建对象的机制,能够提升已有代码的灵活性和复用性; 常用的有:单例模式、工厂模式、建造设模式;不常用的:原型模式; 1.概述 单例模式是最简单的模式之一,其保证了某个类在运行期…

Ubuntu22 下 Docker 安装,VS Code Docker配置

1. Docker 安装 1. 卸载旧版本的 Docker(如果有): sudo apt-get remove docker docker-engine docker.io containerd runc 2. 更新软件包: sudo apt-get update sudo apt-get upgrade 3. 安装 Docker 依赖: sudo apt-…

苹果手机通讯录恢复教程?3招速成指南

随着科技的不断进步,手机丢失、系统崩溃等意外情况也时有发生,一旦这些情况发生,我们宝贵的通讯录资料很可能会付诸东流。对此,本文为广大苹果手机用户提供一份简洁明了的通讯录恢复教程,让你轻松掌握苹果手机通讯录恢…

接了一个2000块的小活,大家进来看看值不值,附源码

如题,上周的一天,朋友圈的一个旧友找到了我,说让我帮他开发一个小工具,虽然活不大,但没个几年的全栈经验还不一定能接下来,因为麻雀虽小,涉及的内容可不少: 需求分析 原型设计 详细…

Halcon 边缘提取(像素)

传统提取边缘的方法即通过图像中的明暗进行过滤,其左右就是根据明暗区域找到像素边界。从数学角度,滤波器决定图像剃度,该图像剃度通常作为边缘幅度和边缘方法返回。通过选取所有边缘幅值高的像素点,可以提取区域间的轮廓。另一个…

G1简介、各种GC总结

概述 G1首次出现是在JDK 6u14版本里作为体验版,JDK 7u4版本被正式推出,JDK 9中被设置为默认垃圾收集器(参考JEP 248)。 G1全称是Garbage First,目标:延迟可控的情况下,尽可能高的吞吐量。一款…

怎么使用Element ui来做一个前端登录页面

找到Layout 布局 他通过基础的 24 分栏,迅速简便地创建布局。 找一个对齐方式 这个就不错,找到对应的代码 这个 复制进入idea 引入我们的图片和文字 我这里图片有点问题 然后我再添加一条分割线 加入表单校验 把里面的代码同上加入idea 结果 对表单内容进行调整 …

CAPL使用结构体的方式组装一条DoIP车辆声明消息

如果你参加过我的《CAPL编程系统性课程》,你就结构体类型天然就能表示报文结构,用结构体表示报文虽然麻烦,但灵活度更高。 我们今天试着用结构体类型表示DoIP车辆声明消息的DoIP报头,然后组装一条DoIP消息发送出去。 DoIP消息结构如下: DoIP车辆声明消息结构如下: /**…

等保测评练习卷22

等级保护初级测评师试题22 姓名: 成绩: 一、判断题(10110分) 1. 在应用系统测试中,如果审计是一个独立的功能,那么应用系统应对审计进程进行保…

python反序列化

🎼个人主页:金灰 😎作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️ 🍊易编橙终身成长社群&#…

Blackcat V2.2付费会员制WordPress资源站主题

Blackcat-付费会员制WordPress资源站主题,该主题是基于简约实用的主题选项框架 Codestar Framework 进行开发的功能强大的付费会员制主题,该主题尤其适合用于搭建付费下载资源网站,比如素材站、软件站、视频教程站等付费资源下载网站。 集成…

unity2D游戏开发17战斗精灵

导入 将PlayerFight32x32.png拖Player文件夹进去 设置属性 创建动画剪辑 选中前四帧,右键Create|Animation,将动画命名为player-ire-east 其他几个动画也创建好后,将其拖到Animations|Animations文件夹 选中PlayerController,再点击Animator 创建新的Blend Tree Graph,并重…

JAVA基础 - 图形页面

目录 一. 简介 二. Swing 技术基础 三. 事件处理模型 四. 适配器 五. 布局管理 六. 可视化工具 一. 简介 Java 图形用户界面技术主要有: AWT 、 Applet 、 Swing和 JavaFX 。 AWT(Abstract Window Toolkit,抽象窗口工具包) …

全文最详细CPP/XCP标定协议讲解:命令传输对象CTO

全文最详细CPP/XCP标定协议讲解:命令传输对象CTO 1.概述 CTOs(命令传输对象)用于从主设备向从设备传输命令,以及从从设备向主设备传输响应。 命令结构: 从设备从主设备接收命令,并必须用肯定或否定的响应来做出反应,通信结构如下: 请求报文 每个命令都会被分配一个唯…

Temporal(时效)模式03

正如“问题”一节所说,如果有必要,我们不排除为Skill类提供一个类似的接口的可能性。由于使用 了《temporal》版型,“问题”一节中复杂的图变得简单多了(见图7)。 图7:使用版型后的Employee模型 效果 √ 我…

xAI 可能收购 Character.AI 以测试 Grok 聊天机器人

🦉 AI新闻 🚀 xAI 可能收购 Character.AI 以测试 Grok 聊天机器人 摘要:马斯克的人工智能初创公司 xAI 正考虑收购聊天机器人制造商 Character.AI,以测试其 Grok 聊天机器人。这种收购可能意在降低训练和运行 AI 模型的高昂成本…