0 abstract

Many practical applications of reinforcement learning constrain agents to learn from a fixed batch of data which has already been gathered, without offering further possibility for data collection. In this paper, we demonstrate that due to errors introduced by extrapolation, standard off-policy deep reinforcement learning algorithms, such as DQN and DDPG, are incapable of learning without data correlated to the distribution under the current policy, making them ineffective for this fixed batch setting. We introduce a novel class of off-policy algorithms, batch-constrained reinforcement learning, which restricts the action space in order to force the agent towards behaving close to on-policy with respect to a subset of the given data. We present the first continuous control deep reinforcement learning algorithm which can learn effectively from arbitrary, fixed batch data, and empirically demonstrate the quality of its behavior in several tasks.

  • 背景:RL 的许多实际应用,限制 agent 只能从已收集的固定数据中学习。
  • 讨论:在本文中,我们证明了 extrapolation 引入的误差,会导致标准的 off-policy RL(DQN、DDPG)对固定 dataset 不 work,在没有与 distribution under the current policy 相关的数据的情况下。
  • method:我们引入了一类新颖的 off-policy 算法(其实就是 offline RL)batch-constrained reinforcement learning,去限制 action space,迫使 agent 的 policy 的 distribution 接近给定数据的子集(?)。
  • contribution:我们提出了第一个连续控制 DRL 算法,可以从任意 fixed batch data(其实就是 offline dataset)中有效学习,并且做了很多实验。

1 intro

  • 好像 offline RL 之前叫做 batch reinforcement learning(?)
  • imitation learning 不适用于数据质量不佳的情况。
  • 直接在 offline RL setting 里面用 off-policy RL 不太 work,被称为 extrapolation error。
  • BCQ:① 最大化 discounted return,② 尽量让 policy 的 s-a distribution 与 dataset 的 s-a distribution 相匹配。
  • 实验: MuJoCo 的 offline setting(?)

2 background

  • RL 基础,没有新鲜的东西。

