在大模型微调中,常用的有两种策略:提示词微调P-tuning(Prompt tuning)和 参数高效微调PEFT(Parameter Efficient Fine-Tuning)。
PEFT ,它就像是给模型做了个“局部整形”,只动一小部分参数。比如说,只搞定模型的最后几层啦、单单调整注意力模块的参数啦,或者引入少量额外可训练的参数来改变原有模型参数的行为。这样一来,就能在减少参数更新量的同时,还不咋牺牲模型的性能。
然后呢,LoRA(Low-Rank Adaptation)是 PEFT 策略里的一种具体玩法。那它和 P-tuning 有啥不一样呢?P-tuning 呢,就好比是在优化输入的“提示词”,不改模型本身的参数。它的好处是,只要简单改改输入提示,就能灵活适应各种任务,而且训练和优化速度快快的。
不过呢,P-tuning 也不是完美的。要是目标任务的训练样本太少,微调的词嵌入向量可能就会太迁就这些有限的样本,结果搞出个过拟合来。
LoRA 就不一样了,它是直接去调整参数的数量。它会给模型的某些层加些参数,这些参数规模都不大,然后在微调阶段去优化它们。这样既不影响模型性能,又能让模型更好地适应特定任务。
比如说,LoRA 的一个常见操作就是给 Transformer 模型的每一层加些新的适配器。这些适配器就是小小的神经网络。微调的时候,就保持预训练模型的主要参数不变,只优化这些适配器的参数。
LoRA 的好处也不少,能省内存和算力,还能让模型更灵活、适应能力更强。不过因为是直接改模型内部的参数,难度和复杂程度就比 P-tuning 高了。
那这俩策略都啥时候用呢?P-tuning 在自然语言处理任务里优势大,像文本生成、摘要、翻译这些,能通过改输入提示快速适应各种场景,特别适合特定问答领域。LoRA 呢,就适合那些要对模型内部逻辑做微调的复杂任务,比如深度学习里的细粒度分类或者特定领域的问题。