【深度学习基础】深入理解 卷积与卷积核

news/2024/11/5 20:43:41 标签: 深度学习, 图像处理, 人工智能

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

 

目录

1. 卷积

1.1 卷积的定义

1.2 卷积的意义 

例子:信号分析

2. 卷积核与卷积

2.1 卷积

2.2 卷积核

2.3 深度学习中的卷积

 3. 总结


1. 卷积

从数学上讲,卷积就是一种运算。

某种运算,能被定义出来,至少有以下特征:

  • 首先是抽象的、符号化的
  • 其次,在生活、科研中,有着广泛的作用

比如加法:

  • a+b ,是抽象的,本身只是一个数学符号
  • 在现实中,有非常多的意义,比如增加、合成、旋转等等

卷积,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分、级数,所以看起来觉得很复杂。

核心思想:

        1、卷积是一种运算

        2、卷积和加法、减法等运算相同,都有其服务的现实意义

1.1 卷积的定义

我们称 (f*g)(n) 为 f,g 的卷积

其连续的定义为:

(f*g)(n)=\int_{-\infty}^\infty f(\tau)g(n-\tau)d\tau

其离散的定义为:

(f*g)(n)=\sum_{\tau=-\infty}^\infty f(\tau)g(n-\tau)

这两个式子有一个共同的特征:

t以及n-t存在,也就是说两者相加永远为n

这就好像把一个毛巾卷起来,变为两部分:一边为t;另一边为n-t

到这里,大家可能就知道这个卷积中的卷是什么意思啦~~~~

拿一个经典例子卷毛巾:

1、卷毛巾就是将毛巾的其中一个角和另一个角连接起来

2、在卷积中就是t和n-t连接起来


1.2 卷积的意义 

那么,在实际应用中我们又为什么需要引入卷积这个计算方式呢?

我来举两个例子大家就明白了!!!

例子:信号分析

如下图所示,输入信号是 f(t) ,是随时间变化的。系统响应函数是 g(t) ,图中的响应函数是随时间指数下降的,它的物理意义是说:如果在 t=0 的时刻有一个输入,那么随着时间的流逝,这个输入将不断衰减。换言之,到了 t=T时刻,原来在 t=0 时刻的输入f(0)的值将衰减为f(0)g(T)。

输入信号:

 系统响应时间:

考虑到信号是连续输入的,也就是说,每个时刻都有新的信号进来,所以,最终输出的是所有之前输入信号的累积效果。如下图所示,在T=10时刻,输出结果跟图中带标记的区域整体有关。其中,f(10)因为是刚输入的,所以其输出结果应该是f(10)g(0),而时刻t=9的输入f(9),只经过了1个时间单位的衰减,所以产生的输出应该是 f(9)g(1),如此类推,即图中虚线所描述的关系。这些对应点相乘然后累加,就是T=10时刻的输出信号值,这个结果也是f和g两个函数在T=10时刻的卷积值。

​​显然,上面的对应关系看上去比较难看,是拧着的,所以,我们把g函数对折一下,变成了g(-t),这样就好看一些了。看到了吗?这就是为什么卷积要“卷”,要翻转的原因,这是从它的物理意义中给出的。 

​​上图虽然没有拧着,已经顺过来了,但看上去还有点错位,所以再进一步平移T个单位,就是下图。它就是本文开始给出的卷积定义的一种图形的表述:

​​所以,在以上计算T时刻的卷积时,要维持的约束就是: t+ (T-t) = T 。

本质上就是在信号处理中,在处理随时间递减的信号量之间乘积求和的关系时,存在这种约束关系。

再比如:

小明在1时刻,吃了100kcal热量,2时刻吃了80kcal热量;同时在1时刻热量剩余90%,在2时刻热量会剩余70%。那么到2时刻热量剩余将是:100*70%+80*90*

如果把小明的进食热量看作一个函数,把热量剩余百分比看作第二个函数。那么小明在任何时刻的热量剩余,都是这两个函数做卷积操作

卷积本质:翻转+乘积求和

2. 卷积核与卷积

不知道看到这里的大家会不会很纳闷。

这这这,和我们深度学习里面的卷积核的卷积操作完全不同呀!!!!!

晕晕晕~~~

你说的没错,就是不同的(无语住了)

区别就是:卷积到底要不要翻转

2.1 卷积

这个卷积是指数学中的卷积

在数学中,两个矩阵进行卷积操作,卷积核是要翻卷的,如下面动图所示,它们的位置翻转对应。

数学中的卷积:计算要翻转180度

再来个例子:

对于一个公式:

x+y=n

计算这个公式的卷积操作,就是下图直线

2.2 卷积核

讲卷积核就让我们从一个例子开始讲

图像处理

有这么一副图像,可以看到,图像上有很多噪点:

高频信号,就好像平地耸立的山峰:

看起来很显眼。

平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去。用数学的话来说,就是把山峰周围的高度平均一下。

平滑后得到:

卷积可以帮助实现这个平滑算法。

有噪点的原图,可以把它转为一个矩阵:

然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)作为卷积核g,来平滑图像:

