结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力

news2024/11/25 20:30:29

结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力

随着大语言模型(Large Language Models)的爆火,例如 ChatGPT,GPT-4,PaLM,LLaMA 等,如何让大语言模型更好的应对有很长的上下文信息(超出其最大处理长度)的场景并利用相关历史信息做复杂的推理,成为一个热点研究话题。现有的主流做法是给大语言模型增加记忆(memory)模块,在需要的时候从记忆模块中提取相关的历史信息帮助大语言模型。

近期,清华大学和北京智源人工智能研究院的研究者们提出了一种新型的符号性(symbolic)记忆模块。他们从现代计算机架构中汲取灵感,利用符号性记忆模块来增强大型语言模型。这种符号性记忆模块可以利用符号性的操作,精确的控制记忆模块中的信息。这样的符号性记忆框架由一个大语言模型(如 ChatGPT)和一个数据库组成,称为 ChatDB。其中大语言模型负责控制对记忆模块的读写操作。在 ChatDB 中,大语言模型通过生成 SQL 指令来操纵数据库,从而实现对记忆模块中历史信息精确的增删改查,并在需要时为大语言模型提供信息,以帮助其回应用户的输入。这项研究可以让大语言模型胜任需要对历史信息进行长期且精确的记录、处理和分析的场景,例如各种管理和分析系统,以后甚至有望替代管理者,直接让大语言模型根据精确的历史数据做分析和决策。

相关论文为:ChatDB: Augmenting LLMs with Databases as Their Symbolic Memory,代码已开源。

  • 论文地址:https://arxiv.org/abs/2306.03901

  • 项目主页:https://chatdatabase.github.io

  • 项目代码:https://github.com/huchenxucs/ChatDB

推特上一些知名的机器学习和自然语言处理研究者也对这项研究进行了宣传:

与相关工作的对比

之前的记忆模块主要分为,Prompt-based memory Matrix-based memory 两类。Prompt-based memory 是将之前的历史文本和相应文本的 vector embedding 保存下来,需要的时候再利用 vector embedding 间的相似性找到相关的历史信息,然后放到 prompt 中,作为大语言模型的输入,相关的工作有 Auto-GPT 和 Generative Agents 等等。Matrix-based memory 是利用额外的 memory tokens 或者 memory matrices 来记录历史信息,相关的工作有 Recurrent Memory Transformer 等等。之前这些记忆模块的设计,要么需要依靠文本的 vector embedding 之间的相似度,要么将历史信息隐式地存储在神经网络的权重中,都涉及神经性(neural)的操作,无法像符号性操作那样精确操纵记忆模块中的历史信息。

它们的主要问题有两点:(1) 没有以结构化的形式存储历史信息;(2) 对存储在记忆模块中的信息的操作不够精确:它们依赖于一些向量相似度的计算,这可能不准确,长期下来或者进行多步推理的时候就会导致错误的积累。

ChatDB 借鉴之前 Neuro-symbolic AI 的一些工作,如 Neural Symbolic Machines,利用支持 SQL 指令的数据库作为符号性记忆模块,来支持对历史信息抽象的(abstract),可拓展的(scalable)和精确的(precise)的操作。这些都是引入符号性记忆模块所带来的优势。符号性记忆模块还可以跟之前的记忆模块同时使用,起到相辅相成的作用。

之前的一些大语言模型和数据库结合的工作(比如DB-GPT和ChatExcel)也涉及用大语言模型生成 SQL 或 Excel 的指令,但 ChatDB 跟它们有本质上的不同。DB-GPT 和 ChatExcel 更多关注利用大语言模型解决自然语言到 SQL 或 Excel 指令的转化,而且更多只是用来解决查询的问题,数据源本身是给定好的。ChatDB 则是将数据库作为符号性记忆模块,不只涉及查询,包括了数据库的增删改查等所有操作,整个数据库是从无到有,不断记录并更新大语言模型的历史信息。并且,ChatDB 中的数据库,即符号性记忆模块,是与大语言模型紧密关联、融为一体的,可以帮助大语言模型进行复杂的多步推理。

