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

news2024/9/27 21:22:42

​论文地址: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7服务器上的文件上传到谷歌云盘(google drive)

1,下载gdrive客户端,Releases glotlabs/gdrive GitHub 2,下载完解压,并移动到cp gdrive /usr/local/bin/ 3,查看是否安装成功 4,添加账户,gdrive account add 根据链接,创建Client id和 Client secret 5,填写Client…

HarmonyOS(ArkTS)基础组件参数 媒体类型讲解

我们这里做了一个空的容器 然后 我们可以这样写 Entry Component struct Index {build() {Row() {Column() {Text("你好")Divider()Button("点击")}.width(100%)}.height(100%)} }这里 我们分别使用了三个组件 Text文本组件 Divider分割线组件 Button按钮…

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service(含Deployment)2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于乌鸦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MA…

go http服务接收POST请求文件同时接收自定义参数

以gin框架为例,其它框架功能都有,大同小异。 gin中接收文件的方式如下: 单个文件 file : c.FormFile("file") 多个文件 form, err : c.MultipartForm() files : form.File["uoload[]"] 此时files就是所有发来的文件…

JS实现日历表

有需要的可以用一下&#xff0c;这是一个简单的demo. HTML&#xff1a; <table><thead><tr><th colspan"2"><span class"left"></span></th><th colspan"3"><span class"time"&g…

积木艺术化佳乐专用五万颗花型艺术积木诠释东方之美

12月11日,为期四天以“惊喜AMAZE”为主题的2023广州设计周圆满落幕!KALOS BLOCKS佳乐专凭借优秀的产品设计与场馆设计,开展四天,流量爆棚,圈粉无数,在设计周展馆中C位出道,获得现场观众和众多设计师的一致好评! 以梅花之形,现东方之美—— 一次唤醒艺术升维的仪式感一次东方美学…

【数学建模】《实战数学建模:例题与讲解》第九讲-时间序列分析(含Matlab代码)

【数学建模】《实战数学建模&#xff1a;例题与讲解》第九讲-时间序列分析&#xff08;含Matlab代码&#xff09; 基本概念确定性时间序列分析方法平稳时间序列模型ARIMA模型季节性序列 习题8.11. 题目要求2.解题过程3.程序4.结果 习题8.21. 题目要求2.解题过程3.程序4.结果 习…

Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台

一、前言 最近一个月一直在研究mdk-sdk音视频组件&#xff0c;这个组件是原qtav作者的最新力作&#xff0c;提供了各种各样的示例demo&#xff0c;不仅限于支持C&#xff0c;其他各种比如java/flutter/web/android等全部支持&#xff0c;性能上也是杠杠的&#xff0c;目前大概…

数字图像处理(实践篇)二十五 使用hyperlpr3进行车牌识别

目录 1 HyperLPR 2 中文字体文件下载 3 实践 1 HyperLPR HyperLPR是一个基于Python的使用深度学习针对对中文车牌识别的实现,与开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好于EasyPR。 HyperLPR3是一个高性能开源中文车牌识别框架。

leetcode-138-随机链表的复制(Java实现)

题目&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点…

【Netty】Socket与I/O模型

目录 Socket网络编程Socket概述Socket整体流程代码实现 I/O模型说明BIO(同步并阻塞)NIO(同步非阻塞)AIO(异步非阻塞)BIO、NIO、AIO适用场景 Socket网络编程 Socket概述 Socket&#xff0c;套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议&#xff0c;主要解决…

免费分享一套Springboot+Vue前后端分离的校园二手交易平台,挺漂亮的

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue前后端分离的校园二手交易平台&#xff0c;分享下哈。 项目视频演示 【免费】SpringbootVue校园二手交易平台系统 毕业设计 Java毕业设计_哔哩哔哩_bilibili 项目介绍 校园二手交易网站是一…

100V耐压 内置MOS ESOP8 40V输入 转5V 2.1A恒压输出

100V耐压内置MOS ESOP8 40V输入转5V 2.1A恒压输出 芯片测试数据如下图&#xff1a;

C#中简单的继承和多态

今天我们来聊一聊继承&#xff0c;说实话今天也是我第一次接触。 继承的概念是什么呢&#xff1f;就是一个类可以继承另一个类的属性和方法&#xff08;成员&#xff09; 继承是面向对象编程中的一个非常重要的特性。 好了&#xff0c;废话不多说&#xff0c;下面切入正题&a…

@SpringBootApplication自动配置原理剖析

SpringBootApplication自动配置原理剖析 自动配置: 根据我们添加的依赖,会自动将一些配置类的bean注册进ioc容器中,可以使用Autowired或者Resource等注解来使用它。 1.1 SpringBootApplication Spring Boot项目创建完成会默认生成一个Application的入口类(启动类),命名规则a…

推荐一些跨平台的比较优秀的翻译服务(软件或平台)

因为编程及查阅资料需要频繁的查阅英文&#xff0c;推荐一些跨平台的比较优秀的翻译服务&#xff08;软件或平台&#xff09; 1、DeepL Translate (https://www.deepl.com/translator) 这是一款基于机器翻译的在线翻译软件。win、安卓、Linux、IOS上都有可用的版本也可以基于w…

Android12编译kernel4.9解决:scripts/gcc-wrapper.py, line 79, in run_gcc(一百六十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

《数据结构、算法与应用C++语言描述》-最大高度优先左高树-C++实现

左高树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_26maxHblt 定义 (大顶堆和小顶堆)堆结构是一种隐式数据结构(implicit data structure)。用完全二叉树表示的堆在数组中是隐式存储的(即没有明确的指针或其他数据能够用来重塑…

从池化的角度看GNN(包含PR-GNN,EdgePool等7篇论文)上篇

从池化的角度看GNN&#xff08;包含PR-GNN&#xff0c;EdgePool等7篇论文&#xff09; 前言一些总结一些早期论文的简要介绍1️⃣论文PR-GNN&#xff1a;《Pooling Regularized Graph Neural Network for fMRI Biomarker Analysis》 下一篇章笔记链接 前言 这里是早期的笔记&a…