AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型二次开发基本思路
发布日期:2024-08-02 20:24:03 浏览次数: 1992 来源:大模型生态圈



开发方法分类
1、领域知识注入:Continue PreTraining(增量预训练),一般垂直大模型是基于通用大模型进行二次的开发,需要用领域内的语料进行继续预训练。

2、知识召回(激发):SFT( Supervised Finetuning,有监督微调), 通过SFT可以激发大模型理解领域内的各种问题并进行回答的能力。

3、基础偏好对齐:奖励模型(RM)、强化学习(RL),可以让大模型的回答对齐人们的偏好,比如行文的风格。

4、高阶偏好对齐:RLHF(人类反馈强化学习训练)、DPO(直接偏好优化)。

开发阶段分类

模型分成3个阶段:

(1)、第一阶段:(Continue PreTraining)增量预训练,在海量领域文档数据上二次预训练GPT模型,以注入领域知识。

(2)、第二阶段: SFT(Supervised Fine-tuning)有监督微调,构造指令微调数据集,在预训练模型基础上做指令精调,以对齐指令意图。

(3)、第三阶段 : RLHF和DPO二选一。

各个阶段功能介绍

(Continue PreTraining)增量预训练

在大模型整个流程中,增量预训练是属于后期预训练(Post-pretraining)的范畴。Post-pretraining(后期预训练)是一种在模型的初始预训练和最终微调之间进行的训练方法。这种方法通常用于进一步适应模型以处理特定类型的数据或任务。以下是详细介绍,参考了之前对SFT和RLHF的描述方式:

1、后期预训练(Post-pretraining)

  • Post-pretraining是在通用预训练模型的基础上,对模型进行额外训练的过程,通常是为了使模型更好地适应特定的领域或任务。

  • 这个过程使用的数据集通常比预训练阶段的数据集更专注于某个领域或任务,但比微调阶段使用的数据集更大、更广泛。

  • 训练方法可以是监督学习,也可以是自监督学习,具体取决于可用数据的类型和训练目标。

  • Post-pretraining的目标是在不过度专化到某个特定任务的同时,提高模型对特定领域的理解和表现。

2、训练过程

  • 在Post-pretraining阶段,模型通常会在一个包含大量领域特定数据的数据集上进行训练。

  • 这个阶段的训练可以包括多种任务,如语言建模、文本分类、实体识别等,这些任务都是为了提升模型在特定领域的表现。

  • 训练过程中,模型的参数会根据领域特定数据集进行调整,以便更好地捕捉和理解领域内的语言模式和知识。

3、优势与目标

  • Post-pretraining允许模型在保持通用性的同时,增强对特定领域的理解,这有助于模型在后续的微调阶段更快速地适应特定任务。

  • 与 SFT 相比,Post-pretraining在微调之前提供了一个中间步骤,有助于模型更平滑地过渡到特定任务上。

  • 与 RLHF 相比,Post-pretraining不依赖于复杂的奖励机制或人类反馈,而是通过大量的领域特定数据来提升模型性能

  • 总结来说,Post-pretraining是一个介于预训练和微调之间的训练阶段,它使用大量的领域特定数据来进一步调整模型,使其更好地理解特定领域的语言和任务。这个阶段不需要复杂的奖励机制,而是通过传统的监督或自监督学习方法来实现模型性能的提升。

微调 (Fine-tuning)

在这个阶段,预训练模型(可能经过了Post-pretraining)被进一步训练,以优化它在一个特定任务上的表现。

微调通常在一个相对较小的、特定任务的数据集上进行,这个数据集包含了明确的标签,模型通过监督学习来进行优化。

微调的目的是调整模型的参数,使其能够在特定任务上做出准确的预测。

SFT 监督微调

SFT (Supervised Fine-Tuning) 是微调的一种形式,强调在有监督的环境下进行。

在SFT阶段,我们使用特定领域的数据或私有化数据对预训练模型进行改良。这一阶段需要指令微调数据,数据集通常由输入(用户问题)和输出(标准答案)两个字段构成。标准答案通常由专家标注获得。

1、SFT是一种简单的微调方法,它使用带有正确答案的数据集来继续训练一个预训练的模型。

2、这种方法依赖于大量的标注数据,即每个输入都有一个预先定义的正确输出。

3、微调的目的是使模型更好地适应特定的任务或领域【垂直领域】,比如特定类型的语言理解或生成任务。

