当前位置: 首页 > article >正文

【AI论文】CodeARC:评估归纳程序合成中大语言模型代理的推理能力基准

摘要:归纳程序合成,或称示例编程,要求从输入输出示例中合成能够泛化到未见输入的函数。尽管大型语言模型代理在自然语言指导下的编程任务中展现出了潜力,但它们在执行归纳程序合成方面的能力仍待深入探索。现有的评估协议依赖于静态的示例集和保留测试集,当合成的函数不正确时无法提供反馈,且未能反映现实世界场景,如逆向工程。我们提出了CodeARC,即代码抽象与推理挑战,这是一个新的评估框架,其中代理通过与隐藏的目标函数交互,使用新输入进行查询,合成候选函数,并利用差分测试预言器迭代地精炼其解决方案。这种交互式设置鼓励代理基于反馈执行函数调用和自我修正。我们构建了第一个针对通用归纳程序合成的大规模基准,其中包含1114个函数。在评估的18个模型中,o3-mini表现最佳,成功率为52.7%,凸显了这项任务的难度。对LLaMA-3.1-8B-Instruct在精心挑选的合成轨迹上进行微调,可使性能相对提升高达31%。CodeARC为评估基于LLM的程序合成和归纳推理提供了一个更现实且更具挑战性的测试平台。Huggingface链接:Paper page,论文链接:2503.23145

研究背景和目的

研究背景

随着人工智能技术的飞速发展,大型语言模型(LLMs)在各个领域的应用日益广泛。特别是在程序合成领域,LLMs展现出了巨大的潜力。然而,传统的程序合成方法往往依赖于领域特定的语言和搜索算法,限制了其通用性和扩展性。归纳程序合成(Inductive Program Synthesis),或称示例编程(Programming by Example),作为一种从输入输出示例中合成能够泛化到未见输入的函数的方法,为解决这一问题提供了新的思路。这种方法不需要自然语言描述,而是直接通过示例来指导程序合成,更加贴近实际编程场景。

尽管LLMs在自然语言处理和编程任务中取得了显著进展,但它们在归纳程序合成方面的能力仍待深入探索。现有的评估协议多依赖于静态的示例集和保留测试集,无法提供合成函数不正确时的反馈,且难以反映现实世界中的复杂场景,如逆向工程等。因此,需要一种更加现实且富有挑战性的评估框架来全面测试LLMs在归纳程序合成中的推理能力。

研究目的

本研究旨在提出一个新的评估框架——CodeARC(Code Abstraction and Reasoning Challenge),用于评估LLMs在归纳程序合成中的推理能力。通过构建一个交互式的评估环境,使代理能够通过与隐藏目标函数的交互,不断查询新输入、合成候选函数,并利用差分测试预言器迭代地精炼其解决方案。这种设置不仅能够测试LLMs的归纳推理能力,还能鼓励代理基于反馈进行自我修正,从而更加贴近实际编程场景。

此外,本研究还旨在构建一个针对通用归纳程序合成的大规模基准数据集,为未来的研究提供一个标准的测试平台。通过评估多种LLMs在该基准上的表现,揭示它们在归纳程序合成中的优势和局限性,为未来的模型改进和应用提供指导和参考。

研究方法

问题定义

归纳程序合成任务被正式定义为:给定一个隐藏的目标函数f,该函数将输入x映射到输出y,合成器被提供一组初始的输入输出示例E0={(xi, yi)},其中yi=f(xi),目标是合成一个程序f,使得f等价于f,即对于所有x∈X,都有^f(x)=f(x)。为了评估合成的函数f是否正确,我们引入了一个差分测试预言器O。该预言器接收合成的函数f和隐藏的目标函数f*作为输入,并尝试找到使两者行为不一致的输入。

交互式评估协议

