作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!
接下来的几个博客将会分享以下有关DQN算法及其改进,包括DQN(Nature)、Double DQN、 Multi-step DQN、Pirority Replay Buffer、 Dueling DQN、DQN from Demonstrations、Distributional DQN、Noisy DQN、Q-learning with continuous actions、Rainbow、Practical tips for DQN等。
istributional DQN:Distributional Reinforcement Learning with Quantile Regression
首先我们来介绍一个数学概念,:Wasserstein距离。
Wasserstein距离度量两个概率分布之间的距离,
\quad
(狭义的) 定义如下:
W
(
P
,
Q
)
=
min
γ
∈
Π
∑
x
p
,
x
q
γ
(
x
p
,
x
q
)
∥
x
p
−
x
q
∥
W(P, Q)=\min _{\gamma \in \Pi} \sum_{x_{p}, x_{q}} \gamma\left(x_{p}, x_{q}\right)\left\|x_{p}-x_{q}\right\|
W(P,Q)=minγ∈Π∑xp,xqγ(xp,xq)∥xp−xq∥
直接看这个式子可能过于抽象了,因为它和我们熟悉的度量不一样, 它好像不是确定性的,而是带有一个
min
\min
min 。
这里的Wasserstein距离又叫推土机距离,看下面的图,你就能很形象地理解Wasserstein距离:
它的意思是, 将一个分布转变为另一个分布,所需要移动的最少的“土" 的量。
注意,因为是分布,概率的和为1,也就是说 “土" 的总量是相同的。同时,这个移动的量是指 “土” 的“距离*数量" 。
可以看到,又很多种移动的方案, 而Wasserstein距离指的是最少的那种,当然可能有多个方案都 是最少, 但是这不重要, 重要的是移动的值。
然而上述的定义只算是一个特例,标准的Wasserstein Metric的定义更为复杂, 如果我有两个分布
U
,
Y
U, Y
U,Y, 那么它们的p-Wasserstein Metric为
W
p
(
U
,
Y
)
=
(
∫
0
1
∣
F
Y
−
1
(
ω
)
−
F
U
−
1
(
ω
)
∣
p
d
ω
)
1
/
p
W_{p}(U, Y)=\left(\int_{0}^{1}\left|F_{Y}^{-1}(\omega)-F_{U}^{-1}(\omega)\right|^{p} d \omega\right)^{1 / p}
Wp(U,Y)=(∫01∣∣FY−1(ω)−FU−1(ω)∣∣pdω)1/p
其中
F
Y
−
1
(
ω
)
:
=
inf
{
y
∈
R
:
ω
≤
F
Y
(
y
)
}
F_{Y}^{-1}(\omega):=\inf \left\{y \in \mathbb{R}: \omega \leq F_{Y}(y)\right\}
FY−1(ω):=inf{y∈R:ω≤FY(y)}
F
Y
(
y
)
=
Pr
(
Y
≤
y
)
F_{Y}(y)=\operatorname{Pr}(Y \leq y)
FY(y)=Pr(Y≤y)
当
p
=
1
p=1
p=1 的时候, 上面的公式就退化成为我们最开始看到的推土机距离。
当
p
=
1
p=1
p=1 的时候这个式子还是容易理解的, 这里的
F
Y
(
y
)
F_{Y}(y)
FY(y) 就是
y
y
y 的CDF函数, 而
F
Y
−
1
(
ω
)
F_{Y}^{-1}(\omega)
FY−1(ω) 可以理解为计算
P
Y
P_{Y}
PY 的
w
w
w 分位数。
而
W
p
(
U
,
Y
)
W_{p}(U, Y)
Wp(U,Y) 的表达式, 则是将这个代表分位数的
w
w
w 从 0 到 1 积分。
下图形象的描述了p=1情况下的Wasserstein Metric,这不过这个定义是连续的,刚才的定义是离散的。
上图中红色和蓝色的线分别是
P
X
P_{X}
PX 和
P
Y
P_{Y}
PY 的CDF函数,对于某一个分位数
τ
\tau
τ, 我们可以计算得到两个值, 分别是
F
X
−
1
(
τ
)
F_{X}^{-1}(\tau)
FX−1(τ) 和
F
Y
−
1
(
τ
)
F_{Y}^{-1}(\tau)
FY−1(τ) 。
它们的差值的绝对值就是上图中黑线的长度,这个长度积分就是青色部分的面积, 这就代表了两个分布的差异。
我们在上一篇博客中提到一开始作者们并没有想到合适的方法模拟 Wasserstein Metric这个过程, 于是提出了使用KL散度做近似的想法。紧接着作者们又提出了更 “正统” 的算法QR-DQN,它继承了最开始的理论想法。 首先,我们要做的是改变 “分布” 的表现形式:
Z
(
x
,
a
)
Z(x, a)
Z(x,a) 是
Z
:
X
×
A
→
P
(
R
)
Z: \mathcal{X} \times \mathcal{A} \rightarrow \mathscr{P}(\mathbb{R})
Z:X×A→P(R) 的函数, 它的输出是一个分布
P
(
R
)
\mathscr{P}(\mathbb{R})
P(R)
我们一开始是用 N N N 个atoms { z 0 , z 1 , ⋯ , z N − 1 } \left\{z_{0}, z_{1}, \cdots, z_{N-1}\right\} {z0,z1,⋯,zN−1} 作为基准,再用 N N N 个离散的分布 { p 0 , p 1 , ⋯ , p N − 1 } \left\{p_{0}, p_{1}, \cdots, p_{N-1}\right\} {p0,p1,⋯,pN−1} 来描述这个分布。这种形式用来计算KL散度是极好的,但是不适合计算Wasserstein Metric度量,现在我们介绍另外一种,是用分位数描述的方法。其实也很直觉,就是按照这个分布的CDF的 y y y 轴, 把它均等的分成 N N N 分, 例如下面的是分布的 PDF的 y y y 轴, 我们把它分成10等分:
那么自然就会得到10个
τ
^
,
\hat{\tau},
τ^, 这10个
τ
^
\hat{\tau}
τ^ 就定义了10个分位数
τ
^
i
=
2
(
i
−
1
)
+
1
2
N
,
i
=
1
,
…
,
N
\hat{\tau}_{i}=\frac{2(i-1)+1}{2 N}, \quad i=1, \ldots, N
τ^i=2N2(i−1)+1,i=1,…,N
分位数是下图的小红点:
于是,我们现在只需要记录
N
N
N 个分位数的位置, 就可以描述整个分布了。
接下来,我们解决如何去学习出这
N
N
N 个分位数这个问题:
我们设计一个神经网络
Z
Z
Z ,它的输入是状态
s
,
s,
s, 输出是一个矩阵, 矩阵的每 一行代表一个动作的
N
N
N 个概率, 分别是
{
p
0
,
p
1
,
⋯
,
p
N
−
1
}
\left\{p_{0}, p_{1}, \cdots, p_{N-1}\right\}
{p0,p1,⋯,pN−1} 。
在QR-DQN中,神经网络也是输出一个矩阵, 只不过每列不再是atoms对应的
p
i
p_{i}
pi 了,而是atoms的位置, 也就是
z
i
,
z_{i},
zi, 因为在QR-DQN中atoms的概率是确定的, 都是 $\frac{1}{N} $。 现在让我们看一下训练的过程。
首先我们从Buffer中采样出
(
s
,
a
,
r
,
s
′
)
,
\left(s, a, r, s^{\prime}\right),
(s,a,r,s′), 接下来我们需要计算出
a
∗
,
a^{*},
a∗, 和上一篇博客的想法一样, 我们依旧用
Q
(
s
,
a
)
Q(s, a)
Q(s,a) 来计算。
先算
Q
(
s
′
,
a
′
)
:
Q\left(s^{\prime}, a^{\prime}\right):
Q(s′,a′):
Q
(
s
′
,
a
′
)
:
=
∑
j
q
j
θ
j
(
x
′
,
a
′
)
Q\left(s^{\prime}, a^{\prime}\right):=\sum_{j} q_{j} \theta_{j}\left(x^{\prime}, a^{\prime}\right)
Q(s′,a′):=∑jqjθj(x′,a′)
挑出最大的作为
a
∗
a^{*}
a∗:
a
∗
←
arg
max
a
′
Q
(
x
,
a
′
)
a^{*} \leftarrow \arg \max _{a^{\prime}} Q\left(x, a^{\prime}\right)
a∗←argmaxa′Q(x,a′)
根据这个
a
∗
a^{*}
a∗ 计算出分布
Z
(
s
′
,
a
∗
)
Z\left(s^{\prime}, a^{*}\right)
Z(s′,a∗), 我们设这个分布的atoms的位置表示为
{
θ
0
′
,
θ
1
′
,
…
,
θ
N
−
1
′
}
\left\{\theta_{0}^{\prime}, \theta_{1}^{\prime}, \ldots, \theta_{N-1}^{\prime}\right\}
{θ0′,θ1′,…,θN−1′}
那么目标分布表示为:
T
θ
j
′
=
r
+
γ
θ
j
′
,
i
=
0
,
…
,
N
−
1
\mathcal{T} \theta_{j}^{\prime}=r+\gamma \theta_{j}^{\prime}, \quad i=0, \ldots, N-1
Tθj′=r+γθj′,i=0,…,N−1
这里的好处是不用再对齐了,因为我们的atoms的位置是可以改变的,而正是用这个变量来描述整个分布, 自然没有对齐之说。
最关键的是,我们要让分布
Z
(
s
,
a
)
Z(s, a)
Z(s,a) 和目标分布
r
+
γ
Z
(
s
′
,
a
∗
)
r+\gamma Z\left(s^{\prime}, a^{*}\right)
r+γZ(s′,a∗) 尽可能相似。
我们假设用
{
θ
0
,
θ
1
,
…
,
θ
N
−
1
}
\left\{\theta_{0}, \theta_{1}, \ldots, \theta_{N-1}\right\}
{θ0,θ1,…,θN−1} 来描述分布
Z
(
s
,
a
)
,
Z(s, a),
Z(s,a), 这其实就是
N
N
N 个分位数。
那么描述目标分布的
{
r
+
γ
θ
0
′
,
r
+
γ
θ
1
′
,
⋯
,
r
+
γ
θ
N
−
1
′
}
\left\{r+\gamma \theta_{0}^{\prime}, r+\gamma \theta_{1}^{\prime}, \cdots, r+\gamma \theta_{N-1}^{\prime}\right\}
{r+γθ0′,r+γθ1′,⋯,r+γθN−1′} 就可以当作ground truth, 也就是把他们看作
L
τ
=
E
[
ρ
τ
1
(
y
i
−
ξ
(
x
i
,
β
τ
)
)
]
L_{\tau}=\mathbb{E}\left[\rho_{\tau}^{1}\left(y_{i}-\xi\left(x_{i}, \beta_{\tau}\right)\right)\right]
Lτ=E[ρτ1(yi−ξ(xi,βτ))] 中不同的
y
i
y_{i}
yi 。此外,我们并不是只有一个
τ
\tau
τ, 我们有
N
N
N 个
τ
\tau
τ, 我们需要计算它们的损失函数的和, 也就是
L
β
=
∑
i
=
1
N
E
Y
[
ρ
τ
i
1
(
Y
−
ξ
(
β
)
i
)
]
=
∑
i
=
1
N
E
T
Z
′
[
ρ
τ
^
i
1
(
T
Z
′
−
θ
i
)
]
=
1
N
∑
i
=
1
N
∑
j
=
1
N
[
ρ
τ
^
i
1
(
T
θ
j
′
−
θ
i
)
]
\begin{aligned} L_{\beta} &=\sum_{i=1}^{N} \mathbb{E}_{Y}\left[\rho_{\tau_{i}}^{1}\left(Y-\xi(\beta)_{i}\right)\right] \\ &=\sum_{i=1}^{N} \mathbb{E}_{\mathcal{T} Z^{\prime}}\left[\rho_{\hat{\tau}_{i}}^{1}\left(\mathcal{T} Z^{\prime}-\theta_{i}\right)\right] \\ &=\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{N}\left[\rho_{\hat{\tau}_{i}}^{1}\left(\mathcal{T} \theta_{j}^{\prime}-\theta_{i}\right)\right] \end{aligned}
Lβ=i=1∑NEY[ρτi1(Y−ξ(β)i)]=i=1∑NETZ′[ρτ^i1(TZ′−θi)]=N1i=1∑Nj=1∑N[ρτ^i1(Tθj′−θi)]
其中
T
Z
′
=
r
+
γ
Z
(
x
′
,
a
∗
)
\mathcal{T} Z^{\prime}=r+\gamma Z\left(x^{\prime}, a^{*}\right)
TZ′=r+γZ(x′,a∗)
而
τ
^
i
\hat{\tau}_{i}
τ^i 就是用来决定
N
N
N 个分位数的值
τ
^
i
=
2
i
+
1
2
N
,
i
=
0
,
…
,
N
−
1
\hat{\tau}_{i}=\frac{2 i+1}{2 N}, \quad i=0, \ldots, N-1
τ^i=2N2i+1,i=0,…,N−1
最终的算法如下:
最终算法的效果如下:
可见最终算法效果很好。
接下来我们来直观的感受一下QR-DQN做了什么,(下面的内容都来自于一个大佬的博客)假设我们现在可以画出
r
+
γ
Z
(
s
′
,
a
∗
)
r+\gamma Z\left(s^{\prime}, a^{*}\right)
r+γZ(s′,a∗),它就是下图的红线:
那么蓝色的线就是初始状态的
Z
(
s
,
a
)
Z(s, a)
Z(s,a)
从Distributional DQN定义的角度,我们希望什么呢?我们希望青色的面积更小。
那么QR-DQN希望什么呢?
它希望 θ 0 可以可以作为 τ 0 对应的分位数, θ 1 可以可以作为 τ 1 对应的分位数, 以此类推。 \text { 它希望 } \theta_{0} \text { 可以可以作为 } \tau_{0} \text { 对应的分位数, } \quad \theta_{1} \text { 可以可以作为 } \tau_{1} \text { 对应的分位数, 以此类推。 } 它希望 θ0 可以可以作为 τ0 对应的分位数, θ1 可以可以作为 τ1 对应的分位数, 以此类推。
如果做到了这一点,图像就会变成
Amazing啊,青色这不就变少了。
如果我们调节超参数 N,让QR-DQN的分布描述的更细致,会变成
青色更少了。这就是DQ-DQN在做的事情。
上一篇:强化学习的学习之路(二十三)_2021-01-23:Distributional DQN:A Distributional Perspective on Reinforcement Learning
下一篇:强化学习的学习之路(二十五)_2021-01-25:Distributional DQN:Implicit Quantile Networks for Distributional RL