NLP高频面(40)什么是 BitFit?¶
本文讨论了自然语言处理领域中参数高效的微调方法 BitFit,介绍了其定义、核心思想、优势、实验结果、应用场景及实现方式。关键要点包括:
BitFit 定义:BitFit(Bias-term Fine-tuning)是一种仅调整预训练模型中偏置项,其余参数保持不变的参数高效微调方法。
核心思想:微调阶段只更新模型偏置项,冻结其余参数,偏置项通常占模型总参数量不到0.1%,可降低训练成本和显存占用。该方法由Elad Ben Zaken等人在2021年提出,并在BERT等模型验证。
优势:参数更新量极低,不到总参数0.1%;训练过程高效,减少训练时间和显存占用;泛化能力良好,在中小规模数据集上性能与全量微调相当甚至更好;易于实现,训练时冻结非偏置参数即可。
实验结果:在 GLUE 等基准测试中,BitFit 在多个任务上效果与全量微调相近,微调特定偏置项也能获良好性能。
应用场景:适用于资源受限设备、需快速适应新任务的情况以及对模型大小和推理速度有严格要求的应用。
实现方法:使用 Hugging Face Transformers 等框架时,通过代码让非偏置参数的 requires_grad 为 False 即可实现。
BitFit(Bias-term Fine-tuning)是一种参数高效的微调方法,专注于在预训练模型中仅调整偏置项(bias term),而将其他参数保持不变。这种方法在自然语言处理领域,尤其是在中小规模数据集上,展现出了与全量微调相媲美的性能,同时显著减少了计算资源的消耗。
什么是 BitFit?¶
BitFit 的核心思想是:在微调阶段,只更新模型中的偏置项(bias term),冻结其余所有参数。偏置项通常占模型总参数量的不到 0.1%,因此这种方法极大地降低了训练成本和显存占用。BitFit 最初由 Elad Ben Zaken 等人在 2021 年提出,并在 BERT 等 Transformer 模型上进行了验证。
BitFit 的优势¶
极低的参数更新量:只需更新偏置项,通常不到模型总参数的0.1%。
高效的训练过程:减少了训练时间和显存占用,适用于资源受限的环境。
良好的泛化能力:在中小规模数据集上,性能与全量微调相当,有时甚至更好。
易于实现:只需在训练时设置 requires_grad=False 来冻结非偏置参数。
实验结果与应用场景¶
在 GLUE 等基准测试中,BitFit 在多个任务上取得了与全量微调相近的效果。此外,研究发现,仅微调特定的偏置项(如 Query 层和第二个前馈层的偏置)也能获得良好的性能。
BitFit 适用于以下场景:
资源受限的设备,如边缘计算设备或移动设备。
需要快速适应新任务的情况,如在线学习或快速原型开发。
对模型大小和推理速度有严格要求的应用,如实时系统。
如何实现 BitFit?¶
在使用如 Hugging Face Transformers 等框架时,实现 BitFit 非常简单:
代码块 1 for name, param in model.named_parameters(): 2 if "bias" not in name: 3 param.requires_grad = False