I 卷积神经网络简述
-
<卷积神经网络>
傅里叶变换(即一个波形),可以有不同的正弦函数和余弦函数进行叠加完成。卷积神经网络也是一样,可以认为一张图片是由各种不同特征的图片叠加而成的,所以它的作用是用来提取特定的特征,eg,比如给定一张图片,只想提取它的轮廓,于是就需要卷积神经网络。下图就是LeNet-5识别数字的卷积网络,论文链接,经过多次卷积、池化(又叫子采样),然后全连接,就将原来32×32维度的图片变成120维的特征向量。卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层,即INPUT-CONV-RELU-POOL-FC组成。
LeNet-5数字识别卷积网络 -
<卷积>
其实卷积很好理解,下图左侧绿色的部分的55矩阵其实一般就是我们输入的图片的灰度值(可以想象成一张5px5px的黑白照片,然后把黑白照片上的每一个点转化成矩阵上的每一个元素),黄色部分矩阵就是我们的过滤器,用来提取特征,(其实应该叫滤波器或者卷积核),让卷积核在输入矩阵上进行从左到右,从上到下滑动,然后每一次滑动,两个矩阵对应位置的元素相乘然后求和,就是右边那个矩阵的一个元素。从左到右,每次滑动的时候只移动一格,但是其实它一次滑动多格,这就是步长。对于边界问题的处理:丢掉边界,也就是就按右边那个缩小的矩阵来;复制边界,也就是把左边的最外层原封不动地复制过去。tensorflow中conv2d的"padding"参数可以设为两个值SAME,VALID。
下图给个例子,是输入图像是32323,3是它的深度(即R、G、B),卷积层是一个553的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28281的特征图,上图是用了两个filter得到了两个特征图;我们通常会使用多层卷积层来得到更深层次的特征图。
RGB三通道图像识别 -
<池化>
池化分为两种,一种是最大池化,在选中区域中找最大的值作为抽样后的值,另一种是平均值池化,把选中的区域中的平均值作为抽样后的值,这样做的,原因是为了后面全连接的时候减少连接数,下图是一个列子。想要深入理解卷积和池化可以参考点击论文。再说下计算中需要注意到的。在代码中使用的是彩色图,彩色图有3个通道,那么对于每一个通道来说要单独进行卷积和池化,有一个地方尤其是进行卷积的时候要注意到,隐藏层的每一个值是对应到一幅图的3个通道穿起来的,所以分3个通道进行卷积之后要加起来,正好才能对应到一个隐藏层的神经元上,也就是一个feature上去。