当前位置: 首页 > news >正文

LLM概念梳理(一):训练流程之PT、SFT和PO

一个LLM的成功问世,一般分为:预训练 PT+监督微调 SFT+偏好优化 PO

预训练(Pre-Training)是为了让模型学习通用知识,而监督微调(Supervised Fine-Tuning)是为了优化模型在特定任务上的表现。为了进一步地提升 LLMs 的对话能力、以及对于人类价值观的对齐程度,偏好优化(Preference Optimization)被引入到了模型微调过程中。

一、预训练 PT

PT 阶段,LLM首先在大量的无标签数据上进行训练(无监督学习),目的是让模型学习到语言的统计规律和一般知识,得到的预训练模型被称为基座模型。在这个过程中模型能够学习到词语的语义、句子的语法结构、以及文本的一般知识和上下文信息。

二、监督微调 SFT

传统微调最适合的场景是:我们希望“模型的回答逐个 token 都模仿提供的数据”,也就是逐字模仿。就像写作文,对范文进行模仿,措辞方式、语气词、标点符号的使用风格、排版风格等等都要去模仿。

这个学习过程导致了一些问题:

  1. 它对于预料的 token 级质量要求比较高。(无法让模型的学习过程知道“光学习它的语气就行了,排版格式不用学”)
  2. 需要足够多样性的数据,来确保模型学到的是我们期望它学到的相关性。(选择题学习到比率、或者问题题学习到长度)

通过传统微调训练的模型,在能力上实现阶跃。但模型缺少泛化能力,输出模式比较固定,遇到新的问题不能很好解决。并且,需要高质量的微调数据集

应用:当我们把行业数据构建成数据集,通过微调训练,就可以训练出一个行业大模型。它既补充了基础模型,对行业知识的缺乏,又让模型在回答问题时,更偏向于回复此行业的知识。(微调改变了模型的权重

三、偏好优化 PO

SFT 阶段,模型被训练以识别“想要的答案”,但未明确告知“不想要的答案”。为解决这一问题,可以通过收集用户反馈和日志数据,在对齐阶段告诉模型哪些答案是不可接受的。对齐阶段目的是进一步优化模型,使其更符合实际应用需求。基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)便是这类算法最早期的代表。

基于人类反馈的强化学习 RLHF

OpenAI使用RLHF最早就是为了解决以下问题:

  • 高质量的微调数据集制作成本高到无法接受,即使都让专家来人工撰写也做不到足够好。
  • 人并不擅长生成长文本,相对来说比较两个回答的成本更低,对标注人员的能力的要求也更低。
  • 当模型的平均能力超过标注人员的平均能力时,如何进行有效地标注。

标注问题从“产生一个完整的回答”变成了“比较一些回答的好坏”。

RLHF的过程是:输出几个结果,模型比较一下优劣,然后自己一步步调整,得到一个好结果。在这个过程中,模型对齐人类的认知,具有一定的区分能力,当遇到新的问题时,可以知道好的方向。

  1. 训练一个奖励模型,让这个奖励模型学习人类的偏好,让这个模型的回答,遵循“HHH”原则(helpfule、honest、harmless)
  2. 使用训练好的奖励模型,让大模型进行强化学习,即用奖励模型对大模型的生成结果进行评分。不断迭代,从而提升模型的整体效果。
  3. 其中,实现上述优化过程的最常用算法被称为近端策略优化(Proximal Policy Optimization,PPO)。

案例:
LLaMA 2 训练:先进行finetune,然后进行RLHF,以提高泛化性。

RLHF使用更贴合真实生成任务的目标函数,成为了获得强大LLMs的关键步骤,然后其存在以下问题:

  • 数据构造:为了得到 RM,针对每条指令采集多条(≥2)回复数据,再让人类依据自己的偏好进行质量排序;
  • 计算资源:为了模拟真实的生成场景,训练过程中需要实时地让LLMs生成回复,并用RM打分。同时,由于RLHF和PT、SFT之间存在较大的目标函数差异,需要一个冻结的参考模型与策略模型计算KL散度作为约束,抑制模型的参数偏移。需要3-4个LLMs同时存储在GPU中参与运算。

