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

大模型-微调与对齐-RLHF

一、简介

1、RLHF
  • 全称:基于人类反馈的强化学习
  • 目的:实现人类对齐
  • 过程:利用收集到的人类反馈数据指导大模型微调
2、RLHF流程

1、收集人类对于不同模型的输出偏好
2、使用人类反馈数据集来训练奖励模型
3、基于奖励模型使用强化学习算法微调大模型

3、RLHF算法系统
  • 组成部分
    • 需要与人类价值观对齐的模型
    • 基于人类反馈数据学习的奖励模型
    • 用于大模型训练的强化学习算法
  • 奖励模型
    • 作用:为强化学习过程提供指导信号,反应人类对于语言模型生成文本的偏好
    • 来源:
      • 使用人类偏好数据对已有奖励模型进行微调
      • 使用人类偏好数据
    • 最新研究:使用与当前大模型参数量相同或更大的大模型作为奖励模型,效果会更好,这种奖励模型可以更好的理解待对齐模型的知识与能力范围
  • 强化学习算法:目前常用PPO算法
4、RLHF关键步骤
  • 监督微调
    • 使用高质量指令数据进行监督微调
    • 指令数据构成
      • 任务描述
      • 示例输出
    • 指令数据来源:
      • 人类标注员对特定任务的编写
      • 大模型生成
  • 奖励模型训练
    • 训练过程
      1、使用语言模型针对任务指令生成一定数量的候选输出
      2、邀请标注员对于输出文本进行偏好标注
      3、使用标注好的数据进行训练
  • 强化学习训练
    • 过程:使用奖励模型对待对齐模型的输出文本进行奖励或惩罚来实现对齐,判断奖励或惩罚的方式是根据KL散度来判断

二、人类反馈数据的收集

1、标注人员选择
  • 较高教育水平、出色语言熟练度,避免研究人员与标注员之间意图不匹配
  • 使用InstructGPT对标注进行打分,以筛选出与研究人员标注更加一直的标注人员
2、人类反馈形式
  • 基于评分的人类反馈
    • 评分方式
      • 标注员直接对待对齐大模型输出进行打分
      • 使用已对齐的大模型对待对齐大模型输出进行打分
  • 基于排序的人类反馈
    • 人类标注员根据个人偏好对待对齐大模型的输出结果进行排序
    • 使用Elo等级分对待对齐大模型的输出结果进行排序

三、奖励模型训练

1、简介
  • 奖励模型概念:基于语言模型设计,模仿人类标注员对待对齐模型生成的内容进行质量评分,实现对人类偏好分数的预测
  • 奖励模型作用:替代人类在RLHF训练过程中试试提供反馈
  • 训练数据:人类偏好数据
2、训练方法
  • 打分式:
    • 训练方法:奖励模型如何根据输入问题,对输出结果进行打分,以保证与人类打分结果尽量一致
  • 对比式:
    • 训练方法:人类标注员需要仅需要标注两个输出,标注一个为正例,一个为负例,然后奖励模型学习这个过程即可。
    • 特点:该方式标注难度低,
    • 应用情况:实际训练过程中使用量大
  • 排序式
    • 训练方法:人类标注员对多个输出进行排序,奖励模型学习过程类似对比式
    • 特点:奖励模型能够学习到更多的全局关系,更好拟合人类偏好
3、训练策略
  • 目的:提升奖励模型对于人类偏好的拟合能力
  • 方法:
    1、目标函数优化
    2、选取合适的基座模型
    3、设置合理的奖励计算形式
  • 目标函数优化
    • 策略描述:将模型最佳输出的损失作为正则项,从而缓解奖励模型在二元分类任务上的过拟合问题
  • 选取合适的基座模型:可以尝试选取更大参数量的基座模型来进行奖励模型的训练,更大的模型通常能更好的判断模型输出质量,提供更准确的反馈信号
  • 设置合理的奖励计算形式:
    • 训练策略:针对不同对齐标准,配置多个奖励模型,并配置组合策略计算奖励

四、强化学习训练

1、简介
  • 重要性:RLHF中的核心算法
  • 强化学习目标:旨在训练一个智能体,该智能体与外部进行多轮交互,通过学习合适的策略进而最大化从外部环境获得奖励,大模型通过强化学习训练,逐步使自己的回复能获得奖励模型更好的分数,从而更加匹配人类的期望
  • 强化学习算法
    1、策略梯度
    2、PPO算法
2、策略梯度
  • 简介:一种基础的强化学习算法,训练模型在于外界交互过程中学习到更好的更好的更新策略
  • 特点:较低的数据利用率和鲁棒性
  • 在线策略的训练方式:策略模型与外界模型进行交互,获得奖励分数后,对自身进行优化,即在线策略的训练方式。
  • 离线策略的训练方式:PPO算法使用了该方式,即一个策略模型用于获取奖励分数,另一个策略模型负责根据分数进行优化
