论文阅读_CogTree_推理的认知树

英文名称: 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 精调效果。

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

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

相关文章

深入解析 JavaScript 中的 setTimeout() 和 setInterval()

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 setTimeout() 和 setInterval() 是 JavaScript 中非常常用的定时函数…

Django从入门到精通(一)

目录 一、Django环境搭建与命令 1.1、安装 1.2、命令行 创建项目 编写代码 运行 app概念 1.3、Pycharm创建项目 1.4、虚拟环境 创建虚拟环境 - 命令行 介绍 操作 基本问题 Pycharm 项目虚拟环境 django虚拟环境【安装django最新版本】 django虚拟环境【安装指…

frida https抓包

web端导入证书、https代理即可解决大部分需求,但是,有些app需要处理ssl pinning验证。 废话不多说。frida处理ssl pin的步骤大体如下。 安装python3.x,并在python环境中安装frida: pip install frida pip install frida-tools下载frida-se…

【设计模式】你知道游戏SL大法是什么设计模式吗?

什么是备忘录模式? 老规矩,我们先来看看备忘录模式 (Memento) 的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 它的UML类图如下&a…

Django(八)

1. 管理员操作 1.1 添加 from django.shortcuts import render, redirectfrom app01 import models from app01.utils.pagination import Paginationfrom django import forms from django.core.exceptions import ValidationError from app01.utils.bootstrap import BootStr…

【MySQL】where和having的区别

🍎个人博客:个人主页 🏆个人专栏:数据库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 用途: 使用位置: 操作对象: 聚合函数: 示例: 结语 我的其他博客 前言 数据库中的 WHERE 和 HAVING 子句在 SQL 查…

排序算法整理

快速排序 C实现 void fastStore(int *a, int start, int end){if(start>end)return ;int leftstart;int rightend;int tempa[left];//设置基准值tempwhile(left < right) //左指针的位置一定小于右指针的位置{while(a[right]>temp && left < right) //左…

RabbitMQ-消息延迟

一、死信交换机 1、描述 一个队列接收到的消息有过期时间&#xff0c;消息过期之后&#xff0c;如果配置有死信队列&#xff0c;消息就会进去死信队列。 2、图解 3、过程 当生产者将消息发送到exchange1&#xff0c;然后交换机将消息路由到队列queue1&#xff0c;但是队列que…

快速入门:使用 Gemini Embeddings 和 Elasticsearch 进行向量搜索

Gemini 是 Google DeepMind 开发的多模态大语言模型家族&#xff0c;作为 LaMDA 和 PaLM 2 的后继者。由 Gemini Ultra、Gemini Pro 和 Gemini Nano 组成&#xff0c;于 2023 年 12 月 6 日发布&#xff0c;定位为 OpenAI 的竞争者 GPT-4。 本教程演示如何使用 Gemini API 创建…

浅析Java中volatile关键字

认识volatile关键字 Java中的volatile关键字用于修饰一个变量&#xff0c;当这个变量被多个线程共享时&#xff0c;这个变量的值如果发生更新&#xff0c;每个线程都能获取到最新的值。volatile关键字在多线程环境下还会禁止指令重排序&#xff0c;确保变量的赋值操作按照代码的…

书生·浦语大模型实战营-学习笔记4

XTuner 大模型单卡低成本微调实战 Finetune简介 常见的两种微调策略&#xff1a;增量预训练、指令跟随 指令跟随微调 数据是一问一答的形式 对话模板构建 每个开源模型使用的对话模板都不相同 指令微调原理&#xff1a; 由于只有答案部分是我们期望模型来进行回答的内容…

敏捷测试和DevOpes自动化测试的区别

敏捷测试和DevOps自动化测试在以下方面存在区别&#x1f447; 1️⃣目标 &#x1f388;敏捷测试的主要目标是提供快速的反馈和持续的改进&#xff0c;以便在开发过程中尽早发现和解决问题&#xff0c;从而提高软件的质量和可靠性。 &#x1f308;DevOps自动化测试的目标是提高软…

C语言算法赛——蓝桥杯(省赛试题)

一、十四届C/C程序设计C组试题 十四届程序C组试题A#include <stdio.h> int main() {long long sum 0;int n 20230408;int i 0;// 累加从1到n的所有整数for (i 1; i < n; i){sum i;}// 输出结果printf("%lld\n", sum);return 0; }//十四届程序C组试题B…

统计学-R语言-7.1

文章目录 前言假设检验的原理假设检验的原理提出假设做出决策表述结果效应量 总体均值的检验总体均值的检验(一个总体均值的检验) 练习 前言 本章主题是假设检验(hypothesis testing)。与参数估计一样&#xff0c;假设检验也是对总体参数感兴趣&#xff0c;如比例、比例间的差…

负载均衡流程

1、负载均衡流程图 2、触发负载均衡函数trigger_load_balance void trigger_load_balance(struct rq *rq) { /* Dont need to rebalance while attached to NULL domain */ if (unlikely(on_null_domain(rq)))//当前调度队列中的调度域是空的则返回 return; i…

SpringMVC数据校验

导包 配置springmvc.xml <bean id"validator" class" org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name"providerClass" value"org.hibernate.validator.HibernateValidator ">…

『C++成长记』模板

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、泛型编程 二、函数模板 &#x1f4d2;2.1函数模板概念 &#x1f4d2;2.2函数…

羊驼系列大模型LLaMa、Alpaca、Vicuna

羊驼系列大模型&#xff1a;大模型的安卓系统 GPT系列&#xff1a;类比ios系统&#xff0c;不开源 LLaMa让大模型平民化 LLaMa优势 用到的数据&#xff1a;大部分英语、西班牙语&#xff0c;少中文 模型下载地址 https://huggingface.co/meta-llama Alpaca模型 Alpaca是斯…

ELK之Grafana读取ES-Nginx数据后地图不展示的问题

一、背景&#xff1a;Grafana读取ES-Nginx数据后地图不展示 二、解决方法 [rootsg grafana-worldmap-panel]# pwd /var/lib/grafana/plugins/grafana-worldmap-panel [rootsg grafana-worldmap-panel]# [rootsg grafana-worldmap-panel]# sed -i s/https:\/\/cartodb-basemap…

基于SpringBoot Vue高校失物招领系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…