0
点赞
收藏
分享

微信扫一扫

[笔记][路由机制]胶囊神经网络经典论文 Dynamic Routing Between Capsules

沪钢木子 2022-03-18 阅读 42

Dynamic Routing Between Capsules 笔记

胶囊神经网络,capsule network,capsnet

参考资料

1.论文:Sabour S, Frosst N, Hinton G E. Dynamic routing between capsules[J]. Advances in neural information processing systems, 2017, 30.

2.讲解视频:Capsule Networks (CapsNets) – Tutorial: https://www.youtube.com/watch?v=pPN8d0E3900
该视频的b站转载: https://www.bilibili.com/video/BV1RW411W7rv
Hinton亲自称赞该视频: “This is an amazingly good video. I wish I could explain capsules that well.”

3.pytorch代码: https://github.com/adambielski/CapsNet-pytorch

文章目录

简介

胶囊:描述(探测)某一特征的一组神经元。向量长度代表某特征出现的概率,向量方向体现了实例化参数。

胶囊的路由(routing)机制

u i u_i ui是前胶囊的输出,我们首先通过乘一个参数得到“预测向量”(prediction vectors) u ^ j ∣ i \hat u_{j|i} u^ji ,即
u ^ j ∣ i = W i j u i \hat u_{j|i}=W_{ij}u_i u^ji=Wijui
这一步如果将胶囊看作神经元,类似神经网络的全连接层,不同的是,下一步我们不只是将所有的 u ^ j ∣ i \hat u_{j|i} u^ji 简单相加,而是继续给它增加一个权重 c i j c_{ij} cij ,使系统学习到低层胶囊对高层胶囊影响的大小。

需要注意,这里如果 u i u_i ui 是标量,那么这两个参数可以简化为一个参数。而这里 u i u_i ui 是矢量,我们可以理解为 W i j W_{ij} Wij 调整了胶囊内部的权重, c i j c_{ij} cij 调节了胶囊间的权重。

现在只剩下一个问题待解决,那就是我们如何求权重 c i j c_{ij} cij ?答案也是这篇文章的精髓,路由机制:

在这里插入图片描述

路由机制的大概想法就是,增加最“像”输出的那个预测向量的权重,某种意义上是一种“注意”,达到了类似池化的效果,但是也并没有损失过多信息。

margin loss

目的:当某一特征(在这篇文章中使digit)出现,则输出向量的模长 ∣ ∣ v k ∣ ∣ ||v_k|| vk尽量长(靠近1)

CapsNet网络结构

整体

  • 卷积层
  • primarycaps
  • digitcaps

在这里插入图片描述

卷积层

普通二维卷积

primarycaps

二维卷积+重排+squash

digitcaps

作为primarycaps中胶囊的高层胶囊,使用前面介绍的传输机制搭建网络。

capsnets的正则方法

方法: 重建

目的: 鼓励digitcaps编码原始图像(类似自编码器的bottleneck层)

tricks:新增三个全连接层来解码,使用SE作为重构误差,并赋予重构误差一个较小的权重(相对于margin loss)

胶囊神经网络的优势

5.2: 对经过仿射变换的图像很稳定

6:分割高度重叠的digits效果很好

举报

相关推荐

0 条评论