Zubnet AI学习Wiki › 微调
训练

微调

别名:Fine-tuning
使用预训练模型,并在较小的特定数据集上进一步训练,以使其行为更加专业化。就像让一位通科医生接受外科住院医师培训——同样的基础知识,新的专业技能。

为什么重要

微调是让通用模型能够胜任特定任务的方法。一个经过微调的模型可以学习您公司的语调、您所在领域的术语或特定的输出格式,而无需从头开始训练。

深度解析

微调通过在新的、通常较小的数据集上继续训练过程来实现,但训练是从预训练模型的权重开始,而不是从随机初始化开始。其原理很简单:你将数据准备为输入-输出对(或指令-响应对),设置一个较低的学习率(通常比预训练低10到100倍),然后训练几个周期。低学习率至关重要——太高的话会破坏模型在预训练中学到的知识,这种现象称为灾难性遗忘。太低的话,模型几乎无法适应你的新数据。找到合适的平衡点更像是一门艺术而非科学,通常需要多次尝试才能成功。

不同形式

微调有几种不同的形式,术语也容易混淆。全量微调会更新模型中的每个参数——这是最灵活但也是最昂贵且最容易在小数据集上过拟合的方法。监督微调(SFT)特指在带标签的指令-响应对上进行训练,这也是基础模型转变为聊天助手的方式。当你使用OpenAI的微调API时,以及使用Axolotl和LLaMA-Factory等项目在本地进行微调时,都是这种方式。然后还有参数高效方法,如LoRA和QLoRA,它们仅更新一小部分参数,并已基本取代全量微调用于大多数实际应用场景。这种区别很重要,因为每种方法在数据需求、计算成本和风险方面都有所不同。

数据质量胜过数量

你的微调数据集的质量和格式至关重要——通常比其规模更重要。几百个高质量、精心构建的正确格式示例可能比数万个嘈杂的示例产生更好的效果。指令微调的标准格式是结构化的对话:系统消息、用户消息、助手响应。数据集在格式、语气和质量上的一致性比数量更重要。一个常见的陷阱是使用与预训练中学到的内容相矛盾的数据进行训练——如果数据集说天空是绿色的,模型会学会在类似你训练示例的上下文中说天空是绿色的。但在其他情况下,它会恢复到预训练知识,导致难以调试的不一致行为。

何时使用

在应用AI中,知道何时微调以及何时使用其他方法是最重要的实践决策之一。当你需要模型始终采用某种特定格式、语气或行为模式,而仅通过提示无法可靠实现时,微调是合适的工具。如果你只需要模型了解你公司的产品(应使用RAG),或在每次请求时遵循特定指令(应使用系统提示),微调可能过于繁琐——甚至可能适得其反。一个经验法则:如果你能编写一个提示,使你想要的行为在90%的情况下生效,微调可以将其提升到99%。如果你的提示仅在20%的情况下有效,仅靠微调可能无法解决问题——你可能需要彻底重新考虑整个方法。

相关概念

← 所有术语
← 评估 基础模型 →
ESC