基于大语言模型的复杂任务认知推理算法CogTree

近日,阿里云人工智能平台PAI与华东师范大学张伟教授团队合作在自然语言处理顶级会议EMNLP2023上发表了基于认知理论所衍生的CogTree认知树生成式语言模型。通过两个系统:直觉系统和反思系统来模仿人类产生认知的过程。直觉系统负责产生原始问题的多个分解假设,反思系统对直觉系统产生的假设进行验证,并选择更有可能的假设进行后续生成,直到达到最终结果。通过上述双系统的迭代式生成,可以提升大模型的解题准确度。

论文:

Junbing Yan, Chengyu Wang, Taolin Zhang, Xiaofeng He, Jun Huang, Wei Zhang. From Complex to Simple: Unraveling the Cognitive Tree for Reasoning with Small Language Models. EMNLP 2023 (Findings)

背景

随着深度学习在自然语言处理、机器翻译等任务上的不断发展,人们对如何将深度学习应用到自然语言处理中越来越感兴趣,由此出现了大语言模型(例如GPT-3.5),并已在文本生成、情感分析、对话系统等多个任务上取得了重大突破。大语言模型通常基于大规模文本数据进行预训练,然后通过微调在特定任务上进行优化,以生成高质量的文本输出。然而,对于语言模型而言,复杂的逻辑推理问题和数学问题的求解仍然是很困难的。并且,传统的语言模型缺乏认知能力。在处理涉及冗长的推理链或多步解决方案的问题时,对于问题及其当前回答的评估是很重要的。然而,目前的方法例如Chain-of-thought等通常缺乏对于中间过程的验证。并且大型语言模型的部署和推理成本相对较高,特别是在利用无参数更新的推理增强技术时。这些技术需要大量的上下文和多步的答案生成,进一步增加了推理成本和时间。

因此,本文研究面向轻量化大模型的复杂任务推理,使用较小规模的模型(7B),构建双系统生成推理树,大大增强模型在复杂数学问题和逻辑推理问题上的回答能力。提出了一种大模型面向复杂数学问题的求解方法。该方法基于人类的认知理论,通过两个系统:直觉系统和反思系统来模仿人类产生认知的过程。直觉系统负责产生原始问题的多个分解假设,反思系统对直觉系统产生的假设进行验证,并选择更有可能的假设进行后续生成,直到达到最终结果。通过上述双系统的迭代式生成,可以提升大模型的解题准确度。

算法概述

为了解决上述大模型对复杂任务推理准确度不高且推理成本大的问题,CogTree采用双系统的方式,用大模型分别构建两个系统:直觉系统和反思系统,使用直觉系统生成原问题分解的假设,使用反思系统验证假设的正确性,引导直觉系统后续的生成。模型框架图如下所示:

通过双系统迭代式的生成一棵推理树,增强大模型的推理能力。本方法的创新性是面向大语言模型,设计了一套新的推理框架,增强大模型在复杂数学问题上的推理能力。

直觉系统

直觉系统的生成能力是构建认知树的基础。因此,选择仅包decoder-only的模型(例如,GPT2-XL或LLaMA-7B)作为直觉系统。通过上下文方法来增强直觉系统的能力。定义查询Q为逻辑推理问题的最终目标或数学问题。在逻辑推理问题的情况下,分解D涉及将目标进一步分解为较小问题,通过对这些分解进行推理,可以实现最终目标。对于数学问题,它指的是从原始问题中导出的子问题之一,解决这个子问题有助于解决整个原始问题。分解集合表示训练集中所有示例的分解集合。从推理分解集合中检索k个示例(例如,查询:Q;分解:询:D),然后将它们用作模型输入的上下文。输出可以生成为y∼fθ​(y∣x,z1…k​)。这里,z代表从分解集合Z中检索到的k个示例,其中Z=\{z_1,\cdots, z_L\}。使用直觉系统获取当前查询的表示,并计算与集合中其他查询的表示的余弦相似度。然后,我们从集合中检索出最相似的k个查询。其中[y] \sim f_\theta(y | x, z_{1 \cdots K})是一个连续语言序列。

反思系统

反思系统在作用上与直觉系统不同。直觉系统依赖于快速直觉进行生成,而反思系统的作用是评估直觉系统的生成结果以确定其可接受性。反思系统通过采用两种方法来验证结果:中间过程的验证和整个推理链的验证。给定当前状态s(查询:Q与分解:D),使用与直觉系统相同的模型架构的反思系统来生成一个验证当前状态的分数v。这可以表示为V(f_\theta,s) \sim f_\theta(v | s)。此外,基于完整的推理链S=\{s_1,\cdots, s_i,\cdots, s_n\}。使用反思系统来产生一个整体分数o,可以表示为O(f_\theta,S) \sim f_\theta(o | S)。反思系统与直觉系统不同,其主要任务是评估和验证当前状态和整个推理链的可行性,而不是像直觉系统那样产生快速假设。这种评估过程有助于确保生成的假设和推理过程是合理的。

