BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks 解读
一、论文基本信息论文题目BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks作者Surat Teerapittayanon、Bradley McDanel、H. T. Kung发表信息ICPR 2016arXiv 版本题名为BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks官方代码kunglab/branchynet这篇论文提出了BranchyNet它是早期early exiting提前退出动态推理方法的代表工作。论文的核心思想是在深度神经网络的中间层增加若干 side branch classifiers让容易分类的样本提前从浅层分支输出结果而困难样本继续向后执行完整网络。arXiv 摘要中明确说明BranchyNet 通过增加 side branch classifiers使大量测试样本在高置信度时可以从中间分支提前退出从而减少后续层的推理计算。(arXiv)官方代码仓库为kunglab/branchynet仓库说明该代码用于复现论文BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks的结果。(GitHub)二、论文要解决的问题深层神经网络通常越深表达能力越强但推理成本也越高。对于实时应用、移动端应用和能耗敏感场景来说所有样本都完整执行整张深层网络会带来不必要的延迟和能耗。论文的出发点很简单并不是所有输入样本都需要完整网络才能被正确分类。一些样本非常简单。例如 MNIST 中清晰的数字或者 CIFAR-10 中背景简单、主体明显的图像可能在网络前几层就已经形成足够可分的特征。对于这些样本如果仍然强制执行后续所有层就是浪费计算。因此BranchyNet 要解决的问题是如何让简单样本在浅层就完成分类困难样本才继续执行更深层网络传统静态剪枝和模型压缩通常会得到一个固定小模型所有样本都走同一条路径。BranchyNet 不同它保留完整深网络同时增加多个中间出口。这样不同样本会根据置信度走不同深度的推理路径。这里的核心区别是静态剪枝是把模型永久变小。BranchyNet 是让不同输入在推理时选择不同退出位置。三、核心思想BranchyNet 的核心思想可以概括为一句话在主干网络的若干中间层接入分类分支如果某个分支对当前样本的预测足够自信就提前输出结果并停止后续计算。假设一个网络原本只有最后一个分类器。BranchyNet 会在中间层增加若干 branch classifiers。每个 branch 都可以输出一个类别概率分布。推理时输入样本先经过前面几层然后到达第一个 branch。系统计算该 branch 的预测置信度。如果置信度超过设定阈值样本直接从这里退出如果置信度不够高样本继续向后执行到达下一个 branch 或最终分类器。因此BranchyNet 的推理路径是输入自适应的简单样本浅层 branch 就能高置信度分类提前退出。困难样本浅层 branch 不够自信继续执行更深层网络。论文明确指出对于较难样本BranchyNet 会继续使用更多甚至全部网络层以提高正确预测的可能性。(arXiv)这就是 early exiting 的核心逻辑。四、BranchyNet 和普通多分类头的区别深度网络中加入辅助分类器并不是新思想。GoogLeNet 中就有 auxiliary classifiers用来帮助训练深层网络。但 BranchyNet 和普通辅助分类器有本质区别。辅助分类器主要用于训练阶段目的是改善梯度传播和网络优化推理阶段通常会被移除或不作为主要输出。BranchyNet 的 branch classifiers 则直接用于推理阶段。也就是说BranchyNet 的分支不是训练辅助项而是真正的提前退出出口。这点非常关键。BranchyNet 的设计目标不是单纯提升训练稳定性而是降低平均推理成本。五、方法细节5.1 分支位置如何选择BranchyNet 需要在主干网络中选择若干位置添加 side branches。分支不能放得太早也不能放得太晚。如果放得太早浅层特征语义不足branch 分类能力差容易误判。如果放得太晚即使能提前退出也已经计算了大部分网络节省的计算有限。因此分支位置需要在两个目标之间折中足够浅才能节省计算。足够深才能有较好分类能力。论文在 LeNet、AlexNet、ResNet 等网络上进行了实验说明 BranchyNet 可以应用到不同类型的主干网络。arXiv 摘要中也明确提到作者在 LeNet、AlexNet、ResNet 和 MNIST、CIFAR-10 上进行了研究。(arXiv)5.2 分支分类器的结构BranchyNet 的分支分类器通常比主干网络后续部分轻量得多。一个 branch 可以包含少量卷积层、池化层、全连接层和 softmax 分类器。它的作用是根据当前中间特征直接产生预测结果。这里需要注意branch 本身会带来额外计算开销。如果 branch 太复杂即使大量样本提前退出branch 的额外开销也可能抵消收益。因此BranchyNet 的 branch 设计必须足够轻量。这也是 early-exit 方法的一般原则提前退出分支必须便宜否则就失去了提前退出的意义。5.3 退出准则基于置信度判断BranchyNet 推理时需要判断当前样本是否可以从某个 branch 退出。论文采用的核心思路是根据预测置信度判断。最常见的做法是看 softmax 输出的最大概率如果最大类别概率超过阈值就认为 branch 对当前预测足够自信可以提前退出。也可以用熵来衡量不确定性。熵越低说明预测分布越集中模型越自信熵越高说明预测分布越分散模型越不确定。因此退出逻辑可以理解为如果当前 branch 置信度足够高则提前退出。如果当前 branch 置信度不足则继续执行后续层。这个机制的好处是简单、直观、易实现。5.4 阈值控制速度和精度折中BranchyNet 的退出阈值非常重要。如果阈值设置得低很多样本会很早退出推理速度更快但一些不够确定的样本也可能被提前分类导致精度下降。如果阈值设置得高只有非常确定的样本才会提前退出精度更稳定但加速效果会变弱。所以退出阈值控制的是速度与精度之间的折中。部署时可以根据任务需求选择不同阈值。实时性要求很高时可以降低阈值让更多样本提前退出。精度要求更高时可以提高阈值让更多样本走到更深层。这是 BranchyNet 很重要的灵活性。六、训练方式BranchyNet 的训练需要同时优化多个出口。如果网络有多个 branch classifiers 和最终分类器那么训练目标通常是多个分类损失的加权和其中(B) 表示出口数量。表示第 (i) 个出口的分类损失。表示该出口损失权重。这种训练方式的含义是每个出口都要具备独立分类能力。浅层 branch 需要学会尽可能早地分类简单样本深层 branch 和最终分类器则负责更复杂样本。需要注意的是BranchyNet 并不是只训练最后一层分类器而是让中间出口也直接接受监督。这使得浅层特征不仅服务于后续深层也要对当前 branch 的分类任务有帮助。七、推理过程BranchyNet 的推理过程可以概括为以下步骤。第一输入样本进入主干网络前几层。第二到达第一个 branch classifier。第三branch 输出类别概率分布。第四计算置信度例如最大 softmax probability 或预测熵。第五如果置信度满足阈值直接输出该 branch 的预测结果并停止后续计算。第六如果置信度不满足阈值则继续执行后续主干层。第七在后续 branch 重复上述判断。第八如果所有 branch 都没有提前退出则最终从主干网络最后分类器输出结果。这个过程的本质是每个样本都可以根据自身难度选择不同推理深度。因此BranchyNet 的加速是平均意义上的。它不会让每个样本都更快而是让大量简单样本更早退出从而降低整体平均推理时间。八、实验设置论文使用了多个常见网络和数据集来验证 BranchyNet包括 LeNet、AlexNet、ResNet以及 MNIST、CIFAR-10 等数据集。arXiv 摘要中明确写到BranchyNet 在 LeNet、AlexNet、ResNet 和 MNIST、CIFAR-10 上进行了研究并展示了可以提升精度和显著减少推理时间。(arXiv)这些实验的重点不是证明某个固定小模型最优而是验证两个问题中间层特征是否足以分类一部分简单样本。提前退出是否能在保持精度的同时减少平均推理时间。实验结论表明这两个假设是成立的。九、实验结果解读9.1 大量样本可以提前退出BranchyNet 的核心实验现象是很多测试样本并不需要完整网络。在浅层 branch 处如果模型已经给出高置信度预测这些样本就可以直接退出。只有较难样本需要继续走后续层。这说明深度网络中存在明显的样本难度差异简单样本在浅层已经足够可分。困难样本才真正需要深层语义特征。这个观察后来成为很多 early-exit、adaptive inference、dynamic neural network 方法的基础。9.2 平均推理时间下降BranchyNet 的推理时间下降来自大量样本提前退出。如果 60% 的样本在第一个 branch 就退出只有 40% 的样本继续向后执行那么平均计算量就会明显下降。但这里要注意BranchyNet 减少的是平均推理成本而不是最坏情况推理成本。最难的样本仍然可能执行完整网络并且由于 branch 本身有额外计算最坏情况甚至可能比原网络略慢。因此BranchyNet 适合关注平均延迟或吞吐量的场景但如果系统有严格 worst-case latency 要求就需要更谨慎地设置 branch 和阈值。9.3 有时精度还会提升BranchyNet 论文报告中一个有意思的现象是加入分支后不仅能加速有时还能提升整体精度。arXiv 摘要也指出BranchyNet 可以同时 improve accuracy and significantly reduce inference time。(arXiv)原因可能有两点。第一中间分支提供了额外监督类似 deep supervision有助于浅层和中间层学习更有判别性的特征。第二对简单样本来说浅层分支有时可能比最终深层分类器更直接、更稳定深层网络不一定对所有样本都更优。因此BranchyNet 不只是推理加速结构也可能带来一定训练正则化效果。9.4 阈值影响精度—速度曲线不同退出阈值会产生不同的精度和速度。低阈值会让更多样本提前退出因此速度更快但错误提前退出也更多。高阈值会让更多样本继续执行深层网络因此精度更稳但速度收益变小。所以 BranchyNet 实际部署时不是只有一个固定工作点而是可以通过阈值调节形成一条精度—延迟曲线。这点非常实用同一个训练好的 BranchyNet可以通过调节退出阈值适配不同实时性要求。十、方法优点10.1 输入自适应BranchyNet 最大优点是input-adaptive inference。它不是让所有输入走同一条固定路径而是根据每个样本的预测置信度决定是否提前退出。这种方式比静态压缩更灵活。10.2 思想简单容易理解BranchyNet 的机制非常直观在中间层加出口。高置信度就退出。低置信度就继续。相比强化学习式动态路由、复杂 NAS 或动态通道选择BranchyNet 的概念和实现都更直接。10.3 可用于多种主干网络论文在 LeNet、AlexNet、ResNet 等网络上验证 BranchyNet说明它不是某一个具体网络的专用技巧。(arXiv)只要网络中间特征具备一定判别能力就可以考虑添加 early-exit branch。10.4 能形成可调节的精度—速度折中通过改变退出阈值BranchyNet 可以控制平均推理深度。因此同一个模型可以在不同速度和精度要求之间切换。10.5 对后续 early-exit 方法影响很大BranchyNet 是 early-exit neural network 的代表性早期工作之一。后续很多方法例如 MSDNet、Shallow-Deep Networks、PABEE、DeeBERT、FastBERT、EENet 等都沿用了“中间出口 置信度退出”的基本思想并在分支设计、训练方式、退出策略和预算控制上继续改进。它的重要意义在于它把推理加速从“压缩模型结构”扩展到了“按样本提前结束推理”。十一、方法局限11.1 最坏情况延迟不一定下降BranchyNet 降低的是平均推理时间。对于没有提前退出的困难样本它仍然需要执行完整主干网络而且还额外计算了前面的 branch classifiers。因此BranchyNet 的 worst-case latency 可能不低于原始网络。这在实时系统中需要特别注意。11.2 分支会增加模型参数和计算每个 branch classifier 都会引入额外参数和额外计算。如果 branch 设计太重或者提前退出比例不高整体收益会下降。因此BranchyNet 需要仔细选择 branch 位置和 branch 结构。11.3 置信度不一定可靠BranchyNet 通常用 softmax 置信度或熵来判断是否提前退出。但深度网络的 softmax 置信度可能存在过度自信问题。也就是说模型可能对错误预测也给出很高置信度。如果浅层 branch 过度自信就会造成错误提前退出。因此退出策略的可靠性非常重要。11.4 分支位置需要人工设计Branch 放在哪里会明显影响效果。位置太浅分类能力不足。位置太深加速收益有限。BranchyNet 原始方法没有自动搜索最优 branch 位置因此部署到新网络时仍需要人工调试。11.5 Batch 推理效率可能受影响在 GPU 上批量推理时如果 batch 中不同样本在不同出口退出就会带来动态控制流和 batch 分裂问题。如果实现不好理论计算节省不一定完全转化为真实硬件加速。这也是所有 early-exit 动态网络在工程部署中需要考虑的问题。十二、整体评价BranchyNet 的核心价值在于它提出了一种非常直接的动态推理思想让容易样本提前退出让困难样本继续深入。它不是传统剪枝方法不会永久删除 filters 或 channels它也不是 SkipNet、BlockDrop 那类跳过中间 residual blocks 的路径选择方法。BranchyNet 的重点是提前结束推理。这种思想非常适合样本难度差异明显的任务。如果大量样本都能在浅层被高置信度分类那么 BranchyNet 可以显著降低平均推理成本。它的关键贡献可以总结为三点第一在深度网络中增加 side branch classifiers使中间层具备独立预测能力。第二基于置信度判断是否提前退出实现输入自适应推理。第三通过阈值控制精度和速度折中使同一模型可以适应不同推理需求。这篇论文后来影响很大因为 early exiting 成为动态神经网络中非常重要的一类方法。相比静态剪枝它的优势是保留完整网络能力相比动态跳层它的优势是逻辑更简单相比动态通道选择它不需要复杂稀疏卷积实现。十三、一句话总结《BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks》提出在深度网络中加入多个中间分类分支让高置信度样本从浅层提前退出困难样本继续执行更深层网络它的核心贡献不是永久压缩网络结构而是利用样本难度差异实现输入自适应的早退推理从而在保持精度的同时降低平均推理时间和能耗。