3 extrapolation error - 外推误差

  • extrapolation error 的定义: offline RL 学到的 value function 的误差(?)
  • extrapolation error 的归因:
    • Absent Data:有一些 state-action pair 在 dataset 里是没有的。
    • Model Bias:基于 offline dataset 构建的 MDP 跟真实 MDP 不一样,因此,利用 offline dataset 的 MDP 来计算 value function,也会有所偏差。
    • Training Mismatch:听起来像是,如果强行拿 offline dataset 的 off-policy 数据跑 on-policy RL,效果会不好。(根据 3.1 节,即使跑 off-policy RL 算法,效果也会不好)
  • 可以参考(https://zhuanlan.zhihu.com/p/493039753)博客的第二节。

4 method: batch-constrained RL

  • 简单的 idea:为避免 extrapolation error,应该限制 policy 的 state-action distribution 与 offline data 相似。
  • 描述了 3 个 objectives:
    • 最小化当前 state 下所选 actions 与 offline data 的距离。
    • 选择 action,使得下一 state 尽量是熟悉的 state(或 (s,a,s') ?)
    • 最大化 value function。
  • section 4.1 貌似是在 finite MDP 下的理论分析,要精确量化 extrapolation error。
  • section 4.2 貌似是 BCQ 的算法。
    • BCQ 有 4 个 networks:一个 generative model \(G_ω(s)\)、一个扰动模型 \(ξ_\phi(s,a)\)、两个 Q networks \(Q_{\{θ_1,θ_2\}}(s,a)\) 。
    • 生成模型 G,拟合了 offline dataset 的 s-a 分布,使用变分自编码器 VAE,用来提高生成动作的多样性(?)
    • 扰动模型 ξ,对 action a 的扰动范围是 [-Φ, Φ]。
    • 调节参数 n 与 Φ:当 Φ=0 n=1 时,BCQ 类似于 imitation learning;当 Φ = a max - a min 且 n→∞ 时,扰动模型 ξ 的训练,跟 DDPG 算法的训练目标类似。
  • 算法流程:
    • 从 generative model 里生成 n 个 actions,然后对这些 actions 使用 ξ 进行扰动。
    • 训练 Q function 的参数 θ,最小化 Q 的 TD error。
    • 训练扰动模型 ξ 的参数 Φ,最大化 Q(s, a+ξ(s,a)) ,这里的 a 由 generative model 生成。
    • 更新 target networks 的参数(trick)
    • 感觉有点抽象……

5 experiment - 实验

  • baselines: off-policy RL(DQN DDPG)、behavior cloning(和 VAE-BC)。
  • 实验 setting 仍旧是 1. 使用 DQN 的训练数据 final buffer,2. 与 DQN 同期(?)训练的 concurrent,3. 直接使用 expert dataset 的 imitation。增加 4. 添加噪音与 behavior policy 随机探索 action 的 imperfect。

6 related work

  • batch RL,imitation learning,RL 中的 uncertainty。
  • 感觉 batch RL 主要在说 distribution 要 match,imitation learning 主要在说大家都依赖于 expert data。

offline RL | BCQ:学习 offline dataset 的 π(a|s),直接使用 (s, π(s)) 作为 Q learning 训练数据的更多相关文章

  1. tensorflow学习笔记--dataset使用,创建自己的数据集

    数据读入需求 我们在训练模型参数时想要从训练数据集中一次取出一小批数据(比如50条.100条)做梯度下降,不断地分批取出数据直到损失函数基本不再减小并且在训练集上的正确率足够高,取出的n条数据还要是预 ...

  2. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人

    真正掌握一种算法,最实际的方法,完全手写出来. LSTM(Long Short Tem Memory)特殊递归神经网络,神经元保存历史记忆,解决自然语言处理统计方法只能考虑最近n个词语而忽略更久前词语 ...

  3. 强化学习9-Deep Q Learning

    之前讲到Sarsa和Q Learning都不太适合解决大规模问题,为什么呢? 因为传统的强化学习都有一张Q表,这张Q表记录了每个状态下,每个动作的q值,但是现实问题往往极其复杂,其状态非常多,甚至是连 ...

  4. 迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器

    迁移学习算法之TrAdaBoost from: https://blog.csdn.net/Augster/article/details/53039489 TradaBoost算法由来已久,具体算法 ...

  5. 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)

    1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...

  6. 增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)

    接下来我们回顾一下动态规划算法(DP)和蒙特卡罗方法(MC)的特点,对于动态规划算法有如下特性: 需要环境模型,即状态转移概率\(P_{sa}\) 状态值函数的估计是自举的(bootstrapping ...

  7. 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

    下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...

  8. 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维

    关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...

  9. 使用深度学习的超分辨率介绍 An Introduction to Super Resolution using Deep Learning

    使用深度学习的超分辨率介绍 关于使用深度学习进行超分辨率的各种组件,损失函数和度量的详细讨论. 介绍 超分辨率是从给定的低分辨率(LR)图像恢复高分辨率(HR)图像的过程.由于较小的空间分辨率(即尺寸 ...

  10. Django 学习 之ORM聚合查询分组查询与F查询与Q查询

    一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...

随机推荐

  1. Win11 开启 telnet

    'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件. 首先我们打开底部"开始菜单",如图所示.接着打开其中的"设置". 然后进入左边的&quo ...

  2. c++中unique_ptr 的使用和理解

    unique_ptr 的使用 std::unique_ptr是c++11起引入的智能指针,为什么必须要在c++11起才有该特性,主要还是c++11增加了move语义,否则无法对对象的所有权进行传递. ...

  3. [python]使用diagrams绘制架构图

    简介 diagrams是python的一个第三方库,用于实现使用代码绘制架构图. 安装 依赖于 Graphviz,安装diagrams之前需要先安装 Graphviz(下载压缩包后,将bin目录添加到 ...

  4. Flutter系列文章-Flutter UI进阶

    在本篇文章中,我们将深入学习 Flutter UI 的进阶技巧,涵盖了布局原理.动画实现.自定义绘图和效果.以及 Material 和 Cupertino 组件库的使用.通过实例演示,你将更加了解如何 ...

  5. centos7关闭防火墙后只有22端口可以telnet的解决方法

    1.问题描述 防火墙已经关闭 22端口可以telnet 其他端口无法telnet 2.解决方法 注意:下列命令要用root账号/权限执行 2.1.开启防火墙 systemctl start firew ...

  6. Spark RDD惰性计算的自主优化

    原创/朱季谦 RDD(弹性分布式数据集)中的数据就如final定义一般,只可读而无法修改,若要对RDD进行转换或操作,那就需要创建一个新的RDD来保存结果.故而就需要用到转换和行动的算子. Spark ...

  7. 【NestJS系列】核心概念:Module模块

    theme: fancy highlight: atelier-dune-dark 前言 模块指的是使用@Module装饰器修饰的类,每个应用程序至少有一个模块,即根模块.根模块是Nest用于构建应用 ...

  8. 推荐几款三维模型OBJ格式轻量化处理工具软件

    推荐几款三维模型OBJ格式轻量化处理工具软件 以下是几款常用的三维模型OBJ格式轻量化处理软件的介绍: 1.MeshLab: MeshLab是一款免费且强大的开源三维模型处理软件,支持多种文件格式,包 ...

  9. 通过WinSW部署JAR包为windows服务

    通过WinSW部署JAR包为windows服务 背景 使用 Java 编写了一些有用的工具,因为不方便部署到服务器上,所以需要把 Java 生成的 jar 包在本地 Windows 上部署. 查阅了几 ...

  10. Facade Pattern and Encapsulation—— Structure Class

    如果只看代码的话,应该可以说Facade pattern(门面设计模式)是一种最简单的代码结构,不就封装吗!这玩意谁不会! 还是看它背后所蕴含的思想吧,看了之后发现背后的思想也很简单,非常好理解. - ...