大模型+强化学习_在线交互调参_GLAM

英文名称: Grounding Large Language Models in Interactive Environments with Online Reinforcement Learning
中文名称: 通过在线强化学习在交互式环境中建立大型语言模型
链接: https://arxiv.org/pdf/2302.02662.pdf
代码: https://github.com/flowersteam/Grounding_LLMs_with_online_RL
作者: Thomas Carta, Clément Romac, Thomas Wolf, Sylvain Lamprier, Olivier Sigaud, Pierre-Yves Oudeyer
机构: 法国波尔多大学,Hugging Face...
日期: 2023-02-06 v1

1 读后感

这是一篇倾向于研究性和思考的文章,不仅适用于机器人领域,还可以推广到 Agent 和其他领域,对于希望用大型模型来解决实际生活中的问题,这是大模型应用过程无法跳过的一环。

为了简化问题,作者将整个测试环境转化为语言环境,以便与 LLM 进行交互。

在相关工作和作者的实验中有一些有趣的发现。例如,在专家轨迹上微调 LLM 并不能像使用随机初始化的深度 Q 网络进行强化学习训练那样表现得好。这可能涉及到一个哲学问题:真实世界的动作空间非常广阔且复杂,专家只是找到解决问题途径之一,并不一定是最优策略。

2 摘要

目的: 旨在对齐大型语言模型(LLM)的知识与环境,并研究这种对齐对提高在线强化学习任务的效率以及提升不同形式的泛化的影响。

方法: 提出了一种名为 GLAM 的方法,它将 LLM 作为一个策略,该策略在代理与环境互动的过程中逐步更新,利用在线强化学习来提高其解决问题的性能。使用了一个设计用于研究更高级形式的功能性基础的交互式文本环境,以及一组空间和导航任务,来研究几个科学问题。

实验结果: 研究了几个科学问题:1)可以 LLMs 提高各种 RL 任务的在线学习的样本效率吗?2)它如何促进不同形式的泛化?3)在线学习有什么影响?通过对 FLAN-T5 的几种变体(尺寸、架构)进行功能落地来研究这些问题。

3 引言

作者认为大模型与环境之间存在隔阂的原因包括以下几点:

  1. 训练过程(预测下一个单词)中缺乏直接激励来解决环境中的问题;
  2. 缺乏干预环境以识别因果结构的能力;
  3. 缺乏基于与环境互动而收集的数据进行学习的能力。

作者的研究目标是:探索如何将 LLMs 作为 Agent 做出决策,在互动环境中采取行动以实现目标,并感知这些行动的结果,根据他们收集到的新观察结果逐步巩固和更新他们的知识。

主要探讨以下四个问题(在实验中分别讨论):

  • Q1 样本效率:大型语言模型(LLM)如何快速适应并学习解决自然语言中指定的各种空间和导航问题?预训练知识如何提高样本效率?
  • Q2 对新对象的泛化:理建立了基础功能,LLM 如何对对象的各种变化进行泛化,同时保持在已训练的任务中的水准?
  • Q3 对新任务的泛化:交互式训练的 LLM 如何对新任务进行零样本泛化?泛化根据新任务的类型泛化?
  • Q4 在线干预的影响:与从离线的专家轨迹相比,使用在线强化学习进行实时交互的效果如何?

实验在 BabyAI 平台上进行,并将 BabyAI 环境转换为文本版本。BabyAI 是一个平台,用于研究和开发能够理解和执行用户指令的人工智能。这个平台包含了一系列的环境和任务,设计用于训练和评估 AI 的能力,特别是在理解和执行复杂的指令方面

4 方法

图 -1 LLM 使用在线 RL(PPO)进行训练以实现语言目标,从而实现功能基础。(a)BabyAI-Text 提供当前剧集的目标描述,以及代理观察的描述和当前步骤的标量奖励。(b)在每一步中,我们都会收集目标描述和观察结果,并将其发送到我们的 LLM.(c)对于每个可能的动作,我们使用编码器生成提示的表示(p),并计算在给定提示的情况下组成动作的标记的条件概率。一旦估计了每个动作的概率,我们就会在这些概率上计算一个 softmax 函数,并根据这个分布对动作进行采样。此外的 LLM 是决策代理。(d)我们使用环境返回的奖励来微调 PPO LLM。最后,通过 LLM(及其 value head)反向传播梯度。

4.1 问题概述

定义 o 为观察值,r 为奖励,a 为动作(与一般强化学习相同)。设目标为 g。

这样的环境可以被框定为一个目标增强的部分可观察马尔可夫决策过程 M=(S,V,A,T,R,G,O,Y),其中包括状态空间 V、行动空间 A、目标空间 G、过程传递函数 T、目标条件奖励函数 R,以及将状态映射到文本描述的观察函数 O。折扣因子记作 Y。

根据 BabyAI 的提议,我们扩展了一个名为 BabyAI-Text 的纯文本版本。主要区别在于 BabyAI-Text 返回代理部分观察到的文本描述,而不是 BabyAI 最初返回的符号表示。我们将使用该工具进行实验。

