强化学习—— 经验回放(Experience Replay)
强化学习—— 经验回放(Experience Replay)
1、DQN的缺点
1.1 DQN
- 近似最优动作价值函数:
Q
(
s
,
a
;
W
)
∼
Q
⋆
(
s
,
a
)
Q(s,a;W)sim Q^star (s,a)
- TD error:
δ
t
=
q
t
−
y
t
delta_t=q_t-y_t
- TD Learning:
L
(
W
)
=
1
T
∑
t
=
1
T
δ
t
2
2
L(W)=frac{1}{T}sum_{t=1}^{T} frac{delta_t^2}{2}
1.2 DQN的不足
1.2.1 经验浪费
- 一个 transition为:
(
s
t
,
a
t
,
r
t
,
s
t
+
1
)
(s_t,a_t,r_t,s_{t+1})
- 经验(所有的transition)为:
{
(
s
1
,
a
1
,
r
1
,
s
2
,
)
,
.
.
.
(
s
t
,
a
t
,
r
t
,
s
t
+
1
)
,
.
.
.
,
s
T
,
a
T
,
r
T
,
s
T
+
1
}
{(s1,a1,r1,s2,),...(s_t,a_t,r_t,s_{t+1}),...,s_T,a_T,r_T,s_{T+1}}
1.2.2 相关更新(correlated update)
通常t时刻的状态和t+1时刻的状态是强相关的。
r
(
s
t
,
s
t
+
1
)
r(s_t,s_{t+1})
r(st,st+1)
2 经验回放
2.1 简介
- 一个transition为:
(
s
t
,
a
t
,
r
t
,
s
t
+
1
)
(s_t,a_t,r_t,s_{t+1})
- 回放容器(replay buffer)为:存储n个transition
- 如果超过n个transition时,删除最早进入容器的transition
- 容器容量(buffer capacity)n为一个超参数:
n
一
般
设
置
为
较
大
的
数
,
如
1
0
5
∼
1
0
6
具
体
大
小
取
决
于
任
务
n一般设置为较大的数,如10^5sim 10^6\具体大小取决于任务
2.2 计算步骤
- 最小化目标为:
L
(
W
)
=
1
T
∑
t
=
1
T
δ
t
2
2
L(W)=frac{1}{T}sum_{t=1}^{T} frac{delta_t^2}{2}
- 使用随机梯度下降(SGD)进行更新:
- 从buffer中随机抽样:
(
s
i
,
a
i
,
r
i
,
s
i
+
1
)
(s_i,a_i,r_i,s_{i+1})
- 计算TD Error:
δ
i
delta_i
- 随机梯度为:
g
i
=
∂
δ
i
2
2
∂
W
=
δ
i
⋅
∂
Q
(
s
i
,
a
i
;
W
)
∂
W
g_i=frac{partial frac{delta_i^2}{2}}{partial W}= delta_i cdot frac{partial Q(s_i,a_i;W)}{partial W}
- 梯度更新:
W
←
W
−
α
g
i
Wgets W-alpha g_i
2.3 经验回放的优点
- 打破了序列相关性
- 重复利用过去的经验
3. 改进的经验回放(Prioritized experience replay)
3.1 基本思想
- 不是所有transition都同等重要
- TD error 越大,则transition更重要:
∣
δ
t
∣
|delta_t|
3.2 重要性抽样(importance sampling)
用非均匀抽样替代均匀抽样
3.2.1 抽样方式
-
p
t
∝
∣
δ
t
∣
+
ϵ
p_t propto |delta_t|+epsilon
- transition依据TD error进行降序处理,rank(t)代表第t个transition:
p
t
∝
1
r
a
n
k
(
t
)
+
ϵ
p_t propto frac{1}{rank(t)}+epsilon
总而言之,TD error越大,被抽样的概率越大,通常按Mini-batch进行抽样。
3.2.2 学习率变换(scaling learning rate)
为了抵消不同抽样概率造成的学习偏差,需要对学习率进行变换
- SGD:
W
←
W
−
α
⋅
g
Wgets W-alpha cdot g
- 均匀抽样:学习率对于所有transition都一样(转换因子为1):
p
1
=
p
2
=
.
.
.
=
p
n
p_1=p_2=...=p_n
- 非均匀抽样:高概率对应低学习率:
(
n
⋅
p
t
)
−
β
β
∈
[
0
,
1
]
(ncdot p_t)^{-beta}\ beta in [0,1]
3.2.3 训练过程
- 如果一个transition最近被收集,还未知其TD Error,将其TD Error设为最大值,即具有最高的优先级。
- 每次从replay buffer中选取出一个transition,然后更新其TD Error:
δ
t
delta_t
3.3 总结
transition | sampling probabilities | learning rates |
---|---|---|
( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1) |
p t ∝ ∣ δ t ∣ + ϵ p_t propto |delta_t|+epsilon pt∝∣δt∣+ϵ |
α ⋅ n ⋅ ( p t ) − β alpha cdot ncdot (p_t)^{-beta} α⋅n⋅(pt)−β |
( s t + 1 , a t + 1 , r t + 1 , s t + 2 ) (s_{t+1},a_{t+1},r_{t+1},s_{t+2}) (st+1,at+1,rt+1,st+2) |
p t + 1 ∝ ∣ δ t + 1 ∣ + ϵ p_{t+1}propto |delta_{t+1}|+epsilon pt+1∝∣δt+1∣+ϵ |
α ⋅ n ⋅ ( p t + 1 ) − β alpha cdot ncdot (p_{t+1})^{-beta} α⋅n⋅(pt+1)−β |
( s t + 2 , a t + 2 , r t + 2 , s t + 3 ) (s_{t+2},a_{t+2},r_{t+2},s_{t+3}) (st+2,at+2,rt+2,st+3) |
p t + 2 ∝ ∣ δ t + 2 ∣ + ϵ p_{t+2}propto |delta_{t+2}|+epsilon pt+2∝∣δt+2∣+ϵ |
α ⋅ n ⋅ ( p t + 2 ) − β alpha cdot ncdot (p_{t+2})^{-beta} α⋅n⋅(pt+2)−β |
本文内容为参考B站学习视频书写的笔记!
by CyrusMay 2022 04 10
我们在小孩和大人的转角
盖一座城堡
——————五月天(好好)——————