g=\begin{bmatrix}\frac19&\frac19&\frac19\\\frac19&\frac19&\frac19\\\frac19&\frac19&\frac19\end{bmatrix}

记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。

比如我要平滑:a11

就在矩阵中,取出a11点附近的点组成矩阵:f

和卷积核g进行卷积计算后,再填回去:

再来一张卷积的动态图:


那么最关键的来了:卷积核和矩阵的运算具体是如何的,也就是f和g具体是如何计算的

看到有的博主说是这样的

这在数学上来看是没有错的

但是在深度学习操作中,我们从来没有看到人是这么算的

2.3 深度学习中的卷积

概念辨析:

  1. 卷积核:深度学习中的概念,执行的是深度学习中的卷积操作
  2. 深度学习的卷积:不需要翻转的卷积
  3. 数学中的卷积:翻转+乘积求和
  4. 深度学习的卷积:乘积求和
  5. 深度学习的卷积:又叫滤波
  6. 深度学习的卷积核:又叫滤波器

1.上文可以清晰地看到数学中卷积运算的特点:
卷积核与原始的矩阵乘积,是围绕着中心元素进行180度旋转后,才是对应的元素。

2.卷积神经网络的卷积本质上是一种spatial filter(滤波)
我们来看两种图像空间滤波的常见操作
a)平滑滤波
b)边缘提取
这两种件事情,很容易通过设计特定的“卷积核”,然后将其与像素矩阵的对应元素(不进行上述的旋转)相乘得到。
3.此“卷积”与彼“卷积”的联系与区别 :
**最直观的就是:是否进行翻转,然后再进行对应元素的加权求和。 **
其实本质上来说是两者的用途不同

  • 数学中卷积,主要是为了诸如信号处理、求两个随机变量和的分布等而定义的运算,所以需要“翻转”是根据问题的需要而确定的
  • 卷积神经网络中“卷积”,是为了提取图像的特征,其实只借鉴了“加权求和”的特点
  • 还有一点一定要说的是:数学中的“卷积核”都是已知的或者给定的,卷积神经网络中“卷积核”本来就是trainable的参数,不是给定的,根据数据训练学习的,那么翻不翻转还有什么关系呢?因为无论翻转与否对应的都是未知参数!

 3. 总结

  1. 卷积核:深度学习中的概念,执行的是深度学习中的卷积操作
  2. 深度学习的卷积:不需要翻转的卷积
  3. 数学中的卷积:翻转+乘积求和
  4. 深度学习的卷积:乘积求和
  5. 深度学习的卷积:又叫滤波
  6. 深度学习的卷积核:又叫滤波器

如果想要学习更多深度学习知识,大家可以点个关注并订阅,持续学习、天天进步

你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~


http://www.niftyadmin.cn/n/5739847.html

相关文章

论文阅读-用于点云分析的自组织网络

目前存在的问题: 原始的SOM(1)训练结果与初始节点高度相关(2)样本更新规则取决于输入点的顺序3D 卷积神经网络(需要将数据转换为体素,存在分辨率损失和计算成本上涨的问题)、PointN…

AIGC学习笔记(4)——AI大模型开发工程师

文章目录 AI大模型开发工程师003 GPT大模型API实战1 Completion API和Chat Completion API学习OpenAI API的意义Completion API和Chat Completion API代码实践2 Chat Completion API详细参数messages可以包含多条信息messages角色设定message之Few-shot效果演示message之Zero-s…

【Java多线程】:理解线程创建、特性及后台进程

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 一、背景 -- 进程与线程🚀 🔥 多线程是提升程序性能非常…

Chromium Mojo(IPC)进程通信演示 c++(1)

网上搜索关于mojo教程 多数都是理论 加上翻译谷歌mojo文档的,但是如何自定义两个进程使用mojo通信呢?看下面的完整例子介绍:(本人也是参考谷歌代码例子改编而成) 本文演示了client.exe和service.exe 通过mojo::Incomin…

UE5相机系统初探(一)

UE5相机系统初探(一) 和Unity类似,UE的相机也是由名为Camera的component控制的。那么,在UE中要如何实现一个跟随玩家的第三人称相机呢?假设我们已经有了一个表示玩家的类ACF_Character,首先第一步就是要先在…

导师双选系统开发:Spring Boot技术详解

第一章 绪论 1.1 选题背景 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信…

死锁(Dead Lock)

目录 一. 死锁出现的场景 1. 一个线程, 一个锁对象 2. 两个线程, 两个锁对象 3. N个线程, M个锁对象 二. 造成死锁的必要条件 1. 锁是互斥的 2. 锁是不可被抢占的 3.请求和保持 4. 循环等待 三. 死锁的解决方案 1. 预防死锁 2. 死锁产生后的解决 一. 死锁出现的场景…

Java环境下配置环境(jar包)并连接mysql数据库

目录 jar包下载 配置 简单连接数据库 一、注册驱动(jdk6以后会自动注册) 二、连接对应的数据库 以前学习数据库就只是操作数据库,根本不知道该怎么和软件交互,将存储的数据读到软件中去,最近学习了Java连接数据库…