为了评估LLMs在归纳程序合成中的推理能力,我们提出了一种交互式评估协议。该协议允许代理在评估过程中与隐藏的目标函数和差分测试预言器进行交互。具体步骤如下:

  1. 初始信息:在任务开始时,代理被提供一组初始的输入输出示例E0。
  2. 动作空间:在评估过程中,代理可以采取两种类型的动作。首先,它可以向隐藏的目标函数f查询特定输入x的输出f(x),从而扩充其观察到的输入输出对集合。其次,它可以合成一个候选程序f,并调用差分测试预言器O(f*, f)来检查该程序是否正确。
  3. 自我修正:如果差分测试预言器返回失败,并提供一个反例(即一个使^f和f行为不一致的输入),代理将使用这个反例来进行自我修正,要么通过向f发出更多查询,要么合成新的程序。
  4. 预算约束:代理在评估过程中受到两个预算参数的限制:B_io限制了代理可以从隐藏目标函数f*观察到的输入输出对的总数;B_oracle限制了代理可以调用差分测试预言器O的次数。

基准数据集构建

为了全面评估LLMs在归纳程序合成中的推理能力,我们构建了一个大规模的基准数据集。该数据集包含1114个通用目的的Python函数,这些函数从三个现有的代码生成基准(HumanEval、MBPP和APPS)中精心挑选而来。为了确保评估的公正性,我们提供了两个版本的数据集:注释版本和匿名版本。在注释版本中,函数名反映了其预期功能;而在匿名版本中,所有函数名都被替换为通用标识符。

模型评估与微调

为了评估不同LLMs在CodeARC基准上的表现,我们选取了18个大型语言模型进行测试。为了进一步提升模型性能,我们还探索了通过监督微调来增强模型归纳推理能力的方法。具体地,我们使用GPT-4o作为教师模型来合成候选函数,并记录其多轮对话历史。然后,我们使用LLaMA-3.1-8B-Instruct作为学生模型,通过模仿教师模型的推理和合成行为来进行微调。

研究结果

主要结果

在CodeARC基准上,我们评估了18个大型语言模型的表现。实验结果表明,推理模型(如o3-mini、o1-mini和DeepSeek-R1)在匿名数据集上取得了最高的成功率,均超过40%。这表明这些模型具有较强的归纳推理能力。此外,所有模型在匿名数据集上的表现均低于注释数据集,但整体排名保持一致。这说明尽管有意义的函数名提供了一些帮助,但强大的归纳推理能力仍然是高性能的关键因素。

我们还发现,随着模型规模的增大,其在CodeARC基准上的表现也逐步提升。这表明通过增加模型参数数量,可以进一步提高LLMs在归纳程序合成中的推理能力。

消融研究

为了深入理解不同因素对模型性能的影响,我们还进行了一系列消融研究。实验结果表明,增加输入输出查询预算和差分测试预言器调用次数可以显著提升模型的成功率。这验证了交互式评估协议的有效性,并表明通过提供更多的反馈信息,可以进一步提高LLMs在归纳程序合成中的表现。

案例研究

我们还通过案例研究来展示模型在CodeARC基准上的实际表现。一个典型的案例是,模型首先通过向隐藏目标函数查询边缘案例输入来探索其行为,然后合成一个候选解决方案。尽管该方案通过了初始示例测试,但在差分测试预言器的检查下失败。根据错误信息,模型正确地推断出隐藏目标函数会引发一个TypeError,而它自己的函数则没有。在第二次尝试中,模型采用了一个基于集合的解决方案,并成功通过了差分测试预言器的检查。这个案例展示了模型如何通过函数调用和差分测试预言器的反馈来进行自我修正和归纳推理。

研究局限

尽管本研究在评估LLMs归纳推理能力方面取得了显著进展,但仍存在一些局限性:

  1. 基准数据集规模:尽管我们构建了一个包含1114个函数的大规模基准数据集,但其规模仍然有限,可能无法全面反映归纳程序合成的复杂性。未来的研究可以进一步扩展数据集规模,以涵盖更多类型的函数和更复杂的场景。
  2. 模型泛化能力:尽管我们在匿名数据集上评估了模型的泛化能力,但现实世界中的归纳程序合成任务可能更加复杂和多变。未来的研究可以探索如何通过改进模型架构和训练方法,进一步提高LLMs在归纳程序合成中的泛化能力。
  3. 交互式评估效率:虽然交互式评估协议能够提供更丰富的反馈信息,但其效率可能受到输入输出查询预算和差分测试预言器调用次数的限制。未来的研究可以探索如何在保证评估准确性的同时,提高交互式评估的效率。

