论文阅读_世界模型

news2024/10/25 10:34:00
1
2
3
4
5
6
7
8
英文名称: World Models
中文名称: 世界模型
链接: https://arxiv.org/abs/1803.10122
示例: https://worldmodels.github.io/
作者: David Ha, J¨urgen Schmidhuber
机构: Google Brain, NNAISENSE, Swiss AI Lab, IDSIA (USI & SUPSI)
日期: 27 Mar 2018
引用次数: 1033

1 读后感

不同于之前简单的强化学习方法,这篇论文将模型分为三部分:视觉 V、记忆 M 和控制 C。视觉部分 V 将视觉信息压缩到潜空间,记忆部分 M 学习物理空间的变化规律,控制部分 C 则使用强化学习模型来学习智能体的最佳动作。

这相当于将模型拆分为大脑的不同功能区域。复杂的世界信息保留在 V 和 M 中,同时确保强化学习部分 C 足够小,以便快速训练。V 和 M 可以分别看作对空间和时间的建模。

文中还讨论了梦境和海马回放。由于有了时序预测模型 M,我们可以在没有现实输入的情况下通过 M 计算出后续状态,从而生成一个想象中的环境。还可以利用梦中产生的数据来训练控制模型,并通过调节梦的真实程度来构造更复杂的训练环境,以提升模型的性能。

文章发表于 2018 年,当时还没有太多可用的深度强化学习库。现在,我们可以利用更新的强化学习库和硬件以更快、更精确的方式建模。然而,我认为 V+M+C 的结构仍然适用。如果将智能体(Agent)视为一个人,他们的视觉能力 V 和对时间变化的预测能力 M 是通用的;而强化学习控制器 C 则针对具体目标,如赛车或打球。因此,在实际应用中,可能会采用一个 V、一个 M 和多个 C 的结构。这也要求 C 足够小,同时将通用知识提取到 V 和 M 中。

事实上,真实世界(模型输入)与我们理解的世界(M 输出)之间存在很大差异。

图 4:代理由三个紧密协作的组件组成:视觉(V)、内存(M)和控制器(C)

2 摘要

目标:建立世界模型,学习压缩空间内的时空表示。通过使用从世界模型中提取的特征作为智能体的输入,训练智能体完成具体任务。

方法:以无监督的方式快速训练一个非常紧凑和简单的策略,可以解决具体问题。甚至可以完全在它自己的幻觉梦境中训练智能体,并将其中产生的世界模型,应用到实际环境中。

结论:通过训练代理,表明使用文中的世界模型可以提高对世界的表征能力。

3 Agent 模型

文中提出了一个受自身认知系统启发的简单模型。该模型包括视觉感知组件 V,能够将所见内容压缩为较小的表征空间;记忆组件 M,能够根据历史信息预测未来行为;以及决策组件 C,根据视觉和记忆组件的表示来确定行动。这个模型通过将输入信息处理和决策制定进行分离,可以实现更高效的智能体行为。

3.1 VAE (V) 模型

变分自编码器 VAE 将每个时间步的视觉层面将图像压缩到隐空间 z。

图 5:变分自编码器(VAE)的流程图。

3.2 MDN-RNN (M) 模型

在时序层面使用 RNN 来预测未来。由于许多复杂环境本质上是随机的,因此训练 RNN 输出概率密度函数 p(z),而不是确定性预测 z。简而言之,即预测下一步潜向量 z 的概率分布。

图 6:具有混合密度网络输出层的 RNN。MDN 输出高斯分布混合的参数 p(z),用于对下一个潜在向量的预测进行采样 z 。

P(zt+1|at,zt,ℎt) ,其中 at 是 time t 采取的动作, ℎt 是 RNN 在 time t 的隐藏状态。根据温度参数来控制模型的不确定性。

3.3 控制器 (C) 模型

控制器(C)模型负责确定在环境推进过程中代理能够获得的预期累积奖励最大化的行动过程。为了使 C 更简单且更小,它与 V 和 M 分开训练,因此智能体的大部分复杂性留在世界模型(V 和 M)中。

C 是一个简单的单层线性模型,它将 z 映射到每个时间步的操作 a。

3.4 结合 V、M 和 C