训练

直觉系统

Supervised Fine-tuning (SFT)已经证明了其在对其人类意图上的有效性。在我们的方法中,直觉系统通过利用上下文示例将查询 Q(即复杂问题)分解为子问题。由于我们使用生成模型作为直觉系统,因此在自回归计算期间,仅对生成的文本(不包括给定的上下文)进行损失计算。给定一个长度为N的样本,表示为X,其中X=\{x_1,\cdots, x_i,\cdots, x_n\}

。我们定义上下文示例的序列长度为M。 我们使用标准的语言建模目标来最大化以下似然函数:\mathcal{L}_{\mathcal{IS}}=\sum_{i>M}^N log \ P(x_i | x_1, \cdots, x_{i-1}; \theta)

反思系统

反思系统采取与直觉系统相同的训练方法,利用正负样本让模型从中生成分类结果。由于反思系统主要关注状态s的判断,损失函数可以定义如下 :\mathcal{L}_{\mathcal{RS}} = \log P(v | s; \theta) 。

算法精度评测

为了验证CogTree算法的有效性,我们在Entailment Bank逻辑推理数据集以及GSM8K数学问题数据集上进行了测试,效果证明CogTree对大模型复杂任务上的回答准确率提升明显:

我们也将算法与其他基于大模型微调的方法进行对比,证明了CogTree框架的有效性。

为了更好地服务开源社区,CogTree算法的源代码即将贡献在自然语言处理算法框架EasyNLP中,欢迎NLP从业人员和研究者使用。

EasyNLP开源框架:GitHub - alibaba/EasyNLP: EasyNLP: A Comprehensive and Easy-to-use NLP Toolkit

参考文献

  • Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. EMNLP 2022
  • Karl Cobbe, Vineet Kosaraju, Mohammad Bavarian, Mark Chen, Heewoo Jun, Lukasz Kaiser, Matthias Plappert, Jerry Tworek, Jacob Hilton, Reiichiro Nakano, Christopher Hesse, and John Schulman. 2021a. Training verifiers to solve math word problems. CoRR, abs/2110.14168
  • Denny Zhou, Nathanael Schärli, Le Hou, Jason Wei, Nathan Scales, Xuezhi Wang, Dale Schuurmans, Olivier Bousquet, Quoc Le, and Ed H. Chi. 2022. Least-to-most prompting enables complex reasoning in large language models. CoRR, abs/2205.10625
  • Jonathan St B. T. Evans. 1984. Heuristic and analytic processes in reasoning. British Journal of Psychology, 75(4):451–468

论文信息

论文标题:From Complex to Simple: Unraveling the Cognitive Tree for Reasoning with Small Language Models
论文作者:严俊冰、汪诚愚、张涛林、何晓丰、黄俊、张伟
论文pdf链接:https://arxiv.org/abs/2311.06754

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

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

相关文章

10 # 类:继承和成员修饰符

类的基本实现 类的成员属性都是实例属性,而不是原型属性,类的成员方法都是原型方法。 class Dog {constructor(name: string) {this.name name;}name: string;run() {} }console.log(Dog.prototype); let dog new Dog("wangwang"); consol…

知识笔记(五十四)———mysql比较varchar值大小_Mysql varchar大小长度问题

1、限制规则 字段的限制在字段定义的时候有以下规则: a) 存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。 b) 编码长度限制 字符类…

低功耗模式的通用 MCU ACM32F0X0 系列,具有高整合度、高抗干扰、 高可靠性的特点

ACM32F0X0 系列是一款支持多种低功耗模式的通用 MCU。集成 12 位 1.6 Msps 高精度 ADC 以及比 较器、运放、触控按键控制器、段式 LCD 控制器,内置高性能定时器、多路 UART、LPUART、SPI、I2C 等丰富的通讯外设,内建 AES、TRNG 等信息安全模块&#xff0…

kubeadm搭建单master多node的k8s集群--小白文,图文教程

参考文献 K8S基础知识与集群搭建 kubeadm搭建单master多node的k8s集群—主要参考这个博客,但是有坑,故贴出我自己的过程,坑会少很多 注意: 集群配置是:一台master:zabbixagent-k8smaster,两台…

C++类和对象——(10)综合示例

一、示例对象数组&#xff1a; #include<iostream> using namespace std;class Point{private:int x,y;public:Point(int px0,int py0){xpx;ypy;}void init(int px0,int py0){xpx;ypy;}void print(){cout<<"("<<x<<","<<y…

FFmpeg的AVInputFormat

文章目录 结构体定义操作函数支持的AVOutputFormat 通过上面的分析&#xff0c;基本可以看到ffmpeg的套路了&#xff0c;首先一个context上下文&#xff0c;上下文里面一个priv_data 指针&#xff0c;然后再插件结构体中有一个priv_data_size&#xff0c;然后回调函数。 结构体…

JVM-GC调优-字节码篇-01