未来研究方向

针对当前研究的局限性,我们提出以下未来研究方向:

  1. 扩展基准数据集:进一步扩展CodeARC基准数据集的规模,涵盖更多类型的函数和更复杂的场景,以更全面地评估LLMs在归纳程序合成中的推理能力。
  2. 增强模型泛化能力:通过改进模型架构和训练方法,提高LLMs在归纳程序合成中的泛化能力。例如,可以探索使用更复杂的网络结构和更先进的训练技术来增强模型的表示学习能力和归纳推理能力。
  3. 提高交互式评估效率:研究如何在保证评估准确性的同时,提高交互式评估的效率。例如,可以探索使用更高效的差分测试预言器或采用更智能的查询策略来减少不必要的输入输出查询和差分测试预言器调用次数。
  4. 结合其他技术:探索将归纳程序合成与其他技术(如强化学习、知识蒸馏等)相结合的方法,以进一步提高LLMs在归纳程序合成中的表现。例如,可以使用强化学习来优化模型的查询策略和自我修正过程;或者使用知识蒸馏来将大型模型的知识迁移到更高效的小型模型中。

相关文章:

【AI论文】CodeARC:评估归纳程序合成中大语言模型代理的推理能力基准

摘要:归纳程序合成,或称示例编程,要求从输入输出示例中合成能够泛化到未见输入的函数。尽管大型语言模型代理在自然语言指导下的编程任务中展现出了潜力,但它们在执行归纳程序合成方面的能力仍待深入探索。现有的评估协议依赖于静…...

加密解密工具箱 - 专业的在线加密解密工具

加密解密工具箱 - 专业的在线加密解密工具 您可以通过以下地址访问该工具: https://toolxq.com/static/hub/secret/index.html 工具简介 加密解密工具箱是一个功能强大的在线加密解密工具,支持多种主流加密算法,包括 Base64、AES、RSA、DES…...

抖音短视频安卓版流畅度测评 - 真实

对于抖音短视频安卓版的流畅度,实际体验可以受到多方面因素的影响,比如设备性能、系统优化、网络情况和应用本身的优化程度。以下是一些常见的测评维度和抖音安卓版本流畅度的实际表现: 1.启动速度 抖音的启动速度通常较快,但如果…...

基于javaweb的SSM+Maven机房管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

发动机试验台底座:汽车研发的关键支撑(北重制造厂家)

发动机试验台底座是汽车研发过程中的重要组成部分,它承载着发动机及相关部件,在试验过程中提供稳定的支撑。底座的设计和制造对于发动机试验的精度和可靠性至关重要,它需要具备足够的承载能力、稳定性和耐久性,以确保试验过程的准…...

firefox 136.0.4版本离线安装MarkDown插件

系统:centos7.9 firefox:136.0.4 1、下载firefox的版本 Directory Listing: /pub/firefox/releases/136.0.4/ 选择自己想要的版本,这边选的是 linux-x86-64/en-US/版本的。 Directory Listing: /pub/firefox/releases/136.0.4/linux-x86…...

Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道

Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道 前言一、标准输入与输出、重定向,使用过滤器筛选文件信息1.1 Linux 的标准输入与输出1.2 什么是输入重定向1.3 输出重定向1.4 标准错误输出重定向1.5 使用过滤…...

移动端六大语言速记:第6部分 - 错误处理与调试

移动端六大语言速记:第6部分 - 错误处理与调试 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在错误处理与调试方面的特性,帮助开发者理解和掌握各语言的异常处理机制。 6. 错误处理与调试 6.1 异常处理 各语言异常处理的语法对比:…...

云计算:基础、概念与未来展望

