卷积神经网络(Convolutional Neural Network)


  • 图像识别问题存在三种属性
    • 想要识别的模式往往比整张图片小得多
    • 同样的模式可能出现在图片的不同位置,我们不需要重复训练多个detector,可以共用一个detctor
    • 我们可以对图片进行亚取样(subsampling,去掉图片的奇数行和偶数列),这样可以缩减图片识别的参数,对结果不会产生影响
  • CNN处理图像的步骤
    • 卷积(Convolution)
    • 最大池化(Max Pooling)

      卷积和池化可以交替重复进行多次,卷积负责处理前两种属性,最大池化负责处理第三个属性

    • 平展(Flatten)

[附李宏毅老师的视频(CNN in Keras)]
训练后的输出图像和我们现实中观察到图像不一样(类似白噪声)

卷积层(进行特征提取)

过滤器(Filter)
  • 过滤器为元素仅为1或者-1的矩阵,可以把过滤器比作NN中的一个Neuron,用来检测一种模式
  • 多种过滤器在目标图像上进行(步长stride=1)移动与输入图像做内积运算得到特征图(Feature Mao),这个特征图可以看做全连接网络中一个hidden layer的输出
  • 如果要识别彩色图片的话,比如RGB模式的图片,我们可以看做图片由3层像素(channel)叠加,同样的,过滤器的高也是3
  • 举一个例子来更好的理解卷积,将一个黑白的图片的像素排成一列,过滤器可以看做一个权重矩阵,过滤器不断的在图片上移动,他们内积即为一个hidden layer的输出,因为每次移动都使用同一个过滤器所以是共享连接权重的(Shared weights),所以CNN相比全连接网络使用了更少的参数
  • 计算方法
    输入图像:
    超参数:filter个数(K),filter大小(F),步长(S),边界填充(P)
    输出:$W_2 = (W_1-F+2P)\div S+1$
       $H_2 = (H_1-F+2P)\div S+1$
       $D_2 = K$

最大池化(对特征图进行压缩)

  • Avy Pooling(平均池化层)
  • Max Pooling
    • 通过过滤器得到了faeture map后,对矩阵进行像素分组,最大池化的操作就是从每个分组中取平均值或取最大值
    • 增加特征图的深度来弥补网络准确度

平展(Filter)

  • 将feature map平展开成一个列向量,将其放入一个全连接网络
  1. 全连接层
  • 全连接层及损失层
  • softmax公式$S_j=\dfrac{e^{a_j}}{\sum_{k=1}^Te^{a_k}}$
  • softmax loss公式$L=-\sum\limits_{j=1}^Ty_i\log_{S_j}=-\log_{S_j}$
  • cross entropy(交叉熵)公式$L=-\sum\limits_{j=1}^Ty_i\log_{P_j}$
    • 刻画了实际输出和期望输出的距离
  • y为期望的输出,S为实际输出