Pre-Training
1.什么是 Pre-Training?
Pre-Training(预训练)是一种深度学习技术,指的是在大型数据集上对模型进行初步训练,使其学习通用的特征和知识,为下游任务(如分类、生成、翻译等)提供一个良好的初始状态。
预训练的模型往往是一个通用的模型,能够提取各种通用模式和特征,为后续的Fine-Tuning(微调)提供进一步优化。
2.为什么要进行 Pre-Training?
节约数据和计算资源效率
预训练可以在大规模通用数据上训练出一个通用的基础模型,而在下游任务时只需在较小的数据集上微调,降低了对每个任务的大数据需求。
更快的收敛和泛化能力
预训练使得模型在下游任务中可以更快地收敛因为模型已经学习到了很多通用的表示(如语言结构、视觉特征),减少了随机初始化带来的不稳定性。从而提高了模型在不同领域上的表现。
3.Pre-Training 的流程
1.数据准备: 收集大量无标注的通用数据(如文本、图像、音频)并进行数据清洗和预处理。
2.模型架构设计
3.目标函数设计
语言建模任务:
自回归语言建模(如 GPT)
自编码语言建模(如 BERT)
图像任务:
对比学习(Contrastive Learning)
多模态任务:
对齐不同模态的表示(CLIP)
4.训练过程
使用高效分布式训练技术在大规模数据集上进行训练。
优化器: 通常采用 Adam 或其变种。
学习率调度: 使用warm-up和 decay 策略。
5.检查点保存与评估
定期保存模型检查点,确保模型训练过程可恢复。
通过评估(如 perplexity、BLEU、精度等)监控模型性能。
6.微调(Fine-Tuning)接口设计
将预训练好的模型开放用于下游任务的微调。
Fine-Tuning
1.什么是 Fine-Tuning?
Fine-Tuning(微调)是在预训练完成后,对模型进行任务特定的调整的过程。
预训练阶段生成的模型通常学习了通用的特征表示,而通过微调,可以进一步在较小的、有标注的特定任务数据集上优化模型,使其更好地完成目标任务(如分类、生成、翻译等)。
目标函数: Fine-Tuning的主要目标是最小化目标任务的损失函数,通常为监督学习任务,如分类或回归。
2.为什么要进行 Fine-Tuning?
解决特定任务需求:预训练模型虽然学到了通用的特征,但未必能直接适应特定任务(如情感分类、医学文本生成)
小数据集优化:可以利用少量的标注数据实现优异的性能,因为模型已经通过预训练学到了通用的特征。
降低训练成本:微调相比从零开始训练成本更低,既节省了数据需求,也大幅减少了时间和计算资源。
增强迁移能力:Fine-Tuning能使模型适应新领域的数据分布,例如从通用语言模型微调到法律或医学领域。
3.Fine-Tuning 的流程
1.准备任务数据
收集并清洗任务相关的标注数据。
格式化数据,确保符合输入需求。
2.加载预训练模型
使用开源的预训练模型(如 GPT、BERT、T5、ViT等)。
加载基础模型的权重作为初始化参数。
3.定义任务特定的架构
文本分类任务: 在预训练模型顶部添加一个全连接层。
文本生成任务: 调整解码头(decoder)
图像任务: 添加特定分类头或调整输出层。
4.冻结部分参数(可选)
对于数据量较少的场景,可以冻结预训练模型的大部分参数,只微调顶部层的权重,以避免过拟合。
5.设置优化器与学习率
使用优化器(如 AdamW)。
调整学习率(通常设置较小的学习率,如 1e-5或 1e-4),防止对预训练权重的破坏。
学习率调度策略: 可采用 warm-up和decay.
6.训练模型
使用标注数据对模型进行训练,优化目标函数(如交叉熵损失、MSE等)
监控训练过程中的评估指标(如准确率、BLEU、F1-score等)
7.模型验证与评估
在验证集上评估模型性能,确保模型对下游任务的适配性。
防止过拟合: dropout、早停等
8.模型保存与部署
4.微调的两种典型模式
全参数微调:对模型的所有参数进行优化。
适用于任务数据充足的场景,效果最佳但计算成本较高。
高效微调:优化部分参数或添加轻量化模块(如 Adapter、LORA、PrefixTuning等)。
适用于数据量少、计算资源受限的场景。
5.Pre-Training vs Fine-Tuning
SFT
1.什么是 SFT(Supervised Fine-Tuning,监督微调)?
SFT用于明确指导模型调整权重。核心思想是让预训练模型利用标注数据进一步调整和学习,适配特定的下游任务,如分类、生成、问答等。
2.为什么需要 SFT?
提升模型在特定任务上的性能:预训练模型具有强大的通用能力,但其未经过任务特定的优化。SFT利用带标签的监督数据调整模型,使其在特定任务上表现最佳。
为 RLHF 提供基础:在 ChatGPT等对话模型中,SFT是强化学习微调(RLHF)的第一步,为后续的对话质量优化打下基础。
LORA
1.什么是 LoRA (Low-Rank Adaptation of Large Language Models)?
LORA 是一种高效的参数微调技术,旨在大幅降低训练和存储成本将模型权重的调整限制在低秩矩阵上,LORA 允许模型适应新任务,而无需更新原始模型的全部参数。
具体来说,引入了 低秩矩阵分解 的思想,用较少的新增参数实现对模型的微调。
2.为什么需要 LORA?
3.LORA 的流程
4.Fine-Tuning vs SFT VS LORA
Fine-Tuning 是底层概念: 所有参数都可更新,适配新任务。
SFT是 Fine-Tuning的一种实现方式: 强调使用有监督数据对模型进行任务特定微调,目标是让模型的输出行为更符合人类期望。
LORA 是对 Fine-Tuning的高效优化: 通过限制参数更新范围,优化微调效率,同时保留性能。
RLHF
1.什么是 RLHF?
RLHF(Reinforcement Learning with Human Feedback)是一种结合强化学习与人类反馈的技术主要用于微调语言模型以使其行为更符合人类的需求或偏好。
它利用人类提供的反馈数据指导模型优化,生成更符合预期的响应。
2.为什么要用 RLHF?
改进模型的输出质量: 预训练模型基于大规模文本数据,但其输出可能不符合实际应用中的人类需求(如不准确、不相关、不道德等)。RLHF通过人类反馈引导模型优化,提升输出质量。
引入主观偏好:RLHF可以将用户或组织的偏好融入到模型中,例如提高内容的礼貌性、精确性或创造性。
减少负面行为:它帮助模型减少生成有害、不符合道德或不符合规范的内容
3.RLHF 的流程
DPO
1.什么是 DPO?
DPO(Direct Preference Optimization)是一种用于微调语言模型的强化学习方法,旨在让模型的输出更加符合用户偏好。
与 RLHF 相比,DPO不使用强化学习算法,而是直接基于人类反馈优化模型的输出,简化了训练过程并提升了效率。
DPO通过将人类的偏好数据转化为直接优化目标,避免了强化学习中复杂的策略更新和奖励设计问题。这种方法保留了偏好信息,同时减少了优化过程的难度。
2.为什么要使用 DPO?
简化训练过程: RLHF 需要强化学习和奖励模型的结合,而 DPO 简化了流程,直接优化偏好目标。
稳定性更高: RLHF 中的强化学习过程可能导致策略不稳定,DPO则直接优化损失函数,更加稳定。
减少计算开销: DPO不需要复杂的强化学习算法(如PPO),从而降低了计算成本。
直接优化偏好: 人类的偏好被明确建模为优化目标,更容易实现。
3.DPO 的核心流程
4.DPO 与 RLHF 的对比
PPO
1.什么是 PPO?
PPO(ProximalPolicy Optimization)是强化学习中一种流行的策略优化算法,由OpenAl提出,用于在策略梯度方法中平衡训练稳定性和效率。
PPO 是一种基于策略梯度的算法,它通过限制策略更新的步幅,避免策略更新过大引发的不稳定性同时保持简单和高效。
与其他强化学习算法相比,PPO的计算成本更低,易于实现,且性能优异
2.为什么需要 PPO?
避免策略崩塌(PolicyCollapse) : 直接优化策略梯度可能导致策略更新幅度过大,使得训练不稳定。
高效的优化: 相比于复杂的约束优化算法(如TRPO),PPO通过引入裁剪机制实现更简单且高效的更新。
训练稳定性: 通过限制策略的变化范围,PPO在优化过程中更加稳定。
3.PPO 的核心思想
4.PPO 的优化目标
5.PPO 的流程
PPO 的流程可以分为以下几个步骤: