SFT、RLHF、DPO、IFT —— LLM 微调的进化之路

TL;DR

  • • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐;

  • • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确;

  • • 虽然 RLHF 和 DPO 取得比 SFT 好的结果,但代价是高昂的数据构造和计算资源开销;

  • • IFT 通过引入时序残差连接,仅使用多推理一步的开销,就可以融合 SFT、RLHF 和 DPO 的训练目标,摆脱对偏好数据和参考模型的依赖,保证训练目标与真实生成目标更加相近;

  • • IFT 建模并优化了当前生成单词对所有未来生成结果的影响,增强了模型的因果性和事实性;

引言

随着 ChatGPT 等强大模型的发布,大语言模型(Large Language Models,LLMs)的浪潮席卷而来,并逐渐走进千家万户。LLMs 可以协助文字工作者寻找创作灵感,可以为各年龄段的学生详解知识点,甚至可以帮助心情不好的人做心理疏导。可以说,LLMs 正在成为许多人日常工作与生活的必需品。

然而,现阶段的 LLMs 仍然在一些方面饱受诟病。首当其冲的就是**“幻觉”问题**,LLMs 会自信满满地生成不符合事实或常理的回答,可能对使用者造成误导。另外,LLMs 对于复杂指令的理解与遵循能力欠佳,他们可能会自动忽略指令中的某些信息,只完成用户的一部分要求。上面这些问题是 LLMs 落地应用时的硬伤,极大地限制着 LLMs 产生更大的实际价值。

那么,产生上述现象的可能原因有哪些?我们又应该如何改善这些问题?下面我们将从 LLMs 训练方法的角度出发,与大家一同寻找答案。

从 监督微调 到 偏好优化

当下最流行的 LLMs 训练流程大概可以分为以下三步:预训练(Pre-Training,PT)、监督微调(Supervised Fine-Tuning,SFT)和 偏好优化(Preference Optimization,PO)。预训练时,语言模型在超大规模的语料中进行学习,并初步掌握基本的语法规则、逻辑能力、常识知识等等。但是,用于训练的语料中难免存在偏离人类价值观的数据,使 LLMs 不足够符合人类的偏好。同时,预训练的目标仅仅是根据上文补全单词,无法使 LLMs 具备对话和问答能力。因此,为了实现更好的与人交互,进一步的训练成为必须。

监督微调

一种最简单的思路就是,照搬预训练的目标函数和损失函数进一步微调,但是改变数据的质量和格式。为了使 LLMs 对齐人类价值观,我们可以专门筛选一些符合人类价值观的数据;为了让 LLMs 适应对话和问答场景,我们可以构造一问一答或者多轮问答的数据。经过上述数据的训练,模型将拟合这部分数据的特性,从而达到我们的目的,这一过程也被称为监督微调

LSFT=Eρ0∼DEsi∗∼Sρ0∗[−i=0∑NlogTθ(π∗(si∗),si∗)]

然而,PT 和 SFT 的训练目标与真实的生成任务目标之间存在一定的差距,这会使训练后的 LLMs 难以达到我们的预期。具体来讲,在真实的生成任务中,LLMs 将依据一个指令循环进行下述流程:

  • • ① 依据上文,预测下一个单词;

  • • ② 将自己预测的单词拼接到上文中;

  • • ③ 重复进行上述步骤,直至生成终止符。

然而,在进行 PT 和 SFT 时,步骤②中拼接到上文的将是 Ground Truth 单词,而不是 LLMs 自己预测的单词,使得损失函数高估 LLMs 当前的能力,得到差强人意的训练结果。同时,这种目标函数只考虑了上文对当前预测的影响,没有考虑 LLMs 当前预测对自身未来预测的影响,限制了 LLMs 的因果性和泛化性。

基于人类反馈的强化学习

为了缓解上述问题,进一步地提升 LLMs 的对话能力、以及对于人类价值观的对齐程度,偏好优化(Preference Optimization,PO)被引入到了模型微调过程中,基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)便是这类算法最早期的代表。

RLHF 的第一步是根据人类的偏好训练一个打分模型(Reward Model,RM),使其可以评估一条问答数据的质量。随后,LLMs 依据训练集中的指令生成自己偏好的回复(仅依据输入指令自主生成回复,而不是不断地依靠 Ground Truth 预测下一个Token),并使用 RM 的打分作为监督信号,不断让自己的生成结果更接近人类偏好。其中,实现上述优化过程的最常用算法被称为近端策略优化(Proximal Policy Optimization,PPO)。

LPPO=Eρ0∼DEsi∗∼Sρ0∗[−i=0∑NR(πθ(siθ),siθ)] R=πR←πminLR LR=Eρ0∼DEsi+∼Sρ0+,si−∼Sρ0−[−logσ(i=0∑NlogTR(π+(si+)∣si+)−i=0∑NlogTR(π−(si−)∣si−))]

RLHF 使用了更加贴合真实生成任务的目标函数,成为了获得强大 LLMs 的关键步骤。然而,RLHF 存在两方面的巨大开销:

  • • ① 数据构造:为了得到 RM,我们要针对每条指令采集多条(≥2)回复数据,再让人类依据自己的偏好对这些数据进行质量排序,这将耗费大量的人力成本;

  • • ② 计算资源:为了模拟真实的生成场景,在 RLHF 的训练过程中需要实时地让 LLMs 生成回复,并用 RM 进行打分。

