Zhangzhe's Blog

The projection of my life.

0%

Group Ensemble: Learning an Ensemble of ConvNets in a single ConvNet

URL

https://arxiv.org/pdf/2007.00649.pdf

TL;DR

  • 传统的集成学习能提高算法效果,但是深度学习多 model 集成学习实在是太慢了

  • 所以作者提出一种深度学习多 group 集成学习,本质是在网络的末尾处使用 分组卷积,分成多路,每一路独立监督,监督得到的 loss 加权求和 作为总 loss,然后反向传播、优化,优点是:理论上不产生额外计算量

  • 加权求和的方式一共有三种,分别是 Group AveragingGroup WaggingGroup Boosting

Algorithm

Group Ensemble 与 Model Ensemble 的区别

group10.png
group1.png

网络结构

网络结构

加权方式

  • Loss=1i=1mWiLiLoss = \frac{1}{\sum_{i=1}^m}W_i*L_iLiL_i 表示第 i 个分支上的损失, WiW_i 表示对应权重

  • Group Averaging

    • Wi=1,     i=1,2,...,mW_i = 1, \ \ \ \ \ i = 1, 2, ..., m
  • Group Wagging

    • WiN(1,δ2),     i=1,2,...,mW_i \sim N(1, \delta^2), \ \ \ \ \ i = 1, 2, ..., m
  • Group Boosting

    • Wi=log(Pi1T),     i=2,3,...,mW_i = -log(\frac{P_{i-1}}{T}), \ \ \ \ \ i = 2, 3, ..., m

      • 其中 T 表示 温度,类似于模型蒸馏时的蒸馏温度

      • Pi1P_{i-1} 表示上一个分支算对的概率

      • 即上一个分支预测的越正确,本分支的权重就越小,这与 boosting 还真的有点像

group2.png

最终效果

  • ImageNet 数据集上,top-1 errorResNeXt-50 降低了 1.83%

  • 几乎不改变 Flopsparams,在几乎所有网络上使用都会有明显提升

  • 在多种任务中都能提高成绩,包括:

    • 目标检测
    • 动作识别
    • 图像识别

Thoughts

  • Group Boosting 这种串行计算 loss 权重的方法确定在 inference 阶段不会影响速度?

  • 为什么在 CIFAR 数据集上,Group Wagging 这种随机方法反而效果好

对比表格

group3.png

group4.png

group5.png

group6.png

group8.png

group7.png

group9.png