卷积神经网络初探(一)理解卷积

何为卷积?

数学中的卷积定义:
(fg)(n)(f*g)(n)f,gf,g的卷积;
其连续的定义为
(fg)(n)=f(τ)g(nτ)dτ(f*g)(n) = \int_{-\infty}^{\infty}f(\tau)g(n-\tau)d\tau
其离散的定义为
(fg)(n)=τ=f(τ)g(nτ)(f*g)(n) = \sum_{\tau =-\infty}^{\infty}f(\tau)g(n-\tau)

那么如何理解这两个例子,首先从离散的卷积定义说起:

假设随意抛掷两枚骰子,求:
两枚骰子点数相加等于4的概率?

假设骰子的质地均不同,那么两个骰子点数的概率分布也将不一致,假设ff为第一枚骰子的概率分布,gg为第二枚骰子的概率分布; 那么
卷积神经网络初探(一)理解卷积卷积神经网络初探(一)理解卷积卷积神经网络初探(一)理解卷积卷积神经网络初探(一)理解卷积
那么骰子点数相加为4的概率为:
f(1)g(3)+f(2)g(2)+f(3)g(1)f(1)g(3)+f(2)g(2)+f(3)g(1)
按照卷积的定义即:
(fg)(4)=m=14f(m)g(4m)(f*g)(4) = \sum_{m=1}^{4}f(m)g(4-m)

再看一个例子:
假设从一定高度让一个球做*落体,且假设球在落下后只有一个维度的运动,在球静止后再在该位置上方以不同的高度让球落下,求两次落球,球的运动距离为c的概率:

不同的高度落球,球在地面滚动距离的分布也不同,假设第一次落球,球滚动距离为a的概率为f(a)f(a),第二次落球,球滚动的距离为b的概率为给g(b)g(b),且c=a+bc=a+b,那么两次落球,球在地面滚动的总距离为c的概率为f(a)g(b)f(a)g(b)
卷积神经网络初探(一)理解卷积
假设现在需要求c=3时的概率,那么如果第一次落球球滚动距离a为2,那么b=1,即$ f(2)g(1)$
卷积神经网络初探(一)理解卷积
同理,a=0时,b=3; a=3时,b=0; a=1时,b=1;

卷积神经网络初探(一)理解卷积
那么P{c=3}=...f(0)g(3)+f(1)g(2)+f(2)g(1)...P\{c=3\} =... f(0)⋅g(3) + f(1)⋅g(2) + f(2)⋅g(1) ...

由此得到更一般化的结论;
(fg)(c)=a+b=cf(a)g(b)(f*g)(c) = \sum_{a+b=c}f(a)g(b)

又有
(fg)(c)=af(a)g(ca)(f*g)(c) = \sum_{a}f(a)g(c-a)
说的更具体些就是,第一次落球球在地面滚动距离为a概率是f(a)f(a),在第一次落球后球滚动距离为a的情况下,第二次落球球滚动距离为c-a的概率为g(ca)g(c-a)

卷积神经网络初探(一)理解卷积
对上述表述做下处理让我们更好的理解卷积,
首先,假设一个球从它开始的地方落下一定距离x的概率是f(x)f(x)。 然后,它从它落地后到停止的位置开始距离x的概率是f(x)f(-x)卷积神经网络初探(一)理解卷积
好了,那我们再来看,如果已经知道两次落球后球滚动的总距离是c,那么第一次落球距离为a的概率是多少呢:
卷积神经网络初探(一)理解卷积
即为g((ac))=g(ca)g(-(a-c)) = g(c-a)

由此可以有如下的图:
卷积神经网络初探(一)理解卷积
计算出在c范围内所有a的取值的和(即棕球位置)既可以得出P{c}P\{c\}

同时,通过移动上图的下半部分(即g分布)即可得到其他的c的概率值

以上是一维度的卷积,那么对于高维度的卷积呢

同样以落球为例,这次不把球落地后滚动的轨迹限定为只有一个维度,而假设球落地后在一个平面内滚动,
卷积神经网络初探(一)理解卷积
同样,也有公式(fg)(c)=a+b=cf(a)g(b)(f*g)(c) = \sum_{a+b=c}f(a)g(b)
不过此时的a,b,c\vec{a},\vec{b},\vec{c}均为向量

则有上述公式的变体:
(fg)(c1c2)=a1+b1=c1,a2+b2=c2f(a1,a2)g(b1,b2)(f*g)(c_1,c_2) = \sum_{a_1+b_1=c_1,a_2+b_2=c_2}f(a_1,a_2)g(b_1,b_2)
或者
(fg)(c1c2)=a1,a2f(a1,a2)g(c1a1,c2a2)(f*g)(c_1,c_2) = \sum_{a_1,a_2}f(a_1,a_2)g(c_1-a_1,c_2-a_2)

就像一维卷积一样,我们可以将二维卷积视为在一个面在另一个上面滑动一个函数

这种情况的一个常见应用是图像处理。 我们可以将图像视为二维函数。 许多重要的图像变换都是卷积,在这些卷积中,将图像函数与称为“内核kerel”(过滤器)的非常小的本地函数进行卷积。
内核滑动到图像的每个位置,并计算一个新像素作为浮动像素的加权和。
卷积神经网络初探(一)理解卷积
我们可以通过一个元素值均为19\frac1{9}的3x3维矩阵与图像函数卷积以模糊图像
卷积神经网络初探(一)理解卷积

我们还可以通过在两个相邻像素上取值-1和1来检测边缘,并在其他任何地方取零。 也就是说,我们减去两个相邻的像素。 当并排像素相似时,这给我们大约为零。 然而,在边缘上,相邻像素在垂直于边缘的方向上非常不同。
卷积神经网络初探(一)理解卷积
参考:
colah’s blog Understanding Convolutions
如何通俗易懂理解卷积