卷积计算过程中需不需要卷积核翻转?解答这个问题引出了一个叫“互相关”的概念。
二维卷积
给定一个图像和一个滤波器
,一般𝑈 << 𝑀, 𝑉 << 𝑁,其卷积为
输入信息X和滤波器W的二维卷积定义为
其中表示二维卷积运算。
下图是一个二维卷积的示例。 从图中可以看出,卷积核确实翻转了
互相关
在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)上滑动卷积核(即滤波器),通过卷积操作得到一组新的特征。在计算卷积的过程中,需要进行卷积核翻转。在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。互相关是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。给定一个图像 和卷积核
,它们的互相关为
卷积的公式对比可知,互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。
公式可以表述为
其中表示互相关运算,rot180()表示旋转180度
在神经网络中使用卷积是为了进行特征抽取,卷积核是否进行翻转和其特征抽取的能力无关。特别是当卷积核是可学习的参数时,卷积和互相关在能力上是等价的。因此,为了实现上(或描述上)的方便起见,我们用互相关来代替卷积。事实上,很多深度学习工具中卷积操作其实都是互相关操作。