4、SFT通常不涉及复杂的策略或奖励函数,只是简单地最小化预测输出和真实输出之间的差异。

RLHF 人类反馈强化学习

RLHF是一种利用人类反馈来训练强化学习模型的方法。在RLHF中,模型通过与人类交互获得反馈,这些反馈作为奖励信号来指导模型的行为。RLHF通常用于训练能够生成更自然、更符合人类偏好的文本或其他输出的模型。这种方法特别适用于需要模型理解和适应人类偏好的场景。

1、RLHF (Reinforcement Learning from Human Feedback) 是一种更复杂的训练方法,它结合了监督学习和强化学习。

2、在RLHF中,模型首先通过监督学习进行预训练,然后通过人类提供的反馈来进行强化学习。

3、人类反馈可以是对模型输出的评分,或者是在模型输出之间做出选择的偏好。

4、强化学习部分涉及到定义一个奖励函数,该函数根据人类反馈来调整模型的行为,以优化长期的奖励。

5、RLHF的目标是训练出一个在没有明确标签的复杂任务中表现良好的模型,这些任务可能需要更细致的判断和调整。

模型对齐

  • 对齐阶段目的是进一步优化模型,使其更符合实际应用需求。在这个阶段,我们收集用户反馈数据(如点赞或点踩),并基于这些数据进行模型的进一步训练。

  • 对齐阶段的数据格式与SFT阶段不同:

  • 通常包含对同一问题的接受(accept)和拒绝(reject)两种答案。

问题解决策略及部署

  • 在SFT阶段,模型被训练以识别“想要的答案”,但未明确告知“不想要的答案”。为解决这一问题,我们通过收集用户反馈和日志数据,在对齐阶段告诉模型哪些答案是不可接受的。

  • 经过SFT和对齐阶段的训练,我们可以得到一个优化后的模型,这个模型可以部署上线。在对齐过程中,我们可以使用一些常见的方法,如PPO(Proximal Policy Optimization)和DPO(Distributional Proximal Optimization)。DPO由于训练过程相对简单,已成为对齐阶段的主流算法。

  • 总的来说,SFT更侧重于直接从标注数据中学习,而RLHF则试图通过人类的反馈来引导模型学习更复杂和更细粒度的行为。RLHF通常被认为是一种更接近人类学习方式的方法,因为它不仅仅依赖于标签数据,还依赖于人类对模型输出的评价和偏好。

RLHF与模型对齐区别

总的来说,模型对齐阶段可以视为一个更广泛的概念,而RLHF是一种特定的实现方式,特别是在强化学习领域。两者在实践中可能会有交集,但它们侧重点和应用方式有所不同。

1、联系:

两者都涉及到根据反馈来调整模型的行为,以提高模型的性能和适应性。

2、区别:

技术实现:对齐阶段可能不仅限于强化学习,还可以包括监督学习或其他类型的学习;而RLHF明确使用了强化学习框架。

反馈来源:对齐阶段的反馈可以来自用户的实际使用情况,而RLHF的反馈通常来自与模型交互的人类评估者

目标:对齐阶段的目标是使模型的输出与用户期望对齐,而RLHF的目标是通过人类反馈来优化模型的决策过程。

技术创新与发展

RLHF:

利用人类指导的力量有效地训练人工智能模型。传统的强化学习模型通过与环境交互产生的奖励来学习,而 RLHF 则不同,它引入了人类反馈作为宝贵的指导来源。这种反馈可以帮助人工智能系统导航复杂的决策空间,与人类价值观保持一致,并做出更明智和道德的选择。

DPO:

RLHF 是一个复杂且经常不稳定的过程,那我们是否可以通过直接优化语言模型来实现对其行为的精确控制,而无需使用复杂的强化学习,也可以有效学习到人类偏好呢?

DPO就是过利用奖励函数与最优策略之间的映射关系,证明这个受限的奖励最大化问题可以通过单阶段的策略训练来精确优化来达到这个目的的。

它通过直接优化模型以生成首选响应,将问题表述为使用人类偏好对数据集的分类任务,本质上是在人类偏好数据上解决一个分类问题。DPO是稳定的、性能和计算成本轻量级的,无需拟合奖励模型,在微调期间从 LM 中采样,或执行显着的超参数调整。

DPO是一种单阶段算法,可直接优化 LLM以生成首选响应。具体的实现手段是通过增加偏好样本的对数概率与减小非偏好样本响应的对数概率。DPO 最大化生成首选完成的概率并最小化生成非首选完成的概率。它不涉及多轮训练。

