Text-to-SQL小白入门(八)RLAIF论文:AI代替人类反馈的强化学习

学习RLAIF论文前,可以先学习一下基于人类反馈的强化学习RLHF,相关的微调方法(比如强化学习系列RLHF、RRHF、RLTF、RRTF)的论文、数据集、代码等汇总都可以参考GitHub项目:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, and more.,这个项目收集了Text2SQL+LLM领域的相关简介、综述、经典Text2SQL方法、基础大模型、微调方法、数据集、实践项目等等,持续更新中!

(如果觉得对您有帮助的话,可以star、fork,有问题、建议也可以提issue、pr,欢迎围观)

论文概述

基本信息

  • 英文标题:RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback
  • 中文标题:RLAIF:利用人工智能反馈扩展基于人类反馈的强化学习
  • 发表时间:2023年9月
  • 作者单位:Google Research
  • 论文链接:https://arxiv.org/pdf/2309.00267.pdf
  • 代码链接:无

摘要

摘要生成任务有效,其他任务比如Text2SQL任务是否有效呢?

  • 基于人类反馈的强化学习(RLHF)在将大型语言模型(llm)与人类偏好对齐方面是有效的,但收集高质量的人类偏好标签是一个关键瓶颈
  • 作者提出了RLAIF(利用AI反馈代替人类反馈),并且和RLHF进行对比,结果如下:
  • 在摘要生成任务(summarization task)中,在约70%的情况下,人类评估者更喜欢来自RLAIF和RLHF的结果,而不是SFT模型。
  • 此外,当被要求对RLAIF和RLHF摘要进行评分时,人类对两者的偏好率相同。
  • 这些结果表明,RLAIF可以产生人类水平的性能,为RLHF的可扩展性限制提供了一个潜在的解决方案。

数据可以让AI生成,评估也可以让AI评估,AI for anything

结果

上结果,有图有真相

结果表明,RLAIF达到了与RLHF相似的性能。(人类打分,人类评估谁更好)

  • RLHF 和 SFT 相比,RLHF有73%的情况更优秀
  • RLAIF 和 SFT 相比,RLAIF有71%的情况更优秀
  • RLHF 和 RLAIF 相比,RLHF有50%的情况下更优秀,也就是两者五五开。

碰巧还发现了一个论文的笔误,结果应该是论文中的图1,论文写的是表1。

论文还比较了RLHF和RLAIF分别和人类撰写的参考摘要。

  • RLAIF摘要在79%的情况下优于参考摘要。
  • RLHF摘要在80%的情况下优于参考摘要。

结果表明,RLAIF和RLHF策略倾向于生成比SFT策略更长的摘要,这可以解释一些质量改进。

但在控制长度后,两者的表现仍然优于SFT策略。

结论

证明了AI反馈的潜力

在这项工作中,论文证明了RLAIF可以在不依赖于人类注释者的情况下产生与RLHF相当的改进。

论文的实验表明,RLAIF在SFT基线上有很大的改进,改进幅度与RLHF相当。

在头对头比较中(head-to-head comparision,两者单挑的意思),人类对RLAIF和RLHF的偏好率相似。

还是有一些局限性。

比如任务是否可以推广到其他任务(和前面的摘要想法一样)

AI反馈 和 人工反馈的成本

RLHF+RAIF 结合是不是更好

等等

核心方法

贡献点

  • 摘要任务上:RLAIF达到了和RLHF相当的性能
  • 比较了各种AI 标签的技术,确定了最佳设置

RLHF

RLHF三部曲

SFT

RM

RL

SFT——提取专家知识

Supervised Fine-tuning有监督微调,简称为SFT。

SFT的数据通常是高质量的标注数据,比如基于LLM完成Text2SQL任务的话,数据集可以构造为如下形式:

以spider数据集示例:使用DB-GPT-Hub项目中预处理得到下面类似的数据:

{"prompt": "I want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\"\n##Instruction:\ndepartment_management contains tables such as department, head, management. Table department has columns such as Department_ID, Name, Creation, Ranking, Budget_in_Billions, Num_Employees. Department_ID is the primary key.\nTable head has columns such as head_ID, name, born_state, age. head_ID is the primary key.\nTable management has columns such as department_ID, head_ID, temporary_acting. department_ID is the primary key.\nThe head_ID of management is the foreign key of head_ID of head.\nThe department_ID of management is the foreign key of Department_ID of department.\n###Input:\nHow many heads of the departments are older than 56 ?\n\n###Response:","output": "SELECT count(*) FROM head WHERE age  >  56"}

