offline RL | BCQ:学习 offline dataset 的 π(a|s),直接使用 (s, π(s)) 作为 Q learning 训练数据
- 题目: Off-Policy Deep Reinforcement Learning without Exploration,ICLR 2019
- pdf 版本:https://arxiv.org/pdf/1812.02900.pdf
- html 版本:https://ar5iv.labs.arxiv.org/html/1812.02900
- GitHub:https://github.com/sfujim/BCQ
- 参考博客:
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。
- 使用 offline data(batch)B 定义了 MDP M_B ,在 offline data 上做 Q-learning,会学到 M_B 上的最优 policy。
- 建议去看(https://zhuanlan.zhihu.com/p/136844574)博客的第二节。
- 今日困倦,改日再看……
- 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 训练数据的更多相关文章
- tensorflow学习笔记--dataset使用,创建自己的数据集
数据读入需求 我们在训练模型参数时想要从训练数据集中一次取出一小批数据(比如50条.100条)做梯度下降,不断地分批取出数据直到损失函数基本不再减小并且在训练集上的正确率足够高,取出的n条数据还要是预 ...
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
真正掌握一种算法,最实际的方法,完全手写出来. LSTM(Long Short Tem Memory)特殊递归神经网络,神经元保存历史记忆,解决自然语言处理统计方法只能考虑最近n个词语而忽略更久前词语 ...
- 强化学习9-Deep Q Learning
之前讲到Sarsa和Q Learning都不太适合解决大规模问题,为什么呢? 因为传统的强化学习都有一张Q表,这张Q表记录了每个状态下,每个动作的q值,但是现实问题往往极其复杂,其状态非常多,甚至是连 ...
- 迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器
迁移学习算法之TrAdaBoost from: https://blog.csdn.net/Augster/article/details/53039489 TradaBoost算法由来已久,具体算法 ...
- 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)
1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...
- 增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)
接下来我们回顾一下动态规划算法(DP)和蒙特卡罗方法(MC)的特点,对于动态规划算法有如下特性: 需要环境模型,即状态转移概率\(P_{sa}\) 状态值函数的估计是自举的(bootstrapping ...
- 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)
下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...
- 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维
关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...
- 使用深度学习的超分辨率介绍 An Introduction to Super Resolution using Deep Learning
使用深度学习的超分辨率介绍 关于使用深度学习进行超分辨率的各种组件,损失函数和度量的详细讨论. 介绍 超分辨率是从给定的低分辨率(LR)图像恢复高分辨率(HR)图像的过程.由于较小的空间分辨率(即尺寸 ...
- Django 学习 之ORM聚合查询分组查询与F查询与Q查询
一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (75)-- 算法导论7.2 4题
四.如果用go语言,银行一般会按照交易时间来记录某一账户的交易情况.但是,很多人却喜欢收到的银行对账单是按照支票号码的顺序来排列的.这是因为,人们通常都是按照支票号码的顺序来开出支票的,而商人也通常都 ...
- 【pandas小技巧】--花哨的DataFrame
最近github上发现了一个库(plottable),可以用简单的方式就设置出花哨的 DataFrame 样式. github上的地址:https://github.com/znstrider/plo ...
- 搭建LNMP 架构
搭建LNMP 架构 环境准备 lnmp 需要 安装 nginx mysql php 软件 #关闭防火墙 systemctl disable --now firewalld #临时禁用SELinux的强 ...
- 代替forever下一个部署node的持久化工具---pm2
最近有个后端项目,用的是node,在持久化的时候会挂掉,详细了解到用的是nohup,然后先详细了解了一下nohup nohup是一个Linux命令,用于在系统后台不挂断地运行命令,退出终端不会影响程序 ...
- lattice crosslink开发板mipi核心板csi测试dsi屏lif md6000 fpga
1. 概述 CrossLink开发板,是用Lattice的芯片CrossLink 家族系列的,LIF-MD6000-6JM80I.该芯片用于桥接视频接口功能,自带2路MIPI硬核的功能,4 LANE ...
- 基于Spring事务的可靠异步调用实践
SpringTxAsync组件是仓储平台组(WMS6)自主研发的一个专门用于解决可靠异步调用问题的组件. 通过使用SpringTxAsync组件,我们成功地解决了在仓储平台(WMS6)中的异步调用需求 ...
- Linux中python更换pip源
Linux中python更换pip源 执行以下命令,更换为阿里源: echo " [global] trusted-host = mirrors.aliyun.com index-url = ...
- C#开源、功能强大、免费的Windows系统优化工具 - Optimizer
前言 今天给大家推荐一款由C#开源.功能强大.免费的Windows系统优化工具 - Optimizer. 工具介绍 Optimizer是一款功能强大的Windows系统优化工具,可帮助用户提高计算机性 ...
- Java新特性中的Preview功能如何运行和调试
在每个Java新版本发布的特性中,都会包含一些Preview(预览)功能,这些功能主要用来给开发者体验并收集建议.所以,Preview阶段的功能并不是默认开启的. 如果想体验某个Java版本中的Pre ...
- 前端三件套系例之JS——JS的BOM操作、JS的DOM操作
文章目录 1 JS的BOM操作 1.介绍 2.window对象 2-1 代码 3.window的子对象 3-1 navigator对象(了解即可) 3-2 screen对象(了解即可) 3-3 his ...