微调的种类
flyfish
-
全参数微调(Full Fine-Tuning):
- 对预训练模型的所有参数进行调整,以优化其在特定任务上的性能。
-
指令微调(Instruction Fine-Tuning):
- 通过提供特定任务的明确指令或示例来微调模型,使其能够执行特定的任务,同时保持大部分预训练的知识。
-
部分参数微调(Partial Fine-Tuning):
- 只调整预训练模型中的一部分参数(如后期层或特定层),而不是所有参数,以减少计算成本和过拟合风险。
-
适应性微调(Adapter Fine-Tuning):
- 在预训练模型的特定层之间插入小型模块(适配器),并仅对这些模块进行微调,主模型参数保持不变,以实现高效的任务适应。
-
低秩近似微调(Low-Rank Adaptation, LoRA):
- 在预训练模型的特定层插入低秩矩阵,并只调整这些矩阵的参数,以此模拟全量微调的效果,同时显著减少需要调整的参数数量。
-
提示微调(Prompt Tuning):
- 通过修改输入文本的提示(Prompt)来引导模型生成符合特定任务或情境的输出,而不直接调整模型的权重,适用于零样本或少样本学习。
-
前缀微调(Prefix Tuning):
- 在输入序列之前添加可学习的虚拟token作为前缀,仅更新这些前缀参数,而保持Transformer架构其他部分固定,用于提高多任务学习效率。
-
监督微调(Supervised Fine-Tuning, SFT):
- 使用带标签的数据(如问答对、指令-响应对)进行有监督训练,以指导模型在特定任务上生成更准确和相关的输出。
-
无监督微调(Unsupervised Fine-Tuning):
- 利用未标注的数据进行自监督学习,通过诸如下一个词预测等任务提升模型的语言理解和生成能力,增强其通用性和泛化能力。
微调方法 | 调整参数数量 | 资源需求 | 适用场景 | 优点 | 缺点 |
---|---|---|---|---|---|
全参数微调 | 所有参数 | 高 | 需要最佳性能且资源充足的任务 | 最高的性能提升 | 高计算资源和显存需求 |
指令微调 | 全部或部分 | 中 | 对话系统、聊天机器人等 | 对齐人类意图,提升互动质量 | 需要精心设计的指令和任务数据 |
部分参数微调 | 部分参数 | 低 | 资源有限或需要多任务切换的情况 | 计算资源需求低,过拟合风险小 | 对复杂任务的适应能力可能不如全量微调 |
适应性微调 | 部分参数(适配器) | 低 | 需要在多个任务上进行微调 | 高效灵活,减少计算成本和内存占用 | 性能提升可能不如全量微调显著 |
低秩近似微调(LoRA) | 部分参数(低秩矩阵) | 低 | 资源有限或需要多任务切换的情况 | 高效、低资源消耗、灵活性强 | 可能不如全参数微调表现好 |
提示微调 | 少量参数(提示嵌入) | 低 | 零样本或少样本学习 | 计算资源需求低,适用于快速适应新任务 | 对复杂任务的适应能力可能不如全量微调 |
前缀微调 | 少量参数(前缀token) | 低 | 多任务学习 | 减少需要更新的参数数量,提高训练效率 | 对复杂任务的适应能力可能不如全量微调 |
监督微调 | 全部或部分 | 中 | 需要精确任务表现的应用 | 提升特定任务的准确性和相关性 | 需要高质量的带标签数据 |
无监督微调 | 全部或部分 | 中 | 增强模型通用性和语言能力 | 提升泛化能力,利用大量未标注数据 | 需要大量计算资源,效果依赖数据质量 |