【更新记录】
论文信息:Rishabh Agarwal, Dale Schuurmans, Mohammad Norouzi: “An Optimistic Perspective on Offline Reinforcement Learning”, 2019, Proceedings of the 37th International Conference on Machine Learning, PMLR 119:104-114, 2020; arXiv:1907.04543.
本文是Google Brain团队与Alberta大学合作,在2020年提出的一篇基于DQN replay dataset的鲁棒(roboust)离线强化学习解决方法,发表于ICML顶会上,此工作发布了60多个Offline强化学习dataset,该团队号称规模化是ImageNet的60 × \times × 3.5倍(一如既往的Google风格,规模就是大,不服来干),另外文章如其名 “An Optimistic Perspective”, 说明OfflineRL还是不错的!
摘要: 前几篇博客介绍的BCQ、BEAR等方法都是去讨论如何消除distribution mismatch问题的方法,本文作者大胆的提出了在不去修正该问题(without an explicit correction for distribution mismatch)的情况下能否达到state of the art的效果问题,并提出了随机集成混合方法(Random Ensemble Mixture, REM) 方法,它是一种使用多个参数化 Q Q Q 函数来估计 Q Q Q 值,并将多个 Q Q Q 值估计的凸组合看作是 Q Q Q 值估计本身,强制执行最佳的贝尔曼一致性的方法,结果表明效果不错。
1. 问题及数据集
1.1 问题描述
老生常谈一下offLine RL和off-policy 的区别以及优势,老爷子曾经说过一句话,挺有意思的,mark一下,也是作为off-policy和offline发展的一个引子吧:
“The potential for off-policy learning remains tantalizing, the best way to achieve it still a mystery.” —— Sutton & Barto
在离线强化学习中目前存在的几个经典问题就是: 分布偏移,OOD、不稳定、没有探索导致效果很难达到Online等。如何解决这些问题呢?作者首先制作了一个最全的atari数据集,然后在上面搞起来。
1.2 数据集制作
作者在所有 60 款 Atari 2600 游戏上训练一个 DQN 智能体,并按照标准格式将 2 亿帧经验元组(观察、动作、奖励、下一步) 观察)(大约 5000 万)保存起来(其中seed=5)
数据的使用方式如下查看详细过程:
2. 论文方法
2.1 基础方法总结
2.1.1 Ensemble-DQN方法
DQN算法大家再熟悉不过了,上过顶会,登过Nature, 其中有经典的一种变种改进就是Ensemble-DQN,其核心思想是:
Q
Q
Q 函数从不同的参数初始化开始,以相同的顺序使用相同的小批进行优化。损失
L
(
θ
)
\mathcal{L}(\theta)
L(θ) 采用下面公式,最终训练多个 Q 值估计并将它们平均以进行评估。
L
(
θ
)
=
1
K
∑
k
=
1
K
E
s
,
a
,
r
,
s
′
∼
D
[
ℓ
λ
(
Δ
θ
k
(
s
,
a
,
r
,
s
′
)
)
]
Δ
θ
k
(
s
,
a
,
r
,
s
′
)
=
Q
θ
k
(
s
,
a
)
−
r
−
γ
max
a
′
Q
θ
′
k
(
s
′
,
a
′
)
\begin{gathered} \mathcal{L}(\theta)=\frac{1}{K} \sum_{k=1}^{K} \mathbb{E}_{s, a, r, s^{\prime} \sim \mathcal{D}}\left[\ell_{\lambda}\left(\Delta_{\theta}^{k}\left(s, a, r, s^{\prime}\right)\right)\right] \\ \Delta_{\theta}^{k}\left(s, a, r, s^{\prime}\right)=Q_{\theta}^{k}(s, a)-r-\gamma \max _{a^{\prime}} Q_{\theta^{\prime}}^{k}\left(s^{\prime}, a^{\prime}\right) \end{gathered}
L(θ)=K1k=1∑KEs,a,r,s′∼D[ℓλ(Δθk(s,a,r,s′))]Δθk(s,a,r,s′)=Qθk(s,a)−r−γa′maxQθ′k(s′,a′)
2.1.2 Distributional RL
这篇文章是Bellemare提出的将值函数一个值转变为一个分布去表示,避免了值得单一影响,更新过程如下,原文可参考 A distributional perspective on reinforcement learning(ICML2017)
Z
∗
(
s
,
a
)
=
D
r
+
γ
Z
∗
(
s
′
,
argmax
a
′
∈
A
Q
∗
(
s
′
,
a
′
)
)
,
where
r
∼
R
(
s
,
a
)
,
s
′
∼
P
(
⋅
∣
s
,
a
)
.
\begin{array}{r} Z^{*}(s, a) \stackrel{D}{=} r+\gamma Z^{*}\left(s^{\prime}, \operatorname{argmax}_{a^{\prime} \in \mathcal{A}} Q^{*}\left(s^{\prime}, a^{\prime}\right)\right), \\ \text { where } r \sim R(s, a), s^{\prime} \sim P(\cdot \mid s, a) . \end{array}
Z∗(s,a)=Dr+γZ∗(s′,argmaxa′∈AQ∗(s′,a′)), where r∼R(s,a),s′∼P(⋅∣s,a).
2.1.3 QR-DQN
Z θ ( s , a ) : = 1 K ∑ i = 1 K δ θ i ( s , a ) , Q θ ( s , a ) = 1 K ∑ i = 1 K θ i ( s , a ) Z_{\theta}(s, a):=\frac{1}{K} \sum_{i=1}^{K} \delta_{\theta_{i}(s, a)}, Q_{\theta}(s, a)=\frac{1}{K} \sum_{i=1}^{K} \theta_{i}(s, a) Zθ(s,a):=K1i=1∑Kδθi(s,a),Qθ(s,a)=K1i=1∑Kθi(s,a)
2.2 随机集成混合方法(Random Ensemble Mixture, REM)
Random Ensemble Mixture (REM) 是受 Dropout 启发的 DQN方法的一种易于实现的扩展。 REM 的关键是访问多个 Q Q Q 值的估计,并将其加权组合得到 Q Q Q 值的估计。 因此,在每个训练步骤中,REM 随机组合多个 Q Q Q 值估计进行训练。
2.2.1 方法原理
从图中可以明显看到REM和DQN、QR-DQN、Ensemble-DQN的区别,
- DQN、Ensemble-DQN 和REM属于同一类,且都未使用Distribution;
- 相对于Ensemble-DQN , REM最后做了一个 ∑ i α i Q i \sum_{i} \alpha_{i}Q_{i} ∑iαiQi 操作, 其中 α 1 : k ∼ P Δ \alpha_{1:k} \sim P_{\Delta} α1:k∼PΔ & ∑ α i = 1 \sum \alpha_{i}=1 ∑αi=1。
对应到计算公式上来讲,REM 对于每个 mini-batch 随机抽取一个分类分布 α \alpha α,它定义了一个 K K K 估计的凸组合来近似最优的 Q Q Q 函数。该近似器对其相应的目标进行训练,以最小化TD误差。损失 L ( θ ) \mathcal{L}(\theta) L(θ) 的形式:
L ( θ ) = E s , a , r , s ′ ∼ D [ E α ∼ P Δ [ ℓ λ ( Δ θ α ( s , a , r , s ′ ) ) ] ] , Δ θ α = ∑ k α k Q θ k ( s , a ) − r − γ max a ′ ∑ k α k Q θ ′ k ( s ′ , a ′ ) \begin{aligned} \mathcal{L}(\theta) &=\mathbb{E}_{s, a, r, s^{\prime} \sim \mathcal{D}}\left[\mathbb{E}_{\alpha \sim \mathrm{P}_{\Delta}}\left[\ell_{\lambda}\left(\Delta_{\theta}^{\alpha}\left(s, a, r, s^{\prime}\right)\right)\right]\right], \\ \Delta_{\theta}^{\alpha} &=\sum_{k} \alpha_{k} Q_{\theta}^{k}(s, a)-r-\gamma \max _{a^{\prime}} \sum_{k} \alpha_{k} Q_{\theta^{\prime}}^{k}\left(s^{\prime}, a^{\prime}\right) \end{aligned} L(θ)Δθα=Es,a,r,s′∼D[Eα∼PΔ[ℓλ(Δθα(s,a,r,s′))]],=k∑αkQθk(s,a)−r−γa′maxk∑αkQθ′k(s′,a′)
L ( θ ) \mathcal{L}(\theta) L(θ) 可以看作是一个对应于不同混合概率分布的无限约束集, ℓ λ \ell_{\lambda} ℓλ 是Huber loss, P Δ P_{\Delta} PΔ 表示在标准 ( K − 1 ) (K-1) (K−1) 单纯形 Δ K − 1 = { α ∈ R K : α 1 + α 2 + ⋯ + α K = 1 , α k ≥ 0 , k = 1 , … , K } \Delta^{K-1}=\{\alpha \in \mathbb{R}^{K}: \alpha_{1}+\alpha_{2}+\cdots+ \alpha_{K}=1, \alpha_{k} \geq 0, k=1, \ldots, K\} ΔK−1={α∈RK:α1+α2+⋯+αK=1,αk≥0,k=1,…,K} 上的概率分布。
这里实现分三步
# 第一步: 求取Huber loss
loss = tf.losses.huber_loss(
target, replay_chosen_q, reduction=tf.losses.Reduction.NONE)
# 第二步,求取(k-1)个单纯性上的loss
q_head_losses = tf.reduce_mean(loss, axis=0)
# 第三步:
final_loss = tf.reduce_mean(q_head_losses)
对于动作的选择,作者使用了
K
K
K 个值函数估计值的平均值作为
Q
Q
Q 函数,即
Q
(
s
,
a
)
=
1
K
∑
k
Q
θ
k
(
s
,
a
)
Q(s, a)=\frac{1}{K}\sum_{k} Q_{\theta}^{k}(s, a)
Q(s,a)=K1k∑Qθk(s,a)
此外,作者使用一个非常简单的分布 P Δ P\Delta PΔ:从正态分布 N ( 0 , 1 ) N(0,1) N(0,1) 中获取 K K K 个独立同分布的值,并且将他们归一化为一个遵循 α k = α k ′ / ∑ α i ′ \alpha_{k}=\alpha_{k}^{\prime} / \sum \alpha_{i}^{\prime} αk=αk′/∑αi′ 的分类分布 α k ′ ∼ U ( 0 , 1 ) \alpha_{k}^{\prime} \sim U(0,1) αk′∼U(0,1)。
def _build_train_op(self):
"""Builds a training op.
Returns:
train_op: An op performing one step of training from replay data.
"""
actions = self._replay.actions
indices = tf.stack([tf.range(actions.shape[0]), actions], axis=-1)
replay_chosen_q = tf.gather_nd(
self._replay_net_outputs.q_heads, indices=indices)
target = tf.stop_gradient(self._build_target_q_op())
loss = tf.losses.huber_loss(
target, replay_chosen_q, reduction=tf.losses.Reduction.NONE)
q_head_losses = tf.reduce_mean(loss, axis=0)
final_loss = tf.reduce_mean(q_head_losses)
if self.summary_writer is not None:
with tf.variable_scope('Losses'):
tf.summary.scalar('HuberLoss', final_loss)
return self.optimizer.minimize(final_loss)
2.2.2 理论证明
2.3 衡量指标
Score normalized = Score Agent − Score min Score max − Score min Score min = min ( Score D Q N , Score Random ) Score max = max ( Score D Q N , Score Random ) \begin{aligned} \text { Score }_{\text {normalized }}=& \frac{\text { Score }_{\text {Agent }}-\text { Score }_{\min }}{\text { Score }_{\max }-\text { Score }_{\min }} \\ \text { Score }_{\min } &=\min \left(\text { Score }_{\mathrm{DQN}}, \text { Score }_{\text {Random }}\right) \\ \text { Score }_{\max } &=\max \left(\text { Score }_{\mathrm{DQN}}, \text { Score }_{\text {Random }}\right) \end{aligned} Score normalized = Score min Score max Score max− Score min Score Agent − Score min=min( Score DQN, Score Random )=max( Score DQN, Score Random )
这里的 S c o r e D Q N Score_{DQN} ScoreDQN , S c o r e R a n d o m Score_{Random} ScoreRandom 和 S c o r e A g e n t Score_{Agent} ScoreAgent 表示 5次以上的平均评估得分。
2.4 影响Offline RL的重要因素
2.4.1 数据集大小(Dataset Size)和数据多样性(Diversity)
结论
(1)为研究离线数据集大小的作用,作者进行了一个可变重放大小的消融实验。通过从记录的DQN经验中对整个轨迹进行随机子采样,从而训练QR-DQN和REM,保持相同的数据分布。图6显示了离线REM和QR-DQN智能体的性能,其中在DQN重放数据集中有N个百分比的元组,其中 N ∈ { 1 、 10 、 20 、 50 、 100 } N \in \{1、10、20、50、100\} N∈{1、10、20、50、100} 。正如预期的那样,性能倾向于随着数据的比例的增加而增加(这个好像和BEAR方法中结论有点矛盾了)。 N ≤ 10 % N \le10\% N≤10%,REM和QR-DQN在这些游戏中的表现仍然与在线DQN相当。然而, N = 1 % N=1\% N=1% 的性能急剧恶化。
(2)为了了解离线数据集质量的影响,作者执行了另一个消融实验,在DQN重放数据集的前2000万帧上训练离线智能体(这是一个质量较低的数据集),大致近似于具有次优回报的探索数据。与整个数据集的离线结果类似,在大多数Atari游戏中,离线REM和QRDQN的性能优于该数据集中的最佳策略(图7),这表明标准的RL代理在足够多样化的离线数据集上工作得很好。
2.4.2 算法的选择(algorithm choice)
图8结论:
离线TD3的性能明显优于收集离线数据的行为策略以及离线DDPG智能体。值得注意的是,离线TD3的性能也与BCQ相当。
3. 实验结果分析
3.1 超参数和实验细节
3.2 结果分析
图4结论:
(1)离线DQN在所有游戏上都表现不如充分训练的在线DQN
(2)离线QR-DQN在大多数游戏上的表现都优于离线DQN和在线DQN
(3)使用DQN回放数据集训练的离线C51也在离线DQN上大大改进了DQN(图3),离线QR-DQN的性能优于离线C51。
4. 实验源代码
Github: An Optimistic Perspective on Offline Reinforcement Learning
参考文献
[1]. Rishabh Agarwal, Dale Schuurmans, Mohammad Norouzi: “An Optimistic Perspective on Offline Reinforcement Learning”, 2019, Proceedings of the 37th International Conference on Machine Learning, PMLR 119:104-114, 2020; arXiv:1907.04543.
[2]. Google Blog: Rishabh Agarwal, An Optimistic Perspective on Offline Reinforcement Learning, 2020.4 Blog Access
OfflineRL推荐阅读
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BEAR算法原理详解与实现
离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BCQ算法详解与实现
离线强化学习(Offline RL)系列2: (环境篇)D4RL数据集简介、安装及错误解决
离线强化学习(Offline RL)系列1:离线强化学习原理入门