XoT:一种新的大语言模型的提示技术

这是微软在11月最新发布的一篇论文,题为“Everything of Thoughts: Defying the Law of Penrose Triangle for Thought Generation”,介绍了一种名为XOT的提示技术,它增强了像GPT-3和GPT-4这样的大型语言模型(llm)解决复杂问题的潜力。

当前提示技术的局限性

LLM的最新进展通过将复杂的问题分解成更易于管理的“思想”,然后通过自然语言提示表达出来,从而实现了解决问题的新方法。但是大多数现有的提示技术都有局限性:

输入-输出(IO)提示仅适用于具有单步解决方案的简单问题,缺乏灵活性。

思维链(CoT)能够逐步解决问题,但仅限于线性思维结构,限制了灵活性。

思维树(ToT)和思维图(GoT)允许更灵活的思维结构,如树或图。但是它们需要LLM本身来评估中间思想,通过多个LLM调用产生大量的计算成本。

从本质上讲,当前的提示技术面临着“彭罗斯三角”约束——它们最多可以实现两个属性(性能、效率、灵活性),但不能同时实现这三个属性。

XOT

为了解决这些限制,微软开发了一种新的提示技术,称为XOT (Everything of Thoughts)。XOT集成了强化学习和蒙特卡罗树搜索(MCTS),将外部知识注入提示过程。这增强了llm的功能,并同时实现了更高的性能、效率和灵活性。

XOT的关键组件有:

MCTS模块-使用轻量级策略和价值网络,通过模拟有效地探索任务的潜在思想结构。

LLM求解器-利用LLM的内部知识对MCTS的思想进行提炼和修正。这种协作过程提高了“思维”质量。

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

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

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

思想修正:LLM审查MCTS的思想并识别任何错误。修正的想法是通过额外的MCTS模拟产生的。

LLM推理:将修改后的想法提供给LLM解决问题的最终提示。

下面的图表说明了XOT框架:

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

在思想搜索过程中,预训练的MCTS利用策略网络和价值网络有效地探索搜索空间并生成思想轨迹。这包括迭代地选择、展开、计算和反向传播节点。

思想轨迹提供给LLM作为提示。

LLM利用其内部知识来检测思想中的任何错误。如果发现错误,则使用MCTS模块通过额外的模拟来修改思想。

这个过程不断重复,直到LLM使用修改后的高质量思想解决问题。

XOT的一个示例

下面我们使用XOT解决Pocket Cube问题(一个2x2x2的魔方)来作为示例来介绍它是如何运作的

选择:算法从根节点开始,在当前状态下从可用的单步思想生成集中选择一个动作。这个过程一直持续到到达当前树中的一个叶节点。选择以PUCT算法为指导,目标是最大化上置信度界(UCB)。

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

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

思想推理:在MCTS完成搜索后,思想被提取并提供给LLM。LLM随后会对这些想法进行审查和提炼,如果需要,继续MCTS搜索过程,最终通过将这些外部想法与他们的内部知识相结合,形成最终的答案。

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

XOT的优点

与之前的提示技术相比,XOT提供了以下优点:

性能:MCTS探索将领域知识注入思想,增强LLM能力。协同修订过程进一步提高了思维质量。

效率:轻量级策略/价值网络引导MCTS,最大限度地减少昂贵的LLM调用。在推理过程中只需要1-2个调用。

灵活性:MCTS可以探索不同的思维结构,如链、树、图,使创造性思维。

XOT克服了其他提示范例的“彭罗斯三角”限制,同时实现这三个属性。

实验结果

研究人员对《Game of 24》、《8-Puzzle》和《Pocket Cube》等需要长期规划的复杂任务进行了XOT评估:

在所有任务中,XOT的准确率明显优于IO、CoT、ToT和GoT等基线。

经过思想修正,XOT在Game of 24中仅使用1-2个LLM调用就实现了高达90%的准确率,显示出高效率。

XOT高效地为问题生成多种不同的解决方案,展示了灵活性。

对于像8-Puzzle和Pocket Cube这样的空间推理任务,XOT使llm能够解决他们以前遇到的问题。

这些结果突出了XOT如何通过有效和灵活的提示释放llm解决复杂问题的潜力。

总结

XOT提示技术代表了在激发大型语言模型的能力方面的重大进步。通过将MCTS和LLM知识协同结合,XOT与之前的提示范例相比具有更好的性能、效率和灵活性。XOT产生的灵活的思维结构能够创造性地解决问题,而协作修订过程以最少的LLM交互产生高质量的解决方案。

论文地址:

https://avoid.overfit.cn/post/491c60ff00884f06adff77b0025e162d

作者:Raphael Mansuy

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP原生类总结利用

再SPL介绍 SPL就是Standard PHP Library的缩写。据手册显示,SPL是用于解决典型问题(standard problems)的一组接口与类的集合。打开手册,正如上面的定义一样,有许多封装好的类。因为是要解决典型问题,免不了有一些处理文…

kr 第三阶段(九)64 位逆向

X64 汇编程序 64 位与 32 位的区别 更大的内存 64 位 CPU 与 32 位 CPU 的区别 引脚根数: x86 程序:20 根x64 程序:52 根,实际寻址的有 48 根,所以最大内存是 0~256T 寻址区间: x86 程序:0x0…

python实现一个简单的桌面倒计时小程序

