设计CNN的三个理由

  1. 很多时候目标只是图像的一小部分,如果能只connect一部分的话,可以减少参数;(卷积)
  2. 要识别的目标在不同样本中的位置不同,但特征的是相似的,因此只需要一组参数就可以找到,减少参数;(卷积)
  3. 降采样不会改变图像的样子,因此用cnn可以通过降采样让图片变得更小,减少参数。(池化)

网络

卷积操作

(暂不赘述)
【李宏毅机器学习2017】CNN
【李宏毅机器学习2017】CNN

卷积网络vs全连接网络

卷积网络可以看作是全连接网络的简化版本。
1、如下图,左边的卷积操作相当于全连接里面只连接了1,2,3,7,8,9,13,14,15这几个神经元——参数减少
【李宏毅机器学习2017】CNN
2、继续做卷积操作,相当于全连接层连接了2,3,4,8,9,10,14,15,16这几个神经元,同时这里连接的权重和上面那一组神经元的权重是对应的(颜色相同部分),shared weights,进一步减少参数。
【李宏毅机器学习2017】CNN

Maxpooling

把feature map分成几个块,取块中最大的值替代整个块。这操作会使得feature map不断变小。

Fallten+全卷积

【李宏毅机器学习2017】CNN

如何分析机器学到了什么

  1. 看network中第一个layer的filter形状
    【李宏毅机器学习2017】CNN
    除了第一个layer以外,看后面layer的卷积核没有太大意义,因为后面的layer针对的输入是抽象的feature map。

  2. 画出higher layer中响应比较高的feature map对应原图的感受野
    【李宏毅机器学习2017】CNN

  3. GD优化,找x*。
    首先定义a^k,为第k个filter activate的程度。也就是把从这个filter得到的featuremap的值求和。
    然后构建一个优化问题:解一个x使得a^k最大。
    要解该问题其实就是反过来用GD。
    【李宏毅机器学习2017】CNN
    实际实验中得到的结果如下:
    【李宏毅机器学习2017】CNN
    每张图代表了对应的filter响应最大的输入。
    全连接层的每个神经元最大响应对应的pattern同理可求。
    注:Deep Neural Networks are Easily Fooled
    按照上述方法得到一个train好的网络最后一层神经元的最大响应pattern不一定是我们理想中的情况,一些无关pattern也有可能令神经元的响应很高。
    不过这也说明,深度神经网络是有举一反三的能力的。【李宏毅机器学习2017】CNN
    进一步地,想要解出来的响应不那么奇怪,可以在前面的优化目标式里面加一个正则项。
    【李宏毅机器学习2017】CNN

  4. 微分法
    某张图片被判定为第k类,选一个pixel,求其对类别k的微分,如果微分值很大,说明这个pixel对y_k的影响很大。
    【李宏毅机器学习2017】CNN

  5. 拿一个框去除image的一部分,看machine判断的准确度。比如遮住狗脸以后,发现网络在狗脸部分的准确率最小,说明网络是对的。
    【李宏毅机器学习2017】CNN

应用案例:Alpha Go

alpha go的系统要求输入是能代表当下棋盘情况的19*19的矩阵,输出是下一步要走的位置。
分析到很重要的一点是,在这个应用场景下,如果加上max pooling降采样操作的话,是不满足网络输出要求的。老师求证了alpha go的论文附录,发现果然是没有加max pooling的。
这也告诉我们网络的设计绝对不是一成不变的。
【李宏毅机器学习2017】CNN

相关文章:

  • 2021-08-14
  • 2021-06-06
  • 2021-11-16
  • 2021-10-02
  • 2021-10-12
  • 2021-12-07
  • 2021-08-22
  • 2021-10-08
猜你喜欢
  • 2021-11-25
  • 2022-12-23
  • 2021-06-13
  • 2021-07-13
  • 2021-10-07
  • 2021-08-27
  • 2021-04-05
相关资源
相似解决方案