同时,由于 RLHF 和 PT 、SFT 之间存在较大的目标函数差异,拟合 RLHF 的目标将带来不稳定的训练过程,并会产生对过往知识的灾难性遗忘。所以,RLHF 还需要一个冻结的参考模型与策略模型(也就是被训练的模型)计算 KL 散度作为约束,抑制模型的参数偏移。于是,在 RLHF 时需要 3-4 个LLMs 同时被存储在 GPU 中并参与运算,计算资源的开销可想而知。

直接偏好优化

如果不能降低 RLHF 的开销,LLMs 在更广泛场景中的应用将受到限制。于是,直接偏好优化(Direct Preference Optimization,DPO)应运而生。DPO 融合了打分模型和策略模型的训练过程,因此只需要标注过偏好的数据、参考模型和策略模型,就可以使 LLMs 直接对齐人类的偏好,极大地减轻了训练时对计算资源的消耗。但是,理想的 DPO 形态应是 在线DPO(Online DPO),也就是需要实时地采样 LLMs 对指令的回复,并实时地由人类标注偏好。所以,数据构造带来的开销非但没有降低(这种开销经常被忽略),反而要比 RLHF 更高。

LDPO-online=Eρ0∼DEsi∗∼Sρ0∗,siθ∼Sρ0θ[−logσ(i=0∑NlogTθ(π∗(si∗),si∗)−i=0∑NlogTθ(πθ(siθ),siθ))] LDPO-offline=Eρ0∼DEsi+∼Sρ0+,si−∼Sρ0−[−logσ(i=0∑NlogTθ(π+(si+),si+)−i=0∑NlogTθ(π−(si−),si−))]

为此,开源社区通常使用 离线DPO(Offline DPO)微调模型。这种方法会在训练前采集模型对指令的回复,并由人类标注好不同回复之间的排序,随后用这部分数据训练模型。Offline DPO 可以看作是使用事先采集的数据估计了人类和 LLMs 的偏好,随后再通过训练对齐二者的偏好。可是,随着训练的进行,LLMs 会逐渐偏离它自己最开始的偏好,损失函数又会错误地估计 LLMs 当前的能力(和上文中的 PT 和 SFT 类似),进而导致不理想的训练结果。

直觉微调

SFT 成本低,但效果欠佳;RLHF 和 DPO 效果好,但是成本过高。那么是否存在某种方法可以兼顾两类算法的优势,在降低开销的同时保证微调效果呢?如果我们使用一个统一的视角,会发现 SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐。不过,SFT 只通过 LLMs 生成的一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确

或者我们可以用复习考试时的刷题进行比喻。如果我们看到一个题目后,先依照自己的理解写完整道题,然后再对答案,通常可以通过试错的方式正确地了解自己的思维漏洞,查漏补缺;相反,如果我们在完成题目时,每写一步结果就立即对答案,随后再在正确答案的基础上写下一步结果,那我们通过这道题目获得的收获显然是更少的。

那么如何才能在不依赖参考模型和偏好数据的前提下,更好地使训练目标对齐真实生成目标呢?更大程度地暴露语言模型的“思维漏洞”是一种可能的解法,也是 直觉微调(Intuitive Fine-Tuning,IFT)的核心思想。IFT 通过引入 时间维度的残差连接(Temproral Residual Connection,TRC),使模型依照自己上一步的预测结果再多预测一步,近似地构建了 LLMs 对于指令的完整回复,更准确地估计了 LLMs 的偏好,从而获得更好的训练结果。这种方式也可以使 LLMs 获得类似于人类直觉的能力,每当它看到某个指令时,就对于完整的回复产生了一个模糊的预测。同时,TRC 还间接地引入了 动态关系传播(Dynamic Relation Propagation,DRP),DRP 可以建模 LLMs 当前预测单词对所有未来生成结果的影响,增强了 LLMs 生成过程中的因果性和事实性。

LIFT=Eρ0∼DEsi∗∼Sρ0∗[−n=0∑Ni=n∑NlogTθ(ai∗,δθ(si∗))]

δθ(si∗)=(1−λ)si∗+λπθ(si−1∗)

若希望了解更详细的问题建模和算法介绍,请参考原论文:Intuitive Fine-Tuning: Towards Simplify Alignment into a Single Process[1]

其他相关方法

Scheduled Sampling

相较于 PE 和 SFT 完全依赖 Ground Truth 作为上文,这个方法在训练过程中逐渐地引入更多 LLMs 自己预测的单词作为上文,旨在让 LLMs 的训练目标更加贴合真实的生成任务。如果把 Scheduled Sampling 看作是对于 LLMs 偏好单词的硬采样,那么 IFT 则可以看作是一种软采样的进化版。IFT 的软采样可以获得模型更完整的偏好估计,并且更加利于进行梯度优化。

∃ Sρ0′⊆Sρ0∗,∀si∗∈Sρ0′,δθ(si∗)=πθ(si−1∗)

Noisy Embedding Fine-Tuning

在 LLMs 的训练和推理过程中,都会首先对输入的上文进行向量化得到 Embedding,随后再将 Embedding 传输到后续的模型中进行运算。这种方法通过在 Embedding 中加入随机噪声来增强训练的泛化性和鲁棒性。IFT 也可以看作是在对 Embedding “加噪”,不过这个噪声是具有上下文因果性的“噪声”,所以相较随机噪声可以帮助模型获得更强的因果性和事实遵从性。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享]👈

在这里插入图片描述
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值