代码增强LLM

大模型时代的语言模型(LLM)不仅在尺寸上变得更大了,而且训练数据也同时包含了自然语言和形式语言(代码)。作为人类和计算机之间的媒介,代码可以将高级目标转换为可执行的中间步骤,具有语法标准、逻辑一致、抽象和模块化的特点。

最近,来自伊利诺伊大学香槟分校的研究团队发布了一篇综述报告,概述了将代码集成到LLM训练数据中的各种好处。

论文链接:https://arxiv.org/abs/2401.00812v1

具体来说,除了可以提升LLM在代码生成上的能力外,好处还包括以下三点:

1. 有助于解锁LLM的推理能力,使能够应用于一系列更复杂的自然语言任务上;

2. 引导LLM生成结构化且精确的中间步骤,之后可以通过函数调用的方式连接到外部执行终端(external execution ends);

3. 可以利用代码编译和执行环境为模型的进一步改进提供了更多样化的反馈信号。

此外,研究人员还追踪了LLM作为智能智能体(intelligent agents,IA)时,在理解指令、分解目标、规划和执行行动(execute actions)以及从反馈中提炼的能力如何在下游任务中起到关键作用。

最后,文中还提出了「使用代码增强LLM」领域中关键的挑战以及未来的研究方向。

图片

代码预训练提升LLM性能

以OpenAI的GPT Codex 为例,对 LLM 进行代码预训练后,可以扩大LLM的任务范围,除了自然语言处理外,模型还可以为数学理论生成代码、执行通用编程任务、数据检索等。

代码生成任务具有两个特性:1)代码序列需要有效执行,所以必须具有连贯的逻辑,2)每个中间步骤都可以进行逐步逻辑验证(step-by-step logic verification)。

在预训练中利用和嵌入代码的这两种特性,可以提高LLM思维链(CoT)技术在传统自然语言下游任务中的性能,表明代码训练能够提高LLM进行复杂推理的能力。

通过从代码的结构化形式中进行隐式学习,代码 LLM 在常识结构推理任务中也表现出更优的性能,例如与markup、HTML和图表理解相关的任务。

支持功能/函数终端(function ends)

最近的研究结果表明,将LLMs连接到其他功能终端(即,使用外部工具和执行模块增强LLMs)有助于LLMs更准确可靠地执行任务。

这些功能性目的使LLMs能够获取外部知识、参与到多种模态数据中,并与环境进行有效互动。

图片

从相关工作中,研究人员观察到一个普遍的趋势,即LLMs生成编程语言或利用预定义的函数来建立与其他功能终端的连接,即「以代码为中心」的范式。

与LLM推理机制中严格硬编码工具调用的固定实践流程相反,以代码为中心的范式允许LLM动态生成tokens,并使用可适应的参数(adaptable parameters)调用执行模块,为LLM与其他功能终端交互提供了一种简单明了的方法,增强了其应用程序的灵活性和可扩展性。

图片

重要的是,这种范式可以让LLM与跨越不同模态和领域的众多功能终端进行交互;通过扩展可访问的功能终端的数量和种类,LLM可以处理更复杂的任务。

本文中主要研究了与LLM连接的文本和多模态工具,以及物理世界的功能端,包括机器人和自动驾驶,展现了LLM在解决各种模式和领域问题方面的多功能性。

提供自动反馈的可执行环境

LLMs表现出超出其训练参数的性能,部分原因是模型能够吸收反馈信号,特别是在非静态的现实世界应用中。

不过反馈信号的选择必须谨慎,因为嘈杂的提示可能会阻碍LLM在下游任务上的表现。

此外,由于人力成本高昂,因此在保持忠诚度(faithful)的同时自动收集反馈至关重要。

图片

将LLMs嵌入到代码执行环境中可以实现上述条件的自动反馈。

由于代码执行在很大程度上是确定性的,LLMs从执行代码的结果中获取的反馈仍然忠实于目标任务;代码解释器还为LLMs查询内部反馈提供了一个自动路径,无需人工标注即可对LLMs生成的错误代码进行调试和优化。

此外,代码环境允许LLMs整合各种各样的外部反馈形式,包括但不限于二元正确性反馈,对结果的自然语言解释,以及奖励值排序,从而实现一个高度可定制的方法来提高性能。

