集成学习通过融合多个模型得到更准确的结果,在深度神经网络模型上应用集成学习可以提高网络性能。 作者提出了Group Ensemble方法,在单个模型中融合显式和隐式的集成方法,能够在几乎不提升原模型计算需求的基础上提高模型性能。 一些研究表明,对同一架构的网络使用不同方法(比如改变权重初始值、改变数据集的划分策略)训练多次,得到的多个网络中浅层的表达很类似;甚至不同的网络结构,比如VGG和ResNet系列网络,基于同一任务训练,得到的网络浅层表达也很类似。基于上述发现,作者认为,可以通过共享浅层网络、独立多个深层网络来达到显式集成的效果,以减少计算量。 作者提出了名为GENet(Group Ensemble Network)的网络结构,用于在单个神经网络中进行显示集成学习,如下图所示: 从上图中可以看出,作者使用Group卷积的形式达到“独立多个深层网络”的效果,每个分类器的输出结果融合得到最终结果。 多个独立的深层网络提供了用于集成学习的多个分类器,并且引入了多个分类器的差异性;共享浅层网络,相比于传统的使用多个模型集成的方法,有效地减少了计算量。多个独立的深层网络使用同一个浅层网络,因此共享的浅层网络也可以理解为对共享参数的一种正则化手段。 假设深层的Group卷积中共有n个组,整个模型的损失函数为: 上式中的表示第m个Group卷积的损失函数。 推理时,这些独立的深层网络分别输出各自的结果,通过取平均值得到整个网络的最终结果。 作者介绍了3种训练时给样本分配权重的方法,它们分别为Group Averaging、Group Wagging、Group Boosting,可以使用这些方法提高深层网络的多样性,达到更好的集成效果。 第m组的损失函数 可以表示为: 上式中,i表示样本的索引,b 表示 batch size,表示第i个样本的损失,表示第i个样本对应的权重。下图说明了该公式的含义: Group Averaging、Group Wagging、Group Boosting这3种方法决定了上式中的取值策略。
上式中的为第m-1组对该样本的识别概率,为参数。 这三种方法的示意图如下所示: 作者探讨了多个组之间保持独立性对于最终分类结果的影响: 假设一个简单的2分类任务,多个模型的输出服从于同样的正态分布,即 上式中表示对于某个样本第i个模型输出的正确类别的预测得分,n表示模型数量,和分别表示均值和标准差。 如下图所示: 左上图为单个模型的输出分布,右上图为2个独立模型的输出分布,左下图为4个独立模型的输出分布,从这3个图可以看出,融合多个模型的输出结果会更准确,且模型个数越多越好。 右下图为2个相关系数的模型的输出分布,对比右上图和右下图可以看出,模型越独立,融合后输出结果越准确。因此可知保持多个模型独立的重要性。 3. 实验3.1 分类任务作者在CIFAR和ImageNet数据集上测试GENet。使用Group Averaging策略分配样本权重,使用Pytorch实现。 对于CIFAR数据集,使用ResNet-29和ResNeXt-29作为Backbone,网络最后一层为用于分类的FC层,使用center-crop的方法在验证集上测试。在CIFAR-10和CIFAR-100数据集上的Top1错误率如下图所示: 上图中的Ensemble表示使用传统的多个模型集成方法,“2x”和“3x”分别表示使用2个和3个模型。从上图中可以看出GENet保持和baseline基本一致的计算量,性能与传统的模型集成方法接近。 对于ImageNet数据集,使用ResNet-50、ResNeXt-50、ResNeXt-101作为Backbone,在验证集上使用224x224尺寸的center-crop进行测试,错误率如下图所示: 从上图中可以看出,GENet和传统的模型集成方法性能接近,但是有更少的参数量和计算需求。 3.2 目标检测任务在COCO2017数据集上使用Faster R-CNN测试,Backbone为ResNet50并且使用了FPN。保持Faster R-CNN中的RPN不变,只将R-CNN head部分改为group ensemble形式,测试结果如下图所示: 从上图中可以看出,使用group ensemble能够在保持参数量不变的前提下达到多个模型集成的性能,验证了GENet对baseline性能的提升,以及在不同领域的有效性。 4. 总结
仅用于学习交流! END 备注:部署 模型压缩与应用部署交流群 模型压缩、网络压缩、神经网络加速、轻量级网络设计、知识蒸馏、应用部署、MNN、NCNN等技术, 扫码备注拉你入群。 微信号:aicvml QQ群:805388940 微博知乎:@我爱计算机视觉 投稿:amos@52cv.net 网站:www.52cv.net 在看,让更多人看到 |
|