• 论文阅读之Dynamic Routing Between Capsules(2017)


    前言

    capsule network 可以简单理解为将神经网络的标量计算,赋予了方向,变换成了向量进行计算。
    标量只有大小之分。
    向量不仅有大小,还有方向之分。
    应该可以略微感受到这种思路的魔力了。
    在这里插入图片描述
    capsule 主要是能够改进CV里CNN对特征提取。因为对于同类事务,CNN经过maxpooling得到最后的结果基本相同,就相当与是不同的输入得到了相同的输出,这其实是不利于泛化能力提高的。

    就比如上面的鸟嘴,如果是传统CNN特征提取,两幅图得出的结果可能是一模一样的,但是如果使用capsule,那么可能二者得出的结果大小相等,方向相反,那么还是有本质区别的,也就是说capsule可以用于解决CNN中图像位置信息缺失的问题。

    再比如说:
    在这里插入图片描述
    这两张图片都是表示1,不过方向不同,或者说位置不同,那么得出的v1 向量表示应该是不同的,但是向量的模长可以是相同的,这样就能够使得模型能够拥有更好的泛化性了。

    那么如何进行capsule的计算呢?
    在这里插入图片描述
    通过这幅图大概就能略知一二了。

    capsule network

    capsule的计算的基本过程如下图所示:
    在这里插入图片描述
    这里是只有两个向量进行计算的形式。

    首先输入向量v1v2
    然后经过W进行特征变换得到u
    然后各自乘以一个系数c加起来得到s向量
    然后经过squashing的操作,就类似于激活函数一样的作用,在这里还会约束他模长。
    值得注意的是,这里的c1+c2 = 1

    capsule network有个重要的思想就是动态路由,简单来说就是c并不是固定的,而是动态调整的。
    调整思路如下:
    在这里插入图片描述
    这里看输入向量为3的一个capsule,如何进行调整c。
    T表示路由动态调整的次数
    最开始,初始化b都为0
    然后c经过softmax进行得到c,这样保证c为正且和为1
    还记得u是输入向量v线性变换后的结果
    然后计算s
    经过squash后得到a
    然后根据计算的结果调整b,从而动态的调整c
    这就是动态路由了。

    算法的作用应该就是当输入向量和大部分的向量的都不像的时候,那么他的c就会变得越来越小,相当于“排除异己”的一种动态策略。

    可以再看一遍图示的计算过程:
    在这里插入图片描述
    调整了两次c,(初始也算一次)

    在这里插入图片描述
    调整了第3次c
    在这里插入图片描述
    这样就得到最终的结果了。

    那么对于分类的预测该怎么办呢?
    在这里插入图片描述

    答案是使用向量的模长作为分类标签的置信度,置信度最大的就是最终的类别了。

    然后文章里还提到采用重构数据来帮助模型训练,那么重构误差就是对应的数字进行重构误差的传播,例如数字1则就对capsule1的进行误差传播,否则都为0.
    在这里插入图片描述
    然后我们可以看看实验结果:
    在这里插入图片描述
    一个有意思的点就是,当调整向量某些维度时,呈现出的数字确实有微妙的变化:
    在这里插入图片描述
    说明capsule network 确实是有点作用的。

    好了我们接下来看看原文讲的算法公式,复盘一下,应该就比较好理解了

    在这里插入图片描述
    这就是动态路由计算。
    在这里插入图片描述
    非线性变化的squashing的定义。

    在这里插入图片描述
    特征经过W变换然后加权求和得到s

    在这里插入图片描述

    在这里插入图片描述
    c的计算方式

    代码也是比较简单:https://github.com/naturomics/CapsNet-Tensorflow

    参考

    【 深度学习李宏毅 】 Capsule(中文)

    https://github.com/naturomics/CapsNet-Tensorflow

    Dynamic Routing Between Capsules

  • 相关阅读:
    十大靠谱“计算机视觉数据集”榜单
    计算机毕业设计Java校园外卖零食商城系统(源码+系统+mysql数据库+Lw文档)
    shopify独立站的运营
    Spring Boot 自动装配
    Mybatis-plus 自动生成代码
    基于ssm或spingboot的企业员工信息系统
    QT下使用QChart绘制曲线
    机器学习即代码的时代已经到来
    js----Data
    Redis过期策略以及内存淘汰机制
  • 原文地址:https://blog.csdn.net/qq_52785473/article/details/127983177