图 8:Agent 模型流程图。原始观测值经过 V 处理得到潜在向量 z。C 的输入是这个潜在向量 z,与 M 的隐藏状态 ℎ 在每个时间步长上连接。然后,C 使用输出 a 控制动作向量,并对环境产生影响。接着,M 使用当前的状态 z 和动作 a 更新自己的隐藏状态,生成下一个时间步 t+1 上要使用的 ℎ。

V 和 M 使用深度学习方法进行训练;并选择了协方差矩阵适应进化策略(CMA-ES)来优化 C 的参数,它适用于解空间中具有多达几千个参数的情况。通过在一台拥有多个 CPU 核心的单机上并行运行多个环境实例来训练模型 C 的参数。

4 赛车实验

4.1 用于特征提取的世界模型

预测世界模型可以帮助我们提取有用的空间和时间表示。通过将这些功能作为控制器的输入使用。

为了训练我们的 V 模型,首先收集了一个包含 10,000 个随机推出的环境的数据集。让一个智能体随机行动多次来探索环境,并记录所采取的随机行动 a 和由此产生的环境观察结果。使用这个数据集来训练 V 以学习每一帧观察到的潜在空间。

使用经过训练的 V 模型对每一帧进行预处理,生成 z,以便训练时序记忆 M 模型。

世界模型(V 和 M)任务的目标是压缩和预测观察到的图像帧序列,但并不了解来自环境的实际奖励信号。只有控制器(C)模型能够获取来自环境的奖励信息。线性控制器模型只有 867 个参数,因此 CMA-ES 等进化算法非常适合用于优化任务。

4.2 程序

具体步骤如下:

  • 从随机策略中收集 10,000 轮数据。
  • 使用 VAE(V)训练模型,用于将帧编码为 z。
  • 使用 MDN-RNN(M)训练模型,对概率 P(z) 进行建模。
  • 将控制器(C)定义为 a。
  • 使用 CMA-ES 求解参数 w 和 b,以最大化预期的累积奖励。

模型参数量如下:

4.3 结果

首先测试使只能访问 V 而不能访问 M 时,控制器的效果。实验证明,这会导致摇晃和不稳定的驾驶,并在更陡峭的弯道上错过赛道。在 100 次随机试验中,它获得了平均分数 632 ± 251。

M 用于预测环境的变化,因为ℎ包含有关未来概率分布的信息,所以 Agent 可以查询 RNN 以指导其行动决策。加入 M 后,在 100 次随机试验中获得了 906 ± 21 分。报告排行榜上最佳解决方案在 100 次随机试验中获得了平均分数 838 ± 11。

4.4 赛车之梦

世界模型可以用来对未来进行建模,因此我们可以让它自己计算假设的赛车场景。可以要求它生成给定当前状态的 zt+1 概率分布,并采样 a,zt+1 作为实际观察值。训练过的 C 可以应用于由 M 产生的虚拟环境中。

5 VizDoom 实验

5.1 在梦中学习

本部分研究了能否通过训练智能体在梦境中学习,并将其学到的策略应用于实际环境。

智能体并不直接观察现实,而只是通过世界模型看到世界的映像。在这个实验中训练了一个智能体,在由世界模型生成的幻觉中进行训练。

在这个游戏中,特工必须学会避开怪物从房间另一侧射出的火球。在这种环境中没有明确的奖励,累积奖励可以定义为代理保持存活的时间步数。环境的每次最多运行 2100 个时间步长,如果连续 100 轮的平均生存时间大于 750 个时间步长,则认为任务完成。

5.2 程序

在这个任务中,M 模型除了预测下一步的 z 外,还将预测智能体是否在下一帧中死亡。

在梦境模拟中,不需要 V 模型对任何真实像素帧进行编码,因此智能体将完全在潜在空间环境中进行训练。

  • 收集 10,000 轮数据的随机策略。
  • 使用 VAE(V)将每一帧编码为潜在向量 z,并使用 V 将从第一步收集的图像转换为潜在空间表示。
  • 训练 MDN-RNN(M)进行时序建模。
  • 定义控制器(C)生成动作 a。
  • 使用 CMA-ES 求解生成动作 a 的参数 W,以最大化虚拟环境中的预期生存时间。
  • 在实际环境中使用从虚拟环境中学到的策略。

5.3 在梦中训练

这里的 RNN 学习了完整的游戏环境,包括游戏逻辑、敌人行为、物理和 3D 图形渲染。

与实际游戏环境不同的是,虚拟环境中可能增加额外的不确定性,使得梦境环境中的游戏更加具有挑战性。

