Google DeepMind最新研究,将视觉语言大模型作为强化学习的全新奖励来源

4f0a301365a44f66aabecd2975cb2855.png

论文题目:Vision-Language Models as a Source of Rewards
论文链接:https://arxiv.org/abs/2312.09187

在大型语言模型(LLM)不断发展的进程中,强化学习扮演了重要的角色,ChatGPT就是在GPT-3.5的基础上经过人类反馈的强化学习算法微调得到。而对于强化学习本身而言,如何使其优化算法在各种丰富的开放环境中更好的完成目标是目前研究的主要热点。其中的一个关键限制因素就是需要设计适合多种场景的奖励函数

本文介绍一篇来自Google DeepMind的研究论文,本文探索了使用现成的视觉语言模型(vision-language models,VLM)作为强化学习奖励来源的可行性。具体来说,本文作者选取了CLIP系列模型来对各种不同的语言建模任务进行侧重于视觉模态的奖励,并将其训练各种RL智能体。作者在两个不同的视觉领域中对这种奖励方法进行了实验,实验结果表明,VLM模型生成的奖励质量会随着视觉编码器参数规模的增加而提高。

01. 引言

强化学习(RL)领域的一些里程碑工作很多都发生在奖励函数可以明确定义的领域,例如在一些游戏领域和模拟环境中。这种场景中的奖励功能包括:游戏获胜/失败、游戏得分的变化、基础状态的变化等。随着强化学习的不断发展,研究者们开始对强化学习的通用性提出了更高的要求,例如将其应用到现实世界中,因为在模拟环境中,我们很容易根据模拟对象的状态变化来计算奖励。而在现实世界中,奖励必须根据实际的观察来得到。此外,针对不同目标来设计奖励函数也是一个相当繁重的工作,这也导致了很多RL算法无法泛化到通用领域中

为了解决这些问题,本文作者提议使用一些视觉语言模型(VLM)作为RL模型在视觉环境中的奖励函数,由于VLM通常在配对的图像和文本数据集上进行了预训练,具有开箱即用的视觉检测、分类和问答能力,因此本文提出了一种从预训练CLIP图像和语言嵌入中提取多模态稀疏二元奖励的方法,该方法可以训练各种智能体在Playhouse[1]和 AndroidEnv[2]视觉环境中实现各种语言目标,同时无需针对特定环境对模型进行微调

02. 本文方法

​​​​​​​

03. 实验效果

本文的实验设置类似于标准的在线强化学习设置,agent通过与环境的试错交互来最大化奖励,唯一的区别在于,本文的agent不使用真实奖励或手工设计的奖励函数进行优化,而是根据VLM模型生成的奖励进行训练,为了综合评价本文方法的性能,作者在实验中分别展示了VLM奖励(本文称之为内在奖励)和真实奖励得到的性能。

本文在两个视觉环境中进行了实验,如下图所示:

(1)Playhouse,这是一个基于Unity的模拟环境,可以在程序生成的房间中以第一人称视角行动。在Playhouse环境中,作者设计了寻找、举起、拾取并放置这三种难度递增的任务。

(2)AndroidEnv,这是一个基于Android操作系统的开源环境,允许智能体通过在实时模拟的Android设备上进行触摸屏手势交互。在AndroidEnv环境中,作者设计了两种任务,其一是打开常用应用程序,例如Gmail、Google Sheets、Chrome等,其二是打开一些不太知名的APP。

7a89893169d143b7b259812600fd4ffa.png

作者在训练过程中记录了agent获得的奖励值变化情况,下图展示了本文方法在不同实验环境中的真实奖励和VLM奖励的变化曲线,由于VLM奖励的记录并不精确,因而其与真实奖励之间存在系统性差距,但是从下图中可以看出,模型在训练期间学习到的VLM奖励与真实奖励之间存在很强的相关性

1375b7ff0c084bd9a9d26c1389b28aa1.png