增量预训练(Continue Pretraining)

增量预训练也叫领域自适应预训练(domain-adapter pretraining),即在所属领域数据上继续预训练。

自适应预训练(domain-adapter pretraining)的方法可以分为三类:Prompt-based方法、representation-based方法和model mixed-based方法。

1、Prompt-based 方法

在使用模型全局tuning的方式适应下游任务时,预训练模型的泛化性能会被严重削弱,因此Prompt-based方法在保持预训练模型参数权重不变的条件下, 增加额外可学习的Prompt tuning 模块来实现对下游任务的泛化,这样就能较好地保持原模型的泛化性能。

在使用模型全局tuning的方式适应下游任务时,预训练模型的泛化性能会被严重削弱,因此Prompt-based方法在保持预训练模型参数权重不变的条件下, 增加额外可学习的Prompt tuning 模块来实现对下游任务的泛化,这样就能较好地保持原模型的泛化性能。


VPT这种方式虽然可以较好地保留模型的泛化性,但是,在面对新的任务时,以往的Prompt模块的知识同样被覆盖,依旧遭遇了灾难性遗忘问题。为此,有学者提出了Prompt Pool的概念,设计了Prompt模块的集合,即P={P1,P2,…,Pm}(m表示该Pool的最大尺寸)。Prompt Pool的思想有效避免了单一Prompt的问题,但是Pool的设计使得其需要进行Prompt Selection操作,也就是需要将特定任务与其对应的Prompt模块进行索引匹配。

L2P算法是一种较为常用的Prompt selection算法,该算法设计了一种Key-Query的Prompt匹配方法,也就是为每一个Prompt提供一个可学习的索引键k,即P={(k1,P1),(k2,P2),…,(km,Pm)。L2P利用预训练模型将输入特征编码到Key对应的嵌入空间中,然后利用余弦距离损失函数在已有的Pool中搜索最近似的Key。接着,利用如交叉熵损失等方法对搜索到的Key对应的Prompt进行进行优化。

类似的Prompt Selection 算法很多,如DualPrompt算法,该算法将Prompt进行解耦,分化为General Prompt和Expert Prompt。General Prompt面向所有任务,为所有任务中共享信息,而Expert Prompt针对独立任务,数量与任务量一致。其采用了和L2P相同的key-query匹配策略。

Prompt Selection虽然可行,但仍是硬匹配,选项有限。基于注意力信息加权的Prompt Combination方法则有效缓解了该问题。如CODA-Prompt通过对Prompt Pool进行注意力机制嵌入,为每个注意力赋予自适应权重,进而求算全局Key-Query的加权和,实现可学习式Prompt组合。我觉得稀疏式注意力Prompt combination应该也是很有趣的研究。

从根本上来说Prompt Combination仍受制于Prompt Pool的范围。为此, 许多学者则开展Prompt Generation有关的研究,如DAP,其利用MLP进行特定任务提示信息的编码生成。

优点:

Prompt 有助于弥合domain gap,并可有效地对特定任务的知识进行编码。

Prompt Design 属于lightweight模块,与input feature具有相同的维度,因此保存Prompt是parameter-efficient,适用于边缘场景。

Prompt Pool作为预训练模型的外部存储器,其支持自适应知识的检索和特定实例的预测。

缺点:

一些研究]发现L2P中的prompt selection过程收敛到一个单点,使得prompt selection只集中在特定子集上。

由于key和query在整个学习过程中不断变化,这些参数的更新将会消除先前任务的参数,导致matchimg-level和prompt-level的遗忘,使prompt selection成为CL的瓶颈。

固定大小的Prompt Pool会使得模型的表示能力受限。但是,若Prompt Pool随着数据的发展而增长,可能会为旧任务检索新的提示,导致训练和测试之间的不匹配。

最后,一些研究发现prompt-based CL的性能低于简单的representation-based的baseline性能。并且批量提示有损比较的公平性。

2. Representation-based 方法

representation-based方法直接利用预训练模型强大的泛化性和通用性来实现持续学习。比如Simple-CIL方法,该算法是ADAM算法原文中提出的Baseline,Simple-CIL冻结预训练模型参数,并通过求算类别中心的方式来构建Classifier。具体来说,在面对很多类别时,计算同类的embedding或features的平均值,并将该平均值作为该类别的标准(prototype),最后结合类别标准与余弦比较的方法替换模型的原始Classifier。

