一种新型离线强化学习方法 OREO

news/2024/12/25 14:50:21 标签: 人工智能, 机器学习, 深度学习

“Offline Reinforcement Learning for LLM Multi-Step Reasoning”由Huaijie Wang、Shibo Hao等人撰写。论文提出了OREO(Offline REasoning Optimization)这一离线强化学习方法,用于增强大语言模型(LLMs)的多步推理能力,在数学推理和实体代理控制任务中展现出良好性能,为提升LLMs的推理能力提供了新途径。

1 研究背景与目的

背景

LLMs在复杂多步推理任务中的应用日益广泛,但传统RL算法的在线数据收集成本高昂,限制了其实际应用。离线RL方法虽更实用,但现有的如DPO等方法在多步推理任务中存在不足,如依赖成对偏好数据且在信用分配上效果不佳。

多步推理任务的数据特点是奖励稀疏,通常只有在任务成功或失败的终端步骤才有非零奖励,且数据多为独立轨迹。

目的:提出OREO方法,通过优化软Bellman方程联合学习策略模型和价值函数,减少对成对数据收集的需求,实现更细粒度的信用分配,以提升LLMs的多步推理能力。

2 相关工作

  • LLM的强化学习:RLHF是使LLM响应与人类偏好对齐的常用方法,传统RL方法如PPO被广泛用于LLM的后训练,近期基于拒绝采样、偏好和REINFORCE的RL方法也受到关注。最大熵RL与RLHF目标有强关联,为微调LLM提供了新方向。

  • LLM推理:LLMs可通过生成中间推理步骤解决复杂问题,近期研究通过监督微调、拒绝采样和RL算法等增强其推理能力,但DPO在推理任务中的应用存在局限。另一种方法是训练过程奖励模型(PRM)提供更细粒度反馈,而本文方法训练的价值函数可用于测试时搜索以提升推理性能。

3 OREO方法

  • 基于MDP定义推理任务:将LLM推理过程定义为马尔可夫决策过程(MDP),状态为token序列,动作是生成新token,奖励函数在终端步骤反映推理链正确性。在与环境交互的任务中,状态和转移函数稍有不同。

  • 软Bellman方程及与DPO的关系:软Bellman方程描述了最优策略和价值函数的关系,为OREO方法提供理论基础。DPO通过放宽软Bellman方程要求和引入Bradley-Terry偏好模型来推导,但存在不必要的成对数据收集和信用分配问题。

  • OREO学习目标:采用类似PCL的方法微调LLM,通过优化软Bellman方程属性来训练策略模型和价值模型。价值网络采用MSE损失,策略目标函数包含与价值函数相关的项和正则化项。

  • 损失变体:包括步级OREO(将动作视为整个推理步骤)和响应级OREO(模仿DPO行为),并根据实验选择合适的参数。

  • 迭代OREO:可迭代应用,每次迭代后用更新的策略模型收集新数据用于进一步训练。

  • 测试时搜索策略:利用训练得到的价值函数指导数学推理任务的步级束搜索或在实体代理控制任务中选择最佳动作,提高模型性能。

4 实验设置与结果

  • 实验设置

    • 数据集和评估指标:采用GSM8K和MATH数据集进行数学推理任务评估,以准确率为指标;使用ALFWorld数据集进行实体代理控制任务评估,以成功率为指标。

    • 基线方法:与监督微调、拒绝采样、DPO和KTO等方法进行比较。

    • 实验细节:包括数据集构建、推理步骤分割和超参数设置等。

  • 实验结果

    • 主要结果:OREO在数学推理和实体代理控制任务中均优于基线方法,在不同模型大小上表现一致。在数学推理任务中,相对于SFT有显著提升;在ALFWorld任务中,能有效利用失败轨迹,提高在未见环境中的成功率。

    • 迭代OREO:随着迭代次数增加,OREO的性能持续提升,而拒绝采样等基线方法出现饱和迹象。

    • 隐式与显式价值函数对比:OREO通过显式参数化价值函数,在区分正确和错误推理步骤上比DPO中基于策略模型的隐式价值函数更有效。

    • 测试时搜索价值函数:在数学推理任务中,OREO利用价值函数进行步级束搜索,随着计算预算增加,准确率显著提高;在ALFWorld任务中,选择最佳-K动作可提高成功率。

