LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

本文主要是介绍LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​论文地址:https://arxiv.org/pdf/2311.04254.pdf

一、当前Prompt技术的局限性

       LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而,大多数现有的Prompt技术都有局限性:

  • 输入输出(IO)Prompt:仅适用于具有单步解决方案的简单问题,它缺乏灵活性;
  • 思维链(CoT):能够解决多步问题,但仅限于线性思维结构,也缺少灵活性;
  • 思维树(ToT)和思维图(GoT):允许更灵活的思维结构,如树或图。然而,它们需要LLM来评估中间的thought,由于多次调用LLM会产生巨大的计算成本。

PS:当前的Prompt技术面临“Penrose Triangle”约束——最多可以实现(性能、效率和灵活性)中两个属性,三个属性不能同时实现。

​常见Prompt技术对比,如下图所示:

输入输出(IO)Prompt(图1(a)):IO方法在不提供任何中间thought过程的情况下,直接指导LLM解决问题;

思维链(CoT)(图1(b)):CoT将待解决问题分解为一系列的thought链,让LLM能够一步一步地处理复杂的问题;

自洽CoT(CoT-SC)(图1(c)):CoT SC使用多个CoT实例从而让LLM生成多个输出,它从中选择最佳的输出,与普通的CoT相比,提供了更稳健和一致的推理;

思维树(ToT)(图1(d)):ToT以树状结构组织思想并利用搜索算法(例如,广度优先搜索、深度优先搜索)将树扩展到追求最佳解决方案。但是ToT中的thought评价依赖于LLM本身,需要多次调用LLM进行推理,这昂贵且低效;

思维图(GoT)(图1(e)):GoT扩展了ToT方法,通过thought聚合和细化生成类似图形的思想结构。

PS:在中间搜索阶段期间。尽管这种方法允许更灵活的思维结构仍然需要多次LLM推理调用进行评估,从而产生显著的计算成本。

二、XOT介绍

       为了解决上述Prompt的这些局限性,本文将介绍一种新的Prompt技术XOT(Everything of Thoughts)。XOT使用强化学习和蒙特卡罗树搜索(MCTS)将外部知识注入Prompt过程。

XOT的关键组成部分是:

  • MCTS模块——使用轻量级的策略和价值网络,通过模拟有效地探索任务的潜在思维结构;
  • LLM求解器——利用LLM的内部知识,对MCTS中的思想进行提炼和修正。这种协作过程提高了思维质量。

三、XOT工作原理

XOT框架包括以下关键步骤:

  1. 预训练阶段:对MCTS模块进行特定任务的预训练,以学习有关高效thought搜索的领域知识。轻量级策略和价值网络指导搜索;

  2. Thought搜索:在推理过程中,预训练的MCTS模块使用策略/价值网络来有效地探索和生成LLM的thought轨迹;

  3. Thought修正:LLM审查MCTS生成的thought,并识别其中可能的任何错误,如果有错误,再通过额外的MCTS模拟产生修正后的thought;

  4. LLM推理:把包括修改thought后的最终Prompt提供给LLM来解决问题。

下图说明了XOT框架:

       MCTS模块针对特定任务进行预训练,使用策略和价值网络来指导搜索和学习领域知识。

  1. thought搜索过程中,预训练的MCTS使用策略和价值网络来有效地探索搜索空间并生成thought轨迹。整个过程迭代地选择、扩展、评估和反向传播节点;

  2. thought轨迹提供给LLM作为Prompt;

  3. LLM使用其内部知识来检测thought中的任何错误

  4. 如果发现错误,MCTS模块将用于通过额外的模拟来修改thought;

  5. 该过程重复进行,直到LLM使用修订后的高质量thought解决问题。

四、XOT Pocket Cube问题实战

      我们使用Pocket Cube问题(2x2x2魔方)来看一下XOT是如何工作的?

  1. 选择:算法从根节点开始,从可用集合中选择一个动作,用于在当前状态下生成单步思想。这个过程一直持续到到达当前树中的一个叶节点为止。该选择由PUCT算法指导,旨在最大化置信上限(UCB);

  2. 评估和扩展:到达之前未选择的叶节点后,我们扩展到下一步新思想探索的状态。这种扩展涉及对其值和状态的作用概率的评估,这些值和作用概率由θ参数化的神经网络建模,(Pθ(s), vθ(s)) = fθ(s)。这里,Pθ(s)是s上所有动作的先验概率,vθ(s)表示其预测状态值。这两个值被保留和存储用于备份目的,状态s被标记为“已访问”;

  3. 反向传播:在上述阶段对叶节点进行扩展后,可能是未探索状态或终端状态,算法继续通过反向传播更新所有Q(s,a)值。对于未探索的节点,这种更新涉及计算其估计值vθ的平均值,而对于终止的节点,它是基于真实奖励r。这些更新是在信息沿着轨迹反向传播到后续节点时发生的。此外,每个状态操作对的访问计数也会增加;

  4. 思想推理:在MCTS完成搜索后,提取思想并将其提供给LLM。LLM然后审查和提炼这些想法,如果需要,继续MCTS搜索过程,并最终通过将这些外部想法与其内部知识相结合来制定最终答案。

PS:重复此过程,直到问题得到解决或达到预定义的迭代次数。

五、XOT的主要优点

       与现有Prompt技术相比,XOT有以下优点:

  • 性能:MCTS探索将领域知识注入思想来增强LLM能力。协作修订过程进一步提高了thought质量;
  • 效率:轻量级策略/价值网络指导MCTS,最大限度地减少昂贵的LLM呼叫。推理过程中只需要调用1-2次即可;
  • 灵活性:MCTS可以探索不同的思维结构,如链、树和图,从而实现创造性思维。

PS:XOT实现了其他Prompt范式不能同时满足“Penrose Triangle”。

六、XOT实验结果

     研究人员在需要长期规划的复杂任务上评估了XOT,如《24小时游戏》、《8拼图》和《口袋魔方》。一些关键发现:

  • XOT在所有任务中的准确性显著优于IO、CoT、ToT和GoT等基线;
  • 经过thought修正,XOT在《24小时游戏》中仅使用1–2个LLM调用就实现了高达90%的准确率,证明了高效性;
  • XOT高效地生成了多种多样的问题解决方案,展现了灵活性;
  • 对于8-Puzzle和Pocket Cube等空间推理任务,XOT使LLM能够解决他们以前遇到的问题。

PS:这些结果突出了XOT如何通过高效灵活的提示释放LLM在复杂问题解决方面的潜力。

参考文献:

[1] https://medium.com/@raphael.mansuy/xot-a-new-prompting-technique-for-ai-the-secret-sauce-to-level-up-your-llms-reasoning-prowess-3e19703ab582

这篇关于LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483710

相关文章

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

MyBatis与其使用方法示例详解

《MyBatis与其使用方法示例详解》MyBatis是一个支持自定义SQL的持久层框架,通过XML文件实现SQL配置和数据映射,简化了JDBC代码的编写,本文给大家介绍MyBatis与其使用方法讲解,... 目录ORM缺优分析MyBATisMyBatis的工作流程MyBatis的基本使用环境准备MyBati

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://

Java之并行流(Parallel Stream)使用详解

《Java之并行流(ParallelStream)使用详解》Java并行流(ParallelStream)通过多线程并行处理集合数据,利用Fork/Join框架加速计算,适用于大规模数据集和计算密集... 目录Java并行流(Parallel Stream)1. 核心概念与原理2. 创建并行流的方式3. 适

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常