虽然基于prototype的方法存在一定的作用,但是并未很好地适应下游任务。为此,一些研究在基于prototype方法的基础上结合了外置参数高效调节模块或者外置适配器来使得预训练模型更加适应下游任务,如ADAM等。


ADAM等算法在进行类别标准设定时,类别标准之间的仍存在联系,导致任务效果降低。为此,RanPAC算法则采用online LDA classifier来去除原始方法prototype计算结果之间的相关性,加大类别间的分布差异。此外,RanPAC算法利用Random Projection layer将features映射到高维空间中,并在高维空间中进行prototype的计算,以使得特征分布符合高斯拟合。

相较于前面将预训练模型的通用语和适应性分离处理的方式,SLCA算法采用了差异学习率调整和特征经验重播的方式进行持续学习研究。该算法使用较小的learn rate调整模型主体部分,而使用较大的learn rate 调节模型的classifier,以实现模型的逐步微调和classifier的快速适应。为了避免忘记以前的分类器,SLCA还对分类特征分布进行建模,并重播它们以校准classifier。

优点:

由于class prototype代表了对应类别最常见的标准格式,因此利用其构建模型具有直观和可解释性。

Representation-based 方法主要是冻结backbone和更新classifier权重。lightweight的更新成本增加了其现实应用的可行性。

缺点:

将不同模型的特征连接起来形成class prototype,容易造成模型信息冗余。例如,不同的backbone中存在重复提取共享特征。

当下游任务涉及多个领域时,在第一阶段调整模型不足以弥合数据集之间的领域差距。在这种情况下,不断调整backbone可能更适合提取特定于任务的特征。

3. Model Mixture-based 方法

Model Mixture-based 方法在持续学习工程中构建了一组模型,然后再推理阶段通过Model Ensemble和Model Merge来进行信息综合决策。

Model Ensemble中,ESN算法凭借预训练模型强大的通用性,构建多个classifier,在面对新任务重新初始化和训练一个新的classifier。在推理时,采用投票策略来整合多个模型的结果进行最终决策。

由于Model Ensemble的核心因素取决于模型的方差,一些研究通过增强模型之间的多样性来替代使用相同的预训练模型构建不同的classifier。如PromptFusion利用预训练的ViT和CLIP,并在推理过程中动态地对logit进行组合,即f(x) = λ fvit (x) +(1−λ)fclip(x)。

与多个backbone的集成不同,PROOF采用了仅使用单个CLIP的更全面的推理方法。由于CLIP支持视觉和文本特征的跨模态匹配,因此PROOF设计了一个三层集成,考虑image-to-text、image-to-image prototype、image-to-adjusted text的跨模态融合。

Model Merge将多个不同的模型合并为一个统一的模型,无需要额外的训练。LAE定义了online和offline学习协议,online模型通过交叉熵损失进行更新,目的是在新的任务中获取新的知识。离线模型则通过Model Merge进行更新,例如指数移动平均(EMA): θ offline←α·θ offline +(1−α)·θ Online,其中α为权衡参数。LAE仅将EMA应用于参数高效调谐模块(如prompt),其利用online和offline模型的最大logit进行推断。

与LAE一样,ZSCL将合并技术应用于CLIP模型,目的是在持续学习过程中保持其zero-shot性能。然而,随着EMA中权衡参数的改变,CLIP性能不再具有鲁棒性。因此,ZSCL建议每隔几次迭代合并参数,从而在模型训练期间创建平滑的损失轨迹。

此外,CoFiMA注意到EMA在Merge过程中对每个参数的重要性是相等的,CoFiMA 在Merge过程中插入Fisher information(费雪信息)作为每个参数的估计重要性。

优点:

  1. 学习多个模型可以做出不同的决策。因此,使用Model Ensemble和Model Merge自然会产生更健壮的结果。

  2. 由于直接合并模型进行统一预测,因此可以调整前模型和后模型的权重,以突出不同阶段之间知识共享的重要性。

  3. 由于模型集将在推理过程中合并,因此最终的推理成本不会随着模型集中添加更多模型而增加。

缺点:

  1. Model Ensemble需要保存所有的历史模型,并消耗大量的内存缓冲区。虽然基于Model Merge不需要这么大的成本,但合并大型backbone的权重也需要大量的额外计算。

  2. 决定Merge哪些参数仍然是问题。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询