改进的基于多路径特征的胶囊网络
2023-05-24徐清海丁世飞孙统风郭丽丽
徐清海,丁世飞,2*,孙统风,2,张 健,2,郭丽丽,2
(1.中国矿业大学 计算机科学与技术学院,江苏 徐州 221116;2.矿山数字化教育部工程技术研究中心(中国矿业大学),江苏 徐州 221116)
0 引言
2012 年,Hinton 等发表AlexNet[1],展现了卷积神经网络(Convolutional Neural Network,CNN)在图像识别领域的潜力,使CNN 一举超越支持向量机、Boosting 等算法,成为图像识别领域的首选方法。池化、卷积等操作使CNN 具有平移不变性,并获得了良好的识别性能;但平移不变性也使CNN失去了一些重要信息,如位置、姿态等,这意味着CNN 在某种程度上忽略了平移同变性;同时,CNN 在识别物体的过程中忽略了空间关系,这不符合人眼的视觉逻辑。
为了探究图像中物体的空间关系,Hinton 等[2]于2011 年提出了“胶囊”的概念。胶囊是一个向量,向量整体表示图像中某个部件的特征,向量的分量表示部件的某个属性。胶囊之间存在可学习的部分与整体的空间关系,这种空间关系用变换矩阵表示。同时,向量表示法保证了网络具有平移同变性。在此基础上,Sabour 等[3]实现了胶囊间的动态路由,这是一种有效的胶囊特征的传递方式,在MNIST 数据集上的表现超越了CNN,胶囊网络(Capsule Network,CapsNet)由此吸引了大量研究者。Hinton 等[4]在2018 年描述了一种新的胶囊类型,胶囊由矩阵和激活值两部分组成,矩阵用于描绘物体的属性,激活值则代表胶囊的存在概率,该网络在smallNORB 数据集上取得了良好的效果。Kosiorek 等[5]实现了首个无监督的胶囊网络,它利用空间的几何关系来推理物体,在MNIST 和SVHN 数据集上达到了无监督分类的最新成果。与此同时,CapsNet 已经被应用于医疗诊断[6-8]、图像生成[9-10]、文本分类[11-12]以及其他诸多领域[13-16]。
尽管CaspNet 有许多优点且应用广泛,但它在某些方面仍存在改进空间,比如它在接近现实环境的复杂数据集的分类任务上表现不佳,因其庞大的参数量和计算量阻碍了胶囊网络的推广。为了降低CapsNet 的参数量和计算量,研究者们提出了一些优化方法:为了减少胶囊的数量,Duarte 等[14]基于矩阵胶囊提出了一种胶囊池化方法,即让同类型的初级胶囊共享转换矩阵,然后对转换后所得的预测胶囊进行平均池化,即求取感受野内的预测胶囊的均值;Xiong 等[17]提出在深度方向上选取一半最活跃的胶囊类型进行动态路由,减少了胶囊层一半的参数;Lalonde 等[13]提出了反卷积胶囊的概念,将CapsNet 的全连接重构方式改为反卷积重构,在参数大量减少的情况下,对目标分割任务显示出良好的分割效果。
为了提升CapsNet 在复杂数据集上的分类精度,研究者也提出了一些CapsNet 的改进模型:Xiang 等[18]提出了一种多尺度胶囊网络(Multi-Scale Capsule Network,MS-CapsNet),使用多尺度特征提取器获取结构和语义信息,以提高网络的表达能力;Amer 等[19]提出的 路径胶囊网络(Path Capsule Network,PathCapsNet)使用多个路径生成胶囊,且所有路径的胶囊均使用同一个动态路由层,这增加了胶囊的数量和多样性;Do Rosario 等[20]提出的多线程胶囊网络(Multi-Lane Capsule Network,MLCN)则为每个线程都配备独立的路由层,各个线程路由所得的父胶囊则作为输出胶囊的一维。在CNN 中,也有类似研究,如Tissera 等[21]在多路径CNN 中引入交叉连接,提升了特征提取质量和图像识别精度;Phaye 等[22]使用更深的卷积模块替换卷积层,并且一个卷积模块搭配一个胶囊输出层,组成了性能优异的多级胶囊网络。在文献[22]研究的基础上,Sun 等[23]用密集连接块构建了多级胶囊网络,显示了良好的分类效果;Ren 等[24]提出的自适应算法使底层胶囊能自适应地调整它们的方向和长度,并且消除了耦合系数对梯度传播的影响,使CapsNet 的路由层可以多次堆叠,从而使胶囊能表示更深层的隐含信息,提升分类精度。
上述方法或改进了胶囊网络的分类精度,或减少了参数数量,但并未同时兼顾分类精度以及参数数量。本文提出一种基于多路径特征的胶囊网络(Capsule Network based on Multipath feature,MCNet)模型,包括一种新的适用于胶囊网络的特征提取器和一种新的胶囊池化技术。其中:特征提取器拥有4 条并行的路径,各路径拥有不同数量的卷积层和池化层,能提取到丰富的不同层次的特征,然后生成具备空间特性的胶囊特征;胶囊池化技术能有效选取少数胶囊来代表整体的胶囊特征,在保证模型分类性能的前提下,大量减少胶囊数量,从而减少参数数量和计算量。本文主要工作如下:
1)提出一种新的胶囊特征提取器,以生成更丰富的初级胶囊特征,有效地提升模型的分类准确率;
2)提出一种新的胶囊池化技术,以有效减少胶囊数量,降低模型的计算量;
3)在CIFAR-10、SVHN、Fashion-MNIST、MNIST 等4 个数据集上考察了本文模型的分类准确率和参数数量,实验结果表明,本文模型在性能上具有竞争力。
1 相关工作
1.1 胶囊网络
图1 是Sabour 等[3]描述的CapsNet 的结构,由1 个三层的编码器和1 个三层的解码器组成。编码器的第一层是1 个卷积层,用于提取底层特征。第二层是初级胶囊层(Primary Capsule layer,PrimaryCaps),它将底层特征再次卷积,生成初级胶囊(子胶囊)。在图1 中,20 × 20 × 256 的特征图通过32个9 × 9 的卷积得到了6 × 6 × 8 × 32 的胶囊特征图,其中:8表示一个卷积核的输出通道数,也是一个胶囊的维度;32 表示胶囊类型的数量,1 个卷积核单独生成一种胶囊类型。第三层是数字胶囊层(Digit Capsule layer,DigitCaps),用于存储10 个代表分类结果的输出胶囊(父胶囊),输出胶囊的长度(L2 范式)代表着其对应的类的存在概率。初级胶囊与输出胶囊之间通过动态路由传递胶囊特征,本文将在1.2 节介绍。
图1 CapsNet结构Fig.1 Structure of CapsNet
解码器是CapsNet 的辅助网络,它被用于重构图像。解码器由3 个全连接层(Fully Connected layer,FC)构成,前两层分别包含512、1 024 个神经元,通过修正线性单元(Rectified Linear Unit,ReLU)激活。第三层通过Sigmoid 函数激活,包含784 个神经元,对应于MNIST 数据集28 × 28 的图像尺寸。值得一提的是,在解码前,除了1 个正确胶囊,位于DigitCaps 的其余9 个错误胶囊要通过掩码屏蔽。解码器的目标函数应使重构图像与原图像的欧氏距离不断缩小,因此原图像与重构图像像素之间的平方差之和或平方差均值就是重构损失。为了防止解码器在网络训练过程中占据主导地位,重构损失要乘以重构系数后才能加入总损失函数。
1.2 动态路由
与CNN 不同的是,CapsNet 有独特的向前传播方式,这种方式被称为动态路由。动态路由发生在初级胶囊和输出胶囊之间,如图1,PrimaryCaps 和DigitCaps 通过动态路由连接,位于PriamryCaps 的初级胶囊需要通过空间关系预测处于DigitCaps 的输出胶囊,预测的过程为:
假设胶囊i是位于l层的某个初级胶囊,取值为ui;胶囊j是位于l+1 层的某个输出胶囊;Wij为i与j之间的空间关系矩阵,那么是胶囊i通过空间关系对胶囊j所作的预测;Sj是初级胶囊对输出胶囊的预测的加权和;cij为路由迭代过程中确定的耦合系数。Sj需要经过非线性压缩才能表示概率,压缩过程为:
式(2)为Squash 非线性压缩函数,它可以把向量Sj的长度压缩至0 到1,短向量的长度将被压缩至略大于0,长向量将被压缩至略小于1。这样可以确保输出向量Vj的长度可以表示该胶囊所代表的类的出现概率。
对于耦合系数,需要通过Softmax 路由公式进行计算,计算式如下:
其中:bij表示胶囊i到胶囊j之间的连接概率,初值为0。对bi进行Softmax 路由后得到耦合系数cij,胶囊i与上层所有胶囊的耦合系数之和为1。
算法1 动态路由算法[3]。
算法1 的步骤2)表示动态路由会迭代r次,r通常设置为3。步骤6)表示动态路由使用Vj与的标量积来更新连接概率bij,这意味着当输出胶囊Vj与预测胶囊相似时,连接概率bij会增大,进一步导致耦合系数增大;相反,当它们不相似时,标量积为负数,连接概率bij和耦合系数会缩小。
1.3 反卷积重构
解码器是胶囊网络的重要组成部分,它能以重构图像的方式提升网络的分类准确率。除了CapsNet 所使用的全连接解码器,反卷积解码器同样适用于胶囊网络。反卷积解码器的优势在于参数量小,适用于复杂数据集。本文模型MCNet同样使用了反卷积解码器来重构图像。
图2 是一个应用于CIFAR-10 数据集的胶囊网络的反卷积解码器。经过动态路由后,DigitCaps 得到10 个16 维的向量(父胶囊),胶囊的长度代表它对应的类的存在概率。除了其中正确的胶囊外,其他胶囊都被掩码所屏蔽,然后将DigitCaps 拉伸为一维张量。通过一个全连接层后,得到8 ×8 × 16 个标量特征,再将这些特征折叠成[16,8,8]的特征图。最后将特征图进行反卷积(Deconvolution,Deconv)处理,该处理过程需要经过4 个反卷积层,每层的输出通道分别为64、32、16、3,最终得到和与CIFAR-10 图像尺寸一致的[3,32,32]的重构图像。解码器通过重构图像与原图像的均方损失进行训练。
图2 反卷积解码器结构Fig.2 Structure of deconvolutional decoder
2 多路径胶囊网络
2.1 模型结构
图3 是本文模型MCNet 应用于CIFAR-10 数据集的网络结构。MCNet 的编码器部分可以分为5 个模块,包括2 个卷积层、1 个胶囊特征提取层、1 个胶囊池化层和1 个DigitCaps。MCNet 使用两个尺寸为5×5 的卷积核提取原始特征,原CapsNet 则使用单个尺寸为9×9 的卷积核。这两种特征提取方式的感受野一样,但是多层卷积能提取到更深层次的特征,所以小而连续的卷积核提取的特征要好于单个大尺寸的卷积核。胶囊特征提取器可以通过多个路径的特征来生成胶囊(将在第2.2 节中详述)。胶囊池化是一种筛选胶囊的技术,目的是用具有代表性的少数胶囊来表示最多的有效胶囊特征,从而减少计算量(将在第2.3 节详述)。池化后,所有被筛选出的胶囊将通过动态路由机制(见2.2 节)转换为输出胶囊,从而进入DigitCaps。DigitCaps 的10 个输出胶囊的长度代表各个类的存在概率。
图3 MCNet模型结构Fig.3 Structure of MCNet model
DigitCaps 作为网络的输出层,位于该层的胶囊的长度可以表示类的存在概率,MCNet 通过计算该层胶囊的边缘损失来训练编码器。边缘损失的计算公式如下:
其中:Lk表示第k个胶囊所代表的类的损失。当且仅当该胶囊代表的类存在时,Tk=1;不存在时,Tk=0。vk是DigitCaps的第k个胶囊,‖vk‖是胶囊的L2范式,即长度。m+=0.9,是上边界;m-=0.1,是下边界。λ是比例系数,大小为0.5,意味着正类损失的重要性是负类损失的2 倍。编码器的总损失是DigitCaps 中所有胶囊损失的总和。
最后,在解码器部分,MCNet 使用反卷积解码器(见2.3节)重构图像。相较于CapsNet 使用的全连接重构,反卷积重构增强了网络的性能,并且显著减少了参数数量。应用于CIFAR-10 数据集的全连接解码器有3.76×106个参数,而反卷积解码器只有0.2×106个参数。实验结果表明,反卷积解码器在CIFAR-10 这类复杂的数据集中的表现要明显好于全连接解码器。
2.2 胶囊特征提取器
胶囊特征提取器的目标是提取丰富、多样的标量特征,从而生成同样丰富的向量(胶囊)特征。如图4,提取器有4条路径,每条路径所拥有的卷积层和池化层的数量也不相同,即每条路径的深度不一致。为了尽量不提取重复的标量特征,即使有路径深度相同,但是结构也不相同。
图4 胶囊特征提取器与胶囊池化层的结构Fig.4 Structures of capsule feature extractor and capsule pooling layer
胶囊特征提取器为每条路径设立了一个胶囊层,该层存储着初级胶囊up。p是路径的标号,提取器有4 条路径,因此p∈{1,2,3,4}。每条路径都存在许多胶囊类型,假设在第一条路径中:
其中:t是胶囊类型的数量,在一条路径中,t=32,因此4 条路径总共有128 种胶囊类型。MCNet 不是单纯地在一条路径上增加胶囊类型的数量,而是通过叠加不同路径来增加胶囊数量,这确保了胶囊来源的丰富度和胶囊的质量。事实上,对任意一个路径p'的任意一个胶囊类型t'而言,都存在h×w个胶囊u:
其中:h是胶囊特征图的高度,w是胶囊特征图的宽度。因此,MCNet 一共有4 × 32 ×h×w个胶囊。具体到 在CIFAR-10 数据集,h=w=10。考虑到胶囊特征提取器有4条路径,因此胶囊数量是CapsNet 的4 倍。从计算量的角度考虑,MCNet 为每条路径都配备了一种新的胶囊池化层,它大幅减少了胶囊数量(将在第2.3 节详述)。
多路径的特征提取方式并没有使MCNet 参数骤增。因为对卷积核的尺寸和输出通道的把控,在CIFAR-10 数据集中,MCNet 从输入层到胶囊特征提取层有5.47×106的参数,相比之下CapsNet 有5.37×106参数。相反,因为胶囊池化方法减少了胶囊数量,会大大降低动态路由的计算量。
实验结果表明,胶囊特征提取器使用的特征提取方法使网络在复杂数据集上的分类准确率大幅提升,尤其在胶囊池化层筛选胶囊数量之后,MCNet 用远小于CapsNet 的胶囊数量实现了更好的分类结果,说明胶囊特征提取器提取了良好的胶囊特征。
2.3 胶囊池化
上文提到,胶囊特征提取器产生了4 倍于CapsNet 的胶囊数量。胶囊的数量越多,参与到动态路由的参数就越多,而且必须考虑到这些参数在动态路由过程中会经过多次迭代,这将导致计算成本增加。因此需要一种减少胶囊数量的方法,本文的解决方案是在动态路由之前,添加一种胶囊池化技术。
胶囊特征的动态路由过程可看作是一个胶囊全连接过程,在子胶囊和父胶囊之间存在耦合系数。Ren 等[24]提出,在动态路由的过程中,大多数胶囊的耦合系数几乎可以忽略不计。这意味着少数子胶囊占据了极大的耦合系数,几乎决定了父胶囊的取值。本文的胶囊池化技术就是要找到这些最重要的子胶囊。
如图5,在子胶囊层u中,共包含t×h×w个子胶囊,t是胶囊类型的数量,h是胶囊层u的高度,w是胶囊层u的宽度。在胶囊层u的(x,y)处,存在t个胶囊:
图5 胶囊池化Fig.5 Capsule pooling
在胶囊池化层中,存在h×w个胶囊。在该层只有一个胶囊类型,胶囊数量是u层的1/t,这两层的位置一一对应。具体来说,在的(x,y)位置,只存在一个胶囊
胶囊就是u层在(x,y)位置的t个胶囊中最活跃的一个。上文提到,输出胶囊的长度代表类的存在概率,而在子胶囊层和胶囊池化层,胶囊的长度代表的是胶囊本身的活跃度。长度越长,胶囊越活跃。胶囊池化方法保证了子胶囊层的每个位置都有胶囊入选池化层,保护了位置信息。
对于MCNet 而言,胶囊池化方法使胶囊的数量减少到原来的1/t(t=32)。尽管MCNet 有4 条路径,最终参与动态路由的胶囊数量仅为CapsNet 的1/8。因此,路由过程中的可训练的参数也仅为原来的1/8。参数指的是子胶囊和父胶囊之间的空间关系。应用于CIFAR-10 数据集的CapsNet,参与动态路由的参数量为4.10×106,而MCNet 只有0.51×106。实验结果表明,本文提出的胶囊池化方式能在大幅减少参数量和计算量的同时保持分类准确率。
除了在同一位置取最活跃胶囊的池化方式外,本文还尝试了在同一位置取胶囊平均值的池化方式。取平均值的本意是融合胶囊,在减少胶囊数量的情况下让所有胶囊的特征都参与到路由过程中,但结果显示该池化方式会使分类准确率明显降低,这也再次说明并不是所有胶囊都对分类结果有所帮助,少数胶囊可以代表所有胶囊。
3 实验与结果分析
本文在CIFAR-10、SVHN、Fashion-MNIST 和MNIST 等4个数据集上测试了MCNet 模型。CIFAR-10 是一个包含飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车等10 类彩色图像的数据集,图片大小为32 × 32,图片背景贴近实际且十分复杂;SVHN 数据集来源于谷歌街景的门牌号码,包含10 个数字类别的彩色图像,图像大小同样为32 × 32,图片背景复杂;Fashion-MNIST 数据集包含了T 恤、牛仔裤、套衫、裙子、外套、凉鞋、衬衫、运动鞋、包、短靴等10 个类别的灰色图像,图像大小为28 × 28,图像背景单一;MNIST 数据集包含10 类手写数字的灰度图像,图片大小为28 × 28,图片背景十分简单。因此,实验中的CIFAR-10 可视为复杂数据集,MNIST 可视为简单数据集,SVHN 和Fashion-MNIST 则位于两者之间。
本文的实验建立在文献[25]的开源代码上,所有数据集均取自torchvision.datasets 函数库,并在数据预处理的过程中在各方向上使用了最多2 个像素的随机裁剪,除此之外无其他数据增强方式。在所有实验中,本文均使用自适应矩估计(Adaptive moment estimation,Adam)优化器,未设置固定学习率,batch size 为100,epochs 为100。对所有实验数据,本文都进行了3 次实验测试,并取均值作为结果。实验中:加粗的字体表示性能最好的实验结果;“—”表示对应模型未给出在该数据集的实验结果。
3.1 比较分析
本文以分类准确率为评价标准,将MCNet 和其他胶囊网络模型在CIFAR-10、SVHN、Fashion-MNIST 和MNIST 数据集上进行比较和分析。在CIFAR-10 和SVHN 数据集上,MCNet的胶囊特征提取器共生成了12 800 个下层胶囊;经胶囊池化层筛选后,一共留下了400 个下层胶囊;最后经过动态路由,在DigitCaps 生成了10 个代表分类结果的输出胶囊。在MNIST 和Fashion-MNIST 数据集上,MCNet 的胶囊特征提取器共生成了4 608 个下层胶囊;胶囊池化后,一共留下了144个下层胶囊;动态路由后,产生了10 个输出胶囊。
表1 中,CapsNet 是本文根据文献[25]的开源代码复现的结果,使用了数据增强手段。Xi 等[26]对CapNet 使用了增加卷积层、多模型集成等手段,在CIFAR-10 数据集上的分类准确率比原CapsNet 更高。Nair 等[27]是首个对CapsNet 在多个数据集上进行测试的研究者。MS-CapsNet[18]、MLCN2[20]、PathCapsNet[19]改进了 胶囊网 络的结 构,HitNet[28](Neural network with capsules embedded in a Hit-or-Miss layer)、Zhao等[29]、Ren 等[24]则改进了胶囊网络的路由机制。
表1 模型的分类准确率对比 单位:%Tab.1 Classification accuracy comparison of models unit:%
由表1 可知,几乎所有的模型都能在MNIST 这类简单的数据集上达到极高的准确率,其中CapsNet 的表现最好。大多模型对Fashion-MNIST 数据集的分类准确率都集中在92%到93%,MCNet 的表现明显好于其他模型。对于SVHN 数据集,MCNet 的分类结果也是最好的。对于比较复杂的CIFAR-10 数据集,MCNet 分类准确率达到了79.27%,大幅超出CapsNet(准确率提高了8.7%),也明显好于其他的模型。
就识别准确率而言,与其他模型相比,CapsNet 在简单数据集(MNIST)上表现优秀,在稍微复杂的数据集(Fashion-MNIST、SVHN)上仅稍逊一筹,但在复杂数据集(CIFAR-10)上则不尽如人意。本文模型MCNet 在3 个数据集上的表现都好于CapsNet 的其他改进模型,尤其是在复杂数据集上。显然,MCNet 改善了CapsNet 不适应于对复杂数据集进行分类的问题。
3.2 参数分析
MCNet 在可训练的参数量上也具有优势。表2 记录了3种胶囊网络模型与MCNet 在CIFAR-10 和Fashion-MNIST 数据集上关于参数量及分类准确率的比较。在这两个数据集上,MCNet 所使用的参数数量仅是其他模型的43.86%到71.53%,但是分类准确率却明显高过其他模型。MCNet 在大幅减少了参数量的前提下,仍然提升了分类准确率,验证了MCNet 模型的竞争力。
表2 三种胶囊网络模型与MCNet的分类准确率及参数量对比Tab.2 Comparison of classification accuracy and number of parameters among three capsule network models and MCNet
3.3 消融分析
表3 是在CIFAR-10 数据集上进行消融实验的结果。其中:“—”和“√”分别表示未使用和使用了相关技术。由表3可知,使用了胶囊特征提取器的模型c、d 的分类准确率大幅超过未使用特征提取器的模型a、b,说明胶囊特征提取器能帮助模型提升对复杂数据集的分类准确率。采用了胶囊池化技术的模型b 的准确率比模型a 高0.72 个百分点,未使用胶囊池化技术的模型c 的准确率比模型d 高0.07 个百分点,但是实验中模型d 的训练时间是模型c 的37.44%,可训练的参数量是模型c 的28.24%。本文提出的胶囊池化技术在保持了分类准确率的情况下,大幅减少了参数量和计算量,验证了该技术的有效性。
表3 CIFAR-10数据集上的消融实验Tab.3 Ablation study on CIFAR-10 dataset
4 结语
本文提出了一种基于多路径特征的胶囊网络。该网络能有效提升胶囊网络在复杂数据集上的分类性能,大幅减少可训练的参数量。该网络的胶囊特征提取器从多个不同路径提取了丰富多样的胶囊特征,提升了模型的分类性能。另外,本文还提出了一种新的胶囊池化技术,它用极少的胶囊数量保留了最多有效的语义信息,从而大幅降低了模型在路由过程的计算量和参数量。相较于其他胶囊网络模型,本文模型用更少的参数量实现了更好的分类性能。
未来的工作包括:一是继续探索更好的胶囊池化方法,即精确选取少数胶囊代表整体的胶囊特征。二是探究计算量更小的路由方式。该路由方式应该通过减少路由过程的迭代次数和参数量来减少计算量,同时,它还应当尽量避免梯度消失问题,使深度路由成为可能,帮助胶囊网络降低对深度卷积的依赖性,加速胶囊网络的推广。