Parameter-efficient fine-tuning methods for pretrained language models: A critical review and assess

文章这种东西真是越读越多啊,哭哭哭,今天这个文章是2023年发表的一篇,关于Parameter Efficient Fine Tuning(简称PEFT)的综述,接上一篇关于LoRA的综述,今天来读PEFT的综述。

文章链接:https://arxiv.org/pdf/2312.12148

首先,这个PEFT大家有没有很熟悉呀,咱们先来看看Huggingface是怎么说这个PEFT的。

Huggingface的GitHub链接:https://github.com/huggingface/peft

目前大语言模型如果要进行微调,主要有两种方式Full parameter fine-tuning和这个Parameter Efficient Fine Tuning。Full parameter fine-tuning显而易见,那就是大语言模型整个语言模型里的各个参数,在微调的过程中都去更新一下,这样的方式显然是非常耗费资源和时间的。于是乎,大家开始走Parameter Efficient Fine Tuning的道路,即,对少量或者额外的一些模型参数进行微调,以让大模型可以高效训练更好地完成各种下游的应用,人Huggingface也说了,目前先进的一些PEFT技术已经实现了与微调整个模型一样的性能。另外,介绍里也提到,PEFT目前已经与Transformers、Diffusers和Accelerate集成了,这样大家也可以更好地实现大语言模型的应用。

好的,回到正题,今天看的这篇综述,对PEFT的各类方法进行了罗列总结,可以系统性看看。作者一开始画了一个PEFT技术衍生树,并按照分类给出了不同类别下的相关工作。

可以看到作者把PEFT的微调方式主要被分成了五类:Additive Fine-tuning, Partial Fine-tuning,Reparameterized Fine-tuning,Hybrid Fine-tuning和Unified Fine-tuning。下面咱们分别看看这几类Fine-tuning是怎么做的,大概的机制是什么。

Additive Fine-tuning

主要有Adapter-based Fine-tuning,Soft Prompt-based Fine-tuning以及其他。首当其冲,就是这个基于Adapter的微调,啥是Adapter呢,大概意思就是在预训练模型的某些层(例如 Transformer 层)中插入小型的神经网络模块,这些模块称为“适配器/Adapter”。这些适配器通常由两个线性层组成,一个用于降低输入维度,另一个用于将维度恢复到原始大小(即瓶颈结构)。这种设计使得适配器参数数量非常少。举个例子,下图来自文章:Parameter-efficient transfer learning for nlp。

N. Houlsby, A. Giurgiu, S. Jastrzebski, B. Morrone, Q. De Laroussilhe, A. Gesmundo, M. Attariyan, and S. Gelly, “Parameter-efficient transfer learning for nlp,” in Proc. Int. Conf. Mach. Learn. PMLR, 2019, pp. 2790–2799

这是较早提出来Adapter的一个工作,可以看到,研究人员在Transformer模块里加入了两个Adapter,每个Adapter由一个首尾layer神经元多,中间layer神经元少,这样的简单神经网络模块构成。

这么看,Adapter模块其实有非常多种插入网络的模式,我这会儿虽然没去搜,但是我估摸说不定基于Adapter的LLM微调也有不少文献综述,再举个Adapter的例子。下图是2023年的一个工作,提出了conditional adapters,相比于对所有字token进行处理,CODA模型认为并非所有token对预测任务是重要的,因此对一些pretrained Transformer block进行了跳过。

Lei, Tao, et al. "Conditional adapters: Parameter-efficient transfer learning with fast inference." Advances in Neural Information Processing Systems 36 (2023): 8152-8172.

第二类是Soft Prompt-based,一看就知道是在prompt上做菜,比如Prompt Tuning 不涉及对模型本身参数的调整,而是将不同任务的输入提示塞到包含所有任务的数据集中,使模型能够更好地进行微调。下图来自:

Lester, Brian, Rami Al-Rfou, and Noah Constant. "The power of scale for parameter-efficient prompt tuning." arXiv preprint arXiv:2104.08691 (2021).

最后,剩下的几个工作,基本都是挨着adapter或者prompt tuning的思路,但是又有点不一样的地方,作者放到了其他,比如这个 (IA)3 类似adapter的思路,往transformer模块里的QKV上加东西(learned vectors)的样子,下图来自

Liu, Haokun, et al. "Few-shot parameter-efficient fine-tuning is better and cheaper than in-context learning." Advances in Neural Information Processing Systems 35 (2022): 1950-1965.

比如这个LST,在Transformer里搞花活,下图来自:

Sung, Yi-Lin, Jaemin Cho, and Mohit Bansal. "Lst: Ladder side-tuning for parameter and memory efficient transfer learning." Advances in Neural Information Processing Systems 35 (2022): 12991-13005

好啦哇,我们来看下一个分类吧,感兴趣的就去看文章。

Partial Fine-tuning

这个大类分了三个小类,partial听起来就是咱们就微调模型里的一部分就行呗,所以迎面走来的第一梯队是bias update,非常好理解,那就微调神经网络里每层的bias参数呗,比如BitFit的作者们,他们就说在BERTbase和BERTlarge这俩模型里,bias这个参数也能占总参数的0.09%和0.08%。

Zaken, Elad Ben, Shauli Ravfogel, and Yoav Goldberg. "Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language-models." arXiv preprint arXiv:2106.10199 (2021).

于是乎他们的操作就是Freeze权重W,和函数g,微调bias,如下图:

第二梯队是Pretrained Weight Masking,mask,大家或多或少都听说过的吧,掩码,随机掩盖一些词进行预测啥的。这里的masking大概意思就是在训练的过程中只对掩盖的参数进行更新。比如这个FISH MASK,利用Fisher information这个指标,在训练过程中,来对Fisher information数值最大的神经元的相应参数进行更新。

Sung, Yi-Lin, Varun Nair, and Colin A. Raffel. "Training neural networks with fixed sparse masks." Advances in Neural Information Processing Systems 34 (2021): 24193-24205.

最后一个梯队是Delta Weight Masking,看了下感觉就是微调网络里的一部分网络节点,比如这个Child tuning,题目是真的很有意思了:Raise a Child in LLM,北大和阿里的一篇工作。可以看到根据任务类型的不同,Task-free和Task-driven,为了能做出来Raise a Child,预训练模型中有一部分权重直接变0了;)

Xu, Runxin, et al. "Raise a child in large language model: Towards effective and generalizable fine-tuning." arXiv preprint arXiv:2109.05687 (2021).

大家感兴趣看文章看文章,paper千万篇,质量第一篇,研究不扎实,成果两行泪。

Reparameterized Fine-tuning

看到这个系列全部都是LoRA相关的工作,我就直接送上我的那篇关于LoRA的文献综述阅读笔记啦,https://zhuanlan.zhihu.com/p/713414404。看这个就行,嘿嘿。话不多说。

Hybrid Fine-tuning

这个系列的任务,不管是auto还是manual,大致研究思路都是,将各种不同的微调技术手段都po出来,然后提出一个整体的技术路线,综合把几个手段都撸一撸。比如MAM adapter就通过比较试验结果,把一个adapter该怎么造给试出来了。

He, Junxian, et al. "Towards a unified view of parameter-efficient transfer learning." arXiv preprint arXiv:2110.04366 (2021).

Unified Fine-tuning

大概,大概就是大一统的微调模式,用统一的方式对多个任务进行微调,比如通过共享参数、或者多任务学习,来使得一个模型中整合多种任务的训练数据和目标,以便模型能够在多个任务上表现出色,而不需要为每个任务单独训练模型。具体大家去看文章啦。

今天的文章就读到这里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值