【CNN】很详细的讲解什么以及为什么是卷积(Convolution)!

group convolution (分组卷积)详解 文章目录【普通卷积】【group convolution (分组卷积)】【深度可分离卷积】 【普通卷积】 上图为普通卷积示意图,为方便理解,图中只有一个卷积核,此时输入 输出数据为:输入feature map尺寸:W×H×CW×H×CW×H×C ,分别对应feature map的宽,高,通道数; 单个卷积核尺寸:k×k×Ck×k×Ck×k×C ,分别对应单个卷积核的宽,高,通道数; 输出feature map尺寸 :W′×H′W'×H'W′×H′ ,输出通道数等于卷积核数量,输出的宽和高与卷积步长有关, 阅读详情

编辑:深度学习自然语言处理

1、对卷积的困惑

卷积这个概念,很早以前就学过,但是一直没有搞懂。教科书上通常会给出定义,给出很多性质,也会用实例和图形进行解释,但究竟为什么要这么设计,这么计算,背后的意义是什么,往往语焉不详。作为一个学物理出身的人,一个公式倘若倘若给不出结合实际的直观的通俗的解释(也就是背后的“物理”意义),就觉得少了点什么,觉得不是真的懂了。

教科书上一般定义函数 f, g 的卷积 f * g(n) 如下:

连续形式:

离散形式:

并且也解释了,先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。

然后再把g函数平移到n,在这个位置对两个函数的对应点相乘,然后相加,这个过程是卷积的“积”的过程。

这个只是从计算的方式上对公式进行了解释,从数学上讲无可挑剔,但进一步追问,为什么要先翻转再平移,这么设计有何用意?还是有点费解。

在知乎,已经很多的热心网友对卷积举了很多形象的例子进行了解释,如卷地毯、丢骰子、打耳光、存钱等等。读完觉得非常生动有趣,但过细想想,还是感觉有些地方还是没解释清楚,甚至可能还有瑕疵,或者还可以改进(这些后面我会做一些分析)。

带着问题想了两个晚上,终于觉得有些问题想通了,所以就写出来跟网友分享,共同学习提高。不对的地方欢迎评论拍砖。。。

明确一下,这篇文章主要想解释两个问题:

1. 卷积这个名词是怎么解释?“卷”是什么意思?“积”又是什么意思?

2. 卷积背后的意义是什么,该如何解释?

2、考虑的应用场景

为了更好地理解这些问题,我们先给出两个典型的应用场景:

1. 信号分析

一个输入信号f(t),经过一个线性系统(其特征可以用单位冲击响应函数g(t)描述)以后,输出信号应该是什么?实际上通过卷积运算就可以得到输出信号。

2. 图像处理

输入一幅图像f(x,y),经过特定设计的卷积核g(x,y)进行卷积处理以后,输出图像将会得到模糊,边缘强化等各种效果。

3、对卷积的理解

对卷积这个名词的理解:所谓两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。

在连续情况下,叠加指的是对两个函数的乘积求积分,在离散情况下就是加权求和,为简单起见就统一称为叠加。

整体看来是这么个过程:

翻转——>滑动——>叠加——>滑动——>叠加——>滑动——>叠加.....

多次滑动得到的一系列叠加值,构成了卷积函数。

卷积的“卷”,指的的函数的翻转,从 g(t) 变成 g(-t) 的这个过程;同时,“卷”还有滑动的意味在里面(吸取了网友李文清的建议)。如果把卷积翻译为“褶积”,那么这个“褶”字就只有翻转的含义了。

卷积的“积”,指的是积分/加权求和。

有些文章只强调滑动叠加求和,而没有说函数的翻转,我觉得是不全面的;有的文章对“卷”的理解其实是“积”,我觉得是张冠李戴。

对卷积的意义的理解:

1. 从“积”的过程可以看到,我们得到的叠加值,是个全局的概念。以信号分析为例,卷积的结果是不仅跟当前时刻输入信号的响应值有关,也跟过去所有时刻输入信号的响应都有关系,考虑了对过去的所有输入的效果的累积。在图像处理的中,卷积处理的结果,其实就是把每个像素周边的,甚至是整个图像的像素都考虑进来,对当前像素进行某种加权处理。所以说,“积”是全局概念,或者说是一种“混合”,把两个函数在时间或者空间上进行混合。

2. 那为什么要进行“卷”?直接相乘不好吗?我的理解,进行“卷”(翻转)的目的其实是施加一种约束,它指定了在“积”的时候以什么为参照。在信号分析的场景,它指定了在哪个特定时间点的前后进行“积”,在空间分析的场景,它指定了在哪个位置的周边进行累积处理。

4、举例说明

下面举几个例子说明为什么要翻转,以及叠加求和的意义。

例1:信号分析