我们可以做个测试,把prompt输入到ChatGPT-3.5中,如下:可以发现这个和标准的SQL一致,这个SQL属于比较简单的那种。

RM——类似于loss function

Reward Modeling 奖励模型,简称RM训练,最终目标就是训练一个模型,这个模型可以对LLM生成的response进行打分,得分高,代表response回答比较好。

RM的训练数据通常来说比SFT训练数据少,之前看见个例子说SFT数据占60%, RM数据占20%, RL数据占20%.

同样的,我们还是以Text2SQL任务举例子,RM数据可以构造为(prompt,chosen,rejected}的三元组,如下所示:

  • chosen数据就是SFT的标准输出,groundtruth
  • rejected数据通常来源于SFT 模型的错误输出,也就是bad case
{"prompt": "I want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\"\n##Instruction:\ndepartment_management contains tables such as department, head, management. Table department has columns such as Department_ID, Name, Creation, Ranking, Budget_in_Billions, Num_Employees. Department_ID is the primary key.\nTable head has columns such as head_ID, name, born_state, age. head_ID is the primary key.\nTable management has columns such as department_ID, head_ID, temporary_acting. department_ID is the primary key.\nThe head_ID of management is the foreign key of head_ID of head.\nThe department_ID of management is the foreign key of Department_ID of department.\n###Input:\nHow many heads of the departments are older than 56 ?\n\n###Response:","chosen": "SELECT count(*) FROM head WHERE age  >  56","rejected":"SELECT COUNT(head_name) FROM head WHERE age > 56;"}

损失函数如下形式:

  • 这里的x就是输入prompt
  • y_w就是chosen data
  • y_l就是rejected data

RL——引入强化学习方法

Reinforcement Learning 强化学习,简称为RL,就是利用强化学习的方法训练一个模型,使得奖励分数最高。

如下所示:

  • 优化分数最大使用的是max
  • 使用了KL散度,让训练的RL模型和原始模型差距不能过大

同样的,我们还是以Text2SQL任务举例子,RL数据可以构造为(prompt,output}的三元组,如下所示:

  • 数据形式和SFT阶段保持一致
  • SFT阶段训练的数据,不应和RL数据重叠。
{"prompt": "I want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request.\n\"\n##Instruction:\ndepartment_management contains tables such as department, head, management. Table department has columns such as Department_ID, Name, Creation, Ranking, Budget_in_Billions, Num_Employees. Department_ID is the primary key.\nTable head has columns such as head_ID, name, born_state, age. head_ID is the primary key.\nTable management has columns such as department_ID, head_ID, temporary_acting. department_ID is the primary key.\nThe head_ID of management is the foreign key of head_ID of head.\nThe department_ID of management is the foreign key of Department_ID of department.\n###Input:\nHow many heads of the departments are older than 56 ?\n\n###Response:","output": "SELECT count(*) FROM head WHERE age  >  56"}

RLAIF

进入主题RLAIF

LLM偏好标注

  • 前言介绍和说明任务
  • 1个例子说明:
    • 需要输入一段文本Text、一对摘要(摘要1和摘要2)
    • 模型输出偏好 Preferred Summary=1
  • 给出文本和等待标注的摘要1、摘要2
  • 结束:给出偏好 Preferred Summary=

在给出输入信息后,得到LLM的输出偏好1 或者 2之后,计算对数概率和softmax,得到偏好分布。

论文提到计算偏好分布也有其他的替代方法:

  • 比如直接让模型输出output = "The first summary is better"
  • 或者直接让偏好分布是one-hot编码

那么论文为什么不这么做呢?因为论文说就用上面的方法(输出1 或者 2),准确率已经足够高了。

论文做了一个实验,就是对比不同的任务前沿介绍,看看LLM标注的差距。

  • Base:代表任务介绍比较简单,比如是“which summary is bet- ter?”(这个是论证任务介绍应该简单点还是详细点?)
  • OpenAI:代表任务介绍比较详细,密切模仿了OpenAI,生成的任务介绍包含了哪些构成好的摘要信息
  • COT:代表chain-of-thought思维链。(这个是论证思维链是否有效)
  • 1-shot:代表给出1个例子,其他shot类似。(这个是论证上下文学习是否有效)