直接偏好优化 DPO

如果不能降低 RLHF 的开销,LLMs 在更广泛场景中的应用将受到限制。于是,直接偏好优化(Direct Preference Optimization,DPO)应运而生。DPO 融合了打分模型和策略模型的训练过程(将奖励模型训练和强化学习融合在同个阶段进行),因此只需要标注过偏好的数据、参考模型和策略模型,就可以使 LLMs 直接对齐人类的偏好,极大地减轻了训练时对计算资源的消耗。DPO由于训练过程相对简单,已成为对齐阶段的主流算法,代替RLHF。

DPO与RLHF比较

数据集格式:

  1. prompt:
    • 单轮:仅包含每轮对话的提问;
    • 多轮:包含前几轮对话的问答及最后一轮的提问;
  2. chosen:prompt字段对应的正偏好回答;
  3. rejected:prompt字段对应的负偏好回答。

四、总结

  • SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐;
  • SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确;
  • 虽然 RLHF 和 DPO 取得比 SFT 好的结果,但代价是高昂的数据构造和计算资源开销。

参考文献:
6000字长文告诉你:大模型「训练」与「微调」概念详解
带人工反馈的强化学习(rlhf)和微调(fine-tune)有什么区别?
SFT、RLHF、DPO、IFT —— LLM 微调的进化之路
什么是DPO训练

相关文章:

  • OriginPro快速上手指南:数据可视化与分析的利器
  • Android笔试面试题AI答之Kotlin(18)
  • 本科生毕业答辩全攻略:从开题到终期答辩的全面指南
  • 中国第一起名大师的老师颜廷利: 名字中的姓氏家谱字辈的最新解析
  • Vitis AI 进阶认知(Torch量化基础+映射+量化参数+对称性+每通道+PTQ+QAT+敏感性)
  • PHP进阶篇(奇怪的知识又增加了)
  • 局部整体(三)利用python绘制饼图
  • PostgreSQL-04-入门篇-连接多张表
  • 【微服务】Nacos配置中心和客户端数据同步模式
  • Vue3项目开发——新闻发布管理系统(一)
  • 《黑神话:悟空》总销量已破 450 万份,总销售额超过15亿元,对于单机游戏来说,这一成绩意味着什么?
  • 博途PLC手自动控制功能块(FB和FC完整SCL源代码)
  • 干货:2024必备的四大PDF编辑器推荐!
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • Hadoop入门基础(三):Hadoop启动踩坑记录
  • canvas 高仿 Apple Watch 表盘
  • HashMap ConcurrentHashMap
  • Java多线程(4):使用线程池执行定时任务
  • JAVA多线程机制解析-volatilesynchronized
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • react 代码优化(一) ——事件处理
  • SpringBoot 实战 (三) | 配置文件详解
  • SQLServer之索引简介
  • 阿里云前端周刊 - 第 26 期
  • 开源SQL-on-Hadoop系统一览
  • 聊聊sentinel的DegradeSlot
  • 前嗅ForeSpider采集配置界面介绍
  • 区块链共识机制优缺点对比都是什么
  • 通过git安装npm私有模块
  • 微信小程序:实现悬浮返回和分享按钮
  • 小程序01:wepy框架整合iview webapp UI
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 应用生命周期终极 DevOps 工具包
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​MySQL主从复制一致性检测
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • ## 1.3.Git命令
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #vue3 实现前端下载excel文件模板功能
  • (2)STL算法之元素计数
  • (21)起落架/可伸缩相机支架
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (办公)springboot配置aop处理请求.
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Linq学习笔记
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core Web APi类库如何内嵌运行?
  • .net core 外观者设计模式 实现,多种支付选择
  • .net mvc部分视图
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】