卷积认知

发布时间 2023-10-19 11:52:24作者: 文莱葡萄

前言

博主研究生时期研究的课题有关于点云的深度学习。对于点云这一三维数据形式的深度学习研究,相关工作启发于二维图像深度学习处理,由此对于点云的特征提取也采用卷积这一形式。但在实践过程中,点云的卷积衍生出了多种方法。

因此该随笔主要内容为对卷积这一概念的个人理解与梳理。

卷积字面意义的探讨

参考他人的见解1与Wiki2,在数学定义上,卷积是一种使用两个函数\(f\)\(g\)的数学算子,即将\(g\)翻转与平移后与\(f\)相乘形成的函数的积分。换句话说,可以看作是\(g\)经过翻转与平移后,成为函数\(f\)的权重,最后进行加权相加得到卷积的结果。

如果将卷积二字拆解成"卷"与"积",个人认为在造这个词的时候有所参考。"卷"代表着翻转平移(很像拿出一张纸卷起来,这样卷起的部分既有翻转并且随着卷的过程一直在移动),"积"则是积分或是加权相加。

但实际上,在深度学习代码实践的时候,往往不会特别在意"卷"中的翻转。以二维图像CNN举例,通常定义一个\(n\)x\(n\)的卷积核后就让它在图像上滑动了。

因此,赞同他人的观点,卷积在各个领域均有所应用的情况下它的概念有所变化,翻转这一操作可以扩大为一种约束的概念。即卷积就是,在某种约束下,两个函数\(f\)\(g\),随着\(g\)的移动计算得到\(f\)\(g\)的乘积的积分(加权相加)。

卷积中约束为翻转的进一步理解

参考1,信号处理中有常见的情景,使得卷积中的约束变为翻转。

信号处理图解

在物理意义上,时刻\(t=0\)的时候输入的信号大小为\(f(0)g(0)\),即输入信号的强度乘以系统的响应阈值(在了解了工作中一些传感器后,对此有更深的理解,很多接收信号的器件一定会存在自身物理上的限制,因此就有了系统响应之类的概念的存在)。时刻\(t=10\)的时候\(t=0\)输入的信号大小变为\(f(0)g(10)\)

卷积在此处的意义为,某一时刻总的接收信号为之前信号与系统响应的加权相加。因此最终的计算图解变为下图。

信号处理图解

系统响应函数在此处进行了翻转后,对于总的接收信号计算就变得更为直观。因此翻转在该问题下也代表着时间上的一种约束。

神经网络中的卷积

事实上在深度学习的研究中卷积已经变成了某种框架了,为了更好的提取特征卷积的变体相当之多(卷积核可以变,卷积方式也可以变)。

卷积在深度学习的本质作用是过滤并获取对后续任务有用的特征。Pytorch代码里通常有一维卷积,二维卷积,三维卷积。卷积的维度主要区别在于卷积的移动方向,即一维卷积只往一个方向移动,二维卷积往两个方向移动,三维卷积则是三个方向。

卷积中主要会考虑到卷积核移动的步长(stride),同时因为考虑尺寸的关系,有时候需要对被卷积数据的周围进行填充数据(padding),或者对卷积核进行扩充(空洞卷积,主要作用为不想要pooling把相当数量的信息丢失又想减少计算量)。

二维卷积的形象动图3,该作者做的比较好。

神经网络中卷积可行性的思考

参考李宏毅课程对CNN的探讨4,卷积可行的理由在于模仿人的信息输入与处理。人对于数据的认知和判断往往在于抓住关键信息,而抓住关键信息的同时也会考虑到信息周围,最终全局的信息也是构成认知的重要部分。卷积网络的设计天然的关注数据中的一小部分,并且在层层卷积的过程中信息会逐渐集中,相当于慢慢的从局部再结合周围乃至全局的信息。可以认为卷积的过程是逐渐将数据的特征提取优化的过程。

参考

- [1] 如何通俗易懂地解释卷积-palet的回答

- [2] Wikipedia

- [3]  A guide to convolution arithmetic for deep learning

- [4] 李宏毅机器学习2021