LayerShuffle:提升视觉变换器鲁棒性的创新方法
摘要
本文介绍了一种名为LayerShuffle的新方法,旨在增强视觉变换器(Vision Transformers)在测试时对层执行顺序随机化的鲁棒性。由于人工神经网络的架构和训练方式,通常在测试时对层进行剪枝、替换或重新排序会导致性能下降。然而,对于分布式神经网络架构等应用,这些特性是可取的,因为在这些应用中,执行顺序无法保证,或者网络的一部分在推理过程中可能失败。LayerShuffle通过在训练时随机化注意力模块的执行顺序,使视觉变换器能够在测试时适应任意层执行顺序,尽管这会导致约20%的准确性下降。此外,训练后的模型可以相互随机合并,形成功能性的“Frankenstein”模型,而不会损失性能。最后,模型在测试时进行层剪枝,发现其性能下降是渐进的。
原理
LayerShuffle的核心在于在训练过程中随机改变视觉变换器中注意力模块的执行顺序。这种方法使得每个层能够适应不同的输入顺序,从而在测试时能够处理任意顺序的层执行。通过随机化层的执行顺序,模型学习到如何从不同的层接收输入并产生有意义的中间表示,即使这些层在网络中的位置发生了变化。这种随机化的训练策略使得模型能够在测试时更加鲁棒,即使层的执行顺序发生变化或某些层被剪枝。
流程
LayerShuffle的工作流程包括在每个训练批次中随机排列层的执行顺序。具体来说,对于每个前向传递,层的顺序会在训练过程中随机改变,这需要在反向传播时相应地调整梯度的计算顺序。这种方法不需要对基本的误差反向传播算法进行任何更改,因为Pytorch框架的自动梯度功能会处理这些细节。通过这种方式,模型学习到如何处理来自网络中任何层的输入,并产生有意义的输出,即使在测试时层的顺序是任意的。
应用
LayerShuffle的应用前景广泛,特别是在需要分布式神经网络架构的场景中。例如,在边缘设备上分布式执行模型推理时,LayerShuffle可以使模型更加鲁棒,即使某些设备过载或故障,模型仍能正常工作。此外,LayerShuffle还支持模型的动态合并,这在需要快速适应变化或优化计算资源的场景中非常有用。随着深度学习模型在各种边缘设备上的部署越来越普遍,LayerShuffle提供了一种有效的方法来提高模型的适应性和鲁棒性。
