题目:BitFit :Simple Parameter-efficient Fine-tuning for Tranformer-based Masked Language-models
(Bitfit:对于MLtransformer的简单fine-tuning方法)
ACL 2022
作者 Allen实验室
Bitfit,一种稀疏微调方式,仅需要对模型的bias项进行调整。在中小数据集上有效,在大数据上可以与其他稀疏微调方式媲美,除了其实用性,更能让我们理解fine-tuning,在模型训练中的知识暴露而不是在新领域学习新领域任务。
由于目前预训练模型最常用的模型就是两阶段,预训练+fine-tune,而往往fine-tune时消耗大量资源和时间,所以需要探求fine-tune变体,这里仅改变很少部分参数,其他参数不变,而达到很好微调效果。同时需要根据不同的下游任务,选择不同的参数进行fine-tune变化。更改的参数在整个空间中即是孤立的又是局部的,在中小fine-fune数据时,可以达到与full-fine-fune一样甚至更好的效果。
实验表明,仅调整bias参数是非常有效的,甚至可以仅调整Q和MLP中间的bias,仅占全部参数的0.04%,这一结果让很多内存受限的环境部署fine-fune任务有很大实用性,并且可以为参数固定的可训练硬件开辟道路,引出未来探索bais在预训练网络以及微调过程中的作用的研究方向。
一般微调都是对预训练模型进行迁移学习,在预训练模型后添加特定任务的分类器,来减少task loss
但这样我们就会把预训练模型变为一个不可知的独特大模型,理想情况下,fine-fune应该具有的属性:
上述问题取决于微调过程,能多大程度诱导新能力的学习与暴露在预训练中学到的能力。
Relate work
我们提出了BitFit (Bias-term Fine-tuning)仅调整bias项,每个新任务仅需要存储bias参数向量(少于0.1%原参数)和对于特定任务的线性分类器
在GLUE Benchmark上与其他fine-tune方式对比
结果表面以0.08%参数量的情况下,取得了很好的效果。同时还表面仅微调QQ和第二个MLP层的b最后的效果也很好。
上图为改变不同Layer以及不同模型的bias,最后的效果
在GLUE3上进行评估,我们排除了WNLI任务,因为该任务Bert模型效果本身并不好。
使用了Bert-base ,Bert-large,Roberta-base,使用huggingface的接口直接实现。
下图分别为Dev-set下full-fine-tune与bitfit的比较,不同bias处进行fine-tune的效果
为了确定具体哪个bias与transformer类模型微调关系最大,我们取‖b0 -bF ‖ 在其维度的均值绝对变化作为指标,发型bm2(第二个MLP层)和bq(queue)的bias效果影响最大。
为了确定bitfit对模型进行fine-tune与fine-tune的数据集大小的关系,我们使用不同量的SQuad数据集进行实验。结果表明中小数据集上bitfit的效果更好,有时可以超过full-fine-tune。
这里是开源代码 benzakenelad/BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models (github.com)
代码也很简单,基本都是GLUE的官方评测代码,这里就调整fine-tune需要require-grad的参数,将其他参数froze,仅对bias进行require-grad。
LUE的官方评测代码,这里就调整fine-tune需要require-grad的参数,将其他参数froze,仅对bias进行require-grad。
整体而言,是对fine-tune机制的一种积极探索,也很simple,就是仅调整bias效果就能很好,但没有具体阐述原理,就是猜测加实验得到的结果,对于bert,roberta效果还是很好,这大大降低了fine-tune时内存要求,和fine-fune后模型参数保存,为未来bert在硬件发展有了一点工作,以后针对中小样本的任务可以尝试一些,可能有时候比full-fine-tune还好一点。