这个实验证明了:效果最好是OpenAI + COT + 0-shot

  • 任务说明应该详细点好,OpenAI变现更好
  • 思维链是有效的
  • 上下文学习无效,甚至会降低效果,因为shot越多,效果越差。

Position Bias位置偏差

注意例子不要都是第一个更好,或者都是第二个更好

这样可能让模型有记忆以为都是第一个更好/第二个更好

所以输入要有随机性。

论文如何减少这个偏差的?

实验两次,取平均值。

  • 正常顺序来一次,比如输入「摘要1-摘要2」
  • 反方向顺序来一次,比如输入「摘要2-摘要1」

Chain-of-thought Reasoning思维链推理

思维链就是让模型模仿人类思考问题的方式。

回答问题的时候,不仅要有答案,更要有思考的过程。

比如摘要任务,选取第一个摘要更好,是因为第一个摘要的准确性,覆盖性更好。

Self-Consistency自洽性/前后一致性

采用多个推理路径,得到答案。

取平均值。

RLAIF步骤

LLM标记偏好后,训练奖励模型RM模型来预测偏好。

  • 论文的方法产生的是软标签比如(preferencesi =[0.6, 0.4]),使用softmax交叉熵损失,而不是前面提到的RLHF中RM的损失函数。

蒸馏方法:用小模型去逼近大模型,让小模型的输出尽量和大模型保持一致。(模型轻量化的方法之一)

  • 小模型:学生模型
  • 大模型:教师模型

使用AI标注的数据进行训练RM模型,可以理解为模型蒸馏的一部分,因为AI打标签的大模型LLM通常比RM更大、更强。

RL训练不使用PPO算法。

RL训练采用 Advantage Actor Critic (A2C)方法,因为更简单,更有效,在摘要任务上。

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

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

相关文章

MIT 6.S081 Operating System/Fall 2020 macOS搭建risc-v与xv6开发调试环境

文章目录 本机配置安装环境Homebrew执行安装脚本查看安装是否成功 RISC-V tools执行brew的安装脚本 QEMUXV6 测试有用的参考链接(感谢前辈)写在结尾 本机配置 电脑型号:Apple M2 Pro 2023 操作系统:macOS Ventura 13.4 所以我的电…

JVM第六讲:JVM 基础 - Java 内存模型引入

JVM 基础 - Java 内存模型引入 很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文是JVM第六讲,从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系, 为后面JMM详解, JVM 内存结构详解, Java 对象模型详…

蓝桥杯基础---切面条

切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀…

[C++随想录] 继承

继承 继承的引言基类和子类的赋值转换继承中的作用域派生类中的默认成员函数继承与友元继承与静态成员多继承的结构棱形继承的结构棱形虚拟继承的结构继承与组合 继承的引言 概念 继承(inheritance)机制是面向对象程序设计使代码可以 复用的最重要的手段,它允许程序…

玩转Linux Shell Terminal Tmux

一、Shell编程☘️ 1. Shell指令快捷操作 1. echo # 系统指令 $ echo $(pwd) # 对于系统自带的pwd,此处不能写echo $pwd# 自定义变量 $ foo$(pwd) $ echo $foo # 不同于pwd,对于自定义的foo,不能用$(foo)2. !! # 假设你先执行了以下原本…

python基于django的留学生服务管理平台

留学服务管理平台的用户是系统最根本使用者,按需要分析系统包括三类用户:学生、教师、管理员。这三类用户对系统的需求简要如下。技术栈 后端:pythondjango 前端:vueCSSJavaScriptjQueryelementui 开发语言:Python 框架…

深度学习基础知识 给模型的不同层 设置不同学习率

