我们都知道深度卷积神经网络是依靠大量的数据和具有大量特征映射的层来完成学习和更新的,这个过程并不是非常高效,对于大型数据集来说,这意味着有大量冗余的特征检测器。
针对这一问题,胶囊网络是一个有发展潜力的解决方案——它可以扩展当前的卷积网络,并可以令人工视觉感知到高效编码所有特征仿射变换的过程。
由于内在具有更好的概括能力,一个胶囊网络理论上可以使用相当少的参数数量,并获得更好的结果。
可惜的是,注意到这一点的人并不多。
不过,近日,来自意大利的研究者提出了一种高效的自注意路由胶囊网络(Capsule Network with Self-Attention Routing, Efficient-CapsNet):
他们深入研究了胶囊网络的的效率,并在参数仅仅有16万的情况下,将网络的性能推到了极致。
在实验部分,研究者证明,他们提出的架构,在参数量降低为原始CAPSNET的2%的情况下,还可以在三个不同的数据集上实现最先进的结果。
此外,研究者用一个新颖的非迭代、高度并行的的路由算法替代了动态路由,利用自我注意机制,这种新颖的算法可以很容易地对小数量的胶囊进行处理。
最后,研究者还在其他胶囊上做了额外的实验,结果证明了Efficient-CapsNet的有效性,也证明了胶囊网络可以有效嵌入更为泛化的可视化表示这一特点。
该论文的贡献主要在于:
- 深入研究了基于胶囊的网络的泛化能力,与以前的文献研究相比,大大减少了可训练参数的数量
- 概念化和开发了基于胶囊的高效、高度可复制的深度学习神经网络,并能够在三个不同的数据集上达到最先进的结果
- 引入了一种新颖的非迭代、高度并行的路由算法,即使胶囊数量减少了,该算法也能利用自我注意机制来对其进行有效的路由
论文中的所有训练和测试代码都是开源的,可以公开使用,论文地址如下:https://arxiv.org/pdf/2101.12491.pdf
三层宝塔结构:两层不同卷积处理+自注意力机制
Efficient-CapsNet的总体架构如下图所示:
图:Efficient-CapsNet的总体架构示意图
主胶囊利用深度可分卷积,来创建它们所代表的特征的向量表示。
另一方面,卷积层的第一个堆栈将输入张量映射到一个高维空间,从而促进了胶囊的创建。
该网络可以被分为三个不同的部分,其中前两个主要实现了胶囊层和输入空间之间的交互。每个胶囊利用下面的卷积层过滤器,将像素强度转换为它所代表的特征的矢量表示。
因此,在一个活跃胶囊内的神经元活动,体现了它在训练过程中学习到代表样本的各种属性。
这些属性可以包括许多不同类型的实例化参数,如姿态、纹理、变形,以及特征本身的存在。
在这一部分的实现中,由胶囊表示的实体出现的概率用每个向量的长度来表示。这一点与下面的自我注意路由算法是兼容的。 网络的最后一部分在自我注意算法下运行,将低级胶囊路由到了它们所代表的整体。
图:网络的第一部分,可以被建模为将输入图像映射到高维空间的单函数转换。然后,通过深度可分离卷积得到主胶囊层,这大大减少了制作胶囊所需的参数数量。
图4:自注意力层,这一层的胶囊对它们所属的整体做出预测
操作简单,参数量大幅降低,效果依然显著
在实验部分,可以看出,Efficient-CapsNet所包含的参数量非常少:
图:计算成本和必要操作方面的比较。
Efficient-CapsNet除了拥有较少的可训练参数,在效率方面也更高 下面是在数字重构上的表现:
图:即使有不同的架构策略和训练目标,所有的网络都能够嵌入输入数字的不同属性,并只保留重要的细节
下面是在在MNIST分类任务上的测试错误率:
这是Efficient-CapsNet与近十年最先进方法的效果对比:
下面是在smallNORB分类任务上的测试错误率:
更多详细信息请参考链接:https://arxiv.org/pdf/2101.12491.pdf