此外,本文作者还对VLM奖励方法的扩展性进行了深入探索,下图中展示了模型在Playhouse环境中评估VLM奖励相对于真实二进制奖励的准确性情况,图中左侧展示了,随着用于奖励模型的VLM参数规模的增加(从200M参数到1.4B参数),模型的精确度-召回率曲线得到了明显的改善。图中右侧表示当使用不同backbone的VLM进行训练时,模型仍然能够获得较为准确的奖励信号。

cf3bd2c7f4c7498595e4bed6b3494873.png

04. 总结

本文介绍了一种将现成的视觉语言模型(VLMs)作为强化学习奖励函数的框架,例如将多模态对齐CLIP模型的文本编码器和视觉编码器部署在强化学习模型中,而无需再特定领域的数据集上进行微调。通过对此类VLM在RL过程中的性能分析,作者发现,VLM模型生成的奖励质量会随着视觉编码器参数规模的增加而提高。这些结果表明,如果社区进一步发展出更大规模,更佳性能的视觉语言大模型,那我们训练更加通用的强化学习智能体的难度也会大大降低。

参考

[1] DeepMind Interactive Agents Team, Josh Abramson, Arun Ahuja, Arthur Brussee, and Rui Zhu. Creating multimodal interactive agents with imitation and self-supervised learning, 2022.

[2] Daniel Toyama, Philippe Hamel, Anita Gergely, Gheorghe Comanici, Amelia Glaese, Zafarali Ahmed, Tyler Jackson, Shibl Mourad, and Doina Precup. Androidenv: A reinforcement learning platform for android. arXiv preprint arXiv:2105.13231, 2021.


关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

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

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

相关文章

上海泗博HART转ModbusTCP网关HME-635应用案例之组态王和超声波液位计通信

如今工业现场的应用也逐渐把现场的不同应用协议转换成以太网,以此来提升现场的通信速度和质量。Modbus TCP是工业以太网协议的一种,也是现场应用中最常使用的。本应用案例是基于Modbus TCP的组态王和基于HART的超声波液位计之间数据通讯的具体应用。 应用…

c#cad 创建-点(六)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 创建一个点的命令方法。代码的主要功能是在当前活动文档中创建一个点,并将其添加到模型空间块表记录中。 代码的主要步骤如下: 获取当前活动文档、数据库和编辑器对象。使用事务开始创建点的过程…

【Git版本控制 05】多人协作

目录 一、邀请开发用户 二、新建远程分支 三、拉取远程分支 四、推送远程分支 五、合并远程分支 六、多分支协作 一、邀请开发用户 在windows环境下,再clone同⼀个项⽬仓库,来模拟⼀起协作开发的另⼀名⼩伙伴。 际开发中,每个⽤⼾都有…

vue的8大生命周期

第072个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 提供vue2的一些基本操作:安装、引用,模板使用,computed&a…

【Python】虚拟环境miniconda安装(python3.7, python3.x)

背景 使用Python开发项目时,我们一般都需要安装环境,可能是在物理机上直接安装,也可能是在虚拟环境上安装,当前是怎么按照conda环境的示例,可以指定安装Python3.x的所有版本。 安装 首先,需要登录当前的…

微信小程序(三十九)表单信息收集

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.表单收集的基本方法 2.picker的不足及解决方法 源码&#xff1a; index.wxml <!-- 用户信息 --> <view class"register"><!-- 绑定表单信息收集事件--><form bindsubmit"…

计算两个数相除后的余数返回值为浮点型math.fmod(x, y)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算两个数相除后的余数 返回值为浮点型 math.fmod(x, y) [太阳]选择题 请问以下代码执行math.fmod()后输出的结果是&#xff1f; import math print("【执行】math.fmod(10, 4)"…

高斯伪谱C++封装库开源!

Windows x64/86 C无依赖运行高斯伪谱法求解最优控制问题&#xff0c;你只需要ElegantGP! Author: Y. F. Zhang His Github: https://github.com/ZYunfeii 写在前面 这个库在你下载它的那一时刻起不再依赖任何其他代码&#xff0c;直接可用来构建C的最优控制问题并进行求解。…

springboot163美食推荐商城的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

C++多线程:this_thread 命名空间