图片

当下的挑战

代码预训练与LLMs推理增强的因果关系

虽然从直觉上来看,代码数据的某些属性可能有助于LLMs的推理能力,但其对增强推理技能影响的确切程度仍然模糊不清。

在下一步的研究工作中,重要的是要研究在训练数据中加强认识:这些代码属性是否真的可以增强训练的LLMs的推理能力。

如果确实如此,对代码的特定属性进行预训练可以直接提高LLMs的推理能力,那么理解这种现象将是进一步提高当前模型复杂推理能力的关键。

不限于代码的推理能力

尽管通过代码预训练实现了对推理能力的增强,但基础模型仍然缺乏真正通用人工智能所期望的类似人类的推理能力。

除了代码之外,大量其他文本数据源也有可能增强LLM推理能力,其中代码的内在特征,如缺乏歧义、可执行性和逻辑顺序结构,为收集或创建这些数据集提供了指导原则。

但如果继续坚持在具有语言建模目标的大型语料库上训练语言模型的范式,很难有一种顺序可读的语言比形式语言更抽象:高度结构化,与符号语言密切相关,并且在数字网络环境中大量存在。

研究人员设想,探索可替代的数据模式、多样化的训练目标和新颖的架构将为进一步增强模型推理能力提供更多的机会。

以代码为中心范式在应用上的挑战

在LLMs中,使用代码连接到不同的功能终端的主要挑战是学习不同功能的正确调用方法,包括选择正确的功能(函数)终端以及在适当的时候传递正确的参数。

比如说一个简单的任务(网页导航),给定一组有限的动作原语后,如鼠标移动、点击和页面滚动,再给出一些例子(few-shot),一个强大的基础LLM往往需要LLM精确地掌握这些原语的使用。

对于数据密集型领域中更复杂的任务,如化学、生物学和天文学,这些任务涉及对特定领域python库的调用,其中包含许多不同功能的复杂函数,增强LLMs正确调用这些功能函数的学习能力是一个前瞻性的方向,可以使LLMs在细粒度领域中执行专家级任务。

从多轮互动和反馈中学习

LLMs通常需要与用户和环境进行多次交互,不断纠正自己以改善复杂任务的完成。

虽然代码执行提供了可靠和可定制的反馈,但尚未建立一种完全利用这种反馈的完美方法。

当下基于选择的方法虽然有用,但不能保证提高性能,而且效率低下;基于递归的方法严重依赖于LLM的上下文学习能力,这可能会限制其适用性;微调方法虽然做出了持续的改进,但数据收集和微调是资源密集型的,实际使用时很困难。

研究人员认为强化学习可能是一种更有效的利用反馈和改进的方法,可以提供一种动态的方式来适应反馈,通过精心设计的奖励功能,潜在地解决当前技术的局限性。

但仍然需要大量的研究来了解如何设计奖励函数,以及如何将强化学习与LLMs最佳地集成以完成复杂的任务。

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

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

相关文章

Java 与 JavaScript的区别

Java 与 JavaScript的区别 Java 与 JavaScript:概述Java的特点JavaScript 的起源JavaScript 的特点Java 与 JavaScript,哪个更好?JavaScript 与 Java 相似吗?Java 与 JavaScript 的区别JavaScript 在服务器端的运行方式是怎样的&a…

线程锁多线程的复习

线程 实现方式3种乐观锁&悲观锁线程池线程池总结 进程:是正在运行的程序 线程:是进程中的单个顺序控制流,是一条执行路径 实现方式3种 1.Thread //步骤一:定义一个继承Thread的类 //步骤二:再定义的类中重写run()方法 //步骤三:创建定义类对象 //步骤四:启动线程 class M…

【数据分析】numpy基础第一天

文章目录 前言本文代码:使用jupyter notebook打开本文的代码操作示例步骤1.打开Anaconda Powershell Prompt步骤2.复制代码文件地址步骤3.在Anaconda Powershell Prompt中打开jupyter notebook步骤3.5.解决一个可能的问题步骤4.在浏览器中查看ipynb文件步骤5.运行代…

85.网游逆向分析与插件开发-物品使用-物品使用的逆向分析与C++代码的封装

内容参考于:易道云信息技术研究院VIP课 上一个内容:项目需求与需求拆解-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:453dd83d54140d2e1ee65c9…

