中文标题:Capsules网络与动态路由
英文标题:Dynamic Routing Between Capsules
发布平台:NIPS
Advances in neural information processing systems
发布日期:2017-01-01
引用量(非实时):4433
DOI:缺失
作者:Sara Sabour, Nicholas Frosst, Geoffrey E Hinton
文章类型:conferencePaper
品读时间:2022-03-29 14:35
1 文章萃取
1.1 核心观点
胶囊是一组神经元构成的活跃向量,用于代表特定类型实体的实例化参数。向量的方向表示实体的具体实例化参数,向量的长度表示实体存在的概率。本文提出一种动态路由机制,实现低层胶囊向高层胶囊的组成,使得模型具备了对图像进行层次抽象的能力。相比于卷积神经网络,胶囊模型在MNIST上达到了更出色的精准度和稳健性,并且在图像分割方面表现异常出彩。
1.2 综合评价
- 通过动态路由机制,从神经网络中抽取解析树(整体与部分的层次关系)
- 严谨的实验展现出了优越的稳健性和泛化能力和巨大潜力
- 打破了梯度下降法的垄断局面,给神经网络提供了很多新的思路
- 借助无监督的自编码器机制,加快了模型对于实体的实例参数化过程
- 胶囊网络在大规模数据集上效率较低,表现较差;由于过度关注于全局信息,在背景复杂的情况时,效果会有所下降
1.3 主观评分:⭐⭐⭐⭐⭐
前言:从最初的图像解析到后来的自编码器的改造,作者一直专注于从更合理的视觉机制出发,发掘图像中整体与部分的空间关系。伴随着神经网络的逐步兴起,作者将这种思想融入到了卷积神经网络中,通过构建胶囊结构实现了对池化层的替代,并借助动态路由机制打破了千篇一律梯度下降的局面,这种将想法逐步落实的过程真的非常的美丽,本文的最终模型结构可能尚存在很多生涩的地方,但背后的想法是非常值得借鉴的,这种思路就像是一种在萌芽的种子,谁也不知道最后会生长出怎样的参天大树。
2 精读笔记
2.1 背景介绍
人类观察到的图像时,会自动忽略不相干的信息,并仔细确定一系列的固定点,以确保这部分光学信息能够以最高分辨率进行处理。
本文假设图像中的固定点都会通过多层神经网络构建一种解析树(从网到树是一个类似于剪枝的筛选过程):每一层的神经元被分成多个神经元组,每个组被称为“胶囊(
一个活跃的
知识补充:函数
考虑卷积神经网络,多层次的卷积层实现了特征从简单和复杂的层次抽象,这一点值得借鉴;而池化层通过选取最值的方式筛选显著特征,虽然简单有效,但是过于粗暴,舍弃了很多有效的信息。
2.2 算法细节
理解
的思想后,就能发现实现 网络的方法是很多的,而本文的目的不在于探究所有可能的方法,所以只是用较简单的方式展现 的威力
2.2.1 Capsule输入与输出
不同于普通的神经元,每个
- 将
的输出向量 与权重矩阵(权重矩阵可以理解为一种仿射变换)相乘,得到预测向量(Prediction Vector):$\hat{u}{j|i}=W{ij}u_i$ - 通过动态路由机制,计算得到耦合系数
,耦合系数描述了 和 之间的认同度(Agreement),用于构建底层特征与高层特征的组成关系 - 归一化耦合系数,确保
与 层的所有 的耦合系数和为1: - 汇总第
层所有预测向量,以耦合系数为权重,求和得到 的输入向量 : - 对输入变量进行非线性压缩(Squashing),得到
的输出向量为 :
(图源:Github-CapsNet-Tensorflow-README)
2.2.2 动态路由机制
动态路由机制主要决定上层
- 初始化第
层所有 与第 层的 所有耦合系数为0 - 归一化所有耦合系数,并对第
层所有 的预测向量进行加权求和,然后对结果进行非线性压缩(本步骤就是指上一节中详细描述的计算过程) - 借助上一步得到的
输出向量 ,对耦合系数 进行更新: - 步骤2和步骤3重复
次,完成耦合系数的更新(在本文后续实验中 )
具体算法伪代码如下:
更新的本质:向量
是 的输出向量 经权重矩阵 仿射变换得到的,向量 是 的输出向量,所以 描述的是 的输出与 的输出的一致性(agreement),具备一致性的底层特征将共同组成高级特征。
两层Capsule间的动态路由机制与K-means聚类算法存在惊人的一致性,对比来说,如果把底层特征看作样本,高级特征看作簇心,底层特征组成为高级特征相当于一个无监督的聚类分组的过程,也是一个在神经网络网状结构内部构建树结构的过程。
2.2.3 构建CapsNet网络
首先构建一个三层的简单
普通卷积层的输入为
的手写数字图片,本层包含 个 的卷积核,步长为 ,使用 作为激活函数,最终普通卷积层的输出维度为 (补充说明: ),参数量为主胶囊层其实是一个卷积胶囊层,共包含
个胶囊,每个胶囊包含 个 的卷积核,步长为 ,使用 作为激活函数,最终主胶囊层的输出维度为 (补充说明: ),参数量为数字胶囊层共包含
个胶囊,对应数字的 种类别。每个胶囊是由上一层的胶囊输出通过动态路由的方式计算得到的,而上一层胶囊共计产生了 个向量,每个向量维度为 ,这些向量在数字胶囊中通过一个 的权重矩阵转为 维向量,也就是说数字胶囊层的输出维度为 ,参数量为 ,其中 为权重矩阵的参数, 表示耦合系数和标准化后的耦合系数
2.2.4 边缘损失函数
由上文可知,
- 其中
表示分类类别(比如MINIST就是10中数字类型),为布尔型变量 - 边缘损失根据最顶层
是否归属于类别 划分为两项 - 前一项对输出向量模长最大值进行约束,其中
表示上边界,本文设为 - 前一项对输出向量模长最小值进行约束,其中
表示下边界,本文设为 - 超参数
用于权衡上边界约束与下边界约束,一般更重视前者,所以设
最终模型的损失函数是最顶层所有
2.2.5 添加解码模块
根据Capsules与自编码器变体可知,借助自编码器的形式,
对于每个类别,解码器会掩盖(mask)掉不相干的
实际使用中,解码器反馈的损失误差通过乘以
2.3 实验与评价
本实验采用
选择
解码器效果展示:
不同动态路由次数、是否添加解码模块的对比(Baseline是普通三层CNN):
对于
可以发现
鲁棒性测试:对测试集添加随机小范围仿射变换,普通
总结:
- 胶囊网络一定程度上学到了实体部分与整体之间的空间关系,具备视角不变性,从而取得了出色的模型稳健性和泛化能力。
- 胶囊使用向量表示实体的实例化参数,还能利用矩阵乘法有效建模空间关系。
- 类似于生成式网络,过于关注于全局信息,面对图片背景复杂的场景略显吃力
- 胶囊非常擅长处理图像分割的问题,展现出来巨大的探索潜力
3 Capsule后记
Capsules扩展阅读:
Capsules后续发展:
Matrix Capsules with EM Routing (2018):Capsule的输出由向量扩展为矩阵+标量(矩阵描述分布,标量描述概率/熵);动态路由部分从简版K-means聚类转变为简版GMM聚类(无监督分类问题转为概率分布描述问题)实现了Capsul版的卷积(局部版的动态路由)
Stacked Capsule AutoEncoder (2019):使用无监督的方式达到了98.5%的MNIST分类准确率
Capsules领域融合: