论文阅读_CogTree_推理的认知树

news2024/11/25 22:53:57

英文名称: From Complex to Simple: Unraveling the Cognitive Tree for Reasoning with Small Language Models
中文名称: 从复杂到简单:揭示小型语言模型推理的认知树
链接: http://arxiv.org/abs/2311.06754v1
代码: https://github.com/alibaba/EasyNLP
作者: Junbing Yan, Chengyu Wang, Taolin Zhang, Xiaofeng He, Jun Huang, Wei Zhang
机构: 华东师范大学计算机科学与技术学院, 阿里巴巴集团, 上海人工智能教育研究院期刊: EMNLP 2023日期: 2023-11-12

1 读后感

大语言模型的功能主要包括知识能力和思维能力;现在我们越来越多发现模型训练再好也不可能容纳世界知识,幻觉问题再所难免。研究也更多转向模型的思维和解决问题的能力。小模型因其可以本地部署速度快,便于精调,方便验证,成本低而更受关注。这篇论文主要研究如何提升小模型的推理能力。

文中提出了反思树 CogTree,希望通过对小模型的微调和一些附加技巧,替代大模型的推理能力。推理树的根节点表示初始查询,而叶节点则由可以直接回答的简单问题组成。通过两个系统迭代实现:直觉系统负责产生原始问题的多个分解假设,反思系统对直觉系统产生的假设进行验证,并选择更有可能的假设进行后续生成。通过上述双系统的迭代式生成,提升模型准确度。正文 9 页左右。

文中最喜欢的一句话,来自 1957 年,利昂•费斯廷格的《认知失调理论》

In cognitive theory, human decision-making behavior arises from the comparative analysis of various options (Festinger, 1957) 在认知理论中,人类的决策行为源于对各种选项的比较分析。

2 摘要

目标:提升轻量化大语言模型的认知推理能力。

方法:使用迭代方法构建认知树(CogTree),包括直觉系统回答问题和反思系统验证评价;分别利用轻量级大模型精调了两个系统。

结论:实验结果表明,使用比 GPT-3.5 小得多的 7B 语言模型,可以达到与 GPT-3.5 175B 相当的性能水平。

2.1 引言

在认知科学中,埃文斯提出双过程理论:大脑最初采用一种隐含的、无意识的、直观的过程,称为直觉系统,它检索相关信息;接下来用一个明确的、有意识的和可控的推理过程,称为反思系统进行判断;两者迭代进行思考过程。

论文面向轻量化大模型的复杂任务推理,使用较小规模的模型(7B),构建双系统生成推理树。基于人类的认知理论,通过两个系统来模仿人类产生认知的过程。直觉系统(Generation)利用上下文将复杂的问题分解为子问题,并生成对查询的响应。反思系统(Scores)评估直觉系统产生的结果,并选择最有可能的解决方案,为下一轮提供指导。

图 1:CogTree 框架示意图论文的主要贡献包含:

  • 提出了问题分解范式,CogTree 框架
  • 提升了模型的推理能力
  • 证明了方法的有效性

图 2:直观系统和反思系统逐步产生数学推理问题的图示

3 认知树框架

数学和逻辑推理设置中,认知树 T 中的每个节点 n 代表逻辑集中的理论,或数学问题中子问题的解决方案。树的边 e 对应于对当前节点状态 s 的评估,可以是置信度分数或分类结果。

反思系统的辨别能力在提高模型的整体功效方面起着关键作用。文中利用交叉检查技术不仅验证中间结果的精确性,而且在完成推理过程后验证整个推理过程的准确性。为了增强模型评估能力,使用了比较强化方法。引入一个新的训练目标,最大化正确/错误/模棱两可的决策的表示之间的向量空间差异。

4 实现

4.1 直觉系统

直觉系统的生成能力是构建认知树的基础。选择仅包含 decoder-only 的模型(例如,GPT2-XL 或 LLaMA-7B)作为直觉系统。通过上下文方法来增强直觉系统的能力。

