《Dynamic Routing Between Capsules》胶囊网络理解

Dynamic Routing Between Capsules
本文旨在理解胶囊网络,而对于论文翻译可参看翻译链接(该童鞋翻译很详细)

基本信息

作者:Sara Sabour, Nicholas Frosst,Geoffrey E. Hinton
机构:Google Brain Toronto
连接:https://arxiv.org/abs/1710.09829
源码:https://github.com/naturomics/CapsNet-Tensorflow; https://github.com/bourdakos1/CapsNet-Visualization
翻译:https://blog.csdn.net/XinyanH/article/details/78776351

背景

卷积网络的缺点
       卷积网络中的卷积层主要用于检测图像像素中的重要特征。主要有以下特点:
              1)较浅的层(更接近输入的层)将学习检测诸如边缘和颜色渐变之类的简单特征
              2)较深的层则将简单特征组合成复杂一些的特征
              3)深层特征由浅层特征加权组合得来
              4)网络顶部的致密层组合高层特征并输出分类预测
       由于这些特点,卷积网络的深层特征与低层特征之间不存在位姿(平移和旋转)关系。如下图所示,左边和右边卷积网络都会判断为是人脸:


这里写图片描述

       另外一个例子,人脑可以从不同方向观察并判断这是同一个物体,而卷积网络则很难区分:


这里写图片描述

       因此传统CNN存在根本缺陷:
              1) 对象空间关系:CNN的内部数据表示没有考虑简单和复杂对象之间的重要空间层次;
              2)Max pooling:研究者们(Hinton等)认为,CNN中的池化操作是一个很大的错误,它运行良好的事实就是一个很大的错误和灾难;
              所以提出胶囊网络,来规避这些问题

胶囊网络结构

       


这里写图片描述

       结构如上图,详细如下:
              1)ReLU Conv1:普通卷积层
              卷积核:256x9x9x1,激活层:ReLU,输出:256通道20x20的特征图

              2)PrimaryCaps:胶囊生成层
              卷积核:32x8x9x9x256,输出32通道,长度为8大小为6x6的特征图;所以一个胶囊:8x1x1,即可理解为一个通道上,同一个像素位置的8个数字组成一个胶囊;则一共1152(6x6x32)个胶囊。激活层:ReLU(代码实现可选,论文中没有明确说明);本层中没用路由算法

              3)DigitCaps:胶囊FC层
              胶囊路由层,输入1152个8维的胶囊,输出10个16为的胶囊,详见动态路由

              4)Output:
              将每个胶囊取模并softmax化,即 s o f t m a x ∣ ∣ v j ∣ ∣ softmax||v_j|| softmaxvj,输出10个类的概率值;训练时与真实标签做均值误差计算,当然整体结构还包括重建部分及重建loss计算(本文略)

动态路由

算法描述


这里写图片描述

结构详解


这里写图片描述

       上图很好展示了路由层原理结构,下面就结合算法描述综合详述其过程:
              1)说明:
              图中下面是输入方向,上面是输出方向; u i u_i ui表示输入胶囊,文中为1152个,但这里只画出2个; v j v_j vj表示输出胶囊,文中10个,这里只画出4个;

              2)首先卷积:仿射变换
              其目的是通过卷积进行维度变换(8–>16)并学习,W是权值矩阵:1152x8x16x10, W i j W_ {ij} Wij为16x8,则 u ^ j ∣ i \hat u_ {j|i} u^ji大小为16为向量;如算法中式2的右半部分

              3)路由:每个输出胶囊j对应的多个 u ^ j ∣ i \hat u_{j|i} u^ji(1152个,这里只画2个)进行路由

                     a)首先 c i j c_{ij} cij是标量,它是由同样数量并一一对应的 b i j b_{ij} bij通过算法中式3计算得到; b i j b_{ij} bij初始化为0,第一次路由时 c i j c_{ij} cij相等,但随着 b i j b_{ij} bij的更新(如图中), c i j c_{ij} cij值将会不同(存在偏向,就像投票选举,开始对候选人不了解,对候选人打分一样,待候选人演讲后,就会出现偏向)

                     b)循环路由:要多次循环,文中提到3次较佳
                     首先sj由算法式2中左边部分计算得到,这里没有偏置项;然后用squash函数计算出 v j v_j vj,如式1;在然后根据 v j v_j vj u ^ j ∣ i \hat u_ {j|i} u^ji更新 b i j b_{ij} bij,在更新 c i j c_{ij} cij;继续循环

                     c)该路由操作是在前向进行

总结

       


这里写图片描述

       区别:
              1)胶囊输入输出节点为向量,普通神经元为标量
              2)胶囊网络多一步仿射变换(胶囊维度变化),求和时没有偏置项b
              3)激活函数不同

       评价与延伸:
              1)本文路由连接部分,采用的是全链接方式,计算量较大
              2)《Capsules for Object Segmentation》将胶囊网络应用到目标分割,其改进了路由全链接方式,采用局部连接,与卷积局部链接有异曲同工之妙
              3)《Matrix Capsules with EM Routing》新版路由:https://blog.csdn.net/u011681952/article/details/81974291

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值