卷积神经网络示意
假设一个任务,有一张32x32x3的输入图片,目的是做数字检测
卷积有两种分类,即所谓的层的划分。一类卷积是一个卷积层与一个池化层一起作为一层,另一类是把一个卷积层看成是一层,池化层也单独作为一层。当人们在计算神经网络有多少层时,通常只统计具有权重和参数的层。因为池化层没有权重和参数,只有一些超参数,在此处,我们把CONV1和POOL1共同作为一个卷积,并标记为Layer1。
下图是为这个任务设计的网络。
注意几点:1 池化层没有参数 2 卷积层的参数相对较少,大多数参数都存在于神经网络的全连接层 3 随着神经网络的加深,激活值会逐渐变小,如果激活值下降太快,也会影响网络的性能
神经网络的激活值大小和参数数量如下图:
为什么使用卷积?
和只用全连接层相比,卷积层的两个主要优势在于
1)参数共享parameter sharing
2)稀疏连接 sparsity of connection
假设有32x32x3(=3072)的图片作为输入,我们用6个5x5大小的卷积核做卷积,得到28x28x6(=4704)的输出,此时卷积核的参数大概有5x5x3x6=450个参数。而假如我们构建一个神经网络,其中一层含有3072个单元,下一层含有4074个单元,两层中的每个神经元彼此相连,然后计算权重矩阵,它等于3072x4704≈1400万个参数。所以要训练的参数很多。(上面计算参数没有考虑到偏置bias)
卷积网络映射这么少的参数有两个原因
1 参数共享(比如说,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域)
2 稀疏连接
比如说,左上角的0,是通过3x3的卷积计算得到的,它只依赖于输入图像的左上角3x3的区域像素,右边这个输出单元0仅仅与输入特征中的9个相连接,而且,其他像素值,都不好对输出产生任何影响,这就是稀疏连接的概念。
神经网络可以通过这两种机制减少参数,以便于我们用更小的训练集来训练它,从而预防过拟合。
神经网络善于捕捉平移不变。即使平移输入图片,输出结果仍然有很多是相似的。