SLIMMABLE NEURAL NETWORKS
在资源有限的情况下,如何在运行时即时、自适应和有效地在神经网络的准确性和延迟之间进行权衡?在这项工作中,我们引入了slimmable network,这是一类新的可在不同宽度下执行的网络,作为在运行时在准确性和延迟之间进行权衡的一般解决方案。图1显示了一个slimmable network的例子,它可以在四个具有不同活动通道数量的模型变体之间切换。
在切换到新的配置后,可slimmable network将成为正常的网络,无需额外的运行时和内存成本。
然而,神经网络自然是作为一个整体运行的,通常不能动态调整通道数。经验上训练多开关的神经网络,对于1000类ImageNet分类的测试准确率极低,约为0.1%。我们推测主要是由于积累不同的通道数导致特征均值和方差不同的问题。这种不同开关的特征均值和方差的差异导致共享的BN层的统计不准确,这是一个重要的训练稳定器。
我们猜测天真方法的主要问题是:对于一个层中的单个通道,前一层中不同数量的输入通道导致聚合特征的均值和方差不同,然后将其滚动平均到一个共享的BN层。由于不一致,导致批处理不准确 以逐层传播的方式进行归一化统计。需要注意的是,这些BN统计(移动平均均值和方差)只在测试过程中使用,在训练中使用的是当前小批次的均值和方差。
我们首先训练一个基础模型A(MobileNet v2 0.35).将其固定并添加额外参数B,使其成为一个扩展模型A+B(MobileNet v2 0.5)。额外参数与A的固定参数一起在训练数据上进行微调。虽然该方法在训练和测试中都很稳定,但Top-1的准确率仅从A的60.3%提高到A+B的61.0%。相比之下,单独训练的MobileNet v2 0.5在ImageNet验证集上的准确率达到65.4%。准确率下降的主要原因是,当将基础模型A扩展到下一级A+B时,计算图中不仅增加了B到B的新连接,还增加了B到A和A到B的新连接。增量训练禁止了权重A和B的联合适应,大大恶化了整体性能。
3.2 SWITCHABLE BATCH NORMALIZATION
BN可以更快更稳定地训练深度神经网络,也可以将条件信息编码到特征表示中。
为了训练可瘦网络,S-BN将可瘦网络中每个switch的所有BN层私有化。与天真训练方法相比,它通过在测试过程中对特征均值和方差进行独立归一化,解决了不同switch之间特征聚合不一致的问题。
S-BN还有两个重要的优点。首先,额外参数的数量可以忽略不计。
在大多数情况下,批量归一化层只有不到1%的模型大小。其次,对于部署来说,运行时的开销也可以忽略不计。在实践中,BN通常会融合到卷积层中,以实现高效推理。对于slimmable network,BN的重新融合可以在运行时飞速完成,因为其时间成本可以忽略不计。
3.3 TRAINING SLIMMABLE NEURAL NETWORKS
我们训练一个可瘦身的神经网络的主要目标是优化其从所有switch中获得的平均精度。因此,我们通过取不同switch的所有训练损失的非加权和来计算模型的损失。算法1说明了训练框架的内存效率实现,它可以直接集成到当前的神经网络库中。
可切换宽度列表是预定义的,表示在可瘦身网络中的可用开关。在训练过程中,我们积累所有开关的反向传播梯度,并在之后更新权重。经验上,我们发现在所有的实验中,没有超参数需要特别调整。