本文原文来自DataLearnerAI官方网站:如何解决大模型微调过程中的知识遗忘?香港大学提出有监督微调新范式并开源新模型LLaMA Pro | 数据学习者官方网站(Datalearner)
大语言模型一个非常重要的应用方式就是微调(fine-tuning)。微调通常需要改变模型的预训练结果,即对预训练结果的参数继续更新,让模型可以在特定领域的数据集或者任务上有更好的效果。但是微调一个严重的副作用是可能会让大模型遗忘此前预训练获得的知识。为此,香港大学研究人员推出了一种新的微调方法,可以保证模型原有能力的基础上提升特定领域任务的水平,并据此开源了一个新的模型LLaMA Pro。
当前大语言模型微调的缺点:知识遗忘
经典的大语言模型微调通常有2类方法:一种是冻结大模型部分参数(通常是前几层),然后让其他参数在模型新的训练中继续更新参数。很多研究认为前几层的特征是基础特征,越靠近后面的网络越与应用相关,因此针对特定领域微调可以采取这种方式。另一种经典的方法是使用预训练结果模型初始化,然后在新的数据集上训练,更新所有参数。
第一种方法效率很高,而且可以保留预训练学到的一些知识。不过灵活性和高度定制化的场景可能不够。而第二种方法可以更好地使用任务,不过计算成本和过拟合风险很高。
这两种方法的共同缺点都是知识遗忘。只是程度不同,原因都是在于有参数变化,即权重的调整。
大模型微调新方法:Block Expansion
为了缓解这个问题,香港大学的研究人员联合腾讯ARC实验室的研究人员提出了为Block Expansion方法。
这个方法如下图所示:
原理很简单,就是预训练结果的模型不再变化,即权重保持原有情况,然后增加一些新的模块,这些模块与原有的模块连接,初始化的时候其输入和输出与原有的模块完全一样,在后面的训练中进行微调,这个方法的核心关键点如下:
- 由于原有的模块完全保留,因此可以最大限度保留原有知识。
- 增加的模型在原有的基础上适应新的训练结果,可以引入新的知识
思路非常简单。为了验证这个想法的有效性,作者针对原始的LLaMA2模型做了实验,增加了LLaMA2中核心的MHSA(Multi-Head Self-Attention)模块,然后进行微调,得到了一个新的LLaMA Pro模型,发现这个模型的效果比原有的模型效果好很多。
LLaMA Pro模型介绍
作者使用LLaMA2-7B模型初始化,这个模型有70亿参数。LLaMA Pro在此基础上增加了8个模块,使其参数达到了83亿。
为了验证这个模型的效果,他们在2类数据集上测试这种方法的效果。一个是代码数据集,一个是指令微调数据集。
前者包含了代码数据和数学数据,用以提升代码的逻辑能力和编程水平,如下:
注意,这里的Proof-Pile-2下面取了3个数据集,一起的权重是1.0,而The-Stack-Dedup是代码数据集,只拿了其中的Python部分,权重1.5。基于该数据集微调得到了LLaMA Pro模型(模型信息卡地址:LLaMA Pro - 8B模型信息卡)。
此外,他们还基于对话数据集做了chat优化微调,使用的数据集如下:
在这个数据集上微调得到了LLaMA Pro-Instruct。
二者效果都非常惊喜。
LLaMA Pro的评测结果
作者在不同数据集上做了评测,结果如下:
可以看到,LLaMA Pro相比较原始的LLaMA2-7B的各项能力都有非常好的提升。例如,MMLU的理解部分,虽然提升很少,但是没有忘记通用知识。但是代码、数学推理部分都有非常大的提升。而LLaMA Pro - Instruct的MMLU部分提升则非常明显!
下图是另一个角度:
纵轴是语言任务,横轴是代码任务,右上角比左下角好。可以看到LLaMA Pro的语言理解任务略有提升,但是代码和数学能力有明显增强!
Block Expansion与传统有监督微调(LoRA和SeqFT)对比
作者还对比了这个方法和传统的有监督微调之间的方法。如下图所示:
这里的Backward Transfer (BWT) 和 Overall Performance 是评估持续学习 (Continual Learning) 或增量学习 (Incremental Learning) 模型性能的两种方法。在这些学习任务中,模型需要在一系列不断变化的任务上学习,而不会忘记以前学到的知识。
Backward Transfer (BWT): 这种方法衡量的是在学习新任务时,模型对旧任务性能的影响。理想情况下,一个良好的持续学习模型在学习新任务时,不应该削弱其在旧任务上的表现。如果旧任务的表现得到了提升,那么BWT值是正的;如果表现下降,BWT值是负的。
Overall Performance: 这个方法是在模型学习了所有任务后,衡量其在所有任务上整体表现的平均值。这个评估标准考虑了模型在每个任务上的性能,并将它们综合起来提供一个总体的性能评价。理想状态下,一个好的持续学习模型应该在所有任务上都有不错的表现。
在实际应用中,这两种方法通常用来识别模型是否有“灾难性遗忘”(即,在学习新知识时忘记旧知识)的问题,以及它在处理一系列任务时的整体稳健性。
从表中可以看到LLaMA Pro的训练效果好于传统的LoRA,而这个方法的微调成本使用的是16个H800显卡,花费了大约2830个H100小时,微调的步数是15900步。
LLaMA Pro总结
这个模型本身没有什么特别值得说的,但是这个思想非常不错,如果实际测试在其他模型中效果也很好,那么未来可能是一种替代LoRA之类方法的新选择!
具体的LLaMA Pro模型信息,如开源地址、代码和预训练结果等可以参考模型信息卡:LLaMA Pro - 8B模型信息卡



4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有