一个小技巧,显著提升大模型推理能力!加州大学提出MAF多反馈框架

news2024/11/28 20:46:27

作者 | 谢年年

最近,多篇文章《GPT-4的推理能力非常有限,有两篇论文为证》、《DeepMind:无法自我纠正推理,除非提前得知正确答案》指出大模型在推理任务中似乎没有自我改进的能力。即在无任何外部反馈的情况下无法通过自我纠正的形式来改进输出,除非LLM在自我纠正的过程中已经知道了正确答案。

大模型研究测试传送门

GPT-4传送门(免墙,可直接测试,遇浏览器警告点高级/继续访问即可):
http://hujiaoai.cn

那么反过来,如果告诉模型错在哪儿,它能改正吗? 另外,对于有唯一答案的题目来说,正确答案只有一个,错误答案可是千千万,能不能指出具体犯错的某一步对于模型改进来说至关重要。

加利福尼亚大学团队提出了一种名为多方面反馈(Multi-Aspect Feedback)的迭代改进框架。该框架针对不同的错误类型集成了多个反馈模块,每个模块都专注于特定的错误类别,各个击破。实验结果表明,该方法在解决LLM生成的推理链中的多个错误方面表现出了有效性,从而提高了LLM在多个推理任务中的整体性能。

论文标题:
MAF: Multi-Aspect Feedback for Improving Reasoning in Large Language Models

论文链接:
https://arxiv.org/pdf/2310.12426.pdf

Github链接:
https://github.com/deepakn97/MAF/tree/main

MAF:多方面反馈

概览

MAF框架主要由三个关键部分构成:

  1. 基础语言模型使用诸如GPT3.5、GPT4这类的大模型负责生成初始解;

  2. n个反馈模块{f0, f1, f2…fn},每个模块专注于一个错误类别,最终这些模块共同产生一个多方面的反馈;

  3. 改进模块根据初始解和反馈生成优化后的解。

反馈模块

本文将常见错误问题分为十个不同的类别,包括算术、编程语法、变量命名、缺失步骤、连贯性、冗余性、重复性、幻觉、常识和事实性等。

而对错误进行反馈的模块可以是各种工具,例如代码解释器、计算器、知识图谱、语言模型,甚至是经过微调的模型。

不同的反馈模块适用于解决特定类型的问题。例如,像代码解释器这样的外部工具非常适合提供关于代码语法错误的反馈,而微调模型则可以提供如冗余或幻觉等更细致的反馈。这种解耦的方法能够更有针对性的方式处理错误,从而提高改进解决方案的整体质量。

表1显示了用于每个任务及其错误类型的反馈模块。

两种改进策略:急切改进和懒惰改进

Eager-Refinement(急切改进):出现反馈信息后立马改进模型输出。用于可能在细化过程中引起冲突的反馈类型,如Variable Naming(VN)反馈模块(用于修正生成代码中的变量名)。这是因为当其他模块引用一个根据VN反馈应该更改的变量时,如果改进不正确,程序可能无法执行。

Lazy-Refinement(懒惰改进):多个模块的反馈与对应的错误类别一起组成多方面的反馈,然后整体传递给改进模型以获得修订。通过一次细化多个错误来提高效率,并增加了灵活性。

但是多方面反馈有时上下文长度会超过模型的承受范围。 为了解决这个问题,作者采用了选择性摘要的方法,即只选择指出问题的反馈部分token,从而有效地将所有反馈结合起来,并可以在上下文长度较小的模型上使用。

实验结果

本文分别在数学推理数据集GSMIC、GSM8K,逻辑推理数据集EntailmentBank(EB),问答数据集DROP上进行实验,实验结果如表2所示:

其中SR代表Self-Refine[1]方法仅使用单方面的反馈

▲其中SR代表Self-Refine[1]方法仅使用单方面的反馈

结果显示,MAF在各种推理数据集上均优于基准语言模型和Self-Refine。

过度改进

但该方法存在过度改进的问题,即如果已经找到了最优解,强迫语言模型进一步改进会降低推理链的性能和质量。如图3所示,随着迭代次数的增加,MAF与Self-Refine准确率都有所下降