从大语言模型使用工具的视角来看,类比之前的工作 Toolformer 和 Langchain,ChatDB 将符号性记忆模块(即数据库)用作工具。其优势在于,对于需要使用准确历史数据进行多步推理的问题,它可以让大语言模型更准确的存储并使用历史数据,而且可以利用数据库存储和再利用推理的中间结果,从而取得更好的效果。

重要意义

该工作对大语言模型(LLMs)领域做出了如下几个贡献:

  • 首先,提出了 ChatDB—— 一个用数据库作为 LLMs 的符号性记忆模块来增强 LLMs 的框架。这使得历史数据可以精确的以结构化的方式进行存储,并且支持使用 SQL 语句进行抽象的、可拓展的、精确的数据操作。

  • 其次,提出了 Chain-of-Memory(CoM,记忆链方法,通过将用户输入转化为多步中间的记忆操作,实现了对记忆模块中历史信息的复杂操作。这提高了 ChatDB 的性能,使其能够处理复杂的、涉及多个表的数据库交互,并提高了准确性和稳定性。

  • 最后,将符号性记忆模块与 LLMs 结合,可以避免错误的累积,方便地存储中间结果,从而提高了多步推理(multi-hop reasoning)能力,使 ChatDB 在合成数据集上显著优于 ChatGPT。

方法

ChatDB 框架包含三个主要阶段:input processing(输入处理),chain-of-memory(记忆链),和 response summary(总结回复),如图 2 所示。

1 输入处理:对于用户的输入,如果不涉及使用记忆模块,则直接生成回复;如果需要记忆模块,如查询或者更新数据库,语言模型则生成与记忆模块交互的一系列 SQL 语句。

2 记忆链:执行一系列记忆操作来与符号性记忆模块交互。ChatDB 按照先前生成的一系列 SQL 语句依次操作符号性记忆模块,包括插入、更新、选择、删除等操作。外部数据库执行相应的 SQL 语句,更新数据库并返回结果。值得注意的是,在执行每一步记忆操作之前,ChatDB 会根据先前 SQL 语句的结果决定是否更新当前记忆操作。ChatDB 按照此过程执行每一步记忆操作,直到所有记忆操作完成。

3  总结回复: 语言模型综合与数据库交互得到的结果,并对用户的输入做出总结回复。

其中 Chain-of-Memory(CoM,记忆链)是一个新提出的方法,以更有效地操作符号性记忆模块,从而进一步增强 LLMs 的推理能力。记忆链方法将用户输入转化为一系列中间记忆操作步骤,将复杂的问题用多个记忆操作步骤来解决,每个中间步骤涉及一个或多个 SQL 语句,大大降低了解决问题的复杂度。

实验和结果

实验设置:为了验证 ChatDB 中将数据库作为符号性记忆模块来增强大语言模型的有效性,并与其他的模型进行定量比较,作者构造了一个模拟一家水果店的运营管理的合成数据集。该数据命名为 “水果商店数据集”,其中包含了 70 条按时间顺序生成的商店记录,总共约有 3.3k 个 tokens(小于 ChatGPT 最大上下文窗口长度 4096)。这些记录包含水果店的四种常见操作:采购、销售、价格调整和退货。为了评估模型的性能,作者针对销售记录收集了 50 个问题,并为这些问题标注了标准答案。这些问题主要涉及商店数据的分析和管理,它们难度各不相同,既包括需要进行多次推理的困难问题,也包括只需从历史数据中检索信息的简单问题。其中包含了 15 个简单问题和 35 个困难问题。

模型对比:ChatDB 模型中的 LLM 模块使用了 ChatGPT (GPT-3.5 Turbo),温度参数设置为 0,并使用 MySQL 数据库作为其外部符号性记忆模块。对比的基线模型为 ChatGPT (GPT-3.5 Turbo),最大的上下文长度为 4096,温度参数也设置为 0。

指标结果:作者在水果商店问答数据集上进行了实验,相对于 ChatGPT,ChatDB 在这些问题的解答上展现出了显著的优势。

表 1:回答水果商店数据集中问题的正确率

作者表示目前实验还只是在一个简单的合成数据集上进行的,之后会在更复杂更贴近现实需求的场景下进行实验,拓展 ChatDB 的应用价值。

Demo 展示

下面是用大语言模型作为店长经营一家水果商店的例子:

商店进货                                                                                               

顾客购买商品

顾客退货                                                                                             

分析商店历史记录

ChatDB 交互示例:

ChatDB对水果商店数据集中四种常见操作的回应:

ChatDB和ChatGPT回答问题的示例:

这三个例子中,ChatGPT无法正确回答任何问题,但ChatDB成功回答了所有问题。

团队介绍

该论文来自于清华大学 MARS Lab和北京智源研究院,论文的作者为清华大学博士生胡晨旭,杜晨壮,骆思勉,指导老师为付杰,赵行,赵俊博。

清华大学MARS Lab,是清华大学交叉信息院下的人工智能实验室,由赵行教授组建和指导。我们尝试解决一系列探索性的AI问题,并且一直在寻找新的挑战。当前我们特别感兴趣如何让机器像人一样的能够通过多种感知输入进行学习、推理和交互。我们的研究涵盖了许多基础AI问题及其应用:(1)多媒体计算, (2)自动驾驶, (3)机器人。

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

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

相关文章

自动化测试如何区分用例集合?你一定要知道

目录 前言 业务量和复杂度增长现状是什么? 如何区分自动化测试的用例集合? 区分用例集合的过程要注意什么? 总结: 前言 有同学在后台问到:业务比较复杂,有很多串行并行甚至组合的业务场景,执…

NeurIPS 2022|DeepMind最新研究:大模型背后的ICL可能与数据分布密切相关

NeurIPS 2022|DeepMind最新研究:大模型背后的ICL可能与数据分布密切相关 大模型自然语言处理机器学习 传统的文本语言模型倾向于两阶段的训练模式,即首先在大规模语料库上进行预训练,然后在目标下游任务上进行微调,这…

应届毕业生自荐信7篇

应届毕业生自荐信1 尊敬的贵公司领导: 您好! 非常感谢您在百忙中抽空审阅我的自荐信,给予我毛遂自荐的机会。作为一名大专的应届毕业生,我热爱我的专业并为其投入了巨大的热情和精力。在几年的学习生活中,系统学习了物…

入行IC,优选哪些工作城市?

首先大家要知道大公司的一个布局,他们大都是在北上广深,一般他们都是总部,市场客户支持肯定是要放在这些地方,因为这些地方离客户比较近,ZF也能给予一些优惠政策。 国内优秀的IC设计公司主要分布在以下几个城市: 1.上…

创新项目,用心服务 | 凌恩客户亲述“我和凌恩的故事”

主人公简介 武冲,山东省果树研究所草莓团队负责人,副研究员,主要从事草莓新品种选育、种苗繁育及栽培技术研究,主持省部级科研项目3项,以第一作者或通讯作者发表论文30余篇,其中SCI论文8篇,授权…

centos下的Nginx的安装

1.Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强。 其他服务器介绍:Apache服务器、Tomcat服务器、Lighttpd服务器 2.nginx依赖安装 yum -y instal…

Ansible部署和常用模块

一、 ansible 的概述 1、ansible简介 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 …

Codesys高速计数应用(ST功能块)

Codesys如何创建FB请参看下面文章链接: CODESYS增量式PID功能块(ST完整源代码)_RXXW_Dor的博客-CSDN博客增量式PID的详细算法公式和博途源代码,请参看下面的文章链接:博途1200/1500PLC增量式PID算法(详细SCL代码)_博图scl语言pid增量编码器_RXXW_Dor的博客-CSDN博客。http…

Doo Prime 德璞资本:期货开户条件大盘点,你知道几个?

期货交易作为国内投资交易市场中的一大板块,越来越受到广大投资者的关注,期货市场是一种特殊的金融市场,需要满足一定的条件才能开通期货账户,但是很多人想要进行期货交易,却不知道期货开户条件是什么?一般…

【TA100】3.6 纹理压缩

一、什么是纹理压缩 ● 纹理压缩是: ○ 为了解决内存、带宽问题,专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。 ● 区分图片格式和纹理压缩格式 ○ 概念上讲 ■ 图片格式:● 是图片文件的存储格式,通常在硬盘、…

Python之Flask Blueprint(蓝本)

文章目录 一、前言二、实例讲解2.1 蓝本创建2.2 导入蓝本2.3 蓝本注册 参考资料 一、前言 在进行Python Web开发时选择Flask框架。项目模块划分阶段,使用Blueprint(这里暂且称之为“蓝本”)。Blueprint通过把实现不同功能的module分开,从而把一个大的ap…

强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

选择排序 - C语言实现

目录 🥰前言 ✅选择排序 🥝基本思想 🥝实现逻辑 🥝动图演示 复杂度分析 😍代码实现 🚩优化改进-->二元选择排序 😍 改进代码 前言 🥰在学数据结构的第一节课就知道了数据结…

02. 青龙面板应用——安装依赖拉取仓库运行京东脚本(保姆级图文)

目录 1. 安装依赖1.1 常用依赖1.2 安装指定依赖 2. 定时规则3. 常用的仓库地址4. 添加订阅5. 运行订阅6. 获取京东手机版cookie7. 在青龙面板中添加京东cookie8. 测试任意一个京东的定时任务总结 欢迎关注 『青龙面板』 专栏,持续更新中 欢迎关注 『青龙面板』 专栏…

Linux基础服务1——Openssh

文章目录 一、基本简介二、登录示例2.1 当前用户登录2.2 指定用户登录 三、ssh主机密钥四、ssh免密登录五、服务端配置文件5.1 连接端口号5.2 限制只能使用普通用户登录5.3 密钥登录 六、SSH安全注意事项 一、基本简介 常见远程登录工具: telnet,认证明文…

Java 获取水库流域并判断雨量站是否在水库流域范围内或附近

获取水库流域并判断雨量站是否在水库流域范围内或附近 准备工作 水库流域区域的geojson文件雨量站的经纬度 工具类 这里有两个方法: isInsideBoundary:判断雨量站是否在流域范围内calculateNearestDistance:计算雨量站和流域边界点最近距…

100种思维模型之马斯洛需求层次理论-81

马斯洛需求层次理论是人本主义科学理论之一,由美国心理学家亚伯拉罕马斯洛在1943年在《人类激励理论》论文中所提出。 文中将人类需求像阶梯一样从低到高按层次分为五种,分别是:生理需求、安全需求、社交需求、尊重需求和自我实现需求。 一、…

如何使用Divi建立会员网站 – 第1部分

欢迎来到这个由 2部分组成的系列的第 1部分,我将在其中向您展示如何通过结合MemberPress和 Divi来构建一个完整的会员网站。我将带您了解如何设置您的会员网站,其中包含销售在线课程或产品所需的一切,包括自定义注册页面、电子邮件通知以及在…

K8S的架构理论概述

一、Kubernetes介绍 1、什么是Kubernetes? 用于自动部署、扩展和管理“容器化( containerized) 应用程序”的开源系统 可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是–个生态极其丰富的容器编排框架工具 由来: …

打印金字塔图案总结

那么好了好了,宝子们,今天给大家总结一下“打印金字塔图案”,来吧,开始整活!⛳️ 最近在牛客网上刷题,遇到了这个打印类型的题目,我想总结一下,然后分享给大家。 一、正向金字塔 …