如下图所示,输入信号是 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  。这种约束的意义,大家可以自己体会。

例2:丢骰子

在本问题 如何通俗易懂地解释卷积?中排名第一的马同学在中举了一个很好的例子(下面的一些图摘自马同学的文章,在此表示感谢),用丢骰子说明了卷积的应用。

要解决的问题是:有两枚骰子,把它们都抛出去,两枚骰子点数加起来为4的概率是多少?

分析一下,两枚骰子点数加起来为4的情况有三种情况:1+3=4, 2+2=4, 3+1=4

因此,两枚骰子点数加起来为4的概率为:


写成卷积的方式就是:

在这里我想进一步用上面的翻转滑动叠加的逻辑进行解释。

首先,因为两个骰子的点数和是4,为了满足这个约束条件,我们还是把函数 g 翻转一下,然后阴影区域上下对应的数相乘,然后累加,相当于求自变量为4的卷积值,如下图所示:

进一步,如此翻转以后,可以方便地进行推广去求两个骰子点数和为 n 时的概率,为f 和 g的卷积 f*g(n),如下图所示:

由上图可以看到,函数 g 的滑动,带来的是点数和的增大。这个例子中对f和g的约束条件就是点数和,它也是卷积函数的自变量。有兴趣还可以算算,如果骰子的每个点数出现的概率是均等的,那么两个骰子的点数和n=7的时候,概率最大。

例3:图像处理

还是引用知乎问题 如何通俗易懂地解释卷积?中马同学的例子。图像可以表示为矩阵形式(下图摘自马同学的文章):

对图像的处理函数(如平滑,或者边缘提取),也可以用一个g矩阵来表示,如:

注意,我们在处理平面空间的问题,已经是二维函数了,相当于:

那么函数f和g的在(u,v)处的卷积该如何计算呢?


首先我们在原始图像矩阵中取出(u,v)处的矩阵:

然后将图像处理矩阵翻转(这个翻转有点意思,不是延x轴和y轴两个方向翻转,而是沿右上到左下的对角线翻转,这是为了凑后面的内积公式。),如下:

可对比下图:


计算卷积时,就可以用和的内积:



请注意,以上公式有一个特点,做乘法的两个对应变量a,b的下标之和都是(u,v),其目的是对这种加权求和进行一种约束。这也是为什么要将矩阵g进行翻转的原因。以上矩阵下标之所以那么写,并且进行了翻转,是为了让大家更清楚地看到跟卷积的关系。这样做的好处是便于推广,也便于理解其物理意义。实际在计算的时候,都是用翻转以后的矩阵,直接求矩阵内积就可以了。

以上计算的是(u,v)处的卷积,延x轴或者y轴滑动,就可以求出图像中各个位置的卷积,其输出结果是处理以后的图像(即经过平滑、边缘提取等各种处理的图像)。

再深入思考一下,在算图像卷积的时候,我们是直接在原始图像矩阵中取了(u,v)处的矩阵,为什么要取这个位置的矩阵,本质上其实是为了满足以上的约束。因为我们要算(u,v)处的卷积,而g矩阵是3x3的矩阵,要满足下标跟这个3x3矩阵的和是(u,v),只能是取原始图像中以(u,v)为中心的这个3x3矩阵,即图中的阴影区域的矩阵。

推而广之,如果如果g矩阵不是3x3,而是6x6,那我们就要在原始图像中取以(u,v)为中心的6x6矩阵进行计算。由此可见,这种卷积就是把原始图像中的相邻像素都考虑进来,进行混合。相邻的区域范围取决于g矩阵的维度,维度越大,涉及的周边像素越多。而矩阵的设计,则决定了这种混合输出的图像跟原始图像比,究竟是模糊了,还是更锐利了。

比如说,如下图像处理矩阵将使得图像变得更为平滑,显得更模糊,因为它联合周边像素进行了平均处理:

而如下图像处理矩阵将使得像素值变化明显的地方更为明显,强化边缘,而变化平缓的地方没有影响,达到提取边缘的目的:

5、对一些解释的不同意见

上面一些对卷积的形象解释,如知乎问题 卷积为什么叫「卷」积?中荆哲以及问题 如何通俗易懂地解释卷积?中马同学等人提出的如下比喻:



其实图中“卷”的方向,是沿该方向进行积分求和的方向,并无翻转之意。因此,这种解释,并没有完整描述卷积的含义,对“卷”的理解值得商榷。

6、一些参考资料

《数字信号处理(第二版)》程乾生,北京大学出版社

《信号与系统引论》 郑君里,应启珩,杨为理,高等教育出版社

想要了解更多资讯,请扫描下方二维码,关注机器学习算法那些事                                