4.2 LLM 作为交互式环境中的策略

收集任务描述、当前观测的文本描述以及一组可能的动作,将这些信息组织成一个提示,用来输入给大型语言模型。选择了一个任意和简单的提示模板(示例见附录 C),并且没有进行任何密集的提示工程。需要 LLM 输出可能动作 ℙ(𝒜) 的概率分布

核心问题是如何计算各个可选动作的概率 P(A)。现有两种方法:第一种方法是,如果 LLM 生成的字符序列对应可能的动作之一,则选择此动作;否则,需要执行临时 (ad-hoc) 的动作或者通过加一层 MLP 来输出动作。第二种方法是直接使用 LLM 来计算每个动作概率的方法,即在给定提示 p 的条件下计算每个动作 A 中每个 token 的条件概率:

这里的 ai 是第 i 个动作,w 是组成 a 的 token(单词),在提示为 p,且前 j-1 个词为 wx 的情况下,wj 的概率。文中选择的是后一种方法,最后使用 softmax 函数归一化概率以得到 A 的分布。

4.3 PPO 微调

具体方法是使用 PPO 强化学习方法,同时学习策略函数和值函数。

在策略方面,使用 LLM:

计算的似然来计算每个动作的概率。

对于值近似,在第一个解码器块的最后一层的顶部添加一个具有单个输出值的 MLP:

见图 -1 的 (d),实验中使用了 Encoder-Decoder 的 LLMs,但文中方法可以很容易地用于仅解码器模型,方法是将值 head 附加到提示的最后一个提示 token 的 Decoder 块。

4.4 使用 Lamorel 的分布式 LLM 策略

使用大型语言模型(LLM)在动作空间上计算概率是一项昂贵的计算任务,因为它需要为每个动作计算概率。为了解决 BabyAI(扩展到 BabyAI-Text)中的任务,通常需要进行多次交互,研究团队部署了多个 LLM,并将每个工作器并行处理一部分动作的得分,从而使时间几乎线性减少。作者开发了一个名为 Lamorel 的 Python 库来封装上述工作。

5 实验

使用 Flan-T5 780M 训练语料库。实验部分还描述了 prompt 是如何构建的,包含很多细节,建议看一下,这里就不翻译了。

5.1 LLM 适应和学习解决任务的速度

为了研究问题 Q1,我们在 BabyAI-Text 中训练我们的代理 1.5 million 步。

5.2 Q2 对新对象泛化

如何将其技能泛化到新的对象上。通过图 -4 的 b,c 可以看出,当任务中包含词汇表外的名词时,GFlan-T5 不受影响。即使在完全不同的环境中,GFlan-T5 的成功率也降低了 13%。

图 -4 泛化测试:我们在 5 个不同任务的混合上训练所有代理,并在 1000 个测试片段(也包含这 5 个任务的混合)上评估他们的泛化能力(a)。我们将他们与两个基线进行比较:一个随机选择动作的代理(随机)和 ZeroShot 的 Flan-T5(没有任何微调)。然后,我们进行几个泛化研究,以回答 Q2 和 Q3,通过(b)用词汇表外的名词替换对象名,(c)用发明的词替换对象和颜色,(d)测试新的任务组合,(e)用同义词替换动作,以及(f)将整个环境的 " 前往 " 任务翻译成法语。

5.3 Q3 对新功能泛化

在图 -4(d) 的新任务组合中,可以看到所有的代理都未能解决这些新任务,但是 GFlan-T5 的表现超过了其他代理。

在图 -4(e) 将动作替换为同义词来测试我们的代理的鲁棒性时,可以看到 GFlan 相对于 Flan 有明显下降,可能是由于对动作单词的过拟合造成的。

在图 -4(f) 语言泛化中,使用训练期间未见过的语言(法语)来测试它们。Flan-T5 是使用多语种语料库进行预训练,并且能够翻译简单的句子。测试结果显示,GFlan-T5 的成功率(0.02)比随机选择(0.30)要差。因此可以认为当一次修改太多 Grounding 的符号时,功能基础化无法转移到这个新的符号子系统。

5.4 Q4 使用 RL 与行为克隆对比

从 Table-1 中可以看到 GFlan-T5 在这两个任务上都超过了行为克隆 BC。

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

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

相关文章

Listary 清除无效的搜索历史记录

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 listary 用过一段时间后,搜索其他东西总会显示一个感叹号的之前的文件,强迫症很难受啊。 二、原因分析 猜测是历史记录的问题记录历史搜索的文件没有重建 三、解决方案 提示…

Centos7 搭建openVPN

一、概述 CentOS 搭建openVPN时需要一台有公网IP的服务器。openVPN 是一个基于SSL/TLS的虚拟专用网络(VPN),它允许你创建一个安全的连接,通过它你可以将你的网络流量封装并加密,从而在公网上进行传输。 一、搭建证书…

