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

大模型强化学习-PPO应用

如何训练reward模型:

训练数据采用偏好数据:

一般都采用和当前大模型能力差不多或者更优的大模型来训练reward模型:

评价一个回答的好坏,总是比生成一个好的回答容易。

那如何利用大模型,针对一个问答对,给出得分呢?

首先把问答拼接在一起,作为输入。只对序列的最后一维调用score head,因为只有最后的序列可以看到前面完整的。

reward模型的loss:

需要调用两次reward模型,分别得到模型对chosen和rejected的得分。然后按照下面的函数:

可以看到,如果chosen得分小于rejected得分时,loss呈现指数级增长;反之loss趋近0

数据集样式:

将问题与chosen和rejected回答分别都拼接起来,然后分词。生成一个新数据样本,包含以下四项:

PPO训练:

一般来说需要四个模型:

基准模型:一般是SFT之后的大模型。新训练后的模型输出的概率分布不能和基准模型相差太大。

训练模型:它的结构和基准模型的完全一致的,PPO训练的目标就是优化训练模型。它输出的概率分布不能和基准模型相差太大。

奖励模型:它对一个问答序列进行评分。问答对最后一个token序列的输出通过socre_head计算后,就是这个问答序列的得分了。

状态价值模型:对每个状态评估价值。需要对每个token都输出,截止到当前的toekn,期望回报是多少。每个输出的token都共享权重。

训练时,如果加载四个大模型,参数量太大了。

那么我们可以通过Lora的思想,只加载一个大模型,加载多个Adapter:

对于大模型输出的每一步而言,它的state就是截止到当前输出的token序列,action就是下一个输出的token,大模型就是策略函数。

http://www.dtcms.com/a/395338.html

相关文章:

  • 惠普打印机连接电脑完整指南:方法与故障排除
  • 轻松加载外部Jar,实现SpringBoot功能灵活扩展
  • MCGS COM口MODBUS转发
  • Elasticsearch面试精讲 Day 22:机器学习与异常检测
  • 仓颉语言中的 `Some` 类型解析
  • spring-boot--redis调整token过期时间
  • 树形表格示例
  • 【完整源码+数据集+部署教程】六角螺母分割系统: yolov8-seg-EfficientHead
  • 零基础搭建赛博朋克个人主页:蓝耘Claude Code完整实战教程
  • C语言第19讲
  • 【含文档+PPT+源码】基于springboot+ssm的智能人脸识别养老系统的设计与开发
  • Linux-> UDP 编程3
  • 分库分表后ID冲突怎么解决?分布式ID生成方案。保证ID全局唯一性。
  • 域名如何解析家庭ip
  • LeetCode 2460.对数组执行操作
  • Unity Time.time 详解
  • LeetCode 922.按奇偶排序数组 II
  • 请简要谈谈Android系统的架构组成?
  • LeetCode 面试经典 150_哈希表_两数之和(44_1_C++_简单)
  • Kafka是什么,架构是什么样的?Kafka概述
  • TCN时序卷积网络、CNN、RNN、LSTM、GRU神经网络工业设备运行监测、航空客运量时间数据集预测可视化|附代码数据
  • 【HarmonyOS】HMRouter关键原理-动态import
  • 【Python】面向对象(三)
  • 05-django项目的跨域处理
  • go语言并发
  • Qt QSS 美化完整教程文档
  • jwt与token+redis,哪种方案更好用?
  • 基于react的前端项目开发和实战总结(umi框架)
  • 【iOS】YYModel
  • 修改docker配置使其支持本机tcp连接