一文详解卷积和逆卷积 文章目录一文详解卷积和逆卷积卷积运算单通道多通道卷积运算的参数计算逆卷积卷积运算的矩阵实现参考资料 一文详解卷积和逆卷积 卷积神经网络(CNN)在计算机视觉大放异彩,入门CNN的第一步就是理解什么是卷积(Convolution)运算。本文旨在以通俗易懂的方式让读者理解卷积的概念。 注:本文的图片素材全部来源于网络,如有侵权,请联系作者删除。 卷积运算 卷积在数学上是两个变量在某范围内相乘后求和的结... 阅读详情

相关推荐

卷积与解卷积原理

滑动窗的长度L称为约束长度,卷积编码的输出不仅与当前进入滑动窗的比特有关,还与前L-1个时刻的比特信号有关,约束长度L越大,误码率越低,但是解码所需的时间越长。= ‘01’,那么从第i时刻到第i+1时刻的分支度量也就是接收的信号与输出信号的汉明距离为0或1,相应的路径度量PM[‘00’, i+1]= PM[‘00’, i]+0和PM[‘00’, i+1]= PM[‘01’, i]+1。3.对于时刻i+1的每一个状态s,选取路径度量小的路径,删除路径度量大的路径,若两个路径度量相等,则随机选择一个路径。

jpma1990的博客 1197

深度学习 | 如何简单快速地理解卷积

文章目录一,什么是卷积二,通俗易懂的理解卷积2.1 离散卷积的例子:丢骰子2.2 连续卷积的例子:做馒头2.3 卷积提取图像特征 一,什么是卷积 对于卷积的定义,如下: 连续形式 (f×g)(n)=∫−∞∞f(τ)g(n−τ)dτ(f×g)(n)=\int_{-\infty}^{\infty}f(\tau )g(n-\tau)d\tau(f×g)(n)=∫−∞∞​f(τ)g(n−τ)dτ 离散形式 (f×g)(n)=∑τ=−∞∞f(τ)g(n−τ)(f×g)(n)=\sum_{\tau=-\infty}^

Justlovesmile的博客 2586

Dilated Convolution —— 空洞卷积(膨胀卷积)

目录 Dilated Convolution概述 Dilated Convolution存在的问题 HDC (Hybrid Dilated Vonvolution) Dilated Convolution概述 Dilated Convolution是在标准卷积的Convolution map的基础上注入空洞,以此来增加感受野(reception field)。因此,Dilated ...

birdguan 4万+

如何通俗易懂地解释卷积?

对卷积的困惑 教科书上一般定义函数 f, g 的卷积 f * g(n) 如下: 连续形式: 离散形式: 并且也解释了,先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。然后再把g函数平移到n,在这个位置对两个函数的对应点相乘,然后相加,这个过程是卷积的“积”的过程。这个只是从计算的方式上对公式进行了解释,从数学上讲无可挑剔,但进一步追问,为什么要先翻转再平移...

soaringpig的博客 3072

深度学习之卷积神经网络详解及代码演示

卷积神经网络广泛应用于计算机视觉领域。就处理图像数据来说,由于一幅图像有许多像素点和通道数,人工神经网络需要很多的权重值w,这样会大大损耗计算资源,也很容易造成过拟合现象。因此,产生了卷积神经网络,仅需很少的神经元就可以对图像进行很好地训练。 ...

qq_38236355的博客 8220

【 group convolution (分组卷积)详解】

@[TOC]( group convolution (分组卷积)详解) group convolution (分组卷积)详解 1.普通卷积: 上图为普通卷积示意图,为方便理解,图中只有一个卷积核,此时输入输出数据为: 输入feature map尺寸: W×H×C ,分别对应feature map的宽,高,通道数; 单个卷积核尺寸: k×k×C ,分别对应单个卷积核的宽,高,通道数; 输出feature map尺寸 :W’×H’ ,输出通道数等于卷积核数量,输出的宽和高与卷积步长有关,这里不关心这两个值

weixin_49117441的博客 9447

【CNN】很细的讲解什么以及为什么是卷积(Convolution)!

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要10分钟跟随小博主,每天进步一丢丢整理:爱学AI来源:知乎精选编译:大白1、对卷积的困惑卷积这个概念,很早以前就学过,但是一直没...

zenRRan的博客 288

Convolution Neural Network (CNN) 原理与实现

本文结合Deep learning的一个应用,Convolution Neural Network 进行一些基本应用,参考Lecun的Document 0.1进行部分拓展,与结果展示(in python)。 分为以下几部分: 1. Convolution(卷积) 2. Pooling(降采样过程) 3. CNN结构 4. 跑实验 下面分别介绍

Rachel Zhang的专栏 10万+

卷积神经网络中的Separable Convolution

