• 用”人话”解释CNN —— 对单个特征图进行视觉化


    转载自:http://nooverfit.com/wp/pycon-2016-tensorflow-研讨会总结-tensorflow-手把手入门-用人话解释cnn

    首先什么是CNN? 其实, 用”人话”简洁地说, 卷积神经网络关键就在于”卷积”二字, 卷积是指神经网络对输入的特征提取的方法不同. 学过卷积的同学一定知道, 在通信中, 卷积是对输入信号经过持续的转换, 持续输出另一组信号的过程.

    上图来自维基百科, 经过红色方框的持续转换, 我们关注红色方框和蓝色方框的重叠面积, 于是我们得到新的输出: 黑色线的函数. 这正是通过卷积生成新函数的过程.

    CNN对输入的处理也是一样, 它把输入用块的单位提取特征, 这样高维的图片马上就降维了:


    用黄色块提取特征, 上面的大方框, 最多可以提取9个黄色块的特征.

    或者从神经网络连接结构的角度, CNN的底层与隐藏不再是全连接, 而是局部区域的成块连接:


    成块连接后, 那些小块, 还能在上层聚集成更大的块:

    但是, 如果用上面的方法堆砌CNN网络, 隐藏层的参数还是太多了, 不是吗? 每个相邻块都要在上层生成一个大的块.

    所以有时我们为了减少参数复杂度, 不严格把相邻的块都至少聚合成一个上层块, 我们可以把下层块分一些区域, 在这些区域中聚合:

    瞧! 这里的红色块的层与绿色块的连接, 是不是就没有原来的密集了? 这就是(Pooling Layer)分池层, 把小的块分割成一个个池子, 也就是大块:

    再来看看2D图片输入的CNN效果:

    以及用了Pooling Layer的效果:

    当然,池化不只有减少参数的作用,还可以:

    1. 不变性,更关注是否存在某些特征而不是特征具体的位置。可以看作加了一个很强的先验,让学到的特征要能容忍一些的变化。
    2. 防止过拟合,提高模型泛化能力
    3. 获得定长输出。(文本分类的时候输入是不定长的,可以通过池化获得定长输出)
    4. 提高感受野大小

    参考知乎回答:https://www.zhihu.com/question/36686900

    而且, CNN不仅可以使用在图片分析上, 也可以使用在文本分析上, 因为句子中邻近的单词总是有相关性的, 不是吗?

  • 相关阅读:
    Spark2.x学习笔记:Spark SQL程序设计
    Spark2.x学习笔记:Spark SQL的SQL
    Spark2.x学习笔记:Spark SQL快速入门
    Hystrix入门执行过程
    redis配置master-slave模式
    MockServer 入门
    Locust分布式负载测试工具入门
    poi读取excel元素
    hadoop+spark集群搭建入门
    Vi文档
  • 原文地址:https://www.cnblogs.com/lfri/p/10486972.html
Copyright © 2020-2023  润新知