前言
作为图像处理中的一大核心工具,卷积已经应用在各个方面。但是卷积是如何而来的呢?
从某种意义上来说,我们可以认为卷积是一种特殊的全连接,它就是从全连接层,根据某些图片的特点,演变而来的。因为全连接网络在处理图片上存在着很多问题。
全连接处理图片
利用全连接层处理图片,并不是不可以,对于与一些简单的数据,比如说MNIST手写数据集,就可以通过全连接来实现。因为它图片数据非常小,只有
28
×
28
28\times 28
28×28,784个像素。
但是对于一张现实中的图片,显然不只有七百多个像素,千万像素是非常正常的。
那么就来简单的计算一下:
每个像素一个结点,输入层共有:
10000000
个结点
假设隐藏层有
100000
个结点
权重共有
10000000
×
100000
=
1
0
12
个数
假设其类型为
32
位浮点数,每个占用
4
字节。
4
×
1
0
12
1024
×
1024
×
1024
≈
3725.3
G
B
每个像素一个结点,输入层共有:10000000个结点 \newline 假设隐藏层有100000个结点 \newline 权重共有10000000\times 100000=10^{12}个数 \newline 假设其类型为32位浮点数,每个占用4字节。 \newline \frac{4\times 10^{12}}{1024\times 1024\times 1024}\approx 3725.3GB
每个像素一个结点,输入层共有:10000000个结点假设隐藏层有100000个结点权重共有10000000×100000=1012个数假设其类型为32位浮点数,每个占用4字节。1024×1024×10244×1012≈3725.3GB
这是个巨大无比的数字,暂且不说如何训练,就存储都是一个严重的问题。
图像识别的原则
从现实生活中,人类如何识别物体?
看这张图片:
图中有两只小狗,为了识别他们,只需要看红框框内的东西就足够了,并不需要看完整张图片。
无论是在左侧的红框框里,还是右侧的红框框里,它都是狗狗,也就是说与位置无关。
因此,就可以得到图片识别的两个原则。
局部性原则
识别一个物体,只需要局部信息,即这个物体附近的信息即可,并不需要整张图片完整的信息。
平移不变性原则
无论物体在图片中的哪个位置,它依然是这个物体,它与位置无关。
数学推导
先看一下全连接是怎么转移的。
H
i
=
∑
k
W
i
,
k
×
X
k
+
B
H_{i}=\sum_{k}W_{i,k}\times X_{k} +B
Hi=k∑Wi,k×Xk+B
而在图片处理上,输入和输出都是二维的,同理可写出二维全连接的转移。
H
i
,
j
=
∑
k
,
l
W
i
,
j
,
k
,
l
×
X
k
,
l
⇒
H
i
,
j
=
∑
a
,
b
W
i
,
j
,
a
,
b
×
X
i
+
a
,
j
+
b
H_{i,j}=\sum_{k,l}W_{i,j,k,l}\times X_{k,l} \newline \Rightarrow H_{i,j}=\sum_{a,b}W_{i,j,a,b}\times X_{i+a,j+b}
Hi,j=k,l∑Wi,j,k,l×Xk,l⇒Hi,j=a,b∑Wi,j,a,b×Xi+a,j+b
接下来就是利用图片识别的两个原则进行化简了,首先先看平移不变性:W应该与位置无关,即W与i,j无关,故可以得出:
H
i
,
j
=
∑
a
,
b
W
a
,
b
×
X
i
+
a
,
j
+
b
H_{i,j}=\sum_{a,b}W_{a,b}\times X_{i+a,j+b}
Hi,j=a,b∑Wa,b×Xi+a,j+b
接下来运用局部性原则,一个位置的值只与它附件的点有关,与距离它很远的点无关,即限制了a,b的取值范围。
H
i
,
j
=
∑
a
=
−
δ
δ
∑
b
=
−
δ
δ
W
a
,
b
×
X
i
+
a
,
j
+
b
H_{i,j}=\sum_{a=-\delta}^{\delta} \sum_{b=-\delta}^{\delta} W_{a,b}\times X_{i+a,j+b}
Hi,j=a=−δ∑δb=−δ∑δWa,b×Xi+a,j+b
这时候,不难发现,W就是一个卷积核了。