《Decision Transformer: Reinforcement Learning via Sequence Modeling》论文学习 - 郑瀚Andrew
2023-8-1 11:37:0 Author: www.cnblogs.com(查看原文) 阅读量:13 收藏

先前的研究工作表明,Transformer可以对处于高维分布的语义概念进行大规模建模抽象,比较典型地体现如:

  • 基于自然语言的零样本泛化(zero-shot generalization)
  • 分布外图像生成(out-of-distribution image generation)

鉴于此类模型在多个领域的成功应用,我们希望研究Transformer是否可以作为强化学习,被应用在序列决策问题上.

与之前将Transformer作为强化学习的一个架构组件的传统RL算法不同,我们希望研究一种新的生成轨迹模型(generative trajectory modeling),即对状态(states)、动作(actions)和奖励(rewards)序列的联合分布进行建模。

我们考虑以下范式转变:

不再通过传统的RL算法(时间差分 (TD) 学习)来训练一个策略函数(policy),取而代之的是,我们将直接基于历史经验训练一个Transformer模型。这将使我们能够绕开影响 RL 收敛稳定性的奖励随距离衰减问题。同时它还避免了对奖励按照时间远近进行衰减的必要(这可能会导致不良的短视行为)。 

除了所展示的长序列建模能力之外,Transformer 还具有其他优点,

  • Transformer 可以直接通过自注意力机制(self-attention)进行奖励信号分配,这可以有效克服贝尔曼算法传播奖励缓慢以及容易出现“干扰”信号的难题。
  • Transformer 在奖励稀疏或分散注意力的情况下仍能有效工作。 
  • Transformer 可以对广泛分布的行为进行概率建模,从而实现更好的泛化和迁移。

我们基于 offline RL 算法来展开我们的研究,其中我们将给智能体agents分配来自次优数据的学习策略,通过训练,从固定的、有限的经验中产生最有效的行为。由于错误传播和价值价值高估等问题,这类任务传统上十分具有挑战性。

通过在状态(states)、动作(actions)和奖励(returns)的序列上,训练一个自回归模型( autoregressive model),我们避免了策略采样的问题。

Decision Transformer architecture. States, actions, and returns are fed into modalityspecific linear embeddings and a positional episodic timestep encoding is added. Tokens are fed into a GPT architecture which predicts actions autoregressively using a causal self-attention mask 

为了直观地理解我们的论文思路,考虑如下在一个有向图上寻找最短路径的任务,

Illustrative example of finding shortest path for a fixed graph (left) posed as reinforcement learning. Training dataset consists of random walk trajectories and their per-node returns-to-go (middle). Conditioned on a starting state and generating largest possible return at each node, Decision Transformer sequences optimal paths

我们可以将这个任务视为 RL 问题。

  • 当代理agent位于目标节点,奖励为0
  • 当代理agent位于非目标节点的路径节点上时,奖励为-1

我们训练 GPT 模型来预测“returns-to-go(未来奖励的总和)”序列的下一个token(下一跳节点)、状态(states)和行动(actions)。

值得注意的是,

  • 训练数据仅需要随机游走数据,而无需专家进行人工打标
  • 测试数据中,我们可以通过添加先验知识,即生成最佳轨迹以产生尽可能高的回报以及节生成相应的动作序列

因此,通过结合序列建模工具和后验奖励信息,我们实现了在无需动态规划的前提下,实现强化学习的策略优化训练。

参考链接: 

https://github.com/kzl/decision-transformer
https://arxiv.org/pdf/2106.01345.pdf 

0x1:Offline reinforcement learning

考虑一个由元组(S、A、P、R)描述的马尔可夫决策过程(MDP),

  • 状态 s ∈ S
  • 动作 a ∈ A
  • 转换函数 P(s‘ | s, a)
  • 奖励函数 r = R(s, a)

我们使用 st、at 和 rt = R(st, at) 来表示在时间步 t 处,状态、动作和奖励。

轨迹由一系列状态、动作和奖励组成:τ = (s0,a0,r0,s1,a1,r1,...,sT,aT,rT)

时间步 t 处轨迹的返回(从该时间步开始的未来奖励总和):

强化学习的目标是通过训练,最大化预期回报:

在本文的离线强化学习中,我们只能访问一些固定的有限数据(由任意策略的轨迹组成的数据集),而不是通过环境交互来获取数据。这给强化学习训练带来了一些困难,因为它去除了代理探索环境并收集额外反馈的能力。

0x2:Transformers

Transformers 可以对序列数据进行有效建模,这些模型由具有残差连接的堆叠自注意力层组成。 每个自注意力层接收 n 个embedding向量,每个向量对应于唯一的输入token,并输出 n 个embedding向量,并保持输入维度不变。 

Transformers 的这种网络架构,允许通过注意力权重层v中query和key向量的相似度,来隐式地表达状态返回( state-return)的“置信度”。

