文章这种东西真是越读越多啊,哭哭哭,今天这个文章是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
大概,大概就是大一统的微调模式,用统一的方式对多个任务进行微调,比如通过共享参数、或者多任务学习,来使得一个模型中整合多种任务的训练数据和目标,以便模型能够在多个任务上表现出色,而不需要为每个任务单独训练模型。具体大家去看文章啦。
今天的文章就读到这里了。