上图所示:若我们有1000x1000像素的图像(一个输入张量),有1百万个隐藏层的神经元(一个像素即为一个神经元,也就是单次卷积对应的结果数值如下图的动画,一次卷积为一个神经元),如果全连接(即每个隐层神经元都要与图像的每一个像素点进行连接),就有
1000
∗
1000
∗
1000000
=
1
0
12
1000*1000*1000000=10^{12}
1000∗1000∗1000000=1012个连接,也就是
1
0
12
10^{12}
1012个权值参数。但是图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,因为每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来可得到全局信息。这样,我们就可以减少连接的数目,即减少神经网络需要训练的权值参数的个数了。
如上图所示(不同颜色代表不同的滤波器):假如局部感受野是10x10,则隐层每个感受野只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即
1
0
8
10^8
108个参数。隐藏层的每一个神经元都连接10x10个元素的图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。假如我们每个神经元这100个参数是相同的,也就是说每个神经元用的是同一个卷积核去卷积图像。这样就只有100个参数(从10的8次方到10的2次方)所以不管隐层的神经元个数有多少,两层间的连接就只有100个参数,这一操作即为权值共享。
如果因为每个神经元都用同样的一个滤波器,那么只能提取一种特征,其实一种滤波器,也就是一种卷积核就是提取出图像的一种特征,例如某个方向的边缘。如下图:
当需要提取多种特征时,就需要增加不同的滤波器,假设滤波器的数量为50时,每种滤波器的参数不一样,表示它提出输入图像的不同特征,例如不同的边缘。这样每种滤波器去卷积图像就得到对图像的不同特征的映射,即为Feature Map。所以50种卷积核就有对应的50个Feature Map。这50个Feature Map就组成了一层神经元。50种卷积核x每种卷积核共享100个参数=50*100,也就是5000个参数,达到了提取不同特征的能力,不仅可以提取多方面的特征而且还可以减少计算。