摘要 云计算已从一个新兴技术概念演变为现代信息技术(IT)基础设施的基石。它彻底改变了企业和个人存储、访问、处理数据以及部署应用程序的方式。本文旨在深入探讨云计算的核心概念、基本原理、关键技术、服务模型、部署模式及其带来的优势与挑战。通过…...

hanzi-writer-miniprogram真机显示不出来Path2D问题已解决(真机能显示了!)

要么cdn字库问题,要么是下面的问题 cdn问题 即https://cdn.jsdelivr.net/npm/hanzi-writer-data的问题 见node_modules\hanzi-writer\dist\hanzi-writer.js的getCharDataUrl 这里笔画数据是在线请求cdn, 请求多了有时候也会失败 Path2D的问题 我安装的是最新的一…...

智慧园区大屏如何实现全局监测:监测意义、内容、方式

智慧园区的价值不容小觑呀,可以说园区的大部分数据都在这个大屏上,监测数据越多,那么大屏的价值就越大。很多小伙伴拿到需求后感觉无从下手,本文在这里智慧园区大屏可以监测哪些内容、监测的意义、监测的方式等,欢迎点…...

LangChain核心解析:掌握AI开发的“链“式思维

0. 思维导图 1. 引言 🌟 在人工智能快速发展的今天,如何有效地利用大语言模型(LLM)构建强大的应用成为众多开发者关注的焦点。前面的课程中,我们学习了正则表达式以及向量数据库的相关知识,了解了如何处理文档并将其附加给大模型。本章我们将深入探讨LangChain中的核心概…...

[CISSP] [6] 密码学和对称密钥算法

密码学的目标 1. 机密性(Confidentiality) 目标:保护信息不被未授权访问。 通过 加密(Encryption)技术确保数据只能被授权方解密和读取。主要方法: 对称加密(AES、3DES)&#xff…...

思维链编程模式下可视化医疗编程具体模块和流程架构分析(全架构与代码版)

引言 随着人工智能在医疗领域的广泛应用,医疗AI思维链可视化编程工具应运而生,旨在为非技术背景的医疗从业者提供便捷的AI模型开发平台。这个工具通过直观的可视化界面,简化了AI模型的构建过程,帮助用户高效完成数据处理、模型训…...

AI与玩具结合的可行性分析

