论文链接:https://arxiv.org/pdf/2305.17682.pdf
项目链接:https://github.com/ChaosCodes/ProPETL
一、背景与动机
在深度学习领域,我们一直在寻找更有效的方法来提高模型的性能,同时降低计算和存储需求。我们的工作主要关注如何通过共享参数和掩码子网络的设计(也可以看作是一种剪枝操作)来提高模型的参数效率。
1.1 问题一:参数效率的挑战
在大型语言模型中,参数数量通常是巨大的,这不仅增加了计算和存储的需求,也可能导致过拟合等问题。因此,在 finetune 大型语言模型时, 许多 Parameter Efficient Transfer Learning(PETF)方法被提出。这些方法只需要更新很少一部分的额外参数, 节省了 finetune 时的显存以及存储需求。但是当下游任务变得越来越大的时候,计算和存储的需要也会变大从而很难应用在资源受限的环境。
于是我们希望找到一种方法, 在前人工作的基础上, 继续降低 PEFT module 的大小。为此我们在 PEFT 中引入了共享参数和剪枝的设计。
1.2 问题二:保持或提高模型性能
在提高参数效率的同时,我们也希望能够保持或提高模型的性能。这需要我们在共享和剪枝参数的过程中,仔细考虑如何选择和调整参数,以保证模型的性能不会受到影响。
二、方法: ProPETL
为了解决上述问题,我们提出了 ProPETL,一种新的 parameter-efficient transfer learning 方法。
2.1 Preliminaries
2.2 参数共享
我们这里原型网络的参数可以在不同的任务和模型层之间共享。原型网络的设计和训练都是为了最大化参数的共享性,从而提高参数效率。
2.3 掩码子网络
我们在实验中发现,如果只分享每一层模型的 adapter 的参数,模型在不同层级捕获有意义的表示的能力可能会下降,这可能导致最终的结果不尽人意。受到了文献 [2] 和 [3] 的启发,我们认为模型的表示能力不仅仅取决于参数,网络结构也是一个重要的因素。
这些掩码是可以学习的,可以通过反向传播进行优化。通过剪枝,我们可以消除不重要的参数,从而降低模型的复杂性和存储需求。这种方法的关键在于,我们并不是简单地在所有任务和层之间共享所有参数,而是通过学习来确定哪些参数是可以被共享的。
三、实验结果
我们进行了一系列实验,使用了多种不同的预训练语言模型,包括 RoBERTa 和 T5,并在多个任务上进行了测试,包括 GLUE、XSum 和 WMT16 Ro-En。实验结果显示,ProPETL 在所有任务上表现出色,并且能够显著提高参数效率。
四、总结
我们的工作提出了一种新的 parameter-efficient transfer learning 方法,通过共享参数和掩码子网络的设计,显著提高了模型的参数效率,同时保持或提高了性能。这为深度学习模型的部署和应用提供了新的可能性,特别是在资源受限的环境中。我们期待这项工作能够为深度学习社区带来启示,推动进一步的研究。
参考
[1] ALBERT: A Lite BERT for Self-supervised Learning of Language Representations, ICLR 2020
[2] What’s Hidden in a Randomly Weighted Neural Network?, CVPR 2020
[3] Parameter-Efficient Masking Networks, NIPS 2022
作者:曾广韬
本文来源:公众号【PaperWeekly】