在文本中,我们在 GPT 架构上进行了一些修改,它使用因果自注意力掩码修改 Transformer 架构以实现自回归生成,并将 n 序列上的全序列softmax求和,修改为仅包含序列中前一个tokne的标记softmax求和。

在本节中,我们介绍 Decision Transformer,该算法最大化复用了 Transformer 的网络架构,并对历史轨迹进行自回归训练。

Decision Transformer architecture. States, actions, and returns are fed into modalityspecific linear embeddings and a positional episodic timestep encoding is added. Tokens are fed into a GPT architecture which predicts actions autoregressively using a causal self-attention mask 

0x1:Trajectory representation

我们选择轨迹表示的关键考量点是,它应该使 Transformers 能够学习有意义的模式,并且我们应该能够有条件地在测试时生成对应的动作(actions)。

对奖励进行建模并不简单,因为我们希望模型能够根据未来期望的回报而不是过去的奖励来制定行动。为了达成这个目标,我们不是直接提供奖励,而是向模型提供“ returns-to-go”

以下是我们对轨迹的抽象表达方式:

在测试时,我们可以指定所需的表现(例如,1 表示成功,0 表示失败),以及环境起始状态,作为启动生成的条件信息。

当执行当前状态生成的动作后,我们将目标回报减去所实现的奖励,重复直到训练结束。

0x2:Architecture 

我们将最后的K个时间步骤输入到Decision Transformer中,总共有3K个标记(每种模态一个)

  • 距离目标剩余动作(return-to-go)
  • 状态(state)
  • 动作(action)

为了获得token embeddings,,我们为上述每个模态学习一个线性层,将原始输入投影到embedding空间,然后进行层归一化。

注意,每个时间步都对应于一个embedding,并被添加到每个token中,注意这与transformer使用的标准位置嵌入不同,因为一个时间步对应三个token。

然后,标记通过GPT模型进行处理,该模型通过自回归建模预测未来的动作标记(action tokens)。

0x3:Training

对于训练过程,我们需要准备一个离线轨迹数据集。

我们从数据集中抽样序列长度为K的minibatches数据集。与输入标记st相对应的预测头(prediction head)被训练以在每个时间步骤下一个token动作 at。对于离散动作采用交叉熵损失,对于连续动作采用均方误差损失,每个时间步骤的损失都取平均值。

我们发现预测状态(state)或距离目标剩余动作( returns-to-go)并没有提高性能,而只有预测动作(action)(也即下一个token)对提高性能有帮助,这个问题还有待研究。

Results comparing Decision Transformer (ours) to TD learning (CQL) and behavior cloning across Atari, OpenAI Gym, and Minigrid. On a diverse set of tasks, Decision Transformer performs comparably or better than traditional approaches. Performance is measured by normalized episode return (see text for details). 

Does Decision Transformer perform behavior cloning on a subset of the data?

在本部分中,我们试图研究一个问题,即Decision Transformer是否可以被认为是在一个具有一定奖励回报的数据子集上执行单纯模仿学习的过程。

为了调查这个问题,我们提出了一种新的方法,称为”百分位行为克隆(%BC)“,即我们仅在数据集中按照回报排序的前X%时间步上,进行行为克隆(强化学习训练)。百分位X%介于标准BC(X = 100%)以及仅克隆最佳观察轨迹(X→0%)之间。

本质上”%BC“是在更多数据的训练带来的更好的泛化效果,以及专注于一种理想数据子集的专业化模型的训练之间进行权衡。

  • 更好地泛化效果,依赖于更多的进行蒙特卡洛搜索,即允许更多的随机探索。
  • 更专业化的效果,依赖于对历史成功的最佳经验进行复制,即进行更多的利用。

我们在下表中展示了将%BC与Decision Transformer和CQL进行比较的完整结果,涵盖X∈[10%,25%,40%,100%]。请注意,选择最佳克隆子集的唯一方法是使用环境回合进行评估,因此%BC不是一种现实可行的方法,而是帮助我们了解Decision Transformer的行为。

  • 当数据充足时(如D4RL数据集),我们发现%BC可以匹配或击败其他离线RL方法。
  • 在大多数环境中,Decision Transformer的表现与最佳%BC的表现相当,表明它可以在对整个数据集分布进行训练之后专注于特定子集。

  • 相比之下,当我们研究低数据情况时 - 例如Atari,我们将1%的回放缓冲区用作数据集 - %BC是薄弱的(在下表中显示)。这表明,在相对数据量较低的情况下,Decision Transformer可以通过使用数据集中的所有轨迹来改善泛化性能而超越%BC,即使这些轨迹与返回条件目标不同。

我们的研究表明,Decision Transformer可以比仅对数据集的子集执行模仿学习更有效。在我们评测的任务中,Decision Transformer要么表现更好,要么与%BC表现相当,同时Decision Transformer省去了选择最佳子集的过程。

