强化学习的学习之路(二十四)_2021-01-24:Distributional DQN:Distributional RL with Quantile Regression

作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在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)xpxq
直接看这个式子可能过于抽象了,因为它和我们熟悉的度量不一样, 它好像不是确定性的,而是带有一个 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)=(01FY1(ω)FU1(ω)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\} FY1(ω):=inf{yR:ωFY(y)}
F Y ( y ) = Pr ⁡ ( Y ≤ y ) F_{Y}(y)=\operatorname{Pr}(Y \leq y) FY(y)=Pr(Yy)
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) FY1(ω) 可以理解为计算 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) FX1(τ) F Y − 1 ( τ ) F_{Y}^{-1}(\tau) FY1(τ)
它们的差值的绝对值就是上图中黑线的长度,这个长度积分就是青色部分的面积, 这就代表了两个分布的差异。

我们在上一篇博客中提到一开始作者们并没有想到合适的方法模拟 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×AP(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,,zN1} 作为基准,再用 N N N 个离散的分布 { p 0 , p 1 , ⋯   , p N − 1 } \left\{p_{0}, p_{1}, \cdots, p_{N-1}\right\} {p0,p1,,pN1} 来描述这个分布。这种形式用来计算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(i1)+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,,pN1}

在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) aargmaxaQ(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,,θN1}

那么目标分布表示为: 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,,N1
这里的好处是不用再对齐了,因为我们的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,,θN1} 来描述分布 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+γθN1} 就可以当作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=1NEY[ρτi1(Yξ(β)i)]=i=1NETZ[ρτ^i1(TZθi)]=N1i=1Nj=1N[ρτ^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,,N1
最终的算法如下:

在这里插入图片描述

最终算法的效果如下:

在这里插入图片描述

可见最终算法效果很好。

接下来我们来直观的感受一下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 对应的分位数以此类推。 

如果做到了这一点,图像就会变成

img

Amazing啊,青色这不就变少了。

如果我们调节超参数 N,让QR-DQN的分布描述的更细致,会变成

img

青色更少了。这就是DQ-DQN在做的事情。

上一篇:强化学习的学习之路(二十三)_2021-01-23:Distributional DQN:A Distributional Perspective on Reinforcement Learning
下一篇:强化学习的学习之路(二十五)_2021-01-25:Distributional DQN:Implicit Quantile Networks for Distributional RL

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页