现代白色系装修,打造高级感生活空间。福州中宅装饰,福州装修

玄关 玄关嵌入满墙收纳鞋柜,下方留空15公分作为拖鞋区,中间留出40公分作为随手区 客厅 客厅打通阳台,白色亮面瓷砖通铺,即使不做落地窗设计,室内也是十分明亮 落地电视柜,减少卫生死角,白色整体…

vulnhub prime1通关

目录 环境安装 1.信息收集 收集IP 端口扫描 目录扫描 目录文件扫描 查找参数 打Boss 远程文件读取 木马文件写入 权限提升 方法一 解锁密钥 方法二: linux内核漏洞提权 总结 环境安装 Kali2021.4及其prime靶机 靶机安装:Prime: 1 ~ Vul…

Install Docker

Docker Desktop 直接安装 Docker Desktop Docker Desktop includes the Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper. Linux下安装Docker CE 参考官方文档 参见阿里云的文档 # step 1…

docker安装WireGuard服务

启动 WireGuard 如下异常 则是linux内核需要升级 $ wg-quick down wg0 $ wg-quick up wg0 Error: WireGuard exited with the error: Cannot find device "wg0" This usually means that your hosts kernel does not support WireGuard!at /app/lib/WireGuard.js:65…

效率加倍 :5 个有助于自动化办公的 Python 工具库

想想你在工作中所做的所有重复性任务。发送电子邮件、创建 Excel 报告、从 PDF 中提取数据、手动进行大量的数据分析工作。 我相信没有人愿意天天重复这样做,但最终,必须有人这样做。有没有更好的解决方案呢? 在本文中,我将向大…

【STL学习】(1)string类

前言 本文将详细讲解STL中string类的常用的接口函数。 一、为什么学习string类? 1、字符串类型的重要性 在现实生活中有很多复杂类型是以字符串来表达的,比如我们在搜索引擎输入的“数据”,一个人的姓名、身份证号等等。 所以字符串类型是很…

康奋威科技邀您到场参观2024长三角快递物流展

参展企业介绍 杭州康奋威科技股份有限公司创立于2005年,由国家“万人计划”专家任天挺先生创立并担任法人,是一家专业从事智能装备研发与制造的国家级高新技术企业。专注于自动化控制、机械设计、信息化方面的技术研究,主要为太阳能光伏、智…

一篇文章让你完全掌握使用Git推送代码到新版GitCode

Git推送代码到新版GitCode 前言一、安装git二、tortoise git的安装2.1 关于tortoise git2.2 tortoise git和tortoise git汉语包的下载2.3安装过程2.4配置tortoise git 三、创建GitCode项目关于READM文件关于.gitignore文件关于LICENS文件 四、配置GitCode和Git4.1克隆项目4.2配…

【十二】【算法分析与设计】滑动窗口(3)

30. 串联所有单词的子串 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab","cd","ef"]&#xff…

【Godot 3.5控件】用TextureProgress制作血条

说明 本文写自2022年11月13日-14日,内容基于Godot3.5。后续可能会进行向4.2版本的转化。 概述 之前基于ProgressBar创建过血条组件。它主要是基于修改StyleBoxFlat,好处是它几乎可以算是矢量的,体积小,所有东西都是样式信息&am…

Mysql学习--深入探究索引和事务的重点要点与考点

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

基于springboot+vue+Mysql的闲一品交易平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

2024,产品国际化改造

2024,我们的核心是国际化/信创/多租户/AI融合应用。 作为招投标与即将推进的项目需求,优先对产品进行国际化改造。 1.我们的思考 作为基础平台个性化定制的项目落地模式,我们必须兼顾平台与定制直接的平衡,使整个系统能快速在多…

力扣541. 反转字符串 II

思路:题目的意思就是每2k个字符进行一次循环访问,如果个数小于k就全部反转,如果大于k则只反转k个字符; class Solution {public String reverseStr(String s, int k) {char[] charArray s.toCharArray();int length charArray.length;//每…

DDR4总结最全纯干货分享

DDR存储器发展的主要方向一言以蔽之,是更高速率,更低电压,更密的存储密度,从而实现更好的性能。 DDR4 SDRAM(Double Data Rate Fourth SDRAM):DDR4提供比DDR3/ DDR2更低的供电电压1.2V以及更高的…

学会这些Jmeter插件,才能设计出复杂性能测试场景

为什么要使用jmeter线程组插件呢? jmeter自带的线程组插件模拟的压测场景非常有限,当需要模拟复杂压测场景的时候,推荐大家使用jmeter线程组插件。 如何下载jmeter线程组插件呢? 早期版本的jmeter可以针对我们需要的扩展功能&a…

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…

宏集PLC如何应用于建筑的3D打印?

案例概况 客户:Rebuild 合作伙伴:ASTOR 应用:用于建筑的大尺寸3D打印 应用产品:3D混凝土打印机 一、应用背景 自从20世纪80年代以来,增材制造技术(即3D打印)不断发展。大部分3D打印技术应…