问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

受信号处理启发理解深度学习中的卷积

创作时间:
作者:
@小白创作中心

受信号处理启发理解深度学习中的卷积

引用
CSDN
1.
https://m.blog.csdn.net/Aa980905zjf/article/details/143332559

卷积是深度学习中一个核心的概念,但很多人对其在信号处理和深度学习中的具体含义和应用并不十分清楚。本文从信号处理中的卷积公式出发,逐步解释了卷积的物理含义、操作过程,并将其与深度学习中的卷积进行了对比分析。通过这篇文章,你将对卷积这一概念有更深入的理解。

1.信号处理中,离散的数字信号的卷积公式

这里借用一下别人的公式图

在这个公式里,x(i)表示要输入到系统的输入信号序列, h(i)表示系统函数,系统函数体现的是要对输入的信号进行什么样的处理

2.公式详解

1.卷积的物理含义(结合信号处理)

我们假设输入的信号是{4,3,2,2,1,3,4}的这么一个信号序列,其中数字表示这个信号的强度。我们的系统是一个会对信号进行衰减的系统,刚输入的信号我们不衰减,输入1s后的信号衰减为原信号的90%,输入2s后的信号衰减为原信号的80%,以此类推......卷积表示的含义则是当我输入某个信号之后,系统会输出怎样的一个信号?由于系统函数只是会对之前输入的信号进行衰减而不是直接清0,所以系统输出的信号应该既包含刚输入的信号,又包含之前输入后经过衰减的信号。

图中,以2s时输入某个信号之后系统的输出为例给出了具体的计算公式:

2s时的信号进入系统,系统给的回应是不衰减,仅该输入信号得到的输出结果为x(2)×h(0)

但是既然信号已经有2s的输入,那么系统中就也已经输入了1s和0s时的信号,对于1s时输入的信号,已经输入进系统1s,所以系统给予的回应是衰减至90%,即x(1)×h(1)。对于0s时输入的信号,已经进入系统2是,所以系统给予的回应是衰减至80%,即x(0)×h(2)

对h(i)的进一步理解:

h(i)作为系统函数表明的是当一个信号输入系统后,系统会对这个信号进行怎样的处理

也就是说表示的是x(n)这个输入只有一个值时,比如在0时刻输入信号{1},那么这个信号经过系统1s就会变成0.9,经过系统2s就会变成0.8.....同样的,如果在4s时刻输入信号{5},那么这个信号经过系统1s(也就是5s时),就会变成4.5,经过系统2s(也就是6s时),就会变成4.....

总结:系统对信号进行的操作都是一样的,导致信号经过系统得到不同结果的只是输入信号的不同以及输入系统的时刻不同

2.卷积操作总结

上面第一个图,我们看起来非常别扭,当我们想办法把这个“卷”展开时,我们发现我们只需要先把系统函数关于y轴翻折,然后向右平移至可以与相应的输入函数顺滑的对应相乘,我们就把它展平了。回顾这两步操作,其实就是卷积公式里对h(i)的操作。想要得到y(2),那么就对h(i)向右平移两步,想要得到y(10)就对h(i)向右平移10步

所以卷积操作就是翻转,右移

3.卷积“卷”在何处?

在上图中,2s时刻的卷积可能看不出“卷”的影子,我这里放一张B站up主的图(up主:王木头学科学,讲的也很好,但是个人感觉离散的卷积更容易理解一些)

上图可以看出两函数相乘出形成了一个“卷”

4.深度学习中的卷积

深度学习中的卷积与信号处理中的卷积有什么联系呢?先放结论,我个人的理解是深度学习中的卷积只关心最后一个输入信号输入时的时刻,卷积的结果是多少。(没有看到网上有类似的观点,或者说是我看的资料少哈哈哈哈哈哈,仅个人理解哈,如果有瑕疵请评论区友好讨论)

在卷积操作总结的部分我们有提到想要得到y(2)就将h(i)翻转后右移2个单位,对应相乘相加即可。假设我们的输入还是{4,3,2,2,1,3,4}这么7个数,卷积公式是可以得到每一个信号输入后系统的输出应该是什么的,但是深度学习中的卷积就只关心第七个信号输入后,系统输出的信号是什么。

我们以图上的卷积操作为例,输入是一个4×4的矩阵,卷积核是一个3×3的矩阵,并在下面将矩阵卷积操作转化为了信号的卷积操作,由这个图,我们可以看出,反转后的h(i)是经过向右平移8个单位后得到的(图中h(i)函数纵坐标有点问题,应该是h(8-i)),也就是说,这里计算的是y(8),也是最后一个x输入的时刻。

另外,在这里需要指明,卷积核并不是h(i),卷积核是h(-i)

5.一些小思考

1.深度学习真的卷积了吗?

即使这样合理的解释了深度学习中的卷积与我们已知的卷积公式的关系,但是其实我个人还是觉得深度网络中的卷积只是借用了这个概念,并没有真的进行卷积。比如:我的输入是一个4×4的矩阵,但是当我进行卷积时我并不是一次性输入了16个数,而是以卷积核的大小(比如3×3),一次只输入9个数,与卷积核进行卷积。

如果要说它进行了卷积,那么我只能说从系统函数的角度来说,好像它与卷积核做了差不多的事情。卷积无非就是让输入(在输入矩阵中截取卷积核大小的输入)进入一个系统(卷积核),系统会对不同的输入序列进行相同的处理,处理结果的不同只取决于输入的不同以及信号进入系统的时刻不同。在深度学习中也是如此,对于不同的输入,经过的是相同的卷积核,得到不同的feature map。在深度学习中,输入的不同其实也体现为两点:输入值的不同以及输入时刻的不同,但是因为都可以直观的体现在矩阵上,所以直接归纳为截取的卷积核大小的输入矩阵不同。

2.重点是卷积核的学习

与信号处理不太一样的是对于深度学习,这个被看作系统函数的东西是可学习的,可变的,是参数的权重值组成的矩阵。在信号处理中,我们会有一些已知的滤波器,可以看作是系统函数,让信号输入,去得到我想要的输出信号。那么在深度学习中,我想要一个 比较好的feature map就需要有一个很好的卷积核,它对于不同的输入应该要可以生成差距较大的feature map以保证我的分类任务的准确率。我之前会觉得要学习好的特征,会觉得特征很重要,但是其实好的特征只是结果,重点是训练一个好的系统函数(卷积核+非线性),让它能产生好区分的特征图。

在信号处理中,系统函数一般是固定的,给不同的输入,得到不同的输出,但是输出都是保留了同一种特性的。比如高斯滤波器就可以让输入的信号变得平滑(得到了我们想要的信号)。在深度学习中,我们的目的就是去学习一个好的系统函数(卷积核)使得输入可以变成我们想要的东西(一般就是一个好的特征图),我当然希望学习好的一个完美卷积核对于不同的输入可以得到区别很大的特征图来帮助我进行下游分类任务,但是由于3×3的卷积核太小,不足以构造出一个很好的系统函数,所以往往需要很多层卷积,慢慢将这个系统函数变成我们想要的。(应该是,我觉得很合理哈哈哈哈)。

3.通信系统中加入深度学习

好奇通信系统中可以通过深度学习来慢慢学习到一个比较好的系统函数吗?毕竟有的滤波器好像不好做,给输入和想要的输出硬train一发哈哈哈哈哈哈

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号