ng adapts pre-trained models to new tasks by making minor adjustments, reducing data and resource needs. It involves selecting a model, adjusting architecture, freezing/unfreezing layers, and optimizing hyperparameters for improved performance.
什么是模型微调?
模型微调是一种机器学习技术,通过对预训练模型进行小幅调整,使其适应新的特定任务或数据集。相比从零开始构建模型(通常耗时且资源消耗大),微调利用了模型在大规模数据集上预先获得的知识。通过调整模型参数,开发者可以用更少的数据和计算资源,在新任务上提升模型表现。
微调属于迁移学习的范畴,即将解决一个问题所获得的知识应用于不同但相关的问题。在深度学习中,预训练模型(如用于图像识别或自然语言处理的模型)已经学习了有价值的表示,微调则对这些表示进行调整,使其更好地适应新任务的需求。
模型微调的应用场景
微调常用于高效地将预训练模型适配到新的领域或任务。其流程通常包括以下关键步骤:
1. 选择预训练模型
选择与新任务紧密相关的预训练模型。例如:
- 自然语言处理(NLP):如BERT、GPT-3、RoBERTa等模型。
- 计算机视觉:如ResNet、VGGNet、Inception等模型。
这些模型在大规模数据集上训练过,已学习到通用特征,适合作为新任务的起点。
2. 调整模型结构
根据新任务对模型进行修改:
- 替换输出层:分类任务中,将最后一层替换为与新数据集类别数匹配的层。
- 添加新层:引入额外层,提升模型学习任务相关特征的能力。
3. 冻结与解冻层
决定哪些层需要训练:
- 冻结前层:前几层捕捉通用特征(如图像中的边缘),可保持不变。
- 解冻后层:后几层捕捉更具体的特征,用于新数据的训练。
- 逐步解冻:先训练新增层,再逐步解冻之前的层。
4. 用新数据训练
在新数据集上训练调整后的模型:
- 较小学习率:采用较低学习率,细微调整,避免覆盖已学特征。
- 性能监控:定期在验证集上评估模型,防止过拟合。
5. 超参数调优
优化训练参数:
- 学习率调度:训练过程中调整学习率,获得更好收敛效果。
- 批量大小与轮数:尝试不同的批量大小和训练轮数,提升表现。
准备好发展您的业务了吗?
今天开始免费试用,几天内即可看到结果。
从头训练 VS. 微调
理解从头训练和微调的区别至关重要。
从头训练
- 起点:模型权重随机初始化。
- 数据需求:需大量有标签数据。
- 计算资源:需求高,大模型训练消耗大。
- 耗时:由于权重随机,训练时间长。
- 过拟合风险:数据不足时风险更高。
微调
- 起点:以预训练模型为基础。
- 数据需求:较小、任务相关的数据集也有效。
- 计算资源:资源消耗较低,训练时间短。
- 耗时:因已具备特征,收敛更快。
- 过拟合风险:较低,但仍需注意监控。
模型微调的技术方法
根据任务和资源不同,微调方法也各有差异。
1. 全量微调
- 描述:更新预训练模型的所有参数。
- 优点:在新任务上有更高性能潜力。
- 缺点:计算开销大,过拟合风险高。
2. 局部微调(选择性微调)
- 描述:只训练部分层,其余层冻结。
- 层选择:
- 前层:捕捉通用特征,通常冻结。
- 后层:捕捉特定特征,通常解冻。
- 优势:减少计算负担,保留通用知识。
3. 参数高效微调(PEFT)
- 目标:减少可训练参数数量。
- 技术:
- 适配器(Adapter):
- 低秩适配(LoRA):
- 提示微调(Prompt Tuning):
- 向输入添加可训练提示。
- 不改变原始权重,仅调整模型行为。
- 优势:内存和计算资源需求更低。
4. 增量微调
- 描述:在模型中添加新层或模块。
- 训练:仅训练新增部分。
- 适用场景:需保持原始模型不变时。
5. 分层学习率调整
大型语言模型(LLMs)微调
GPT-3、BERT等LLM微调有特别注意事项。
1. 指令微调
- 目的:让模型更好地理解和执行人类指令。
- 方法:
- 数据集构建:收集(指令,回复)对。
- 训练:在该数据集上微调模型。
- 效果:生成更有帮助、更相关的回复。
2. 基于人类反馈的强化学习(RLHF)
- 目的:使模型输出更符合人类偏好。
- 流程:
- 有监督微调:
- 奖励建模:
- 策略优化:
- 优势:输出更贴合人类价值观。
3. LLM微调注意事项
注意事项与最佳实践
成功微调需科学规划与执行。
1. 防止过拟合
- 风险:模型在训练集表现好但泛化差。
- 缓解措施:
- 数据增强:提升数据多样性。
- 正则化技术:使用dropout、权重衰减等。
- 早停法:验证集性能下降时及时停止训练。
2. 数据集质量
- 重要性:数据质量决定微调效果。
- 措施:
- 数据清洗:去除错误和不一致项。
- 数据均衡:确保各类别均有代表。
3. 学习率
- 策略:微调时用较小学习率。
- 原因:防止权重大幅更新,保护已学特征。
4. 层冻结策略
- 决策因素:
- 任务相似度:任务越相似,调整越少。
- 数据规模:数据越少,适合多冻结层。
5. 超参数优化
6. 伦理考量
7. 监控与评估
微调模型的评估指标
选择合适的评估指标至关重要。
分类任务
- 准确率:整体正确率。
- 精确率:正确正例预测数 / 所有正例预测数。
- 召回率:正确正例预测数 / 实际正例数。
- F1分数:精确率与召回率的调和均值。
- 混淆矩阵:预测错误的可视化表示。
回归任务
- 均方误差(MSE):平方差均值。
- 平均绝对误差(MAE):绝对差均值。
- R方:模型解释方差的比例。
语言生成任务
- BLEU分数:衡量文本重合度。
- ROUGE分数:侧重摘要中的召回率。
- 困惑度:衡量模型对样本的预测能力。
图像生成任务
- Inception分数(IS):评估图像质量与多样性。
- Fréchet Inception Distance(FID):衡量生成图像与真实图像的相似性。
模型微调相关研究
模型微调是将预训练模型适配到特定任务、提升性能和效率的关键过程。近期研究探索了多种创新策略以改进此过程。
- Partial Fine-Tuning: A Successor to Full Fine-Tuning for Vision Transformers
该研究提出了部分微调作为视觉Transformer全量微调的替代方案。研究表明,部分微调能够提升效率和准确率。研究人员在不同数据集和架构下验证了多种部分微调策略,发现如专注于前馈网络(FFN)或注意力层等方法,在参数更少的情况下,性能可优于全量微调。文中还提出了新的微调角度指标,帮助选择合适的微调层,从而实现灵活适配。结果表明,部分微调能以更少参数提升模型性能与泛化能力。阅读原文 - LayerNorm: A Key Component in Parameter-Efficient Fine-Tuning
本文研究了LayerNorm在参数高效微调(特别是BERT模型)中的作用。作者发现,输出LayerNorm在多种NLP任务微调中发生显著变化。仅微调LayerNorm即可获得与全量微调相当甚至更优的性能。研究还利用Fisher信息确定了LayerNorm的关键子集,表明仅微调一小部分LayerNorm即可在大多数NLP任务中实现几乎无损的性能。阅读原文 - Towards Green AI in Fine-tuning Large Language Models via Adaptive Backpropagation
本研究关注微调大型语言模型(LLMs)对环境的影响,提出了自适应反向传播方法。微调虽有效,但极为耗能,碳足迹高。研究显示,现有高效微调方法未能有效减少反向传播的计算成本。论文呼吁采用自适应策略以缓解环境影响,并指出减少FLOPs可直接降低能耗。阅读原文