苹果提出RLAIF:轻量级语言模型编写代码

获取本文论文原文PDF,请在公众号【AI论文解读】留言:论文解读

代码生成一直是一个充满挑战的领域。随着大型语言模型(LLM)的出现,我们见证了在自然语言理解和生成方面的显著进步。然而,当涉及到代码生成,尤其是在需要正确使用API调用的任务中,即使是先进的LLM也会面临所谓的“幻觉”问题,即生成不切实际或错误的代码片段

为了解决这一问题,本文介绍了一种基于AI反馈的强化学习(RLAIF)框架,旨在提高轻量级LLM(参数少于1B)在代码生成任务中的表现。

7a44b0e58488ce4be6729f2fa5cad8a7.jpeg

  • 论文标题: Applying RLAIF for Code Generation with API-usage in Lightweight LLMs
  • 机构: Rochester Institute of Technology, Apple
  • 论文链接:https://arxiv.org/pdf/2406.20060.pdf

RLAIF框架介绍

1. RLAIF的概念与发展

Reinforcement Learning from AI Feedback (RLAIF) 是一种新兴的强化学习方法,它利用大型语言模型(LLM)生成的反馈来训练小型模型。这种方法首次由Bai等人在2022年提出,并迅速在多个领域展示了其潜力,例如在减少LLM输出中的伤害、增强文本摘要和数学推理方面。RLAIF通过专门的提示策略从更大的LLM(例如GPT-3.5)中提取AI反馈,并使用这些数据训练奖励模型,以改善小型LLM的表现。

2. 为何选择RLAIF替代传统RLHF

传统的强化学习与人类反馈(RLHF)方法通过整合人类评估来训练模型,以提高模型在复杂任务上的表现。然而,这种技术因高质量人类反馈的需求而成本高昂。RLAIF作为一种替代方案,使用AI反馈代替人类反馈,使得微调过程更具可扩展性。此外,RLAIF能够在资源较少的情况下通过AI反馈显著提高代码生成质量,超越简单微调基线。

3. RLAIF在轻量级LLM中的应用

在本研究中,我们将RLAIF框架应用于轻量级LLM(参数少于1B)的代码生成任务中,特别是在需要正确编写API调用的任务上。我们使用RLAIF微调了GPT-2-large(780M参数),不仅在API调用正确性上与先前的研究相当,还在代码生成性能上有所超越。

方法详解:从大模型获取反馈到训练奖励模型

1. 初始模型的微调

我们首先在Gorilla数据集上微调了一个基础模型GPT-2-large,使用了监督式微调技术。这个微调的模型被称为MSFT,为后续的奖励模型训练提供了基础。

2. 使用GPT-3.5生成反馈

为了获取训练奖励模型所需的数据,我们没有采用人类注释员,而是使用了更大的LLM(GPT-3.5)来生成标签。我们设计了一系列问题,通过GPT-3.5对这些问题进行回答,以评估生成代码的质量。这些问题是二元的(是/否),我们根据GPT-3.5的回答计算每个输入-输出对的得分。

3. 奖励模型的训练与应用

使用上述方法获得的得分,我们标记训练数据中的输出(接受或拒绝),并将这些数据用于训练奖励模型Mreward。Mreward的训练目标是分类机器生成的代码是否对给定的输入指令可接受。最后,我们使用近端策略优化(PPO)算法微调MSFT,其中Mreward提供的逻辑分数作为奖励信号,最终得到的微调模型称为MRL。

实验设置:Gorilla数据集的应用

1. 数据集的结构与特点

Gorilla数据集由Patil等人在2023年发布,主要包括三个部分:HuggingFace、TensorFlow和PyTorch。本研究主要关注其中的HuggingFace部分,这是三者中最大的一个,包含超过925个独特的API,涵盖37个不同的领域,如多模态文本到图像、计算机视觉图像分类、音频文本到语音等。每个API都有十个独特的指令。数据集中的每个实例包含一个指令(任务描述)、领域、API调用(单行代码)、解释(如何使用API解决任务)以及完成任务的完整Python脚本。

2. 训练与评估过程

我们的实验使用了GPT-2-large模型(780M参数),通过监督式微调技术对其进行训练。训练过程中,我们没有进行超参数搜索,而是使用了固定的学习率。训练集占数据集的90%,剩余的10%用于评估。我们在NVIDIA A100 40GB GPU集群上进行了实验,总共花费了约60个GPU小时

