Learning Latent Dynamics for Planning from Pixels

介绍了一种名为PlaNet的纯model-based代理,它能从图像中学习环境动力学并在线规划,解决了部分观测空间、连续控制和离散奖励问题,效果优于model-free方法。使用MPC进行适应性规划,RSSM预测潜在空间,CEM搜索最佳行动序列。

Abstract

  1. The Deep Planning Network (PlaNet), a purely model-based agent that learns the environment dynamics from images and chooses actions through fast online planning in latent space.
  2. PlaNet一个纯的model-based的agent,可以基于图片进行动态规划
  3. 为了有比较好的表现效果,需要精确预测多个时间片后的reward
  4. 同时使用确定性和随机转移分量
  5. 仅使用像素作为输入,解决了连续控制问题的动态规划,部分观测空间和离散reward的问题,并且比model-free的效果好很多

Introduction

  1. 解决了许多DeepMind的控制场景,效果远超过A3C和一些情况的D4PG
  2. 同时拥有确定性和随即转移分量对于高规划性是至关重要的
  3. 包含多步预测的标准变化边界:仅在潜在空间中使用term,就可以得到一个快速正则化器,它可以改进长期预测,并与任何潜在序列模型兼容

Latent Space Planning

Problem setup

为了解决观测空间不全的问题,考虑使用partially observable Markov decision process (POMDP)
在这里插入图片描述

Model-based planning

We use model-predictive control (MPC; Richards, 2005) to allow the agent to adapt its plan based on new observations, meaning we replan at each step. In contrast to model-free and hybrid reinforcement learning algorithms, we do not use a policy or value network.

  1. 使用model-predictive control (MPC)方式允许agent基于新的observation来进行计划,也就是说可以在每一步重新规划。
  2. 和model-free的方法不同,不适用policy或者value网络。

Experience collection

Starting from a small amount of S seed episodes collected under random actions, we train the model and add one additional episode to the data set every C update steps.

Planning algorithm

  1. 使用cross entropy method方法来搜索模型下的最佳的action序列
  2. 重要的是,在接收到下一个观察结果后,对动作序列的belief再次从零均值和单位方差开始,以避免局部最优。
  3. Because the reward is modeled as a function of the latent state, the planner can operate purely in latent space without generating images, which allows for fast evaluation of large batches of action sequences.
    规划者可以纯粹在latent state中进行动作序列的评估,所以使得快速评估成为可能

Recurrent State Space Model

Therefore, we use a recurrent state-space model (RSSM) that can predict forward purely in latent space, similar to recently proposed models.(类似于非线性的卡尔曼滤波和VAE(VAE类似于GAN,但是相比GAN的暴力提取特征,VAE先对特征进行建模,的到其分布))

Latent dynamics

一个典型的state-space model
在这里插入图片描述
在这里插入图片描述

Variational encoder

在这里插入图片描述
在这里插入图片描述

Deterministic path

因为纯随机转移的方法不能很好的记住多个步长的时间信息的内容,虽然在理论上能把方差降为0,但是实际可能找不到这个解。
从而利用一个确定的激活向量序列来解决。(允许模型访问不仅仅是目前的状态还有先前的所有状态)
在这里插入图片描述

Latent Overshooting

在这里插入图片描述

Limited capacity

由于when using a model with limited capacity and restricted distributional family,一步完美的预测并不能巧合的在多部完美预测中发生

Multi-step prediction

需要设定一个distance来进行多步预测

Latent overshooting

需要设计一个目标方程来生成distance为1≤d≤D的多步预测,而不仅仅是一个限定的distance

Experiments

Evaluate PlaNet on six continuous control tasks from pixels
多个设计轴:

  1. 确定性和随机的路线都存在于动态规划模型里;
  2. 迭代计划计算;
  3. 在线经验收集。
    除了action重复,我们对于所有的任务使用相同的一套超参数

和model-free的方法比较:

在这里插入图片描述
在这里插入图片描述

模型设计