How well does Decision Transformer model the distribution of returns? 

我们通过测试广泛地目标收益(target return)来评估Decision Transformer拟合训练数据序列token的能力。

What is the benefit of using a longer context length?

为了评估访问先前状态(state)、行动(actions)和回报(returns)的重要性,我们对上下文长度K进行了消融实验。这很有趣,因为通常认为先前的状态(即K = 1)就足够用于强化学习算法。

下表显示,当K = 1时,Decision Transformer的性能显着较差,这表明过去的信息对Atari游戏很有用。

一种可能的假设是,在我们对策略分布进行建模(例如序列建模)时,上下文允许Decision Transformer识别生成行动的策略,从而实现更好的学习和/或改善训练动态。

Ablation on context length. Decision Transformer (DT) performs better when using a longer context length (K = 50 for Pong, K = 30 for others). 

Does Decision Transformer perform effective long-term credit assignment? 

为了评估我们的模型的长期信用分配能力,我们考虑了Mesnard等人提出的Key-to-Door环境的一个变种。这是一个基于网格的环境,有三个阶段的序列:

  • 在第一阶段,智能体被放置在一个有钥匙的房间里
  • 然后,智能体被放置在一个空房间里
  • 最后,智能体被放置在一个有门的房间里。当在第三阶段到达门时,智能体将获得二进制奖励,但只有当它在第一阶段选择了钥匙才能获得。

这个问题对信用分配来说很困难,因为信用必须从开头传递到结尾,跳过中间采取的行动。我们使用应用随机动作生成的轨迹数据集进行训练,并在下表中报告成功率。

此外,对于Key-to-Door环境,我们使用整个事件长度作为上下文,而不是像其他环境那样有一个固定的内容窗口。

实验表明:

  • Decision Transformer模型和%BC(仅在成功的情况下进行训练)能够学习有效的策略-即使只在随机行走时进行训练,也能产生接近最优的路径。
  • TD学习(CQL)不能有效地传播跨越长期的Q值,并且性能较差。

Why does Decision Transformer avoid the need for value pessimism or behavior regularization?

Decision Transformer 与以往离线强化学习算法的一个主要区别在于,我们不需要额外的策略规范化或保守约束来实现良好的性能。

我们的猜想是,基于 TD-learning 的算法通过学习近似值函数来改进策略函数,但是,不断优化已学习函数的行为可能会导致值函数优化过程中的抖动和不确定性,进而导致策略改进失败。

由于Decision Transformer不需要使用已学习函数作为目标进行显式优化,因此避免了需要规范话或保守约束的必要性。

How can Decision Transformer benefit online RL regimes?

离线强化学习和行为建模能力,具备很大的潜力实现下游任务的高效在线强化学习。

虽然我们在这项工作中仅仅研究了离线强化学习,但我们相信Decision Transformer可以通过作为生成行为的强模型来显著改进在线强化学习方法。例如,Decision Transformer可以作为一个强大的“记忆引擎”,并与Go-Explore等强大的探索算法结合使用,同时进行建模和生成多样化的行为。

我们提出了Decision Transformer,旨在统一语言/序列建模和强化学习的思想。

在标准的离线强化学习基准测试中,我们展示了Decision Transformer可以通过最小化修改标准语言模型结构来匹配或超越专门为离线强化学习设计的强大算法。我们希望这项工作能够激发更多关于使用大型Transformer模型进行强化学习的研究。

我们在实验中使用了简单而有效的监督损失,但是在大规模数据集中,自我监督预训练任务可能会带来更多收益。此外,我们可以考虑更复杂的回报、状态和动作嵌入方法,例如,根据回报分布进行条件化建模,以模拟随机环境而非确定性回报。

Transformer模型还可以用于轨迹的状态演化建模,这可能成为基于模型的强化学习的替代方法,并且我们希望在未来的工作中探索这方面。对于真实世界的应用,了解Transformer在MDP设置中出现的错误类型和可能的负面影响非常重要,但目前这方面的研究还不够充分。

此外,我们还需要考虑训练模型的数据集,因为这些数据可能会引入破坏性的偏见,特别是当我们考虑使用来自不可信来源的更多数据来增强强化学习智能体时。

OpenAI Gym

Installation

Experiments require MuJoCo. Follow the instructions in the mujoco-py repo to install. Then, dependencies can be installed with the following command:

conda env create -f conda_env.yml

Downloading datasets

Datasets are stored in the data directory. Install the D4RL repo, following the instructions there. Then, run the following script in order to download the datasets and save them in our format:

python download_d4rl_datasets.py

Example usage

Experiments can be reproduced with the following:

python experiment.py --env hopper --dataset medium --model_type dt

Adding -w True will log results to Weights and Biases.


文章来源: https://www.cnblogs.com/LittleHann/p/17581811.html
如有侵权请联系:admin#unsafe.sh