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,一经查实,立即删除!

相关文章

python将word文件转换成pdf文件

要将word文件转换成pdf文件,可以使用Python的pywin32库结合Microsoft Office软件来实现。 方法一: import win32com.client as win32def word_to_pdf(input_file, output_file):word win32.gencache.EnsureDispatch(Word.Application)doc word.Docume…

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

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

c#cad 创建-点(六)

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

Java排序方法

在Java中,有多种排序方法可用,其中包括快速排序、归并排序、插入排序等等。Java标准库提供了对数组和集合进行排序的方法。下面是一些常用的Java排序方法的示例: 1. 使用Arrays类中的sort方法对数组进行排序(快速排序&#xff09…

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

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

Redis持久化-fsync策略

在Redis中,fsync 策略用于控制何时将数据同步到磁盘上。这是持久化功能的一部分,它确保即使在发生意外关闭或崩溃时,Redis的数据也不会丢失。 有三种主要的 fsync 策略: no(默认): Redis不会主…

vue的8大生命周期

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

npm_config_xxx

// package.json{ "scripts": { "log": "node index.js", } }// index.js function logProcessEnv(key){ console.log(process.env[${key}], process.env[key]); } logProcessEnv(npm_config_foo); 问题: npm run log 和 yarn log…

sui move笔记

前言 一些疑问: sui 和move是什么关系? 基础 基本数据类型 Move 的基本数据类型包括: 整型 (u8, u32,u64, u128,u258)、布尔型 boolean 和地址 address。 Move 不支持字符串和浮点数。 _u8:代表8位无符号整数类型,范围是0~255。占用内存…

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

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

深入对比:java中Synchronized关键字和ReentrantLock锁的终极对决

Synchronized和ReentrantLock在Java中都是用来控制并发访问共享资源的机制,但它们在获取释放锁的方式、锁的特性以及锁的实现级别等方面存在一些差异。 锁的特性 synchronized是Java的关键字,可以隐式地获取和释放锁。synchronized关键字通过内置的锁机…

vue百度地图的和element输入框/v-region的联动

vue百度地图的使用 第一步:安装插件第二步:main.js中引用第三步:页面中使用 第一步:安装插件 npm install vue-baidu-map --save第二步:main.js中引用 // 百度地图 import BaiduMap from vue-baidu-map Vue.use(Baid…

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

注释很详细&#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)"…

sql查询大小写问题

IN() 函数大小敏感判断 如果你在使用 MySQL 的 IN() 函数时发现大小写不敏感&#xff0c;那可能是由于你的 MySQL 数据库的配置设置了大小写不敏感的规则。 这通常是由 lower_case_table_names 参数引起的。在 MySQL 中&#xff0c;这个参数决定了数据库系统在存储和比较表名…

高斯伪谱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…