本章内容主要是利用python制作一个简单的桌面倒计时程序,包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…

汽车ECU的虚拟化技术初探(二)

目录 1.概述 2.U2A虚拟化方案概述 3.U2A的虚拟化功能概述 4.虚拟化辅助功能的使能 5.留坑 1.概述 在汽车ECU的虚拟化技术初探(一)-CSDN博客里,我们聊到虚拟化技术比较关键的就是vECU的虚拟地址翻译问题,例如Cortex-A77就使用MMU来进行虚实地址的转换…

阿里云国际站:专有宿主机

文章目录 一、专有宿主机的概念 二、专有宿主机的优势 三、专有宿主机的应用场景 一、专有宿主机的概念 专有宿主机(Dedicated Host,简称DDH)是阿里云专为企业用户定制优化的解决方案。具有物理资源独享、部署更灵活、配置更丰富、性价比…

遇到问题,我该如何提问?

作为IT行业的从业者,我们深知程序员在保障系统安全、数据防护以及网络稳定方面所起到的重要作用。他们是现代社会的护城河,用代码构筑着我们的未来。那程序员的护城河又是什么呢?是技术能力的深度?是对创新的追求?还是…

Linux yum,vim详解

yum是什么 yum是一个Linux系统预装的指令,yum的功能是可以对app进行搜索,下载,相当于Linux下的应用商店。 yum是读取Linux中镜像文件中的网页地址,下载用户所输入的命令。 如何使用yum下载软件 yum install -y(所有选项都yes) …

换根dp学习笔记

最近模拟赛经常做到,于是我就学习了一下。 算法原理 换根 d p dp dp的题一般都会给出一个无根树,因为以不同的点为根时,问题的答案不一样,所以它会让你输出答案的最大或最小值。 暴力去做这种题,就是以每个点为根然…

为什么要用“交叉熵”做损失函数

大家好啊,我是董董灿。 今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。 作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到 loss 值收敛,可以…

springboot项目使用Swagger3

一、Swagger介绍 号称世界上最流行的Api框架;Restful Api 文档在线自动生成工具>Api文档与API定义同步更新直接运行,可以在在线测试API 接口支持多种语言:(java,Php…) 二、Swagger3 准备工作 1、在p…

学习c#的第七天

目录 C# 封装 概念 Public 访问修饰符 Private 访问修饰符 Protected 访问修饰符 Internal 访问修饰符 Protected Internal 访问修饰符 总结 C# 封装 概念 在面向对象程序设计中,封装是一种将数据和方法包含在一个单元中,并控制对这些数据和方…

海康Visionmaster-Qt+VS 二次开发环境如何配置?

1 新建 Qt 工程,添加 Qt 模块 Core、GUI、Active Qt 和 Container Widgets 2 拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0\ComControl\bin\x64 下的所有拷贝到项目工程输出目录下,如下图所示,项目的输出路径是 Dll 文件夹。 3 第一…

AOMedia发布免版税沉浸音频规范IAMF

11月10日,开放媒体联盟(AOMedia)发布了旗下首个沉浸式音频规范IAMF(https://aomediacodec.github.io/iamf/),IAMF是一种编解码器无关的容器规范,可以携带回放时间渲染算法和音频混音的信息&…

Spring Data JPA 实现集成实体对象数据库的创建、修改时间字段自动更新

JPA提供了一种事件监听器的机制,用于SQL审计,通过监听器我们可以很快速地去自动更新创建时间、修改时间,主要步骤如下: 一、创建基础实体,包含了创建和修改时间,然后让其他真正的实体继承该实体&#xff0…

59基于matlab的爬行动物搜索算法(Reptile search algorithm, RSA)

基于matlab的爬行动物搜索算法(Reptile search algorithm, RSA)一种新型智能优化算法。该算法主要模拟鳄鱼的捕食行为,来实现寻优求解,具有收敛速度快,寻优能力强的特点。程序已调通,可直接运行。 59matlab…

3分钟带你了解前端缓存-HTTP缓存

前情提要 前端缓存分为下面三大类,本文主要讲解HTTP缓存~ 1. HTTP缓存 强缓存协商缓存 2. 浏览器缓存 本地小容量缓存本地大容量缓存 3. 应用程序缓存 HTML5应用程序缓存 缓存作用 减少了冗余的数据传输减少服务器的负担提高了网站的性能加快加载网页速度 …

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法,JPA默认提供的CrudRepository\JpaRepository提供的方法比较少,一般我们会手写一些方法,这里我们选择通过JPA Buddy快速生成,之前文章中讲到了JPA Buddy原本是IDEA收费插…

未来的拥塞控制与 Linux EEVDF 调度器

有破要有立。 前面提到 经典端到端拥塞控制将越来越失效,未来该如何,谈谈我的看法。 端到端拥塞控制的难点根本上是要解决公平性问题,顺带着提高资源利用率。我们很容易理解,在共享资源场景下,不公平一定是低效的&am…

Redis的特性以及使用场景

分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK 介绍redis Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…

【Pytorch和深度学习】栏目导读

一、栏目说明 本栏目《pytorch实践》是为初学者入门深度学习准备的。本文是该栏目的导读部分,因为计划本栏目在明年完成,因此,导读部分,即本文也在持续更新中。 本栏目设计目标是将深度学习全面用pytorch实践一遍,由浅…