LST:参数和内存高效的迁移学习的过墙梯.

高效地微调大型预训练模型到特定任务上是目前NLP领域的主流方式。除了直接微调全部参数外,还有很多参数高效的微调技巧,它们能够通过只微调很少的参数来达到接近全量参数微调的效果。然而,这些技巧通常只是“参数高效”而并非“训练高效”,因为它们依旧需要在整个模型中反向传播来获得少部分可训练参数的梯度,训练速度并没有明显提升。

反向传播需要求模型梯度,是从输出层向输入层逐步计算的,因此反向传播的计算量取决于最靠近输入层的参数量,跟可训练的参数量没有直接的联系。对于Adapter来说,它在Transformer每一层后面都插入了一个小规模的层,虽然其余参数都固定了,只有新插入的层可训练,但反向传播仍然要传到输入层;对于Prompt tuning来说,本质上它是只有在Embedding层中有少量可训练参数,但Embedding层是输入层,因此它的反向传播也要经过整个模型。因此这两种方案能提升的训练效率并不多。

本文提出了Ladder Side-Tuning (LST)训练技巧,同时达到了参数高效和训练高效。LST在原有大模型的基础上搭建了一个“旁支”(梯子),将大模型的部分层输出作为旁枝模型的输入,所有的可训练参数只在旁枝模型中。由于大模型仅提供输入,训练复杂度只取决于旁枝模型的规模,并不需要直接在原始大模型上执行反向传播,因此是可以明显提升训练效率的。

LST中的Side Network是用跟Adapter中相同的MLP层来搭建的,并且可以灵活地插入到编码器-解码器结构中:

LST新增的“梯子”分支的初始化是个问题,如果完全随机初始化的话,可能会有训练上的困难,效果效果会不理想。原论文提供了一个截取大模型矩阵权重来作为小模型矩阵初始化的方案,并进一步引入了Layer Drop的正则化手段提升了LST的最终效果:

实验结果表明,LST确实具备了参数高效和训练高效的特点,能够在较小的训练参数和训练成本的情况下,达到一个不错的微调效果。特别是最后两行的实验结果,体现出了LST在有限训练资源下微调大模型的可能性。