因此,作者增加了一个Oracle验证器。它可以判断模型生成的最终答案是否正确。如果正确则停止改进;否则,让模型继续改进。在这种设置下,过度改进的问题得到有效遏制。

消融实验

不同的反馈模块

前文提到,本文设置了多种不同的反馈模型如表1所示,其中Programming Syntax(编程语法)和Variable Naming(变量命名)使用了急切改进方案。

从图3中可以看到,变量命名和缺失步骤模块对MAFs性能的影响并不是很大,他们真正的作用是使分布偏移更加稳健。

模块前的符号表示移除该反馈模块后MAF的精度。

▲模块前的符号表示移除该反馈模块后MAF的精度。

懒惰vs急切改进

结果清楚地表明,两种改进方式组合比只使用一种改进方式效果更好。

仅依赖懒惰改进可能导致多个反馈类别被压缩成一个提示,导致迭代提示超过很多模型的上下文窗口限制。而仅使用急切改进虽然可以获得即时反馈,但需要使用更多的token,成本过高。两种方式结合降低了成本且增加了可扩展性。

结论

本文提出了多方面反馈(MAF)迭代改进框架,它将反馈模块解耦,并利用特定的工具生成反馈,在多个推理数据集中取得了不错的效果。但作者也发现该框架存在过度的改进,因为模型无法确定自己的答案是否正确,引入外部验证器可以改善这种情况。这也为继续研究大模型推理能力提供了一个方向。

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

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

相关文章

Vue3.0 toRef toRefs :VCA模式

简介 作用: 创建一个ref对象,其value值指向另一个对象中的某个属性 语法: const name toRef(person, name) 应用: 要将响应式对象中的某个属性单独供应给外部使用时 扩展: toRefs与toRef功能一致,但可…

会声会影2023输出文件太大怎么办

会声会影2023是一款专业的视频编辑软件,它由于简单易学的操作被众人所喜爱。在会声会影中编辑好的视频一般以渲染的形式导出保存,但是有时会出现输出文件太大的情况,这到底是什么原因呢?下面由我带大家一起来了解会声会影输出文件…

每天学习都很累,该怎么办?

中考淘汰一批人,高考又淘汰一批人,能杀进大学的,都知道高考的累。好不容易进了大学,却发现仍有打卡、作业、考试。 加上每天满满的课表,只是看看就让人心累。 为了奖学金或升学就业,又得去卷绩点、卷比赛、…

【Linux】Linux+Nginx部署项目(负载均衡动静分离)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Nginx负载均衡 1.什么是负载均衡 2.实…

AIGC驱动,商业翻新,拓世法宝AI智能直播一体机,绘就商业革命新篇章

迈入数字新纪元,AIGC技术掀起了全球范围内的内容创作革命。这种借人工智能之力突破创造力边界的技术,已将内容生成的门槛降至前所未有的低点。AIGC凭借其惊艳的内容生成能力,收获了众人的瞩目。这不是一瞬间的激情释放,而是新时代…

UML类图关系

1.依赖 依赖关系由箭头表示,含义为A类在类中用到了B类,如B类作为A类的属性、参数、返回值等都属于依赖关系。 2.泛化(继承) 泛化用三角箭头和直线表示,extend。 3.实现 实现用三角箭头和虚线表示,在…

订水商城实战教程07-搜索

目录 1 创建数据源2 首页搜索功能3 创建搜索页面4 搭建搜索结果页面总结 上一篇我们讲解了店铺信息的展示功能,本篇讲解一下搜索功能。通常小程序在首页都配置了搜索的功能,输入关键词进行检索,可以在结果页上进行选购。同时还记录了用户的搜…

博客系统自动化测试项目实践

文章目录 一.测试需求分析1.功能分析2.非功能分析 二.制定测试方案(计划 策略)三.编写测试用例四.执行自动化测试用例五.编写测试报告六.项目总结 一.测试需求分析 1.功能分析 通过功能测试需求分析 2.非功能分析 非功能分析主要从:界面,性能,安全性,…

jmeter性能测试如何实现分布式部署

