一、概念准备
1. 预训练(Pre-training)
预训练是大模型训练的基础阶段,通过海量无标注数据(如互联网文本、图像等)让模型学习通用知识(如语言语法、图像纹理等)。例如,GPT-3通过千亿级参数的预训练掌握语言生成能力。
作用:建立模型对世界的通用理解,是后续所有优化阶段的基石。
2. 微调(Fine-tuning)
在预训练模型基础上,针对特定任务(如医疗问答、法律文本分类)使用少量标注数据进行参数调整。例如,用LoRA方法冻结大部分参数,仅训练低秩矩阵适配新任务。
与预训练关系:微调是预训练的延伸,将通用知识迁移到垂直领域。
3. 强化学习(RL)
RL是一种独立于微调的学习范式,通过环境反馈(奖励信号)优化策略。例如,训练游戏AI时,模型根据得分调整动作选择。
与微调的区别:RL不依赖标注数据,而是通过试错学习,这个能力也是为什么AI大模型有创新的关键,因为RL会让大模型发现人类难以发现的数据之间的规律,实现创新;微调依赖静态标注数据集。
4. 基于人类反馈的强化学习(RLHF)
RLHF是RL的子类,引入人类标注的偏好数据(如对答案质量的排序)作为奖励信号。例如,ChatGPT通过RLHF对齐人类价值观,减少有害输出。后文有专门对RLHF的详解。
强化学习(RL)和人类反馈强化学习(RLHF)是大模型实现动态自适应能力的核心技术,它们使大模型从"知识复读机"进化为"具备自主决策能力的认知体",使得大模型真正具有了“自学习”的能力。
二、大模型训练的步骤概述
从整体上看,训练LLM主要包括两个关键阶段:预训练(Pre-training)后训练(Post-training):微调、RL和RLHF。
上述流程整合了预训练、微调、RLHF等核心阶段,适用于自然语言处理和多模态大模型:
1.数据准备
• 数据收集:根据目标领域收集海量无标注数据(预训练)或少量标注数据(微调)。
• 清洗与增强:去除噪声、重复项,进行分词/标准化(文本)或裁剪/旋转(图像)。
• 划分数据集:预训练无需标注;微调需划分训练集/验证集/测试集(比例通常为8:1:1)。
2.预训练(Pre-training)
• 模型架构选择:如Transformer(文本)、ViT(图像)或混合架构(多模态)。
• 训练策略:
◦ 无监督学习:掩码语言建模(BERT)、自回归生成(GPT)。
◦ 分布式训练:使用GPU/TPU集群加速,如Megatron-LM框架。
3.任务适配:微调(Fine-tuning)
• 方法选择:
◦ 全量微调:调整所有参数,适合数据充足场景(如金融风控)。
◦ 参数高效微调(PEFT):
◦ LoRA:低秩矩阵分解,减少90%训练参数。
◦ Adapter:插入小型网络模块,保持原模型权重。
• 优化目标:最小化任务损失函数(如交叉熵损失)。
4.强化学习优化(RL/RLHF)
• 奖励模型训练:用人类标注的偏好数据(如答案质量排序)训练奖励模型(Reward Model)。
• 策略优化:
◦ RL:通过环境反馈(如游戏得分)调整策略,无需人类干预。
◦ RLHF:结合奖励模型和PPO算法优化模型输出,例如提升对话流畅度。
• 关键步骤:KL散度惩罚防止模型偏离原始分布。
5.评估与调优
• 指标选择:准确率、BLEU(文本生成)、ROUGE(摘要)或人工评估(复杂任务)。
• 过拟合处理:
◦ 正则化:Dropout、权重衰减。
◦ 早停法(Early Stopping)。
6.部署与监控
• 模型压缩:量化(INT8/INT4)、剪枝,降低推理成本。
• 持续学习:根据用户反馈(如日志分析)进行在线微调。
三、预训练(Pre-training)
为什么需要预训练?
预训练是为了让模型在见到特定任务数据(比如生成文本)之前,先通过学习大量通用数据来捕获广泛有用的特征,熟悉语言的工作方式,从而提升模型在目标任务上的表现和泛化能力,而这一过程就是预训练——一个极其计算密集的任务。
预训练技术通过从大规模未标记数据中学习通用特征和先验知识,减少对标记数据的依赖,加速并优化在有限数据集上的模型训练。
为什么要用大量未标记的数据做预训练呢?
1)数据稀缺性:在现实世界的应用中,收集并标注大量数据往往是一项既耗时又昂贵的任务。特别是在某些专业领域,如医学图像识别或特定领域的文本分类,标记数据的获取更是困难重重。
预训练技术使得模型能够从未标记的大规模数据中学习通用特征,从而减少对标记数据的依赖。这使得在有限的数据集上也能训练出性能良好的模型。
2)先验知识问题:在深度学习中,模型通常从随机初始化的参数开始学习。然而,对于许多任务来说,具备一些基本的先验知识或常识会更有帮助。
预训练模型通过在大规模数据集上进行训练,已经学习到了许多有用的先验知识,如语言的语法规则、视觉的底层特征等。这些先验知识为模型在新任务上的学习提供了有力的支撑。
预训练是语言模型学习的初始阶段。在预训练期间,模型会接触大量未标记的文本数据,例如书籍、文章和网站。目标是捕获文本语料库中存在的底层模式、结构和语义知识。
本阶段大模型主要学习的方式是:
无监督学习:预训练通常是一个无监督学习过程,模型在没有明确指导或标签的情况下从未标记的文本数据中学习。
屏蔽语言建模:模型经过训练可以预测句子中缺失或屏蔽的单词、学习上下文关系并捕获语言模式。
具体的执行步骤如下:
步骤1:数据收集与预处理
训练LLM的第一步是收集尽可能多的高质量文本数据。目标是创建一个庞大且多样化的数据集,涵盖广泛的人类知识。
一旦文本语料库经过清理,就可以进行分词(Tokenization)处理。
步骤2:分词(Tokenization)
在神经网络处理文本之前,文本必须先转换为数值形式。这一过程就是分词,它将单词、子词或字符映射为唯一的数值token。
可以把token想象成构建语言模型的基本单元——所有语言模型的核心组件。在GPT-4中,可能的token数量为100277个。
一个常见的分词工具是Tiktokenizer,它允许你进行分词实验,并查看文本是如何被拆解为token的。
步骤3:神经网络训练(Neural Network Training)
一旦文本被分词处理,神经网络就会学习根据上下文预测下一个token。模型会接收一串输入token(例如“我正在烹饪”),然后通过一个庞大的数学表达式——即模型的架构(如:Transformer)——进行处理,以预测下一个token。
基础模型(Base Model):预训练的产物
在这一阶段,基础模型已经学会了:
• 单词、短语和句子之间的关联
• 训练数据中的统计模式
然而,基础模型并未针对真实世界任务进行优化。你可以将其类比为一个高级自动补全系统——它能够基于概率预测下一个token,但缺乏良好的指令跟随能力。
基础模型有时会逐字复述训练数据,并且可以通过上下文学习(In-Context Learning)进行特定应用,即在提示(Prompt)中提供示例来引导模型的响应。但为了让模型真正有用且可靠,它还需要进一步训练。
四、后训练(Post-Training)/ 微调(Fine-tuning):让模型更实用
基础模型是未经打磨的。为了让它更加实用、可靠、安全,需要进行后训练(Post-Training),即在更小、更专业的数据集上进行微调(Fine-tuning)。
为什么需要微调?
尽管预训练模型已经在大规模数据集上学到了丰富的通用特征和先验知识,但这些特征和知识可能并不完全适用于特定的目标任务。
微调通过在新任务的少量标注数据上进一步训练预训练模型,使模型能够学习到与目标任务相关的特定特征和规律,从而更好地适应新任务。
1)模型微调可以更好地利用预训练模型的知识,加速和优化新任务的训练过程,同时减少对新数据的需求和降低训练成本。
2)减少对新数据的需求:从头开始训练一个大型神经网络通常需要大量的数据和计算资源,而在实际应用中,我们可能只有有限的数据集。通过微调预训练模型,我们可以利用预训练模型已经学到的知识,减少对新数据的需求,从而在小数据集上获得更好的性能。
3)降低训练成本:由于我们只需要调整预训练模型的部分参数,而不是从头开始训练整个模型,因此可以大大减少训练时间和所需的计算资源。这使得微调成为一种高效且经济的解决方案,尤其适用于资源有限的环境。
4)由于神经网络无法像传统软件那样被显式编程,我们只能通过训练它来“编程”它,即让它学习有结构的、带标注的数据集,这些数据代表了理想的交互示例。
RL(Reinforcement Learning)
强化学习
之前,我们讨论了训练LLM的前两个主要阶段:
1)预训练从大量数据集中学习,形成基础模型。
2)SFT(Supervised Fine-Tuning,监督微调)用精心挑选的示例来优化模型,使其更加实用。
现在,我们将深入探讨下一个主要阶段:RL(Reinforcement Learning,强化学习),本质上来说RL也属于微调(Fine tunning)阶段。尽管预训练和SFT已经是成熟的方法,但RL仍在不断发展,并且已成为训练流程中的关键环节。
RL的目的是什么?
人类和LLM处理信息的方式不同。对于我们来说——像基本的算术——是直观的,但LLM只将文本看作一串token序列,这对LLM来说并不直观。相反,LLM能够在复杂的主题上生成专家级的回答,仅仅因为它在训练过程中见过足够多的示例。
这种认知差异使得人类注释者很难提供一组“完美”的标签,能够持续地引导LLM找到正确的答案。
RL弥补了这一差距,它允许模型从自身的经验中学习。
模型不仅仅依赖显式的标签,而是探索不同的token序列,并根据哪些输出最有用来获得反馈——奖励信号(奖励信号是由人为提前设定好的)。随着时间的推移,模型学会了更好地与人类意图对齐。
RL的本质
LLM是随机的——意味着它们的回答并不是固定的。即使是相同的提示,输出也会有所不同,因为它是从一个概率分布中采样的。
我们可以利用这种随机性,通过并行生成成千上万,甚至数百万个可能的响应。可以把它看作是模型在探索不同的路径——有些是好的,有些是差的。我们的目标是鼓励它更多地选择较好的路径。
为了做到这一点,我们让模型训练在那些导致更好结果的token序列上。与监督微调(SFT)不同,在监督微调中,人类专家提供标签数据,强化学习则允许模型从自身的学习中获得进步。
模型发现哪些响应最有效,并在每个训练步骤后更新它的参数。随着时间的推移,这使得模型在未来收到相似提示时,更有可能生成高质量的答案。
但是,如何确定哪些响应是最好的?我们应该进行多少RL训练?这些细节是很复杂的,要做到精准并不简单。
RLHF(基于人工反馈的强化学习)
定义:RLHF(Reinforcement learning with Human Feedback,基于人工反馈的强化学习)是在SFT的基础上,通过强化学习和人类反馈来进一步微调模型,使其输出更加符合人类的偏好或期望。
步骤:首先进行SFT → 收集人类反馈数据 → 训练奖励模型 → 使用奖励模型指导强化学习过程来微调模型。
应用:适用于那些需要高度人类判断或创造力的任务,如对话生成、文本摘要等。这一部分比较复杂。
对于具有可验证输出的任务(例如数学问题、事实问答),AI的回答可以轻松评估。但对于像总结或创意写作这样没有单一“正确”答案的领域,如何处理呢?
这就是人工反馈的作用所在——但是天真的强化学习(RL)方法是不可扩展的。
RLHF与Transformer架构是如何协同工作的
RLHF/RL微调技术与Transformer的协作可分为三个阶段,其中Transformer承担生成和特征提取任务,RLHF/RL负责策略优化与偏好对齐。具体流程如下:
第一步:预训练与监督微调(Transformer主导)
• 目标:训练一个具备基础语言能力的Transformer模型。
• 步骤:
1)无监督预训练:
◦ 输入:大规模未标注文本(如网页、书籍等)。
◦ 输出:预训练模型(如GPT-3、Llama),通过预测下一个词的概率分布完成自监督学习。
◦ 技术分工:Transformer架构通过自注意力机制捕捉长距离依赖关系。
2)监督微调(SFT):
◦ 输入:人工标注的<提示, 理想回答>对数据集。
◦ 输出:微调后的模型(SFT模型),能生成符合指令的响应。◦
◦ 技术分工:在预训练模型基础上,通过交叉熵损失函数调整参数。
第二步:奖励模型训练(RLHF主导,基于Transformer)
• 目标:构建一个量化人类偏好的奖励模型(Reward Model, RM)。
• 步骤:
1)数据收集:
◦ 输入:通过SFT模型生成多个候选回答,人工对回答质量进行排序或评分。
2)模型构建:
◦ 输入:基于SFT模型架构,替换最后一层为回归层(输出标量奖励)。
◦ 输出:奖励模型(RM),对任意<提示, 回答>对输出奖励分数。
3)训练目标:◦ 损失函数:最小化人类偏好排序的负对数似然损失,例如对比学习损失。
4)技术分工:◦ Transformer作为特征提取器,RM通过强化学习框架学习人类偏好模式。
第三步:RLHF强化学习优化(RL主导,结合Transformer)
• 目标:通过奖励信号优化策略模型(Policy Model),使其生成更符合人类偏好的文本。
• 步骤:
1)策略初始化:
◦ 输入:SFT模型作为初始策略(Actor)。
2)生成响应:
◦ 输入:用户提示(Prompt)。
◦ 输出:生成多个候选回答(由Transformer完成)。
3)奖励计算:
◦ 输入:候选回答通过RM生成奖励分数。
◦ 输出:每个回答的标量奖励值。
3)策略优化(PPO):
◦ 输入:奖励分数 + KL散度约束(防止偏离SFT模型太远)。
◦ 输出:更新后的策略模型参数。
4)技术流程:
◦ Actor(策略模型):基于Transformer生成回答。
◦ Critic(价值函数):预测部分生成序列的预期累积奖励(基于Transformer架构)。
◦ 优势计算:通过GAE(Generalized Advantage Estimation)平衡偏差与方差。
◦ 参数更新:最大化奖励的同时约束策略变化幅度(PPO-Clip算法)。
五、推理(Inference)——模型如何生成新文本
推理(Inference)可以在任何阶段进行,甚至可以在预训练中途执行,以评估模型的学习效果。
当模型接收到一组输入token后,它会根据在训练过程中学到的模式,为所有可能的下一个token分配概率。
但模型并非总是选择最可能的token,而是会在概率分布中进行采样——类似于抛掷一个带偏向的硬币,其中高概率的token更有可能被选中。
这个过程会迭代进行,每个新生成的token都会成为下一次预测的输入。
由于token选择是随机的,即使相同的输入也可能产生不同的输出。随着推理的进行,模型可以生成并未直接出现在训练数据中,但符合统计模式的文本。