在逻辑推理问题的情况下,定义查询 Q,分解 D 将目标进一步分解为较小问题,分解集 Z 表示分解集合,最终采样 k 个可选项。

(下面两个图非常重要,一定要看一看)

图 -3 逻辑推理的查询和分解示例

图 -4 数学问题的查询和分解示例

4.2 反思系统

反思系统用于评估直觉系统的生成结果,确定其可接受性。反思系统采用两种方法来验证结果:中间过程的验证和整个推理链的验证。

当前状态分数:

总分数:

具体实现是:采用基于提示的方法并将其视为分类问题,模型输出三个类别之一:确定、不可能或可能,请参考图 2。

4.3 训练

4.3.1 直觉系统

直觉系统的目标是生成答案,使用监督微调 SFT 精调模型,直觉系统通过利用上下文示例将查询(即复杂问题)分解为子问题。在自回归期间,只对生成的文本计算损失。最大化似然函数:

4.3.2 反思系统

反思系统的目标是打分。由于人类的决策行为源于对各种选择的比较分析,因此采用对比学习方法来增强模型区分不同状态的能力,即最大化正样本和负样本在样本空间中的距离来学习正样本和负样本的表示。对比学习中负采样也非常重要,需要生成更具挑战的负样本。

对比学习的损失函数如下:

反思系统的全损耗函数:

5 算法精度评测

在 Entailment Bank 逻辑推理数据集以及 GSM8K 数学问题数据集上进行了测试。

将文中算法与其他基于大模型微调的方法进行对比:

表 3:测试集在准确性和相对改进方面的整体性能。

结果表明,利用上下文训练的 GPT2-XL(1.5B,仅 ChatGPT 1%)优于 GPT-3.5(175B)。通过结合 CoT 和 ToT 增强方法,GPT-3.5 的准确率大幅提升,达到 92-93%。文中方法与反射系统相结合进行结果验证时,可以实现更高的性能(LLaMA-7B 为 94%),超过了 GPT-3.5 精调效果。

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

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

相关文章

PLC物联网网关BL104实现PLC协议转MQTT、OPC UA、Modbus TCP

随着物联网技术的迅猛发展,人们深刻认识到在智能化生产和生活中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的物联网数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境中。 无缝衔…

【leetcode题解C++】160.相交链表 and 142.环形链表II

​160.相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 示例 1&#xff1…

使用Ultimate-SD-Upscale进行图片高清放大

之前我们介绍过StableSR进行图片高清放大,如果调的参数过大,就会出现内存不足的情况,今天我们介绍另外一个进行图片高清放大的神器Ultimate-SD-Upscale,他可以使用较小的内存对图像进行高清放大。下面我们来看看如何使用进行操作。…

web漏洞总结大全(基础)

前言 本文章是和cike_y师傅一起写的,cike_y博客:https://blog.csdn.net/weixin_53912233?typeblog 也欢迎大家对本文章进行补充和指正,共同维护这个项目,本文的github项目地址: https://github.com/baimao-box/Sum…

力扣343. 整数拆分(动态规划)

Problem: 343. 整数拆分 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该题目可以抽象成动态规划中的爬楼梯模型,将整数的拆分类比为上台阶: 1.每个阶段可以从整数中划分出1、2、…k的一个整数 2.int dp[n 1] dp[i]表示为i的整数划分的最大…

GEE:MCD12Q1土地利用分类产品下载导出制图

导入矢量文件和导出可以看以外博文 var roi ee.FeatureCollection(projects/a-flyllf0313/assets/yidaiyilu); Map.centerObject(roi,5.5)var dataset ee.ImageCollection(MODIS/061/MCD12Q1); var igbpLandCover dataset.select(LC_Type1).mosaic().clip(roi); var igbpLan…

力扣:474. 一和零(动态规划)(01背包)

题目: 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1: 输入&#…

【LeetCode每日一题】2788. 按分隔符拆分字符串

