卷积神经网络举例
- 第一周的课程比较基础,主要讲了有关卷积的基础知识,在这里我不赘述了,将重点内容再记录一下。首先看它在1-10中举的例子:
过程比较简单,两个卷积-池化层,然后是三个全连接层,实现了一个有关手写数字识别的例子。
输入的图像是32*32*3的RGB图像,我们对照第二个图表,一步一步的看一下。
- 首先第一层输入层,32*32*3的图像,对应激活值是32*32*3=3072,这一层没有参数,参数parameters=0.
- 而后,卷积层,采用8个5*5的卷积核,所以对应参数parameters=权重w中参数+偏置b中参数=5*5*8+8=208,激活值=卷积之后的激活尺寸之积=28*28*8=6272.
- 而后池化层,池化层是没有需要训练的参数的,只有固定的参数值宽高f=5,步长s=1,所以parameters=0,激活值=池化之后的激活尺寸之积=14*14*8=1568.
- 第二个卷积池化层重复上述流程,在此不赘述。
- 然后是全连接层FC3,将池化层POOL2之后的激活尺寸5*5*16摊平展开成400*1的矩阵,则对应的FC3层120个神经元的w尺寸为120*400,再加上还有一个偏置参数b,所以总共的parameters=权重w中参数+偏置b中参数=120*400+1=48001,经过激活值=FC3之后的激活尺寸之积=120*1=120.
- 而后还是全连接层,FC4和FC3重复的过程是一样的,由于FC4有84个神经元,所以w的尺寸的84*120,再加上还有一个偏置参数b,所以总共的parameters=权重w中参数+偏置b中参数=84*120+1=10081,经过激活值=FC4之后的激活尺寸之积=84*1=84.
- 最后softmax层其实也是个全连接层,由于softmax有10个神经元,所以w的尺寸的10*84,再加上还有一个偏置参数b,所以总共的parameters=权重w中参数+偏置b中参数=10*84+1=841,经过激活值=softmax之后的激活尺寸之积=10*1=10.
为什么使用卷积
与只使用全连接层相比,使用卷积层的优势是参数比较少,而参数少得益于参数共享和稀疏连接。
参数共享
- 说到参数共享,有必要先说一下使用卷积的一个优势,或者说一个原因。
输入32*3*3的图像,然后卷积得到28*28*6。使用了6个5*5的卷积核,所以需要训练的参数数量=5*5*6+6=156个。
而倘若使用全连接层的话,需要的参数parameters=w+b=4704*3072+1=14450689个需要训练的参数,虽然以现在的科技,这1400多w个参数还是可以训练的,但是这才是32*32的图像啊,多么小的图像,倘若是1000*1000的图像,那参数的数量不堪设想。 - 那么卷积层之所以能够使用这么少的参数,原因之一就是参数共享。
所谓参数共享其实就是一个3*3的卷积核(其实就是特征探测器),在图像的不同区域内都是有效果的。比如上图中的垂直探测器,沿着图像不同区域内滑动来检测垂直特征,只用这一个探测器就能起到效果,而不需要使用好几个不同的探测器,也就是说,这一个探测器来扫描整张图像效果就足够了。尽管有时候图像的不同区域的分布是不同的,但是共用一个探测器效果往往也是不错的。
稀疏连接
- 下图
我们可以看到输出矩阵的左上角的0只依赖于输入图像左上角的那9个参数值,其他的像素值不影响输出矩阵0的值,同理输出矩阵右下方的30也只是收输入矩阵红色方框里的9个像素值所影响,这就是稀疏连接。