The deterministic part allows the model to remember information over many time steps.
The stochastic component is even more important – the agent does not learn without it.

One agent all tasks

  1. a single agent trained on all six tasks
  2. 提前并没有告知agent是哪个环境,需要agent自己从observation上确定
  3. 与单独训练的智能体相比,该智能体在学习速度较慢的情况下解决所有任务。
  4. 这表明该模型可以学习预测多个领域,而不考虑概念上不同的视觉效果。

Discuss

  1. 未来的工作方向包括学习时间抽象,而不是使用固定的动作重复(可能通过层次模型)。
  2. 为了进一步提高最终的效果,可以学习一个价值函数来近似超出计划范围的奖励总和。
  3. 此外,基于梯度的规划可以提高agent的计算效率,无需重构的学习表示可以帮助解决具有较高视觉多样性的任务。
  4. 通过共享动态模型为多任务控制提供了一个起点。
CLAM(Continuous Latent Action Models)是一种用于机器人学习的深度学习框架,特别适用于从无标签演示中学习连续动作空间的潜在表示。它通过将高维感官输入(如图像)映射到低维潜在动作空间,并在该空间中进行策略学习,使机器人能够模仿专家演示而无需显式标签。CLAM 的核心思想是利用自监督学习构建一个潜在动作空间,然后在此空间中训练策略网络以模仿专家行为。 CLAM 的架构通常由以下几个关键组件构成: 1. **编码器-解码器结构**:使用编码器将观测数据(如图像)编码为潜在动作表示,再通过解码器重建观测数据,从而确保潜在动作空间能够捕捉与动作相关的结构信息[^1]。 2. **对比学习机制**:通过对比学习(Contrastive Learning)来构建潜在动作空间,使得同一时间步的观测数据在潜在空间中距离较近,而不同步的观测则被拉开[^1]。 3. **策略网络**:在学习到的潜在动作空间上训练策略网络,使其能够根据当前观测生成合适的潜在动作,并通过解码器将其转换为实际动作。 CLAM 的一大优势在于它能够处理无标签的演示数据,这意味着它可以在没有明确动作标签的情况下进行训练,从而降低了数据收集和标注的成本。此外,CLAM 的潜在动作空间具有良好的泛化能力,使机器人能够在新环境中执行类似任务。 在实际应用中,CLAM 已被用于多个机器人学习任务,例如机械臂控制、物体抓取和导航等。其自监督学习机制使其在处理高维输入(如RGB图像)时表现出色,并能够从少量演示中快速适应新任务。 以下是一个简化的 CLAM 编码器和解码器结构的 PyTorch 示例代码: ```python import torch import torch.nn as nn class Encoder(nn.Module): def __init__(self, latent_dim=32): super(Encoder, self).__init__() self.conv = nn.Sequential( nn.Conv2d(3, 32, kernel_size=4, stride=2), nn.ReLU(), nn.Conv2d(32, 64, kernel_size=4, stride=2), nn.ReLU(), nn.Conv2d(64, 128, kernel_size=4, stride=2), nn.ReLU() ) self.fc = nn.Linear(128 * 6 * 6, latent_dim) def forward(self, x): batch_size, channels, height, width = x.shape x = self.conv(x) x = x.view(batch_size, -1) latent_action = self.fc(x) return latent_action class Decoder(nn.Module): def __init__(self, latent_dim=32): super(Decoder, self).__init__() self.fc = nn.Linear(latent_dim, 128 * 6 * 6) self.deconv = nn.Sequential( nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2), nn.ReLU(), nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2), nn.ReLU(), nn.ConvTranspose2d(32, 3, kernel_size=4, stride=2), nn.Sigmoid() ) def forward(self, z): x = self.fc(z) x = x.view(z.shape[0], 128, 6, 6) reconstructed = self.deconv(x) return reconstructed ``` 在训练过程中,CLAM 通常使用重建损失(如均方误差)来优化编码器和解码器,同时结合对比损失(如三元组损失或NT-Xent损失)来确保潜在动作空间的结构[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值