量化交易学习3(量化择时策略)

1 什么是量化择时 量化择时策略,简单来说,就是采用数量化分析方法,利用单个或多个技术指标的组合,来对交易标的股票或股票指数进行低买高卖的操作,期望获得超越简单买入持有策略的收益风险表现。 量化择时策略的核心…

网络防御安全知识(第三版)

配置黑洞路由 --- 黑洞路由即空接口路由,在NAT地址池中的地址,建议配置达到这个地址指 向空接口的路由,不然,在特定环境下会出现环路。(主要针对地址池中的地址和出接口地址 不再同一个网段中的场景。) …

二手交易|校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

档案数字化转型面临问题

档案数字化转型面临以下问题: 1. 技术问题:档案数字化需要借助先进的技术手段和设备,包括扫描仪、存储设备和数据管理软件等。这些技术的成本高、操作复杂,需要专业的人员进行操作和维护。 2. 安全问题:档案数字化后的…

重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 前言 sylar是…

[C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!

一,题目 遇到的一道算法题: 1,已知有一个数字矩阵(row行,col列),矩阵的每行 从左到右 递增,每列 从上到下 递增。 2,现输入一个数字 num ,判断数字矩阵中…

Python列表中的append功能及用法举例

Python列表中的append功能及用法举例 🌵文章目录🌵 🌳引言🌳🌳append()🌳🍀功能介绍🍀🍀语法🍀🍀示例🍀🍀注意事项&#x…

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案 大家好 我是寸铁👊 总结了一篇Windows11下启动rpc服务报错panic解决方案的文章✨ 喜欢的小伙伴可以点点关注 💝 问题来源 今天在编写完proto文件后,使用goctl生成…

jenkins pipeline配置maven可选参数

1、在Manage Jenkins下的Global Tool Configuration下对应的maven项添加我们要用得到的不同版本的maven安装项 2、pipeline文件内容具体如下 我们maven是单一的,所以我们都是配置单选参数 pipeline {agent anyparameters {gitParameter(name: BRANCH_TAG, type: …

【算法Hot100系列】合并区间

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

【Redis】关于它为什么快?使用场景?以及使用方式?为何引入多线程?

目录 1.既然redis那么快,为什么不用它做主数据库,只用它做缓存? 2.Redis 一般在什么场合下使用? 3.redis为什么这么快? 4.Redis为什么要引入了多线程? 1.既然redis那么快,为什么不用它做主数据…

电路笔记 :MOS场效应晶体管+红外遥控+AMS1117 电源模块

三极管(BJT,Bipolar Junction Transistor)和 MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)是两种不同类型的晶体管,它们在工作原理、性能特性和应用方面有一些重要的区别。 结构和工作原理…

基于.NET+FreeSql实现的仿掘金专栏前后端分离的CMS

前言 今天分享一款基于.NETFreeSql实现的仿掘金专栏前后端分离、支持Docker部署、集成了OAtuh2授权登录、QQ、Github、Gitee快速登录、简单实用的CMS:lin-cms-dotnetcore。 什么是 Lin CMS? 林间有风团官方团队Gitee地址:https://gitee.com/…

数据库管理-第139期 做大还是做小-Oracle名称哪些事(20240125)

数据库管理139期 2024-01-25 第139期 做大还是做小-Oracle名称哪些事(20240125)1 问题2 排查3 扩展总结 第139期 做大还是做小-Oracle名称哪些事(20240125) 作者:胖头鱼的鱼缸(尹海文) Oracle A…

【硬件产品经理】避免硬件产品失败 | 技术维度

目录 简介 技术维度一:低估产品开发 技术维度二:低估规模生产的复杂性 技术维度三:测试不足 技术维度四:产品太复杂 技术维度五:对客户承诺太高 推荐内容 简介 这节内容主要从技术维度来谈谈避免硬件产品失败这…

指针的深入了解5

1.二维数组传参本质 在此之前我们学习了一维数组传参&#xff0c;传的是它的首元素地址。那么二维数组也是这样的吗&#xff1f; 我们来看一串代码&#xff1a; void print(int(*pt)[5]) {for (int i 0; i < 3; i){for (int j 0; j < 5; j){printf("%d ",…