实验结果与分析

1. 代码生成质量的多指标评估

我们采用了多种指标来评估生成代码的质量,包括ROUGE和Code-BLEU。ROUGE指标是ROUGE-1、ROUGE-2、ROUGE-L和ROUGE-sum的平均值。Code-BLEU则是标准BLEU、加权n-gram匹配(BLEUweight)、语法AST匹配(Matchast)和语义数据流匹配(Matchdf)的加权平均。此外,我们还报告了生成代码的成功执行率(Executability Rate),这是一个衡量代码是否能在隔离环境中正确运行的指标。

2. 轻量级模型与大模型的性能比较

在我们的实验中,经过RLAIF框架训练的轻量级模型(GPT-2-large,780M参数)不仅在API调用的正确性上与Patil等人的LLaMA-7B模型相当,而且在代码生成性能上还有所超越。特别是在代码的可执行率上,轻量级模型比7B参数的大模型高出1.0%。这一结果表明,即使是参数较少的模型,通过AI反馈也能显著提高代码生成的质量。

cf2d9a971747859fa0b505c13030c83d.jpeg


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

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

相关文章

XD文件打开神器:这个在线工具你一定要试试!

你有没有遇到过对设计师发来的XD文件没有头绪?不知道XD文件深层含义?如何打开XD文件最省时省力?这篇文章告诉你答案。 https://ad.js.design/online/xd/?sourcecsdn&planxy711 XD文件是什么? 事实上,XD文件就是…

C++入门基础篇(1)

欢迎大家来到海盗猫鸥的博客—— 断更许久,让我们继续好好学习吧! 目录 1.namespace命名空间 命名空间的存在价值: 命名空间的定义: 命名空间的使用: 2.C输入输出函数 使用: 3.缺省参数 4.函数重载…

界面组件Kendo UI for React 2024 Q2亮点 - 生成式AI集成、设计系统增强

随着最新的2024年第二季度发布,Kendo UI for React为应用程序开发设定了标准,包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示,从设计到代码的生产力增强、可访问性…

linux-5.10.110内核源码分析 - Freescale ls1012a pcie msi中断

1、dts msi控制器描述 1.1、dts描述 msi: msi-controller11572000 {compatible "fsl,ls1012a-msi";reg <0x0 0x1572000 0x0 0x8>;msi-controller;interrupts <0 126 IRQ_TYPE_LEVEL_HIGH>; };ls1012a msi控制器具体介绍可以参考官网手册”25.1.1 PC…

【cocos creator】2.x,伪3d拖拽,45度视角,60度视角,房屋装扮

伪3d拖拽,45度视角,60度视角 工程下载:(待审核) https://download.csdn.net/download/K86338236/89530812 dragItem2.t s import mapCreat2 from "./mapCreat2";const {ccclass, property } = cc._decorator; /*** 拖拽类,挂在要拖拽的节点上*/ @ccclass export…

电影购票小程序论文(设计)开题报告

一、课题的背景和意义 随着互联网技术的不断发展&#xff0c;人们对于购票的需求也越来越高。传统的购票方式存在着排队时间长、购票流程繁琐等问题&#xff0c;而网上购票则能够有效地解决这些问题。电影购票小程序是网上购票的一种新型应用&#xff0c;它能够让用户随时随地…

MacOS可以玩什么游戏 苹果笔记本电脑能打游戏吗 macbook能打什么游戏

长期以来&#xff0c;Mac电脑在游戏方面的局限性一直是用户关注的问题。在最新的 macOS Sonoma 14 系统中&#xff0c;苹果首次引入了全新的 Game mode&#xff08;游戏模式&#xff09;&#xff0c;将 M 系列芯片的超强能力在游戏中进一步释放&#xff01; Mac 不能玩游戏的难…

Fragment(未完结)

什么是Fragment? 1:具备生命周期,小Activity 2:必须委托在activity中才能运行 Fragment初体验 1、创建fragment_blank.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools&qu…

一进四出学生公寓电表功能对比

一进四出学生公寓对比石家庄光大远通电气有限公司产品使用功能&#xff1a;预收费功能&#xff1a;用户应先到学校购电处购电,售电计算机将在十秒钟内自动将数据发送到控电柜各个用电单元,然后系统会给用户供电,当用户剩余电量为零时,系统可自动切断该单元供电,只有当用户重新购…

