O2O:Offline Meta-Reinforcement Learning with Online Self-Supervision

本文介绍了一种名为SMAC的元强化学习算法,针对离线数据中的策略适应问题,通过元训练策略、价值函数和奖励函数,结合额外的无监督在线数据,有效解决了策略与离线数据的分布偏移。方法包括离线元训练、Actor-Critic架构优化和自监督在线奖励生成。

ICML 2022
paper

Introduction

元强化学习(Meta RL)结合O2O。元RL需要学习一个探索策略收集数据,同时还需学习一个策略快速适应新任务。由于策略是在固定的离线数据集上进行元训练的,因此在适应探索策略收集的数据时,它可能表现得不可预测,该策略与离线数据可能存在系统性差异,从而导致分布偏移。

本文提出两阶段的Meta offline RL算法SMAC,该算法利用带奖励的离线数据对策略、价值函数以及奖励函数进行元训练,然后收集额外无监督的、没有任何奖励信号的在线数据,来弥补这种分布上偏移。在模拟机器人运动与操作任务上,使用额外的无监督在线数据收集可以显着提高元训练策略的自适应能力。

Method

在这里插入图片描述

offline meta-training

采用Actor-crtitc架构的算法。最小化bellman误差优化价值函数:
L c r i t i c ( w ) = E ( s , a , r , s ′ ) ∼ D i , z ∼ q ϕ c ( z ∣ h ) , a ′ ∼ π θ ( a ′ ∣ s ′ , z ) [ ( Q w ( s , a , z ) − ( r + γ Q w ˉ ( s ′ , a ′ , z ) ) ) 2 ] . \begin{aligned} \mathcal{L}_{\mathrm{critic}}(w)& =\mathbb{E}_{(\mathbf{s},\mathbf{a},r,\mathbf{s}^{\prime})\sim\mathcal{D}_{\mathbf{i}},z\sim q_{\phi_{c}}(\mathbf{z}|\mathbf{h}),\mathbf{a}^{\prime}\sim\pi_{\theta}(\mathbf{a}^{\prime}|\mathbf{s}^{\prime},\mathbf{z})} \\ &\left[(Q_{w}(\mathbf{s},\mathbf{a},\mathbf{z})-(r+\gamma Q_{\bar{w}}(\mathbf{s}',\mathbf{a}',\mathbf{z})))^{2}\right]. \end{aligned} Lcritic(w)=E(s,a,r,s)Di,zqϕc(zh),aπθ(as,z)[(Qw(s,a,z)(r+γQwˉ(s,a,z)))2].

离线数据下对策略的优化若是采用SAC,将会困扰于off-policy的自举误差累积(bootstrapping error accumulation)。为解决该问题,采用类似AWAC的方法,对策略隐式约束让它保持在buffer数据附近。
L a c t o r ( θ ) = − E ⁡ s , a , s ′ ∼ D , z ∼ q ϕ c ( z ∣ h ) [ log ⁡ π θ ( a ∣ s ) × exp ⁡ ( Q ( s , a , z ) − V ( s ′ , z ) λ ) ] . \begin{gathered}\mathcal{L}_{\mathrm{actor}}(\theta)=-\operatorname{E}_{\mathbf{s},\mathbf{a},\mathbf{s}^{\prime}\sim\mathcal{D},\mathbf{z}\sim q_{\phi_c}(\mathbf{z}|\mathbf{h})}\bigg[\log\pi_\theta(\mathbf{a}\mid\mathbf{s})\times\\\exp\left(\frac{Q(\mathbf{s},\mathbf{a},\mathbf{z})-V(\mathbf{s}^{\prime},\mathbf{z})}\lambda\right)\bigg].\end{gathered} Lactor(θ)=Es,a,sD,zqϕc(zh)[logπθ(as)×exp(λQ(s,a,z)V(s,z))].
其中 V ( s , z ) = E a ∼ π θ ( a ∣ s , z ) Q ( s , a , z ) V(s,z)=\mathbb{E}_{\mathbf{a}\sim\pi_\theta(\mathbf{a}|\mathbf{s},\mathbf{z})}Q(\mathbf{s},\mathbf{a},\mathbf{z}) V(s,z)=Eaπθ(as,z)Q(s,a,z)

然而,元离线学习存在Z-空间漂移问题,这是由于元学习得到的探索策略 p i θ pi_\theta piθ与产生离线数据的行为策略 π β \pi_\beta πβ存在偏差。这样会导致两种策略在训练数据 h = { s i , a i , r i , s i ′ } i = 1 N e n c \mathbf{h}=\{\mathbf{s}_{i},\mathbf{a}_{i},r_{i},\mathbf{s}_{i}^{\prime}\}_{i=1}^{N_{\mathrm{enc}}} h={si,ai,ri,si}i=1Nenc以及其表征的空间 z ∼ q ϕ c ( z ∣ h ) . \mathbf{z}\sim q_{\phi_{c}}(\mathbf{z}\mid\mathbf{h}). zqϕc(zh).的不匹配。