深度学习基础知识 给模型的不同层 设置不同学习率 1、使用预训练模型时,可能需要将2、学习率设置方式: 1、使用预训练模型时,可能需要将 (1)预训练好的 backbone 的 参数学习率设置为较小值, (2…

深入了解Spring Boot Actuator

文章目录 引言什么是ActuatorActuator的底层技术和原理端点自动配置端点请求处理端点数据提供端点数据暴露 如何使用Actuator添加依赖访问端点自定义端点 实例演示结论 引言 Spring Boot Actuator是一个非常强大且广泛使用的模块,它为Spring Boot应用程序提供了一套…

需永远在线的游戏公司,如何在线替换开源存储?

小帅是一个酷爱游戏的玩家,他玩一款游戏已经很久了,始终乐在其中。 这款游戏风靡全球,在中国手游出海榜单中,长期位居榜首。 他不知道的是,就在他玩游戏的过程中,这款游戏的出品公司,其实已经…

​人机交互中的反馈与前馈

人机交互中的反馈和前馈,是指在用户与机器进行交互的过程中,人机二者对输入的信息做出回应的方式。 反馈:反馈是从机器到人的信息传递过程,主要用于告知用户他们的操作或请求的结果。当用户执行某个操作时,机器通过适当…

云原生之使用Docker部署ServerBee服务器监控工具

云原生之使用Docker部署ServerBee服务器监控工具 一、ServerBee介绍1.1 ServerBee简介1.2 ServerBee特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载serverbee镜像五、…

oracle、mysql、postgresql数据库的几种表关联方法

简介 在数据开发过程中,常常需要判断几个表直接的数据包含关系,便需要使用到一些特定的关键词进行处理。在数据库中常见的几种关联关系,本文以oracle、mysql、postgresql三种做演示 创建测试数据 oracle -- 创建表 p1 CREATE TABLE p1 (tx…

当你在 Tubi 是一位 Tech Lead

在过去,我们邀请了 Tubi 技术团队的许多资深工程师,听他们分享了作为资深工程师的一些故事。今天,我们将镜头转向那些在 Tubi 担任 Tech Lead 的工程师,他们选择了在独立开发之外,承担一定的技术管理工作: …

SAP PP cs62 提示 输入更改号 - BOM 有历史需求

以上是业务操作人员的 账户 但是IT aLL 这边是warning 不是error 遂去查OSS suim 找 C_STUE_NOH权限对象 赋予权限后 解决了

XXL-Job分布式任务调度框架-单机模式和分片模式执行任务4

一 调度模式分类 1.1 调度模式 1.单个任务:一个任务实例便可完成 a)单机单任务:单机模式下任何路由模式都只有一个实例执行 b)集群单任务:由路由策略(广播模式除外)选择其中一个实例完成 2.集群部署:每个实例都同时执行一部分…

【c++源码】老飞飞源码完整v15源码(包含数据库前端后端源文件)

老飞飞源码完整v15源码(包含数据库前端后端源文件)整套程序未加密,资源开放。对于研究游戏流程开发非常有帮助,程序仅供参考学习游戏开发流程。以及框架内容。 测试环境搭建 Visual Studio 2013 SQL Server 2008r Windows 10 和 1…

有趣的 scanf()

限制接收内容 这里的意思是直接收a、b、c作为ch的内容,遇到其它字符放入缓冲区中。 【scanf("%[...]",ch);只接收[]中的内容作为字符串的内容,将其它的内容放入缓冲区中】 这里将aaa后面的h放入缓冲区,但是没有抛弃掉,故而无法接收…

unity 实现拖动ui填空,并判断对错

参考:https://ask.csdn.net/questions/7971448 根据自己的需求修改为如下代码 使用过程中,出现拖动ui位置错误的情况,修改为使用 localPosition 但是吸附到指定位置却需要用的position public class DragAndDrop : MonoBehaviour, IBeginDr…

如何使用C/C++刷新在终端上已经打印的内容

写本文的起源是因为在安装一些工具的时候,发现在终端上并行安装的情况下,显示安装信息是会修改之前已经打印出来的内容,这是怎么做到的呢?抱着对这个问题的好奇我进行了一些探索。 终端是如何运行的 首先是最关键的问题&#xf…

算法通过村第十四关-堆|青铜笔记|堆结构

文章目录 前言堆的概念和特征堆的构成过程插入操作删除操作总结 前言 若执于空,空亦为障。 --彼得马西森《雪豹》 堆结构是一种非常重要的基础数据结构,也是算法的重要内容,很多题目甚至只能通过用堆来进行,所以我们必须明确什么类…