在为新的机器学习应用构建深度模型时,研究人员通常从现有的网络架构开始,例如ResNets或EfficientNets。如果初始模型的准确率不够高,更大的模型可能是一个诱人的替代方案,但实际上可能不是当前任务的最佳解决方案。相反,通过设计针对任务优化的新模型可能会实现更好的性能。然而,这样的努力可能具有挑战性,通常需要大量资源。
在“委员会的智慧:一种被忽视的更快更准确的模型方法”中,我们讨论了模型集成和称为模型级联的子集,这两种方法都是通过收集现有模型并组合其输出来构建新模型的简单方法。我们证明,即使是少量易于构建的模型集成也可以达到或超过最先进模型的准确性,同时效率要高得多。
什么是模型集成和级联?
集成和级联是利用多个模型的优势来实现更好解决方案的相关方法。集成并行执行多个模型,然后组合它们的输出以做出最终预测。级联是集成的一个子集,但按顺序执行收集的模型,并在预测具有足够高的置信度后合并解决方案。对于简单的输入,级联使用较少的计算,但对于更复杂的输入,最终可能会调用更多的模型,从而导致更高的计算成本。
集成和级联概述。虽然此示例显示了集成和级联的 2 个模型组合,但可以使用任意数量的模型。
与单个模型相比,如果收集的模型预测存在多样性,则集成模型可以提供更高的准确率。例如,ImageNet中的大多数图像对于当代图像识别模型来说都很容易分类,但有许多图像的预测在不同模型之间有所不同,因此集成模型将为这些图像带来最大的好处。
尽管集成众所周知,但它们通常不被视为深度模型架构的核心构建块,研究人员在开发更高效的模型时也很少探索集成(除了少数显著的例外 [ 1、2、3 ])。因此,我们对集成效率进行了全面分析,并表明简单的集成或现成的预训练模型的级联可以提高最先进模型的效率和准确性。
为了鼓励采用模型集成,我们展示了以下有益的特性:
构建简单:集成不需要复杂的技术(例如,早期退出策略学习)。
易于维护:集成是独立训练的,因此易于维护和部署。
训练成本低:集成模型的总训练成本通常低于具有类似精度的单个模型。
设备上加速:计算成本( FLOPS )的减少成功转化为实际硬件上的加速。
效率和训练速度
集成可以提高准确率,这并不奇怪,但在集成中使用多个模型可能会在运行时带来额外的计算成本。因此,我们研究了集成是否比具有相同计算成本的单个模型更准确。我们分析了一系列模型,从 EfficientNet-B0 到 EfficientNet-B7,这些模型在应用于 ImageNet 输入时具有不同的准确率和 FLOPS 水平。集成预测是通过对每个单独模型的预测取平均值来计算的。
我们发现,在大型计算领域(>5B FLOPS),集成的成本效益明显更高。例如,两个 EfficientNet-B5 模型的集成与单个 EfficientNet-B7 模型的准确率相当,但使用的 FLOPS 却减少了约 50%。这表明,在这种情况下,不应使用大型模型,而应使用多个小得多的模型的集成,这将在保持准确率的同时降低计算要求。此外,我们发现集成的训练成本可以低得多(例如,两个 B5 模型:总共 96 TPU 天;一个 B7 模型:160 TPU 天)。在实践中,可以使用多个加速器并行化模型集成训练,从而进一步降低成本。这种模式也适用于 ResNet 和 MobileNet 系列。
在大型计算范围内(>5B FLOPS),集成模型的表现优于单一模型。
级联的强大功能和简便性
虽然我们已经证明了模型集成的实用性,但对于简单的输入,应用集成通常是一种浪费,因为集成的子集会给出正确的答案。在这些情况下,级联通过允许提前退出来节省计算量,可能在使用所有模型之前停止并输出答案。挑战在于确定何时退出级联。
为了突出级联的实际优势,我们特意选择了一种简单的启发式方法来衡量预测的置信度——我们将模型的置信度设为分配给每个类别的概率的最大值。例如,如果图像是猫、狗或马的预测概率分别为 20%、80% 和 20%,则模型预测(狗)的置信度为 0.8。我们使用置信度得分的阈值来确定何时退出级联。
为了测试这种方法,我们为EfficientNet、ResNet和MobileNetV2系列 构建了模型级联,以匹配计算成本或准确性(将级联限制为最多四个模型)。根据级联的设计,一些输入比其他输入产生更多的 FLOPS,因为更具挑战性的输入在级联中比更容易的输入经过更多的模型。因此,我们报告了所有测试图像的平均 FLOPS 计算结果。我们表明,在所有计算范围内(当 FLOPS 范围从 0.15B 到 37B 时),级联都优于单个模型,并且可以提高所有测试模型的准确性或降低 FLOPS(有时两者兼而有之)。
EfficientNet(左)、ResNet(中)和 MobileNetV2(右)模型在 ImageNet 上的级联。当使用相似的 FLOPS 时,级联比单个模型获得更高的准确率(向上指向的红色箭头所示)。级联还可以以明显更少的 FLOPS 达到单个模型的准确率,例如,B7 为 5.4 倍(向左指向的绿色箭头)。
集成和级联的准确率与 FLOPS 的总结。方块和星号分别代表集成和级联,“+”符号表示组成集成或级联的模型。例如,星号处的“B3+B4+B5+B7”表示 EfficientNet-B3、B4、B5 和 B7 模型的级联。
在某些情况下,限制因素不是平均计算成本,而是最坏情况成本。通过在级联构建过程中添加一个简单的约束,可以保证级联计算成本的上限。有关更多详细信息,请参阅论文。
除了卷积神经网络,我们还考虑了基于Transformer的架构ViT。我们构建了 ViT-Base 和 ViT-Large 模型的级联,以匹配单个最先进的 ViT-Large 模型的平均计算或准确度,并表明级联的优势也适用于基于 Transformer 的架构。
ImageNet 上的 ViT 模型级联。“224”和“384”表示训练模型的图像分辨率。吞吐量以每秒处理的图像数量来衡量。我们的级联可以在吞吐量相似的情况下实现比 ViT-L-384 高 1.0% 的准确率,或者在准确率相同的情况下实现比该模型高 2.3 倍的速度提升。
早期对级联的研究也表明最先进模型的效率有所提高,但在这里我们证明,使用少量模型的简单方法就足够了。
推理延迟
在上面的分析中,我们平均 FLOPS 来衡量计算成本。同样重要的是要验证级联获得的 FLOPS 减少是否实际上转化为硬件上的加速。我们通过比较性能相似的单个模型与级联的设备延迟和加速来检查这一点。我们发现,与具有同等准确度的单个模型相比,EfficientNet 系列模型的级联在TPUv3上的平均在线延迟减少了 5.5 倍。随着模型变得越来越大,我们发现具有可比级联的加速更快。
TPUv3 上用于在线处理的级联平均延迟。每对相同颜色的条形具有相当的准确度。请注意,级联可大幅降低延迟。
从大量模型中构建级联
上面,我们限制了模型类型,只考虑最多四个模型的集成/级联。这不仅凸显了使用集成的简单性,还让我们能够在很短的时间内检查所有模型组合,因此我们只需花费几个 CPU 小时就可以在一组保留的预测中找到最佳模型集合。
当存在大量模型时,我们期望级联更加高效和准确,但强力搜索是不可行的。然而,已经提出了有效的级联搜索方法。例如,当Streeter (2018)的算法应用于大量模型时,对于一系列模型大小,产生的级联与最先进的基于神经架构搜索的 ImageNet 模型的准确度相当,但 FLOPS 却少得多。
结论
正如我们所见,基于集成/级联的模型比来自多个标准架构系列的最先进的模型具有更高的效率和准确性。在我们的论文中,我们展示了其他模型和任务的更多结果。对于从业者来说,这概述了一种使用现成模型提高准确性同时保持效率的简单程序。我们鼓励您尝试一下!
致谢
本博客介绍了 Xiaofang Wang(在 Google Research 实习期间)、Dan Kondratyuk、Eric Christiansen、Kris M. Kitani、Yair Alon(前 Movshovitz-Attias)和 Elad Eban 所做的研究。我们感谢 Sergey Ioffe、Shankar Krishnan、Max Moroz、Josh Dillon、Alex Alemi、Jascha Sohl-Dickstein、Rif A Saurous 和 Andrew Helton 提供的宝贵帮助和反馈。
评论