解决办法就是使用额外的、没有奖励标签的在线数据,通过自监督方法生成奖励标签。生成奖励的模型则是使用离线数据集进行训练。
L r e w a r d ( ϕ d , ϕ c , h , z ) = ∑ ( s , a , r ) ∈ h ∥ r − r ϕ d ( s , a , z ) ∥ 2 2 + D K L ( q ϕ c ( ⋅ ∣ h ) ∣ ∣ p z ( ⋅ ) ) . \begin{aligned}\mathcal{L}_{\mathrm{reward}}(\phi_d,\phi_c,\mathbf{h},\mathbf{z})&=\sum_{(\mathbf{s},\mathbf{a},r)\in\mathbf{h}}\left\|r-r_{\phi_d}(\mathbf{s},\mathbf{a},\mathbf{z})\right\|_2^2\\&+D_{\mathrm{KL}}\left(q_{\phi_c}(\cdot\mid\mathbf{h})\right|\left|p_{\mathbf{z}}(\cdot)\right).\end{aligned} Lreward(ϕd,ϕc,h,z)=(s,a,r)hrrϕd(s,a,z)22+DKL(qϕc(h)pz()).
其中 p z p_z pz为z的先验分布。

Self-Supervised Online Meta-Training

首先使用离线训练的探索策略 π θ ( a ∣ s , z ) \pi_\theta(a|s,z) πθ(as,z)与环境交互收集没有奖励的在线数据,其中z采样于先验 p ( z ) p(z) p(z)

为了给在线数据打上奖励标签,算法从离线数据中采样 h o f f l i n e h_{offline} hoffline,从后验分布中采样 z ∼ q ϕ c ( z ∣ h o f f l i n e ) \mathbf{z}\sim q_{\phi_{c}}(\mathbf{z}\mid\mathbf{h}_{\mathrm{offline}}) zqϕc(zhoffline)。然后利用奖励生成模型标记:
r g e n e r a t e d = r ϕ d ( s , a , z ) ,   w h e r e   z ∼ q ϕ e ( z ∣ h ) r_{\mathrm{generated}}=r_{\phi_{d}}(\mathbf{s},\mathbf{a},\mathbf{z}),\mathrm{~where~}\mathbf{z}\sim q_{\phi_{e}}(\mathbf{z}\mid\mathbf{h}) rgenerated=rϕd(s,a,z), where zqϕe(zh)
得到的奖励连同轨迹数据送入buffer执行offline meta learning,训练actor以及critic。在自监督过程中,由于没有观察到环境给出的奖励函数,不对奖励生成模型 r ϕ d r_{\phi_d} rϕd以及隐空间encoder q ϕ e q_{\phi_e} qϕe回传梯度更新,而是只更新策略与Q函数。

由于只有当encoder的数据来自在线数据才会出现Z-空间的分布偏移,而这里采样的来自于offline,一定程度上缓解Z变量分布偏移问题。

伪代码

在这里插入图片描述

### 基于上下文的离线元强化学习(COMRL)概述 基于上下文的离线元强化学习(Context-based Offline Meta-Reinforcement Learning, COMRL)是一种结合了元学习和离线强化学习的技术,旨在通过从一组预定义的任务中提取通用知识来加速新任务的学习。这种方法特别适用于数据有限或交互成本较高的场景[^1]。 COMRL的核心思想是利用元学习机制捕获任务之间的共享结构,并通过离线数据训练策略以适应未知但相关的新任务。这种方法通常包括以下关键组件: - **任务分布建模**:通过对任务的先验知识进行建模,生成适合的上下文表示。 - **策略优化**:基于上下文信息调整策略参数,使其能够快速适应新任务。 - **离线数据使用**:利用历史数据而非实时交互来提升策略性能。 ### 实现方法 #### 1. 上下文编码器的设计 上下文编码器是COMRL中的重要组成部分,用于从任务数据中提取上下文信息。一种常见的实现方式是使用神经网络对任务数据进行聚合,并生成一个固定维度的上下文向量。例如,可以通过以下代码实现一个简单的上下文编码器: ```python import torch import torch.nn as nn class ContextEncoder(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(ContextEncoder, self).__init__() self.fc1 = nn.Linear(input_dim, hidden_dim) self.fc2 = nn.Linear(hidden_dim, output_dim) def forward(self, x): x = torch.mean(x, dim=0) # 对任务数据进行平均操作 x = torch.relu(self.fc1(x)) return self.fc2(x) ``` #### 2. 策略网络的构建 策略网络需要能够根据上下文信息动态调整其行为。通常,这可以通过将上下文向量与状态输入拼接后传递给策略网络实现。以下是一个示例代码: ```python class PolicyNetwork(nn.Module): def __init__(self, state_dim, context_dim, action_dim): super(PolicyNetwork, self).__init__() self.fc1 = nn.Linear(state_dim + context_dim, 128) self.fc2 = nn.Linear(128, action_dim) def forward(self, state, context): x = torch.cat([state, context], dim=-1) x = torch.relu(self.fc1(x)) return torch.tanh(self.fc2(x)) # 假设动作空间为[-1, 1] ``` #### 3. 训练过程 在训练过程中,COMRL模型需要同时优化上下文编码器和策略网络。常用的损失函数包括策略梯度损失和值函数损失。以下是一个简化的训练框架: ```python def train_comrl(policy_net, context_encoder, data_buffer, optimizer): for batch in data_buffer: states, actions, rewards, contexts = batch predicted_actions = policy_net(states, context_encoder(contexts)) # 计算策略梯度损失 loss = -torch.mean(rewards * predicted_actions) optimizer.zero_grad() loss.backward() optimizer.step() ``` ### 相关研究论文 以下是一些关于COMRL的重要研究论文: - **"Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks"** 提出了元学习的基本框架,为COMRL提供了理论基础[^2]。 - **"Offline Meta-Reinforcement Learning with Value Functions"** 探讨了如何在离线设置中应用元强化学习[^3]。 - **"Contextualized Meta-Policy Search"** 引入了上下文信息以增强策略的泛化能力[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值