通过增加温度参数来增加不确定性,使得梦境变得更加困难。火球可能会在难以预测的路径上更随机地移动,代理可能因为纯粹的不幸而死亡。实验发现,在较高温度设置下表现良好的 Agent 通常在正常设置下也表现更好。

5.4 将策略转移到实际环境中

让代理在虚拟环境中接受训练,并在原始的 VizDoom 场景中测试其性能。经过超过 100 次随机连续试验,分数达到了约 1100 个时间步长,远远超出了要求分数 750 个时间步长,并且远高于在更困难的虚拟环境中获得的分数。

5.5 欺骗世界模式

在游戏过程中,智能体也会寻找游戏中的漏洞以进行作弊,以最大化其预期的累积奖励。然而,如果学习的虚拟环境存在问题(即 M 模型有缺陷),代理就会找到在虚拟环境中看起来不错但在实际环境中会失败的策略。

为了解决这个问题,可以通过调整温度参数来控制 M 模型中的随机性。实验结果显示训练 C 模型对具有不同不确定性水平的幻觉虚拟环境有影响。表 -2 展示了在给定温度下训练代理后,在实际环境中进行 100 次随机推演所得到的平均分数。

OpenAI Gym 排行榜(Paquette,2016 年)的最佳成绩是 820 ± 58。加大温度会增加难度,从而使模型的分数更高。但是如果难度过高,反而会产生相反的效果。

6 迭代训练程序

对于更复杂的任务,需要进行迭代训练过程。

  1. 使用随机模型参数初始化 M 和 C。
  2. 在实际环境中进行 N 次推演。将期间的所有操作 a 和观察结果 x 保存到存储器中。
  3. 训练模型 M 来建模 P(x),同时通过优化 C 来改进 M 的内部预期奖励。
  4. 如果任务尚未完成,返回第 2 步继续进行。

这类似于神经科学中的海马体回放,即:动物在休息或睡眠时如何回放最近的经历。回放最近的经历在记忆巩固中起着重要作用,它更像是思考而不是做梦。

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

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

相关文章

基于Llama 2家族的提示词工程:Llama 2 Chat, Code Llama, Llama Guard

Prompt Engineering with Llama 2 本文是学习 https://www.deeplearning.ai/short-courses/prompt-engineering-with-llama-2/ 的学习笔记。 文章目录 Prompt Engineering with Llama 2What you’ll learn in this course [1] Overview of Llama Models[2] Getting Started wi…

基于docker安装的Jenkins实现python执行自动化测试程序

背景 通过Jenkins实现自动化测试,在全局配置中配置好后,执行构建发生如下错误 解决办法: 在Jenkins中插件管理中下载python后,回到Jenkins容器中 查找刚下载的python所在位置 到Jenkins中全局配置中修改脚本 1.可以在环境变量中定义python所在位置 2.在一下图示中进行获取…

Nerf原理理解

神经辐射场是一个简单的全连接网络(权重约为 5MB),经过训练可使用渲染损失再现单个场景的输入视图。该网络直接从空间位置和观看方向(5D 输入)映射到颜色和不透明度(4D 输出),充当“…

2022年浙江省职业院校技能大赛信息安全管理与评估 理论题答案

培训、环境、资料 公众号:Geek极安云科 网络安全群:775454947极安云科专注于技能提升,赋能 2024年广东省高校的技能提升,在培训中我们的应急响应环境 成功押题成功,知识点、考点、内容完美还原大赛赛题环境&#xff0c…

获取C语言语句对应的汇编码和机器指令

借助IDE的调试功能 以CodeBlocks为例,先设置断点,然后点击红色三角形调试。 然后选择Debug➡ Debugging Windows➡Disassembly 就可以看到了 使用命令行 在工程文件中,一般可以找到一个.o文件。如果没有,可以先在program.c的目录下…

不知开关电源是否短路?这三种测试方法教您判断

开关电源短路是常见的一种故障,容易烧毁元器件、损毁设备,因此在开关电源设计制造过程中常需要对其短路保护功能进行测试。那么要如何判断开关电源是否短路呢?影响开关电源短路的因素有哪些呢? 检测开关电源是否短路的方法 一、用…

C语言从入门到精通 第十二章(程序的编译及链接)

写在前面: 本系列专栏主要介绍C语言的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程。除了参考下面的链接教程以外,笔者还参考了其它的一些C语言教材,笔者认为重要的部分大多都会用粗体标注&#xf…