文章目录 一、市场需求:教育与陪伴的双重驱动(一)教育需求(二)情感陪伴需求(三)消费升级 二、技术发展:赋能玩具智能化(一)AI技术的成熟(二&#…...

软考又将迎来新的改革?

3月26日,工信部所属事业单位发布了一则招聘公告,其中,工信教考中心面相符合条件的博士招聘1名“考务处技术研究岗”的人员,具体岗位内容: 其岗位简介中,有一条“研究、制定考试技术改革方案,并组…...

Python入门(8):文件

1. 文件基本概念 文件:存储在计算机上的数据集合,Python 通过文件对象来操作文件。 文件类型: 文本文件:由字符组成,如 .txt, .py 二进制文件:由字节组成,如 .jpg, .mp3 2. 文件打开与关闭…...

HTML5 Video(视频)学习笔记

一、HTML5 视频简介 HTML5 引入了 <video> 元素&#xff0c;用于在网页上嵌入视频内容。这种方式取代了传统的 Flash 插件&#xff0c;使得视频的展示更加标准化和便捷。HTML5 的 <video> 元素为开发者提供了一种简单且兼容性强的方法来嵌入视频&#xff0c;同时也…...

怎么让一台云IPPBX实现多家酒店相同分机号码一起使用

下面用到的IPPBX是我们二次开发后的成品&#xff0c;支持各种云服务器一键安装&#xff0c;已经写好了一键安装包&#xff0c;自动识别系统环境&#xff0c;安装教程这里就不再陈述了&#xff01; 前言需求 今天又遇到了一个客户咨询&#xff0c;关于部署一台云IPPBX&#xf…...

Java模板方法模式详解

模板方法模式详解 一、模式定义 模板方法模式(Template Method Pattern)定义一个操作中的算法骨架&#xff0c;将某些步骤延迟到子类实现。 二、核心结构 1. 抽象模板类 public abstract class AbstractTemplate {// 模板方法&#xff08;final防止子类覆盖&#xff09;pu…...

Vite 内联 CSS 和 JS 的解决方案

使用 vite-plugin-singlefile&#xff08;推荐&#xff09; 这个插件专门用于将整个 Vite 应用打包成单个 HTML 文件&#xff0c;内联所有 JS 和 CSS。 安装 pnpm i vite-plugin-singlefile -D配置 vite.config.js import { defineConfig } from vite import { viteSingleF…...

蓝桥杯2024JavaB组的一道真题的解析

文章目录 1.问题描述2.问题描述3.思路分析4.代码分析 1.问题描述 这个是我很久之前写的一个题目&#xff0c;当时研究了这个题目好久&#xff0c;发布了一篇题解&#xff0c;后来很多人点赞&#xff0c;我都没有意识到这个问题的严重性&#xff0c;我甚至都在怀疑自己&#xf…...

计算机视觉算法实战——基于YOLOv8的行人流量统计系统

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 引言:智能客流分析的市场需求 在零售、交通、安防等领域,准确的行人流量统计对于商业决策、公共安全管理…...

在PyTorch中使用GPU加速:从基础操作到模型部署

本文将通过具体代码示例&#xff0c;详细介绍如何在PyTorch中利用GPU进行张量计算和模型训练&#xff0c;包含设备查询、数据迁移以及模型部署等完整流程。 1. 查看GPU硬件信息 使用 nvidia-smi 命令检查GPU状态和进程信息&#xff1a; # 查看GPU信息 !nvidia-smi 输出示例&…...

机器学习ML极简指南

机器学习是现代AI的核心&#xff0c;从推荐系统到自动驾驶&#xff0c;无处不在。但每个智能应用背后&#xff0c;都离不开那些奠基性的模型。本文用最简练的方式拆解核心机器学习模型&#xff0c;助你面试时对答如流&#xff0c;稳如老G。 线性回归 线性回归试图通过"最…...

flux绘画模型介绍

一、Flux绘画模型的核心定义与背景 Flux绘画模型是由Black Forest Labs开发的先进AI图像生成模型&#xff0c;其核心团队源自Stable Diffusion的创始成员&#xff08;如Robin Rombach&#xff09;&#xff0c;结合了Stability AI的技术积累与创新突破。该模型于2024年8月首次发…...

LLM驱动的智能体:基于GPT的对话智能体开发指南

前言 大语言模型&#xff08;LLM, Large Language Model&#xff09;正在彻底改变智能体&#xff08;Agent&#xff09;的设计和实现方式。从简单的聊天机器人到复杂的自动化助手&#xff0c;基于GPT等LLM的对话智能体已经在客服、教育、办公自动化、编程助手等领域得到了广泛…...

项目之Boost搜索引擎

目录 搜索引擎项目背景 搜索引擎的宏观原理 搜索引擎技术栈和项目环境 搜索引擎具体原理(正排索引和倒排索引) 正排索引 倒排索引 编写数据去标签与数据清洗的模块 Parser 从boost官网导入HTML网页数据 去标签 构建 Parser 模块 递归式获取 HTML 文件的带文件名称…...

MyBatis 动态SQL 详解!

目录 一、 什么是动态 SQL&#xff1f;二、 为什么需要动态 SQL&#xff1f;三、 MyBatis 动态 SQL 标签四、 标签详解及示例1、 if 标签2、 choose、when、otherwise 标签3、 where 标签4、 set 标签5、 foreach 标签6、 sql、include 标签 五、 总结 &#x1f31f;我的其他文…...

本节课课堂总结

匿名子类&#xff1a; 说明 和 Java 一样&#xff0c;可以通过包含带有定义或重写的代码块的方式创建一个匿名的子类。 单例对象&#xff08;伴生对象&#xff09; Scala语言是完全面向对象的语言&#xff0c;所以并没有静态的操作&#xff08;即在Scala中没有静态的概念&a…...