原文:
h
ttps://zhuanlan.zhihu.com/p/721870518
https://openreview.net/forum?id=XkHJo8iXGQ
本文介绍一篇相当有意思的文章,该文章的内容对我们使用指令微调将预训练模型改造为chat模型和下游专业模型相当有指导意义。本文的标题听起来有些唬人,有些标题党,但是这个论点在一定的限定条件下是成立的,笔者归纳为:对充分预训练的模型使用通用指令微调数据集进行全量微调有害。
一. LoRA指令微调并不能学习知识,但它很优秀
试图使用指令微调来为模型灌输知识,其实是一个很常见的做法。然而只要这样做过的人会发现,效果并不会特别好,特别是使用LoRA训练时,模型几乎学不到任何知识。笔者自己的实践是,在使用LoRA对一个Llama3.1本身没有怎么预训练过的内容进行微调时,最终的结果和随机预测基本没有区别(分类和回归任务改造的指令微调数据集)。这提示我们,在使用指令微调对模型进行训练时,首先需要确定模型是否预训练过相关内容,如果没有,最好进行补充性的继续预训练。
如何衡量模型是否通过指令微调学习到了知识?
作者团队通过比较微调后的模型和预训练模型的输出token概率分布来确定模型是否学习到了新知识。也就是说,我们定义指令
,期望的输出为
。那么在第
步时,模型输出的token:
对应的上下文窗口为
。作者团队分析
对应的模型概率分布来量化指令微调过程中的知识学习。具体而言,对一个给定的上下文窗口,有预训练模型的概率分布
和指令微调模型的概率分布
。对于这两个概率分布,我们有三种分析方法:
-
直接衡量两个概率分布的KL散度,KL散度越大说明模型学到了越多的知识。
-
对于
中的
token 我们查看它在
中的概率,该概率越小,说明模型的知识产生的越大的偏离。
-