Dynamic Routing Between Capsules


Capsule是一组 vector in vector out的神经元,每一个胶囊代表某一特定实体,如对象或对象部分.其向量模长代表实体存在概率,向量参数代表实体实例化参数.低级别Capsule向量通过变化矩阵实现对高级别Capsule实体参数进行预测.当多个预测一致时,该高级别Capsule会更加活跃,借由动态路由算法加强预测.

本文综合多篇中文和外文博客(原文链接均在参考链接中给出),结合自己理解转述而来,original paper by Hinton,原载于 https://tw19941212.github.io/

CNN 的局限性

  1. 需要大量训练数据(测试时只能识别已经训练的特征).Capsule能使用更少数据实现更好泛化
  2. 不能处理复杂场景(如特征重叠),而Capsule能很好处理复杂场景(crowded scenes,如数字重叠),因为Capsule能很好实现特征分配(通过动态路由)
  3. Pooling层丢失大量信息,降低了空间分辨率(spatial resolution),所以输出对输入的微小变化不敏感,这在需要细节信息的任务(语义分割)上是糟糕的.当然通过构建复杂CNN网络能恢复信息损失.而Capsule能精确捕捉细节信息(pose information,如角度,厚度,大小,位置等)而不是丢失后再恢复信息.因此微小输入变化导致输出变化,这被称为等效性(equivariance).因此Capsule能在不同的视觉任务使用相同且简单的结构.
  4. CNN需要额外的组件来自动识别不同物体属于哪个对象(如这个胳膊属于这只羊),而Capsule提供了对象的层次结构.
  5. CNN忽略结构信息,仅仅考虑’有没有’,而没有考虑feature map的结构关系,包含位置,角度等.

人类视觉识别

任何物体都是由多个更小的实体组成.例如,树由树干,树冠和树根组成.这些部分形成层次结构.树冠还包括树枝和树叶.
在这里插入图片描述
当我们看物体时,我们的眼睛就会形成一些固定点(fixation points),这些固定点的相对位置和性质有助于我们的大脑识别这个物体.因此,我们的大脑不必处理每个细节.只要看到一些树叶和树枝,我们的大脑就会认出树冠.并且树冠在树干上.结合这种层次信息,我们的大脑知道有一棵树.从现在开始,我们将对象的各个部分称为实体.(the parts of the objects as entities)
在这里插入图片描述

CapsNets 到底是什么?

简短的说,CapsNet由capsule(胶囊)而非神经元组成.胶囊是一小组神经元,其学习检测图像的给定区域内的特定对象(如矩形),并且输出向量(如8维向量).其长度表示对象存在的概率,其方向编码对象的姿势参数(如位置,旋转等).如果稍微改变输入对象(如移位,旋转,调整大小等),胶囊将输出相同长度的矢量,但方向略微不同.因此.胶囊具有等效性.
与常规神经网络相似,CapsNet也有多个层.最下层的胶囊称为主胶囊(primary capsules),它们中的每一个都接收图像的一小部分作为输入(receptive field),并且它试图检测特定图案的存在和姿势.更高层的胶囊(routing capsules)可以检测更大和更复杂的物体(如船只).
the primary capsule layer has two maps of 5x5 capsules, while the second capsule layer has two maps of 3x3 capsules. Each capsule outputs a vector
使用常规卷积层即可实现主要胶囊层.例如,论文中,使用两个卷积层,输出256个包含标量的6x6特征映射.重塑此输出以获得包含8维向量的32个6x6特征映射.最后,使用新颖的squash函数来确保这些向量的长度在0和1之间(表示概率).这给出了主胶囊的输出.
下一层中的胶囊也会尝试检测物体及其姿势,但工作方式却截然不同,使用称为路由协议的算法.

路由协议(Routing by agreement)

假设只有两个主要胶囊:一个矩形胶囊和一个三角形胶囊,并假设它们都检测实体.注意到矩形和三角形在船的姿势上是一致的,而他们对房子的姿势非常不同意.因此,矩形和三角形很可能是同一艘船的一部分.(值得注意的是实体的形状及整体/部分之间的关系是在训练中学习的)
predict the presence and pose of objects based on the presence and pose of object parts, then look for agreement between the predictions. Image by Aurélien Géron
由于现在确信矩形和三角形是船的一部分,因此将矩形和三角形胶囊的输出更多地发送到船舱中是有意义的,而对于房屋舱更少:这样,船舱将接收更有用的输入信号,房屋胶囊将收到更少的噪音.即在达成一致时增加路由权重,并在出现不一致时减少路由权重.
update the routing weights. Image by Aurélien Géron
路由协议算法涉及一致性检测+路由更新的几次迭代(注意,这发生在每次预测中,而不仅仅是训练时,不仅仅是一次).这在拥挤的场景中尤其有用.在混淆场景中很可能会收敛到一个更好的解释:底部的船,顶部的房子.模糊性被’解释了’:下方的矩形最好用船的存在来解释,这也解释了下三角形,一旦解释了这两个部分,其余部分很容易被解释为房屋.
Routing by agreement can parse crowded scenes, such as this ambiguous image, which could be misinterpreted as an upside-down house plus some unexplained parts. Instead, the lower rectangle will be routed to the boat, and this will also pull the lower triangle into the boat as well. Once that boat is “explained away,” it’s easy to interpret the top part as a house. Image by Aurélien Géron.

CapsNet背后的数学

假设层 l l l l + 1 l+1 l+1分别具有 m m m n n n个胶囊.我们的任务是在给定层 l l l的激活向量下计算层 l + 1 l+1 l+1处胶囊的激活向量.设 u u u表示第 l l l层胶囊的激活向量.我们必须计算 v v v,胶囊在 l + 1 l+1 l+1层的激活向量。
对于层 l + 1 l+1 l+1处的胶囊 j j j:

  1. 我们首先通过层 l l l处的胶囊计算预测向量.胶囊 i i i( l l l层)对胶囊 j j j( l + 1 l+1 l+1层)的预测向量由下式给出

u ^ _ j ∣ i = W _ i j u i \boldsymbol{\hat{\textbf{u}}}\_{j|i} = \boldsymbol{\textbf{W}}\_{ij}\boldsymbol{\textbf{u}}_{i} u^_ji=

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值