3、PPO算法
  • 简介:基于策略梯度算法,使用优势估计来更加准确的评估决策轨迹可以获得的奖励,并使用了重要性采样来进行离线策略训练
  • 特点:
    • 为了保证采样稳定,PPO算法通过在目标函数中加入梯度裁剪以及相关的惩罚项来减小采样误差
    • PPO算法在奖励模型与策略模型的基础上,又引入了参考模型和评价模型,进行相关的优化工作
  • 关键步骤
    • 优势估计:引导模型从当前的所有决策中选择最佳决策
    • 重要性采样:在离线策略的训练方式中,需要使用策略模型与外界进行交互并采样决策轨迹,使用采样得到的决策轨迹近似估算策略模型与外部交互时能得到的奖励的期望
    • 基于梯度裁剪的目标函数:通过裁剪策略比率的变化范围,防止策略更新过于激进
    • 基于KL散度的目标函数:使用KL散度作为惩罚项来限制策略模型的更新幅度
  • 训练策略
    • 目的:提升PPO算法训练的稳定性和训练效率
    • 提升方面
      1、模型初始化
      2、效率提升
    • 模型初始化:模型先经过指令微调、监督微调等方式完成一定优化,同时可以进行多轮RLHF,在过程中可以不断优化奖励模型
    • 效率提升:
      • 将RLHF过程中用到的模型部署在不同GPU上,提升执行效率
      • 采用束搜索解码算法加速采样解码算法执行过程

五、代表性RLHF工作介绍

1、InstructGPT
  • 训练过程:
    1、收集指令数据并使用有监督微调进行训练
    2、收集人类反馈训练奖励模型
    3、使用PPO算法和奖励模型对待对齐大模型进行强化学习,使用第二步得到的奖励模型对第一步监督微调过后的大模型进行微调
    4、后两个步骤可以迭代多次
2、LLaMA-2
  • 训练过程
    1、收集人类反馈数据,从开源与闭源两个方向着手
    2、奖励模型训练
    3、强化学习过程,使用拒绝采样微调算法与PPO算法进行多轮迭代微调

六、进阶RLHF

1、基于过程监督的RLHF
  • 数据集:基于OpenAI发布的经过细粒度标注过程的数据集PRM800K
  • RLHF训练方法:专家策略搜索的过程中,过程监督奖励模型基于当前的状态和决策轨迹,对专家策略的下一步决策进行打分,辅助待专家策略选取更好的决策。随后,蒸馏阶段,进一步使用第一阶段由专家策略生成的样本对待对齐大模型进行监督微调
  • 过程监督奖励模型的拓展功能:
    1、对多条输出按人类偏好进行排序
    2、能够考虑候选输出中每个组成部分的信息,选择更好的中间步骤
2、基于AI反馈的强化学习
  • 特点:使用AI生成的反馈代替人类反馈
  • 使用已对齐大模型生成的反馈:
    • 训练过程:
      1、使用经过RLHF训练之后的大模型生成一系列经过算法处理过的高质量的问题与回复数据
      2、使用上一步生成的数据对待对齐大模型进行监督微调
      3、使用一个偏好模型对微调后的模型输出进行评估,并根据评估结果训练一个奖励模型
      4、使用上一步训练好的奖励模型的反馈对待对齐大模型进行强化学习训练
  • 使用待对齐大模型进行自我反馈:
    • 训练过程
      1、使用策略模型生成对输入文本生成多个回复,然后使用提示引导策略模型进行打分,根据分数高低,划分为正例和负例,多次迭代生成强化学习所用的数据集
      2、使用DPO算法对策略模型进行训练

http://www.kler.cn/a/390812.html

相关文章:

  • 在linux中使用nload实时查看网卡流量
  • 如何在Python中实现一个简单的搜索引擎:从零开始的指南
  • 彻底理解ARXML中的PDU
  • 应对JSON解析键值对乱序问题的实用解决方案
  • 详解kafka消息发送重试机制的案例
  • 基于MATLAB+opencv人脸疲劳检测
  • Python使用Faker库生成伪数据
  • 从0开始学 docker (每日更新 24-11-8)
  • leetcode21. Merge Two Sorted Lists
  • Leetcode 检测相邻递增子数组
  • LeetCode 93-复制 IP地址
  • MYSQL知识总结
  • uni-app选项卡制作 ⑥
  • 【网络安全渗透测试零基础入门】之SNMP放大攻击原理及实战演示,零基础入门到精通,收藏这一篇就够了!
  • 【c语言】memmove函数的使用和模拟实现
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
  • Redis在docker中的主从,哨兵配置
  • kafka消费者的消费分区策略有哪些,默认是哪个?
  • C#-命名空间
  • qsqlmysql.lib的编译和使用
  • Java接收xml格式参数转为json
  • sql注入基础知识
  • 海柔仿真系统存储实践:混合云架构下实现高可用与极简运维
  • 【cft.show-web3解题思路】-php://input伪协议
  • 行业类别-金融科技-子类别区块链技术-细分类别智能合约-应用场景供应链金融课题
  • Python 正则表达式使用指南