理解大模型训练中的 Pre-Training,Fine-Tuning,In-Context Learning,Reward Modeling,PPO,DPO,RLHF

0. 引入

根据文末的参考,对这几个概念总结如下。

1. Pre-Training

Pre-Training指的是,给定一部分文件,让大模型预测后续的文字,并且保证比较高的准确率。

Pre-Training一般需要再大量的数据上(至少几十亿文字)进行训练。它的主要任务,就是预测一个句子中的文字。

GPT模型是单向的(对比Bi-LSTM),所以给定一个句子中前面部分的文字,它就能预测后续的文字。所以GPT模型的Pre-Training要以单向模式进行训练。

因此,在这个预训练过程中,我们并不是针对特定的语言任务来训练模型,而只是让它学习如何预测句子中的单词,这就是学习语言模型的全部内容。 这个预训练过程通常非常昂贵(几千到超过一百万美元)并且需要很长时间(几天到几个月)才能完成。

2. Fine-Tuning

当我们拿到一个Pre-Training得到的大模型后,需要让这个大模型去完成特定任务,就需要Fine-Tuning了。特定任务,指的是例如句子分类、命名实体识别、问答等,我们需要对它们进行Fine-Tuning,与预训练所需的数据(几十亿个单词)相比,这通常需要更少的数据(约 10 万个单词) 。

Fine-Tuning一般来说,是为模型加入一些新的层,冻结一些原有层的参数,再进行训练。一般经验是,如果冻结过多层数,会导致训练效果不佳。

3. In-Context Learning

对于GPT这样的大模型来说,参数太多(至少几十亿参数),使用Fine-Tuning也是很耗时的。

所以,对于GPT这样的大模型,我们使用In-Context Learning或few-shot learning(小样本学习)。 因此,模型不需要使用数百或数千个输入文本对模型进行微调,而是仅采用一些特定于任务的示例(通常小于 10 个)作为输入(提示词),通过调整提示词,让模型在该任务上表现良好。 请注意,在此过程中,不会发生模型权重的更新! 没有反向传播,也没有梯度下降!

4. Reward Modeling

开发并扩展大型语言模型的最终目标,是帮助人类应对现实世界中复杂挑战,从而为人类造福。因此我们需要一种方式向大型语言模型提供反馈,帮助他们了解哪些是有帮助的,哪些没有帮助,这样我们才能将其输出与公认的人类价值观相一致。例如诚实、乐于助人和无害。在训练过程中由人类直接提供此类反馈是不切实际的,因此我们需要一个模型来模仿人类的偏好,在训练过程中提供奖励,以实现大型语言模型的协调一致。这正是大型语言模型中Reward Model(奖励模型)的目标。

代理对齐问题(The agent alignment problem)在机器学习领域已经进行了长期的探索,这篇由Leike等人于2018年发表在DeepMind上的论文提出了使用可扩展的奖励模型将机器学习系统与人类价值观对齐的概念。两年后,Stiennon等人于2020年使用相同的概念训练了一个奖励模型,以模仿人类在总结任务中的偏好,并使用强化学习来微调语言模型。

Reward Modeling的步骤

  1. 根据人类的反馈,收集提示词和人类再多个不同回复中倾向的答案
  2. 设计一个神经网络,输入提示词和某个回复,输出一个分数表示人类倾向的分数
  3. 把这个分数,融入到大模型训练的loss中
  4. 训练大模型

5. PPO Training

Proximal Policy Optimization (PPO) 的想法是,我们希望通过限制你在每个训练阶段对策略所做的更改来提高策略的训练稳定性:我们希望避免过大的策略(参数)更新。

我们从经验上知道,训练期间较小的策略更新更有可能收敛到最优解。策略更新步幅太大可能导致“坠崖”(获得糟糕的策略),并且需要很长时间甚至不可能恢复。

因此,使用PPO,我们要保守地更新策略。为此,我们需要通过计算当前策略与前一个策略之间的比率来衡量当前策略与前一个策略相比发生了多大的变化。我们将此比率限制在 [1−ϵ,1+ϵ] 的范围内,这意味着我们消除了当前策略偏离旧策略太远的动机(因此称为近端策略术语)。

也就是每一次更新参数都不宜产生太大的参数数值波动。

6. DPO Training

Direct Preference Optimization (DPO) 将约束奖励最大化问题视为人类偏好数据上的分类问题。这种方法稳定、高效且计算量小。它不需要奖励模型拟合、大量采样和超参数调整。

DPO是如何工作的?

  1. 监督微调(SFT, supervised fine tuning):这是初始步骤,模型在感兴趣的数据集上进行微调。
  2. 偏好学习:在SFT之后,模型使用偏好数据进行偏好学习,理想情况下这些偏好数据与SFT示例的分布相同。

DPO的优点在于其简单性。DPO不是首先训练奖励模型,然后根据该模型优化策略,而是直接将偏好损失定义为策略的函数。这意味着无需首先训练奖励模型。

在微调阶段,DPO使用LLM作为奖励模型。它使用二元交叉熵目标优化策略,利用人类偏好数据来确定哪些响应是优选的,哪些不是。通过将模型响应与优选响应进行比较,调整策略以提高其性能。

7. RLHF

RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。

RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,这里我们按三个步骤分解:

  1. 预训练一个语言模型 (LM) ;
  2. 聚合问答数据并训练一个奖励模型 (Reward Model,RM) ;
  3. 用强化学习 (RL) 方式微调 LM。

参考

  1. https://medium.com/@atmabodha/pre-training-fine-tuning-and-in-context-learning-in-large-language-models-llms-dd483707b122
  2. https://github.com/hiyouga/LLaMA-Factory
  3. https://explodinggradients.com/reward-modeling-for-large-language-models-with-code
  4. https://huggingface.co/blog/deep-rl-ppo
  5. https://ai.plainenglish.io/direct-preference-optimization-dpo-a-simplified-approach-to-fine-tuning-large-language-models-bae1c6d7ec29
  6. https://zhuanlan.zhihu.com/p/599016986
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VITS(Variational Inference for Text-to-Speech)是一种端到端的文本到语音合成方法,它可以将文本转化为自然流畅的语音。VITS-Fast Fine-Tuning是对VITS模型进行快速微调的方法。 在传统的语音合成任务,需要大量的语音对齐标注数据来训练模型。然而,这个过程非常耗时和昂贵。VITS-Fast Fine-Tuning的目标就是通过少量的标注数据来快速微调已有的VITS模型,以在新的任务上取得更好的性能。 VITS-Fast Fine-Tuning方法的关键在于使用变分推断(variational inference)来构建先验和后验分布。通过这个方法,我们可以使用其他大型语音合成数据集训练好的模型作为先验分布,然后使用少量目标任务的标注数据来估计后验分布。这样一来,我们就能够在新任务上快速微调VITS模型。 具体而言,VITS-Fast Fine-Tuning的过程分为两步。第一步是预训练,它使用大型语音数据集来训练VITS模型,并生成一个先验分布。第二步是微调,它使用目标任务的标注数据来调整VITS模型的参数,以获得更好的性能。由于预训练的先验分布已经包含了一定的知识,微调的过程可以更快速和高效。 总之,VITS-Fast Fine-Tuning是一种用于快速微调VITS模型的方法。它利用变分推断和预训练的先验分布,通过少量目标任务的标注数据来优化模型性能。这个方法可以加快语音合成模型训练过程,降低训练的时间和成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值