背景

信号与系统这门课我忘得快差不多了,现在只记住了一个概念:时域卷积等于频域乘积

现在用深度学习,总感觉里面的卷积怪怪的,如下是深度学习所谓的“卷积”(其实是互相关运算):

卷积运算与互相关运算_卷积运算与互相关运算


输入对应位置和卷积核对应位置相乘再求和,得到输出。

0×0+1×1+3×2+4×3=19,

1×0+2×1+4×2+5×3=25,

3×0+4×1+6×2+7×3=37,

4×0+5×1+7×2+8×3=43.

卷积定义

设f ( x ) f(x)f(x)和g ( x ) g(x)g(x)是在R上的可积函数,作积分:

∫ − ∞ + ∞ f ( τ ) g ( x − τ ) d τ

∫+∞−∞f(τ)g(x−τ)dτ∫−∞+∞f(τ)g(x−τ)dτ

∫−∞+∞f(τ)g(x−τ)dτ

可以证明,关于几乎所有的实数x xx,上述积分是存在的。这样,随着x xx的不同取值,这个积分就定义了一个新函数h ( x ) h(x)h(x),称为函数f ff与g gg的卷积,记为h ( x ) = ( f ∗ g ) ( x ) h(x)=(f*g)(x)h(x)=(f∗g)(x)。

那么按照这个定义,对于上述矩阵的卷积操作,应该是这样的:

0×3+1×2+3×1+4×0=5,

1×3+2×2+4×1+5×0=11,

. . . ......

这样可能还不是很直观,那就搬一下知乎大佬的动图作解释如下:

f , g f,gf,g为同尺寸矩阵,现在假设f ff为输入矩阵中某一块,g gg为卷积核,如下卷积操作得到这点的卷积值:

卷积运算与互相关运算_卷积运算与互相关运算_02

这其实相当于将卷积核左右翻转,再上下翻转,然后做互相关运算。

可以看出如果卷积核是一个方块,并且它关于中心对称,那么卷积和互相关运算得到的结果是一样的

实际使用

现在深度学习中所做的卷积操作,其实都是互相关运算。无论哪个框架,conv2的API都是这个操作。
对于我来讲,卷积就是一种运算,和加减乘除一样。

至于区别

这里我推荐这篇知乎文章
传送门