MYSQL审批流程判断同一层级审批人是否全部通过审批

在做流程审批的时候&#xff0c;通常会出现某一层有多个审批人的情况&#xff0c;这个时候需要所有人都通过才会进入到下一步 数据结构如下图表格所示 每一个审批申请对应一个apply_id serial_no相同的代表是同一层级审批人 approval_status是审核状态 下面我们可以用一个SQL来…

[leetcode]circular-array-loop 环形数组是否存在循环

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool circularArrayLoop(vector<int>& nums) {int n nums.size();auto next [&](int cur) {return ((cur nums[cur]) % n n) % n; // 保证返回值在 [0,n) 中};for (int i 0; i < n; i…

【UE5.1】NPC人工智能——01 准备NPC角色

效果 步骤 1. 之前我们已经创建了“BP_NPC”&#xff08;见&#xff1a;【UE5.1 角色练习】06-角色发射火球-part2&#xff09; 该蓝图继承于角色类 我们在该蓝图中添加了两个方法和两个变量。方法一个是用于修改角色HP值的&#xff0c;另一个是在收到伤害后执行的逻辑。两个…

AIGC爬虫类代码示例:Scrapy和OpenAI API实现抓取内容并生成内容

对于我从事爬虫行业多年的经验来说&#xff0c;编程各种需求代码真是非常吃力且细致的活&#xff0c;随着AI的大火&#xff0c;我在设想有没有可能通过AI自动化程序实现自动抓取生成想要的文本内容。前提我是打算通过结合爬虫技术&#xff08;如Scrapy&#xff09;和生成式AI模…

Affnity 值得购买吗?有Affinity 优惠码?

今年&#xff0c;Affinity 提供了全场 7 折优惠活动&#xff0c;这里包括桌面应用、插件、工作手册等内容&#xff0c;另外针对 iPad 应用提供更为给力的 5 折优惠&#xff01;对于从事图形设计、排版的用户来说&#xff0c;由于 Affinity 的创意设计应用均采用了一次买断制&am…

如何在函数中使用return返回axios的请求结果

使用场景&#xff1a;在添加学生上课记录的时候&#xff0c;需要先获取学生的剩余课时&#xff0c;需要通过接口获取。所以需要封装一个方法&#xff0c;能够通过接口获取学生的课时数量。 解决方案&#xff1a;通过异步解决 封装方法的代码如下&#xff1a; const getStude…

Linux--安装VMware步骤

安装VMware VMware Desktop Hypervisors for Windows, Linux, and Mac 复制链接打开浏览器下载即可 从官网下载软件&#xff0c;完成后为确保后续正常使用&#xff0c;需要检查虚拟网卡是否安装完成 检查虚拟网卡的安装步骤 Windows--设置--高级设置--网络适配器--看是否有显…

浅谈后置处理器组件提取器相关的Apply to

浅谈后置处理器组件提取器相关的Apply to 在Apache JMeter中&#xff0c;“提取器”&#xff08;通常指的是正则表达式提取器、JSON路径提取器或CSS/JQuery提取器等&#xff09;是用来从服务器响应中提取信息的重要组件。这些信息可以是cookies、session IDs、特定的文本或者任…

Nuxt框架中内置组件详解及使用指南(五)

title: Nuxt框架中内置组件详解及使用指南&#xff08;五&#xff09; date: 2024/7/10 updated: 2024/7/10 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt框架中和组件的使用方法与配置&#xff0c;包括安装、基本用法、属性详解、示例代码以及高级功能如…

纹波电流与ESR:解析电容器重要参数与应用挑战

电解电容纹波电流与ESR&#xff08;Equivalent Series Resistance&#xff09;是电容器的重要参数&#xff0c;用来描述电容器对交流信号的响应能力和能量损耗。电解电容纹波电流是指电容器在工作时承受的交流信号电流&#xff0c;而ESR则是电容器内部等效电阻&#xff0c;影响…

tensorflow1.基础案例2

前言 在TensorFlow 1.x中实现线性回归通常指的是使用静态图的方式&#xff0c;而在TensorFlow 1.x中使用Eager API实现线性回归是在TensorFlow 1.x的晚期版本中引入的&#xff0c;以提供类似于TensorFlow 2.x的编程体验。以下是两种方式的区别、各自的优点以及对比的作用&…