卷积神经网络中的Separable Convolution 卷积神经网络中的Separable Convolution 卷积神经网络在图像处理中的地位已然毋庸置疑。卷积运算具备强大的特征提取能力、相比全连接又消耗更少的参数,应用在图像这样的二维结构数据中有着先天优势。然而受限于目前移动端设备硬件条件,显著降低神经网络的运算量依旧是网络结构优化的目标之一。本文所述的Separable Convolu...

heruili的博客 3551

深度学习-卷积神经网络(CNN)

卷积神经网络是一种前馈型神经网络, 受生物自然视觉认知机制启发而来的. 现在, CNN 已经成为众多科学领域的研究热点之一, 特别是在模式分类领域, 由于该网络避免了对图像的复杂前期预处理, 可以直接输入原始图像, 因而得到了更为广泛的应用. 可应用于图像分类, 目标识别, 目标检测, 语义分割等等. 本文介绍可用于图像分类的卷积神经网络的基本结构.

2301_77698138的博客 2749

卷积神经网络CNN介绍:结构框架,源码理解

卷积神经网络介绍:结构框架,源码理解   1.卷积神经网络结构 卷积神经网络是一个多层的神经网络,每层都是一个变换(映射),常用卷积convention变换和pooling池化变换,每种变换都是对输入数据的一种处理,是输入特征的另一种特征表达;每层由多个二维平面组成,每个平面为各层处理后的特征图(feature map)。 常见结构: 输入层为训练数据,即原始数据,网络中的每一个

whiteinblue的专栏 2万+

很详细的讲解什么以及为什么是卷积(Convolution)!

编辑:深度学习自然语言处理1、对卷积的困惑卷积这个概念,很早以前就学过,但是一直没有搞懂。教科书上通常会给出定义,给出很多性质,也会用实例和图形进行解释,但究竟为什么要这么设计,这么计算,...

AI蜗牛车 3978

Separable Convolutions: 可分离的卷积,让CNN再次伟大

Separable Convolutions 1. 回顾传统 CNN 及它的不足之处 1.1 时间!时间! 传统的卷积神经网络已经在很多领域大显身手,在许多机器学习项目中取得了巨大的成就。但是它仍然存在一个最致命的问题——花费过大。 花费过大,主要体现在两种方面: 第一个方面是计算资源的消耗大 人们开玩笑说,深度学习到最后比的就是谁的孔方兄多,虽然有开玩笑的成分,但也不无道理。不过考虑到做项目的人...

frostime的博客 5703

CNN步长卷积计算公式和strided convolution

上图展示的是CNN卷积神经网络中卷积的过程, 定义输入矩阵为I (n×n),卷积核为F (f×f),输出矩阵为 O : 则卷积的过程为:Conv(I,W)=O 对于卷积,由浅入深三种形式, Convolution operation without padding: filter, 单格平移,新图片缩小 Convolution operation with padding: paddi...

vinco的博客 4万+

卷积的简明解释及信号处理应用

具体地,输出信号g(x)的每个样本值是输入信号f(x)与滤波器h(x)在该位置进行卷积运算的结果。通过定义一个合适的卷积核(也称为滤波器或卷积模板),将卷积核与输入图像进行卷积操作,可以突出或检测感兴趣的图像特征,如边缘、纹理或角点。通过将图像的每个像素与一个特定的卷积核进行卷积,可以实现图像的平滑、锐化、边缘检测等操作。这个公式描述了将函数f(x)和g(x)进行卷积的过程,其中g(x)被翻转并移动到f(x)上,然后两个函数的乘积在所有位置上进行积分。接下来,它将卷积核进行翻转,并遍历输出数组的每个位置。

IhgIot的博客 884

Mplus—随机截距交叉滞后模型(RI-CLPM)语法

随机截距交叉滞后模型RI-CLPM的Mplus语法。

m0_54401011的博客 2532

python 实现convolution neural network卷积神经网络算法

卷积神经网络(Convolutional Neural Networks, CNN)是一种包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks, FNN),是深度学习的代表算法之一。基本原理CNN的核心思想是通过模拟人类视觉系统的工作方式,自动提取图像中的特征,并将其用于分类、检测、分割等任务。它主要受到了生物学上感知机制的启发,模拟了人类视觉系统中的感知细胞和复杂细胞的工作方式。

luthane的博客 1万+

从零配置华为S5720交换机VLAN:Web界面与命令行双模式详解(附拓扑图)

本文详细解析华为S5720交换机VLAN配置的全过程,涵盖Web界面与命令行(CLI)双模式操作指南。从基础环境准备到多交换机环境配置同步,特别针对S5720-52X系列交换机的VLANif接口、端口分配策略及交换机堆叠技术进行深入讲解,并附实用拓扑图与配置示例,助力企业网络管理员高效完成VLAN部署。

happy2的博客 1370
上一篇: 博士大佬的机器学习人工智能学习路线总结!
下一篇: 非常详细 | 用 Pytorch 理解卷积网络
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值