Python小白福利之enumerate函数

enumerate函数用于遍历序列中的元素以及它们的下标。 enumerate函数说明: 函数原型:enumerate(sequence, [start0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 即对一个可遍历的数据对象(如列表、元组或字符串)&a…

深度神经网络 基本知识 记录

资料:https://www.bilibili.com/video/BV1K94y1Z7wn/?spm_id_from333.337.search-card.all.click&vd_source14a476de9132ba6b2c3cbc2221750b99 计划:3~4天 注:网课讲的内容比较糅杂,记录的内容可能会出现重复 杂 人工智能…

乌鸡的身高

解法&#xff1a; 只需要看身高最高的乌鸡个数是否>2.若满足则除去当前这只乌鸡的最高身高都是最高身高。 若不满足则只需要看最高的和第二高的乌鸡。 #include<iostream> #include<vector> #include<algorithm> #include<cmath> using namespac…

vSphere 8考试认证题库 2024最新(VCP 8.0版本)

VMware VCP-DCV&#xff08;2V0-21.23&#xff09;认证考试题库&#xff0c;已全部更新&#xff0c;答案已经完成校对&#xff0c;完整题库请扫描上方二维码访问。正常考可以考到450分以上&#xff08;满分500分&#xff0c;300分通过&#xff09; An administrator is tasked …

时光机关:探秘Java中的Timer和TimerTask

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 时光机关&#xff1a;探秘Java中的Timer和TimerTask 前言Timer和TimerTask的基本概念Timer&#xff1a;TimerTask&#xff1a;为何它们是 Java 中任务调度的得力工具&#xff1a; Timer的使用方法创建…

AI生成的图片,真没那么好分辨,一不留神就会被骗

我们先来做个小测试&#xff0c;30秒时间快速找出下面哪个图是真人&#xff0c;哪个是A生成的&#xff1f;答案揭晓&#xff1a;第1张是真人&#xff0c;第2张是AI 在AI技术如此发达的今天&#xff0c;很多人都没办法轻易辨别出来。AI越来越会“欺骗”大家的眼睛了。 当然&am…

python小白考教资(教资中的简单编程)

首先&#xff0c;写习惯了c语句的我&#xff08;虽然也会一丢丢&#xff09;&#xff0c;当然得深知python与C语言的一些简单的语句区别&#xff0c;这里为什么我要学习python呢&#xff0c;因为有些题目&#xff0c;python一句话就可以解决&#xff0c;但是以我的水平&#xf…

学习JAVA的第十四天(基础)

目录 Collection集合 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 遍历 数据结构 栈 队列 数组 链表 前言&#xff1a; 学习JAVA的第十三天 Collection集合 Collection的遍历方式&#xff1a; 迭代器&#xff08;不依赖索引&#xff09;遍…

【黑马程序员】C++项目之机房预约管理系统实战

文章目录 需求系统简介身份介绍机房介绍申请简介系统具体需求 实现菜单与退出功能实现功能测试 创建身份类创建角色基类创建学生类创建教师类创建管理员类 登录模块功能描述登录函数封装各个校色具体登录验证管理员操作界面调用流程 管理员模块构造函数实现管理员子菜单显示添加…

Leetcode : 147. 对链表进行插入排序

给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。 每次迭代中&#xff0c;插入排序只从输…

上门预约平台有哪些优势和特点

在着手开发之前&#xff0c;市场调研是不可或缺的步骤。它能帮助我们深入了解当前上门按摩市场的供需状况及竞争态势&#xff0c;进而挖掘潜在用户的真实需求和期望。这些宝贵的信息将成为我们塑造产品特性和锁定目标用户群体的关键。 紧接着&#xff0c;根据市场调研的反馈&am…

python将conda环境打入docker环境中

1.假设你本地已经安装好了conda相关的 ubuntu安装python以及conda-CSDN博客 并且已经创建启动过相关的环境&#xff0c;并且install了相关的包。 我本地的conda环境叫做,gptsovits_conda3 2.下载conda打包工具 conda install conda-pack pip install conda-pack 3.打包 con…

EXTI外部中断以及示例

中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源。比如对于外部中断来说&#xff0c;可以是引脚发生了电平跳变&#xff1b;对于定时器来说&#xff0c;可以是定时的时间到了&#xff1b;对于串口通信来说&#xff0c;可…