std::this_thread 是 C 标准库中提供的一个命名空间&#xff0c;它包含了与当前线程相关的功能。这个命名空间提供了许多与线程操作相关的工具&#xff0c;使得在多线程环境中更容易进行编程。 源码类似于如下&#xff1a; namespace std{namespace this_thread{//...........…

图片加速接口:缓存图片,加速访问,解决防盗链

CSDN会自动把图片存到自己的图床&#xff0c;测试效果不好&#xff0c;建议到 https://www.skyqian.com/archives/speed-up-picture.html 查看效果。 引言 不知道是否有遇到以下场景&#xff1a; 图片打开很慢&#xff01;因为图片源来自于国外。图片可以正常打开&#xff0c…

在C++的union中使用std::string(非POD对象)的陷阱

struct和union的对比 union最开始是C语言中的关键字&#xff0c;在嵌入式中比较常见&#xff0c;由于嵌入式内存比较稀缺&#xff0c;所以常用union用来节约空间&#xff0c;在其他需要节省内存的地方也可以用到这个关键字&#xff0c;写一个简单程序来说明union的用途 struc…

docker 运行jar包 指定配置文件

要在Docker中运行JAR包并指定配置文件&#xff0c;你可以创建一个Dockerfile来定义你的容器环境&#xff0c;并在其中指定如何运行JAR包和配置文件。下面是一个简单的例子&#xff0c;展示了如何在Dockerfile中设置这些配置&#xff1a; 第一步&#xff1a;创建 Dockerfile文件…

第十个知识点:继承

在ES6之后&#xff0c;javascript引入了类的概念&#xff0c;也就是说与java相同&#xff0c;我们可以在js文件中创建类与对象&#xff0c;然后通过extend继承 <script>class Father {constructor(name) {//父类构造器this.name name;}speak(){//父类方法console.log(我…

Codeforces Round 923 (Div. 3)E. Klever Permutation 找规律,有共同区间

Problem - E - Codeforces 目录 Source of idea: 思路&#xff1a; 代码&#xff1a; 另一个up的找规律的解法&#xff1a; Source of idea: Codeforces Round 923(A-F题解) - 哔哩哔哩 (bilibili.com) 思路&#xff1a; 上面up分析的很好。两个相邻区间也就端点不一样&…

使用Pillow来生成简单的红包封面

Pillow库&#xff08;Python Imaging Library的后继&#xff09;是一个强大而灵活的图像处理库&#xff0c;适用于Python。Pillow 库&#xff08;有时也称 PIL 库&#xff09; 是 Python 图像处理的基础库&#xff0c;它是一个免费开源的第三方库&#xff0c;由一群 Python 社区…

IAR报错:Error[Pa045]: function “halUartInit“ has no prototype

在IAR工程.c文件末尾添加一个自己的函数&#xff0c;出现了报错Error[Pa045]: function "halUartInit" has no prototype 意思是没有在开头添加函数声明&#xff0c;即void halUartInit(void); 这个问题我们在keil中不会遇到&#xff0c;这是因为IAR编译器规则的一…

FPGA_vga显示

一 VGA 1.1 VGA VGA是视频图像阵列&#xff0c;是一种使用模拟信号进行视频传输的标准协议。 1.2 VGA接引脚定义 VGA分公母两种&#xff0c;RGB显示标准。 1.3 VGA显示器 VGA显示器采用图像扫描的方式进行图像显示&#xff0c;将构成图像的像素点&#xff0c;在行同步信号…

7机器人位姿的数学描述与坐标变

由上次刚体的空间转动直接切换为机器人相关术语。 1.机器人位姿的数学描述与坐标变换 1.1位姿描述 {B}相对于{A}的姿态描述用3x3矩阵表示为&#xff1a; 式中为三个单位正交主矢量&#xff0c;分别表示刚体坐标系{B}的三个坐标轴XBYBZB在参考系{A}中的方位&#xff0c;∠XBXA表…

leetcode(滑动窗口)483.找到字符中所有字母异位词(C++详细解释)DAY4

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&a…