2024-1-20 文章目录 [2788. 按分隔符拆分字符串](https://leetcode.cn/problems/split-strings-by-separator/)思路: 2788. 按分隔符拆分字符串 思路: 对于每个单词,使用一个可变字符串 StringBuilder 来构建拆分后的单词。初始时&#xff0…

高性能前端UI库 SolidJS | 超棒 NPM 库

SolidJS是一个声明式的、高效的、编译时优化的JavaScript库,用于构建用户界面。它的核心特点是让你能够编写的代码既接近原生JavaScript,又能够享受到现代响应式框架提供的便利。 SolidJS的设计哲学强调了性能与简洁性。它不使用虚拟DOM(Vir…

VScode新增设备实现无感接入(不需要输入密码)

VScode远程开发接入设备,默认是需要输入密码的,但是日常开发中刷新就需要重新输入密码,很烦人。配置ssh的RSA密钥后会,就可以直接系统级别验证接入,对开发人员来说验证步骤就透明了,实现无感接入&#xff0…

企业级存储使用的SSD磁盘的健康度问题探讨

写在前面,我的主要工作是销售企业级存储系统的备品备件和提供一些额外的增值服务。谈到销售备件,很重要的就是备件质量了。现在SSD磁盘使用越来越广泛,对于SSD磁盘的健康度就是甲方爷爷们非常关心的一个问题。本文就是想梳理一下企业级SSD固态…

再论 如何通过一个项目征服Java

前面说过,我准备用几个月的时间,将Java体系认真的梳理一遍,不一定做的很好,但是每次都努力去做。 为什么我觉得需要加紧做这个呢?Java早已经不是高大上的稀世珍品了,程序员也不再是高科技工作者&#xff0…

操作系统-操作系统引导(磁盘 操作系统引导过程)

文章目录 总览一个刚买来的磁盘(硬盘)往磁盘安装操作系统后操作系统引导过程例:windows操作系统的初始化程序 总览 一个刚买来的磁盘(硬盘) 此时空空如也 往磁盘安装操作系统后 操作系统在C盘 主引导记录不属于某…

JVM工作原理与实战(二十二):方法区的垃圾回收

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、Java的内存管理和自动垃圾回收 二、方法区的垃圾回收 1.回收条件 2.手动触发垃圾回收 3.方法区的垃圾回收案例 总结 前言 JVM作为Java程序的运行环境,其负责解释和…

beego项目部署与热更新

1.开发自己的第一个项目 这里我引用的是在线聊天室,参考源码是https://github.com/beego/samples/tree/master/WebIM 在源码的基础上重新开发,整理项目发布到了liu289747235/WebIM 推荐下载源码:https://gitee.com/myselfyou/web-im 在线…

如何卸载旧版docker

环境: Docker1.13 centos7.6 问题描述: 如何卸载旧版docker 解决方案: 1.停止Docker服务。使用以下命令停止Docker服务: sudo service docker stop2.卸载Docker软件包。根据您的Linux发行版,使用适当的包管理器来…

ClickHouse/Doris vs Elasticsearch谁更胜一筹?

前言 我之前在ClickHouse vs Doris 读写性能比较 一文中,初步做了一下ClickHouse和Doris的读写性能比较,但由于数据样本比较小,且未发挥出所有硬件资源的性能,因此进行了第二轮压测。 本轮压测与上一轮的区别在于: 新加入了Ela…

用Python实现Excel中的Vlookup功能

目录 一、引言 二、准备工作 三、实现Vlookup功能 1、导入pandas库 2、准备数据 3、实现Vlookup功能 4、处理结果 5、保存结果 四、完整代码示例 五、注意事项 六、总结 一、引言 在Excel中,Vlookup是一个非常实用的函数,它可以帮助我们在表…

有什么提高编程能力的书籍推荐吗?

数据密集型应用系统设计 原文完整版PDF:https://pan.quark.cn/s/d5a34151fee9 这本书的作者是少有的从工业界干到学术界的牛人,知识面广得惊人,也善于举一反三,知识之间互相关联,比如有个地方把读路径比作programming …

Docker进阶篇-安装MySQL主从复制

一、MySQL主服务器 1、新建主服务器容器实例3307 docker run -p 3307:3306 \--name mysql-master \--privilegedtrue \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_…