卷积神经网络(CNN)简介

  因此我们 通常把输入层 到 隐藏层的映射称为 特征映射(a feature map) , 卷积核共享的权值 w 叫做 shared weights .,b叫做 shared bias。 shared weights和 shared bias定义了一个核或者过滤器( a kernel or filter )

实际上我们在应用中会有很多特征图,分别检测不同 的特征:

  上图有3个特征图,每个特征图 对应 5x5的 shared weights 和1个shared bias.。

  为什么叫做卷积神经网络?

  因为下面的公式里的包含卷积操作

用卷积符号可以把公式写成:

是卷积操作,

表示特征映射的输出响应,

表示特征映射的输入响应。

  【Pooling layers】

  池化层一般接在卷积层后面,用于简化卷积的输出结果。 其实就是把卷积层的输出结果进行压缩:

物联网

例如 上图就是使用 max-pooling 把四个神经元压缩为一个神经元:取最大的像素值,其它丢弃。( 当然也有其它的 pooling 例如 L2 pooling 是把 2x2的区域值 平方,求和,开根号 )。 上图 24x24 的特征图 经过 2x2的max-pooling 之后变成了 12 x 12的特征图。

  对于3个特征图 先卷积后池化:

物联网

我们可以把 max-pooling看作去检测某个特征是否在输入图像的某个感受区域内出现过。 2x2的隐藏层神经元对应输出图像中的感受局域是 下图 黑色圆圈所圈部分:

物联网

  我们的直觉是这样的: 一旦一个特征被检测到,它相对于其它特征的位置是精确的还是模糊的 差别并不大。 但是我们获得了很大的好处: 池化后特征数量大大减少了,之后的网络层需要的参数也就减少了。

  【 综合在在一起 】

  MNIST image识别 架构图:

物联网

接下来就可以用随机梯度下降和反向传播进行训练。不过由于不再是全链接,反向传播算法需要做一些修改。

  总的来说 卷积神经网络 大大减少了网络参数,具备平移不变特性,多个卷积层连接在一起就是 一个个抽象度 逐次增加的 特征图。具体来讲假如要识别一只猫,最底层的检测初级特征(例如 垂直边,斜边等) 然后下一层会基于前一层的基础特征检测 抽象一点的特征 (例如 是否有 圆圈等),接着检测是否有 鼻子,眼睛等, 最后一层会检测是否是一个猫。