前言
卷积之前在自动控制系统中接触过,当时查了资料感觉知乎的一位大佬写的笔记很好这里附上该篇文章的链接。下面我所写的是卷积神经网络中的一维卷积,其整体思想差不多。
卷积的定义
卷积(Convolution),也叫做褶积,是分析数学的一种重要的运算,在信号处理和图像处理中,经常使用一维或者二位卷积[1]。
一维卷积
一维卷积经常用到信号处理中,用于计算信号的延迟累计。假设我们在每个
t
t
t时刻都会产生一个信号
x
t
x_t
xt,其衰减系数为
w
k
w_k
wk,在
k
−
1
k-1
k−1个时间延长后为原来的
w
k
w_k
wk倍。如下例:
w
1
=
0.1
,
w
2
=
0.2
,
w
3
=
0.3
w_1=0.1,w_2=0.2,w_3=0.3
w1=0.1,w2=0.2,w3=0.3,那么在时刻
t
t
t收到的信号
y
t
y_t
yt为当前信息和之前信息产生的累加和,计算公式如下:
y
t
=
0.1
×
x
t
+
0.2
x
t
−
1
+
0.3
x
t
−
2
y_t=0.1\times x_t+0.2x_{t-1}+0.3x_{t-2}
yt=0.1×xt+0.2xt−1+0.3xt−2
=
w
1
×
x
t
+
w
2
x
t
−
1
+
w
3
x
t
−
2
=w_1\times x_t+w_2x_{t-1}+w_3x_{t-2}
=w1×xt+w2xt−1+w3xt−2
=
∑
k
=
1
K
w
k
x
t
−
k
+
1
=\sum_{k=1}^K{w_kx_{t-k+1}}
=k=1∑Kwkxt−k+1
我们一般把
w
1
,
w
2
,
w
3
⋅
⋅
⋅
⋅
⋅
w_1,w_2,w_3·····
w1,w2,w3⋅⋅⋅⋅⋅称为滤波器(Filter)或者卷积核(Convolution kernel)假设滤波器的的长度为
K
K
K,它和一个信号序列
x
1
,
x
2
,
x
3
⋅
⋅
⋅
⋅
x_1,x_2,x_3····
x1,x2,x3⋅⋅⋅⋅的卷积和为:
y
t
=
∑
k
=
1
K
w
k
x
t
−
k
+
1
y_t=\sum_{k=1}^K{w_kx_{t-k+1}}
yt=k=1∑Kwkxt−k+1
我们可以设计滤波器来对序列信号进行处理,例如
w
=
[
1
K
,
1
K
,
⋅
⋅
⋅
,
1
K
]
\boldsymbol{w}=\left[ \frac{1}{K},\frac{1}{K},···\text{,}\frac{1}{K} \right]
w=[K1,K1,⋅⋅⋅,K1]时,卷积相当于信号序列的简单移动平均(窗口大小为K)。
下图给出一维卷积对数据的操作:
最下层为输入的数列,中间连线上的系数为滤波器的系数,最上层为计算的结果。
取前三个数
[
1
,
1
,
−
1
]
[1 , 1 ,-1]
[1,1,−1]进行一维卷积运算:
1
×
1
3
+
1
×
1
3
+
−
1
×
1
3
=
1
3
1\times \frac{1}{3}+1\times \frac{1}{3}+-1\times \frac{1}{3}=\frac{1}{3}
1×31+1×31+−1×31=31之后依次进行计算就可以了。**这里为什么说
w
=
[
1
K
,
1
K
,
⋅
⋅
⋅
,
1
K
]
\boldsymbol{w}=\left[ \frac{1}{K},\frac{1}{K},···\text{,}\frac{1}{K} \right]
w=[K1,K1,⋅⋅⋅,K1]可以检测信号序列中的低频(信号变化缓慢)信息呢?**解释:在计算的结果中,我们发现,连续的三个1输出的结果为1,当三个信号中有一个为-1的时候,信号就会有变化对应就不是低频。
右图滤波器系数为[1,-2,1]可以检测信号序列中的高频信息,我们发现信号序列为1,-1,1的时候此时输出的值为最大此时对应序列变换最频繁1->-1,-1->1,连续三个1的时候输出为0,这个滤波器可以很好地分辨出序列中高频数列出现位置。
参考
《神经网络与深度学习》.邱锡鹏