5 研究结论与局限

  • 结论:OREO算法通过优化软Bellman方程训练策略和价值函数,在多步推理任务中表现优异,减少了对成对偏好数据的需求,实现了更有效的信用分配,且价值函数可用于测试时搜索进一步提升性能。

  • 局限:部分实验受计算资源限制,仅使用1.5B模型,未来计划在更大规模上进行实验;目前主要在数学推理和实体代理控制任务中评估,未来将扩展到更多类型任务。


http://www.niftyadmin.cn/n/5799231.html

相关文章

Python 装饰器-使用装饰指定方法:为类方法添加异常处理

在 Python 编程中,装饰器是一种非常强大的工具,允许我们以优雅和可复用的方式添加功能。本文将探讨如何使用装饰器为类的方法添加异常处理功能,捕获并处理方法中的错误。 背景 在实际开发中,我们常常需要为一些类方法提供统一的…

myql explain sql分析详解

Explain 命令中的 type 列&#xff0c;显示MySQL查询所使用的 关联类型&#xff08;Join Types&#xff09; 或者 访问类型&#xff0c;它表明 MySQL决定如何查找表中符合条件的行。 常见访问类型性能由最差到最优依次为&#xff1a;ALL < index < range < index_subq…

基于SpringBoot的山西文旅网系统

一、系统背景与意义 在经济全球化背景之下&#xff0c;互联网技术将进一步提高社会综合发展的效率和速度&#xff0c;也将涉及到各个领域&#xff0c;而山西文旅网在网络背景下有着无法忽视的作用。山西作为中国的文化大省&#xff0c;拥有丰富的旅游资源和深厚的文化底蕴。为…

工业“元宇宙化”:科技引领生产新潮流

12月20日&#xff0c;由中国社会科学评价研究院、中国社会科学院财经战略研究院、冯氏集团利丰研究中心与社会科学文献出版社联合发布的《流通蓝皮书&#xff1a;中国商业发展报告(2023&#xff5e;2024)》指出&#xff0c;未来工业会继续数字化&#xff0c;元宇宙科技(如人工智…

网络协议入门

一、概述 1、模型 为了减少协议设计的复杂性&#xff0c;大多数网络模型均采用分层的方式来组织。每一层都有自己的功能&#xff0c;就像建筑物一样&#xff0c;每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务&#xff0c;本层服务的实现细节对上层屏蔽…

C语言结构体详细讲解

文章目录 [TOC] 一、前言二、结构体2.1 结构体概念&#x1f388;2.2 结构体定义&#x1f389;2.3 结构体使用&#x1f397;️2.4 结构体数组使用&#x1f397;️ 结尾 时间紧后面还有一些知识点这周内补上&#xff0c; 理解理解&#xff01;(❁◡❁) 一、前言 在学习结构体之前…

unity弹出新的类似独立场景窗口独立运行一般怎么实现?

在Unity中实现弹出类似独立场景窗口并独立运行的功能&#xff0c;通常需要采用一些特定的方法或工具&#xff0c;因为Unity本身并没有直接提供这种功能的内置选项。以下是一些可能的实现方法&#xff1a; 1. 使用多个Scene&#xff08;场景&#xff09; 加载新Scene&#xff…

web自动扫描解析

一、Web自动扫描的定义与原理 Web自动扫描&#xff0c;顾名思义&#xff0c;是利用自动化工具对Web应用程序进行安全漏洞扫描的过程。这种扫描技术通过主动向目标发送请求&#xff0c;并分析响应来识别安全漏洞。这些请求通常包含特制的参数、头部或数据&#xff0c;以触发目标…