笔记来源&#xff1a;JVM 注意&#xff1a;实在想学习可以看一下&#xff0c;让自己更加了解JVM&#xff0c;看起来可能会枯燥。 JVM-概述 1、你的问题 1.1你被JVM伤害过吗&#xff1f; 你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访…

Flink SQL: 高效解析 Kafka 数据并存储为 Parquet 至 HDFS

目录 总体流程介绍 1. 从 Kafka 读取数据 2. 使用 UDF 进行数据解析 3. 将

HTML中如何设置音频和视频?

文章目录 &#x1f50a;嵌入音频&#x1f39e;️嵌入视频 &#x1f50a;嵌入音频 HTML 元素用于在文档中嵌入音频内容。 元素可以包含一个或多个音频资源&#xff0c; 这些音频资源可以使用 src 属性或者 元素来进行描述&#xff1a;浏览器将会选择最合适的一个来使用。也可以使…

Centos7云服务器上安装cobalt_strike_4.7。附cobalt_strike_4.7安装包

环境这里是阿里的一台Centos7系统。 开始安装之前首先要确保自己安装了java11及以上环境。 安装java11步骤&#xff1a; sudo yum update sudo yum install java-11-openjdk-devel把服务器端&#xff08;CS工具分服务器端和客户端&#xff09;的CS安装到服务器上后给目录下的…

Mongoose 对象文档模型库

一、介绍 Mongoose是一个对象文档模型库&#xff0c;官网&#xff1a;http://www.mongoosejs.net/ 二、作用 方便使用代码操作Mongodb数据库 三、使用流程 //1. 安装 mongoose //2. 导入 mongoose const mongoose require(mongoose); //3. 连接数据库 mongoose.connect(m…

某省资源交易中心 (js逆向)

该文章只是用于逆向学习&#xff0c;不得以商用或者是破坏他人利益的目的进行使用。如有侵权请联系作者。 网站链接&#xff1a; bse64 aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9idXNpbmVzcy9saXN0Lw 分析环节 进入网站 进行翻页请求时我们会发现改请求时ajax请求。 这里&…

hive-窗口函数

1 窗口函数语法 分析函数/专用窗口函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用的分析函数 常用的分析函数&#xff1a;sum()、max()、min()、avg()、count() 常用的专用窗口函数 专用窗口函数&#xff1a;row_number()、rank()、dens…

【简易版】Linux下Protobuf 实现网络版通讯录--C++

一、介绍 该项目的主要目的是用于熟悉protobuf的使用&#xff0c;体验数据在网络中序列化反序列化的形式&#xff0c;并非一个完整的项目。 该通讯录只实现了增加联系人的功能。服务器端接收到请求后会将联系人的信息打印。 二、环境搭建 使用Httplib库&#xff0c;可以快速…

jsp文件引用的css修改后刷新不生效问题

问题 在对 JavaWeb 项目修改的过程中&#xff0c;发现修改了 jsp 文件引入的 css 文件的代码后页面的样式没有更新的问题。 原因 导致这个问题的原因可能是因为浏览器缓存的问题。 解决方法 下面介绍两种解决方法&#xff0c;供大家参考&#xff1a; 1、给 link 标签的 c…

TrustZone之安全虚拟化

在Armv7-A首次引入虚拟化时,它仅在非安全状态中添加。在Armv8.3之前,Armv8也是如此,如下图所示: 如前所述在切换安全状态时,EL3用于托管固件和安全监视器。安全EL0/1托管受信任的执行环境(TEE),由受信任的服务和内核组成。 在安全状态下,没有对多个虚拟机的需…

Java基础——什么是main方法

main方法是Java虚拟机调用的入口&#xff0c;该方法的权限必须是public&#xff0c;Java虚拟机在执行main方法时不必创建对象&#xff0c;所以该方法是static修饰&#xff0c;接收一个String类型的数组参数&#xff0c;数组保存执行Java命令时传递给所运行的类的参数&#xff0…

基于微信小程序和Spring、SpringMVC、MyBatis的汽车租赁管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于微信小程序和Spring、SpringMVC、My…

Kafka生产问题总结及性能优化实践

1、消息丢失情况 消息发送端&#xff1a; &#xff08;1&#xff09;acks0&#xff1a; 表示producer不需要等待任何broker确认收到消息的回复&#xff0c;就可以继续发送下一条消息。性能最高&#xff0c;但是最容易丢消息。大数据统计报表场景&#xff0c;对性能要求很高&am…

JavaCV之rtmp推流(FLV和M3U8)

JavaCV与FFmpeg FFmpeg是一款开源的多媒体处理工具集&#xff0c;它包含了一系列用于处理音频、视频、字幕等多媒体数据的库和工具。 JavaCV集成了FFmpeg库&#xff0c;使得Java开发者可以使用FFmpeg的功能&#xff0c;比如视频解码、编码、格式转换等。 除了FFmpeg&#xff0…