Offline RL: Uncertainty-Based Offline Reinforcement Learning with Diversified Q-Ensemble

文章介绍了一种新的离线强化学习方法,通过SAC-N和EDAC提升对OOD数据的处理能力,利用ClippedQ-learning进行值函数调整。

NeurIPS 2021
paper

Introduction

离线强化学习对于OOD数据容易出现外推误差,主流方法通过限制策略以及保守的Q价值估计予以解决,但前者受限于数据集质量的影响,后者则容易导致保守的值估计。

本文则是提高OOD数据的不确定性估计,通过Clip Q-learning进行价值函数层面的惩罚。本文首先提出SAC-N算法,发现简单的增加Q函数便可以提高算法sample- efficiency,但是过多的Q导致计算效率较低,且Q网络出现冗余,因此进一步提出了EDAC。

Method

2.1 SAC-N

文章首先回顾以往offline RL对OOD数据,为了防止Q估计过高所采取的办法,进而指出这些方法忽视了Clipped Q-learning的重要性。为了说明该观点,文章提出SAC-N,即将SAC中Q价值函数由2增加到N,
min ⁡ ϕ i E s , a , s ′ ∼ D [ ( Q ϕ i ( s , a ) − ( r ( s , a ) + γ E a ′ ∼ π 0 ( s ′ ) [ min ⁡ j = 1 , … , N Q ϕ j ′ ( s ′ , a ′ ) − β log ⁡ π θ ( a ′ ∣ s ′ ) ] ) ) 2 ] \min_{\phi_i}\mathbb{E}_{\mathbf{s},\mathbf{a},\mathbf{s'}\sim\mathcal{D}}\left[\left(Q_{\phi_i}(\mathbf{s},\mathbf{a})-\left(r(\mathbf{s},\mathbf{a})+\gamma\mathbb{E}_{\mathbf{a'}\sim\pi_0(\mathbf{s'})}\left[\min_{j=1,\ldots,N}Q_{\phi_j^{\prime}}\left(\mathbf{s'},\mathbf{a'}\right)-\beta\log\pi_\theta\left(\mathbf{a'}\mid\mathbf{s'}\right)\right]\right)\right)^2\right] ϕiminEs,a,sD[(Qϕi(s,a)(r(s,a)+γEaπ0(s)[j=1,,NminQϕj(s,a)βlogπθ(as)]))2]
max ⁡ θ E s ∼ D , a ∼ π θ ( ⋅ ∣ s ) [ min ⁡ j = 1 , … , N Q ϕ j ( s , a ) − β log ⁡ π θ ( a ∣ s ) ] \max_{\theta}\mathbb{E}_{\mathbf{s}\sim\mathcal{D},\mathbf{a}\sim\pi_\theta(\cdot|\mathbf{s})}\left[\min_{j=1,\ldots,N}Q_{\phi_j}(\mathbf{s},\mathbf{a})-\beta\log\pi_\theta(\mathbf{a}\mid\mathbf{s})\right] θmaxEsD,aπθ(s)[j=1,,NminQϕj(s,a)β

### 基于上下文的离线元强化学习(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、付费专栏及课程。

余额充值