jmeter什么要做分布式部署? jmeter是运行在JVM虚拟机上的,当模拟大量并发时,对运行机器的性能/网络负载会很大。 此时就需要使用jmeter的分布式部署功能,实现多台被控机器同时并发访问被测系统。 原理图: 准备工作&…

小型取暖器上亚马逊美国站UL1278标准如何办理?

小型取暖器上亚马逊美国站UL1278标准如何办理? 小型取暖器上亚马逊美国站UL1278标准如何办理? 冬季马上就要来临,随着气温一天一天的下降,取暖器就是这个冬季必不可少的好物了,试想一下冬天一家人围着取暖器&#xf…

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的Checksum(校验和)字段的计算(这里才能解开你的困惑)

首先,我当你看过书,但是比较懵。 1,实例说明Checksum(校验和)的计算步骤 直奔主题,分析一下这个Checksum(校验和)怎么算出来的。 先用Wireshark随便抓一个UDP或TCP包分析一下。 如上面,我们得…

SIP 系统容器化实践

由于SIP系统相对成熟,目前互联网上的SIP系统方案大多数都是基于虚拟机来实现的。 本文是基于容器化实现SIP系统的方案以及遇到的问题总结。 本文会展示两个系统的SIP实现,分别是智能语音机器人和CTI系统,不会涉及太多的业务,只是对…

前端实验(一)单页面应用的创建

实验目的 掌握使用vite创建vue3单页面程序命令熟悉所创建程序的组织结构熟悉单页面程序运行原理能够编写简单的单页面程序 实验内容 创建一个名为vue-demo的单页面程序编写简单的单页面程序页面运行单页面程序 实验步骤 使用vite创建单页面程序 创建项目名为目录vue-demo的…

【缓存】Spring全家桶中@CacheEvict无效情况共有以下几种

Spring全家桶中CacheEvict无效情况共有以下几种 一、背景介绍二、原因分析三、解决方案 一、背景介绍 SpringBoot中使用Cacheable注解缓存数据,使用CacheEvict注解删除缓存。但是在项目使用过程中,发现使用CacheEvict注解删除缓存无效。 拓展&#xff…

GORM:在Go中轻松管理数据库

GORM综合介绍 - Go对象关系映射库 在现代软件开发中,高效的数据库管理对于构建强大的应用程序至关重要。GORM是Go开发人员寻求与数据库进行交互的简化方式的宝贵工具。GORM是Go对象关系映射的缩写,它为Go的面向对象世界与数据库的关系世界之间提供了桥梁…

【Flink】全网最详细4W字Flink全面解析与实践(上)

本文已收录至GitHub,推荐阅读 👉 Java随想录 微信公众号:Java随想录 原创不易,注重版权。转载请注明原作者和原文链接 文章目录 流处理 & 批处理无界流Unbounded Streams有界流Bounded Streams Flink的特点和优势Flink VS Spa…

兴业银行养老金拉新项目上线啦,地推百搭项目

兴业银行养老金就在 ”聚量推客“ 申请开通 今年最火的银行拉新项目就是养老金的 单价高 数据好 目前开通养老金的银行有 兴业银行养老金拉新 交通银行养老金拉新 工商银行养老金拉新 招商银行养老金拉新 浦发银行养老金拉新 广发银行养老金拉新等。。还有很多都开通了…

Nignx及负载均衡动静分离

目录 一.Nignx简介 二.nginx搭载负载均衡 负载均衡 1.1启动nginx ​编辑 ​编辑 1.2开始 1.3导入前端数据 ​编辑 三.前端项目Linux部署(动静分离) 一.Nignx简介 Nginx是一个高性能的开源HTTP和反向代理服务器,也可以用作电子邮件(SMTP/IMAP&am…

前端(二十七)——封装指南:Axios接口、常用功能、Vue和React中的封装技术

😊博主:小猫娃来啦 😊文章核心:前端封装指南:Axios接口、常用功能、Vue和React中的封装技术 本文目录 小引前端封装以真实项目举个例子 Axios接口封装常用功能封装封装 Vue中的封装技术React中的封装技术Vue和React封装…

基于Java+SpringBoot+Vue+Uniapp小程序前后端分离租房管理系统设计与实现(支持支付宝支付、有需求解析文档50页、演示视频)

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…