强化学习的学习之路(二十四)_2021-01-24:Distributional DQN:Distributional RL with Quantile Regression
作为一个新手,写这个教程也是想和大家分享一下自己学习强化学习的心路历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己能保证起码平均一天一更的速度,先是介绍强化学习的一些基础知识,后面介绍强化学习的相关论文。本来是想每一篇多更新一点内容的,后面想着大家看CSDN的话可能还是喜欢短一点的文章,就把很多拆分开来了,目录我单独放在一篇单独的博客里面了。完整的我整理好了会放在github上,大家一
作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)