其他分享
首页 > 其他分享> > 【EasyRL笔记】六、DQN

【EasyRL笔记】六、DQN

作者:互联网

文章目录

参考资料

https://datawhalechina.github.io/easy-rl/#/chapter6/chapter6

前言

1. State Value Function

1.1 State Value Function Estimation

怎么衡量这个状态价值函数 V π ( s ) V^{\pi}(s) Vπ(s) 呢?有两种不同的做法:MC-based 的方法和 TD-based 的方法。

1.1 Monte-Carlo(MC)-based

1.2 TD-based

1.3 MC 跟 TD 有什么样的差别

1.3.1 方差

MC 最大的问题就是方差很大。如果用 TD 的话,你是要去最小化这样的一个式子:
在这里插入图片描述

在这中间会有随机性的是 r。因为计算你在 s t s_t st​​ 采取同一个动作,你得到的奖励也不一定是一样的,所以 r 是一个随机变量。但这个随机变量的方差会比 G a G_a Ga​​ 还要小,因为 G a G_a Ga​​ 是很多 r 合起来,这边只是某一个 r 而已。 G a G_a Ga​ 的方差会比较大,r 的方差会比较小。但是这边你会遇到的一个问题是你这个 V 不一定估得准。假设你的这个 V 估得是不准的,那你使用这个式子学习出来的结果,其实也会是不准的。所以 MC 跟 TD 各有优劣。今天其实 TD 的方法是比较常见的,MC 的方法其实是比较少用的。

1.3.2 评估结果不同

在这里插入图片描述

2. State-action Value Function(Q-function)

还有另外一种评论家叫做 Q-function。它又叫做state-action value function(状态-动作价值函数)。

2.1 Q函数作用机理分析

Q-function 有两种写法:

虽然表面上我们学习一个 Q-function,它只能拿来评估某一个演员 π \pi π 的好坏,但只要有了这个 Q-function,我们就可以做强化学习。有了这个 Q-function,我们就可以决定要采取哪一个动作,我们就可以进行策略改进(Policy Improvement)。

2.2 通过Q函数找最优策略

2.2.1 为什么用 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)决定出来的 π ′ \pi' π′一定会比 π \pi π 好。

假设有一个策略叫做 π ′ \pi' π′,它是由 Q π Q^{\pi} Qπ 决定的。我们要证对所有的状态 s 而言, V π ′ ( s ) ≥ V π ( s ) V^{\pi^{\prime}}(s) \geq V^{\pi}(s) Vπ′(s)≥Vπ(s)。

怎么证呢?我们先把 V π ( s ) V^{\pi}(s) Vπ(s) 写出来:
V π ( s ) = Q π ( s , π ( s ) ) V^{\pi}(s)=Q^{\pi}(s, \pi(s)) Vπ(s)=Qπ(s,π(s))

假设在状态 s follow π \pi π 这个演员,它会采取的动作就是 π ( s ) \pi(s) π(s),那你算出来的 Q π ( s , π ( s ) ) Q^{\pi}(s, \pi(s)) Qπ(s,π(s))会等于 V π ( s ) V^{\pi}(s) Vπ(s)。一般而言, Q π ( s , π ( s ) ) Q^{\pi}(s, \pi(s)) Qπ(s,π(s)) 不一定等于 V π ( s ) V^{\pi}(s) Vπ(s) ,因为动作不一定是 π ( s ) \pi(s) π(s)。但如果这个动作是 π ( s ) \pi(s) π(s) 的话, Q π ( s , π ( s ) ) Q^{\pi}(s, \pi(s)) Qπ(s,π(s))是等于 V π ( s ) V^{\pi}(s) Vπ(s) 的。

Q π ( s , π ( s ) ) Q Q^{\pi}(s, \pi(s))Q Qπ(s,π(s))Q 还满足如下的关系:
Q π ( s , π ( s ) ) ≤ max ⁡ a Q π ( s , a ) Q^{\pi}(s, \pi(s)) \le \max _{a} Q^{\pi}(s, a) Qπ(s,π(s))≤amax​Qπ(s,a)

因为 a 是所有动作里面可以让 Q 最大的那个动作,所以今天这一项一定会比它大。这一项就是 Q π ( s , a ) Q^{\pi}(s, a) Qπ(s,a), a a a 就是 π ′ ( s ) \pi'(s) π′(s)。因为 π ′ ( s ) \pi'(s) π′(s) 输出的 a a a 就是可以让 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a) 最大的那一个,所以我们得到了下面的式子:
max ⁡ a Q π ( s , a ) = Q π ( s , π ′ ( s ) ) \max _{a} Q^{\pi}(s, a)=Q^{\pi}\left(s, \pi^{\prime}(s)\right) amax​Qπ(s,a)=Qπ(s,π′(s))

于是:
V π ( s ) ≤ Q π ( s , π ′ ( s ) ) V^{\pi}(s) \leq Q^{\pi}\left(s, \pi^{\prime}(s)\right) Vπ(s)≤Qπ(s,π′(s))

在这个状态 s 你故意不按照 π \pi π 所给你指示的方向,而是按照 π ′ \pi' π′ 的方向走一步,但只有第一步是按照 π ′ \pi' π′ 的方向走,只有在状态 s 这个地方,你才按照 π ′ \pi' π′ 的指示走,接下来你就按照 π \pi π 的指示走。虽然只有一步之差, 但是从上面这个式子可知,虽然只有一步之差,但你得到的奖励一定会比完全 follow π \pi π 得到的奖励还要大。

接下来要证下面的式子:
Q π ( s , π ′ ( s ) ) ≤ V π ′ ( s ) Q^{\pi}\left(s, \pi^{\prime}(s) \right) \le V^{\pi'}(s) Qπ(s,π′(s))≤Vπ′(s)

也就是说,只有一步之差,你会得到比较大的奖励。但假设每步都是不一样的,每步都是 follow π ′ \pi' π′ 而不是 π \pi π 的话,那你得到的奖励一定会更大。如果你要用数学式把它写出来的话,你可以写成 Q π ( s , π ′ ( s ) ) Q^{\pi}\left(s, \pi^{\prime}(s)\right) Qπ(s,π′(s)) ,它的意思就是说,我们在状态 s t s_t st​​ 采取动作 a t a_t at​​,得到奖励 r t r_{t} rt​​,然后跳到状态 s t + 1 s_{t+1} st+1​​,即如下式所示:
Q π ( s , π ′ ( s ) ) = E [ r t + V π ( s t + 1 ) ∣ s t = s , a t = π ′ ( s t ) ] Q^{\pi}\left(s, \pi^{\prime}(s)\right)=E\left[r_t+V^{\pi}\left(s_{t+1}\right) \mid s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] Qπ(s,π′(s))=E[rt​+Vπ(st+1​)∣st​=s,at​=π′(st​)]

在文献上有时也会说:在状态 s t s_t st​​ 采取动作 a t a_t at​ 得到奖励 r t + 1 r_{t+1} rt+1​​, 有人会写成 r t r_t rt​​,但意思其实都是一样的。

因为 V π ( s ) ≤ Q π ( s , π ′ ( s ) ) V^{\pi}(s) \leq Q^{\pi}\left(s, \pi^{\prime}(s)\right) Vπ(s)≤Qπ(s,π′(s)),也就是 V π ( s t + 1 ) ≤ Q π ( s t + 1 , π ′ ( s t + 1 ) ) V^{\pi}(s_{t+1}) \leq Q^{\pi}\left(s_{t+1}, \pi^{\prime}(s_{t+1})\right) Vπ(st+1​)≤Qπ(st+1​,π′(st+1​)),所以我们得到下式:
E [ r t + V π ( s t + 1 ) ∣ s t = s , a t = π ′ ( s t ) ] ≤ E [ r t + Q π ( s t + 1 , π ′ ( s t + 1 ) ) ∣ s t = s , a t = π ′ ( s t ) ] \begin{array}{l} E\left[r_{t}+V^{\pi}\left(s_{t+1}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ \leq E\left[r_{t}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \end{array} E[rt​+Vπ(st+1​)∣st​=s,at​=π′(st​)]≤E[rt​+Qπ(st+1​,π′(st+1​))∣st​=s,at​=π′(st​)]​

因为 Q π ( s t + 1 , π ′ ( s t + 1 ) ) = r t + 1 + V π ( s t + 2 ) Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) = r_{t+1}+V^{\pi}\left(s_{t+2}\right) Qπ(st+1​,π′(st+1​))=rt+1​+Vπ(st+2​),所以我们得到下式:
E [ r t + Q π ( s t + 1 , π ′ ( s t + 1 ) ) ∣ s t = s , a t = π ′ ( s t ) ] = E [ r t + r t + 1 + V π ( s t + 2 ) ∣ s t = s , a t = π ′ ( s t ) ] \begin{array}{l} E\left[r_{t}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ =E\left[r_{t}+r_{t+1}+V^{\pi}\left(s_{t+2}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \end{array} E[rt​+Qπ(st+1​,π′(st+1​))∣st​=s,at​=π′(st​)]=E[rt​+rt+1​+Vπ(st+2​)∣st​=s,at​=π′(st​)]​

然后再代入 V π ( s ) ≤ Q π ( s , π ′ ( s ) ) V^{\pi}(s) \leq Q^{\pi}\left(s, \pi^{\prime}(s)\right) Vπ(s)≤Qπ(s,π′(s)),一直算到回合结束,即:
V π ( s ) ≤ Q π ( s , π ′ ( s ) ) = E [ r t + V π ( s t + 1 ) ∣ s t = s , a t = π ′ ( s t ) ] ≤ E [ r t + Q π ( s t + 1 , π ′ ( s t + 1 ) ) ∣ s t = s , a t = π ′ ( s t ) ] = E [ r t + r t + 1 + V π ( s t + 2 ) ∣ s t = s , a t = π ′ ( s t ) ] ≤ E [ r t + r t + 1 + Q π ( s t + 2 , π ′ ( s t + 2 ) ∣ s t = s , a t = π ′ ( s t ) ] = E [ r t + r t + 1 + r t + 2 + V π ( s t + 3 ) ∣ s t = s , a t = π ′ ( s t ) ] ≤ ⋯ ≤ E [ r t + r t + 1 + r t + 2 + ⋯ ∣ s t = s , a t = π ′ ( s t ) ] = V π ′ ( s ) \begin{aligned} V^{\pi}(s) &\le Q^{\pi}(s,\pi'(s)) \\ &=E\left[r_{t}+V^{\pi}\left(s_{t+1}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right]\\ &\le E\left[r_{t}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ &=E\left[r_{t}+r_{t+1}+V^{\pi}\left(s_{t+2}\right) |s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ & \le E\left[r_{t}+r_{t+1}+Q^{\pi}\left(s_{t+2},\pi'(s_{t+2}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ & = E\left[r_{t}+r_{t+1}+r_{t+2}+V^{\pi}\left(s_{t+3}\right) |s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ & \le \cdots\\ & \le E\left[r_{t}+r_{t+1}+r_{t+2}+\cdots | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ & = V^{\pi'}(s) \end{aligned} Vπ(s)​≤Qπ(s,π′(s))=E[rt​+Vπ(st+1​)∣st​=s,at​=π′(st​)]≤E[rt​+Qπ(st+1​,π′(st+1​))∣st​=s,at​=π′(st​)]=E[rt​+rt+1​+Vπ(st+2​)∣st​=s,at​=π′(st​)]≤E[rt​+rt+1​+Qπ(st+2​,π′(st+2​)∣st​=s,at​=π′(st​)]=E[rt​+rt+1​+rt+2​+Vπ(st+3​)∣st​=s,at​=π′(st​)]≤⋯≤E[rt​+rt+1​+rt+2​+⋯∣st​=s,at​=π′(st​)]=Vπ′(s)​

因此:
V π ( s ) ≤ V π ′ ( s ) V^{\pi}(s)\le V^{\pi'}(s) Vπ(s)≤Vπ′(s)

3. tips:Target Network

3.1 为什么要引入target network

在这里插入图片描述

我们在学习 Q-function 的时候,也会用到 TD 的概念。
Q π ( s t , a t ) = r t + Q π ( s t + 1 , π ( s t + 1 ) ) \mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) =r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right) Qπ(st​,at​)=rt​+Qπ(st+1​,π(st+1​))

但是实际上这样的一个输入并不好学习,因为假设这是一个回归问题, Q π ( s t , a t ) \mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) Qπ(st​,at​) 是网络的输出, r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right) rt​+Qπ(st+1​,π(st+1​)) 是目标,会发现目标是会动的。当然要实现这样的训练,其实也没有问题,在做反向传播的时候, Q π Q^{\pi} Qπ 的参数被更新,把两个更新的结果加在一起,因为它们是同一个模型 Q π Q^{\pi} Qπ。但这样会导致训练变得不太稳定,因为假设把 Q π ( s t , a t ) \mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) Qπ(st​,at​)当作模型的输出, r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right) rt​+Qπ(st+1​,π(st+1​))当作目标的话,要去拟合的目标是一直在变的,这种一直在变的目标的训练是不太好训练的。

所以通常会把右边这个 Q 网络固定住。也就是说在训练的时候,只更新左边的 Q 网络的参数,而右边的 Q 网络的参数会被固定住。因为右边的 Q 网络负责产生目标,所以叫 目标网络。因为目标网络是固定的,所以得到的目标 r t + Q π ( s t + 1 , π ( s t + 1 ) ) r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right) rt​+Qπ(st+1​,π(st+1​))的值也是固定的。因为目标网络是固定的,我们只调左边网络的参数,它就变成一个回归问题。我们希望模型的输出的值跟目标越接近越好,只需最小化它的均方误差(mean square error)。

在实现的时候,一般把左边的 Q 网络更新好几次以后,再去用更新过的 Q 网络替换这个目标网络。

初始时这两个网络是一样的,然后在训练的时候,把右边的 Q 网络固定住。在做梯度下降的时候,只调左边这个网络的参数,可能更新 100 次以后才把这个参数复制到右边的网络去。复制过去以后,目标值就变了,接下来就要重新再训练。

3.2 Intuition

在这里插入图片描述

我们可以通过猫追老鼠的例子来直观地理解为什么要 fix target network。猫是 Q estimation,老鼠是 Q target。一开始的话,猫离老鼠很远,我们想让这个猫追上老鼠。

因为 Q target 也是跟模型参数相关的,所以每次优化后,Q target 也会动。这就导致一个问题,猫和老鼠都在动。然后它们就会在优化空间里面到处乱动,就会产生非常奇怪的优化轨迹,这就使得训练过程十分不稳定。所以我们可以固定 Q target,让老鼠动得不是那么频繁,可能让它每 5 步动一次,猫则是每一步都在动。如果老鼠每 5 次动一步的话,猫就有足够的时间来接近老鼠。然后它们之间的距离会随着优化过程越来越小,最后它们就可以拟合,拟合过后就可以得到一个最好的Q 网络。

4. tips:Exploration

在这里插入图片描述

4.1 exploration的必要性

4.2 解决方法一:Epsilon Greedy

Epsilon Greedy的意思是说,我们有 1 − ε 1-\varepsilon 1−ε 的概率会按照 Q-function 来决定 动作,通常 ε \varepsilon ε 就设一个很小的值, 1 − ε 1-\varepsilon 1−ε可能是 90%,也就是 90% 的概率会按照 Q-function 来决定 动作,但是你有 10% 的机率是随机的。通常在实现上 ε \varepsilon ε 会随着时间递减。在最开始的时候。因为还不知道那个动作是比较好的,所以你会花比较大的力气在做探索。接下来随着训练的次数越来越多。已经比较确定说哪一个 Q 是比较好的。你就会减少你的探索,你会把 ε \varepsilon ε 的值变小,主要根据 Q-function 来决定你的动作,比较少随机决定动作,这是 Epsilon Greedy。

4.2 解决方法二:Boltzmann Exploration

这个方法就比较像是策略梯度。在策略梯度里面,网络的输出是一个期望的动作空间上面的一个的概率分布,再根据概率分布去做采样。那其实你也可以根据 Q 值 去定一个概率分布,假设某一个动作的 Q 值越大,代表它越好,我们采取这个动作的机率就越高。但是某一个动作的 Q 值小,不代表我们不能尝试。

Q: 我们有时候也要尝试那些 Q 值比较差的动作,怎么做呢?

A: 因为 Q 值是有正有负的,所以可以它弄成一个概率,你先取指数,再做归一化。然后把 exp ⁡ ( Q ( s , a ) ) \exp(Q(s,a)) exp(Q(s,a)) 做归一化的这个概率当作是你在决定动作的时候采样的概率。在实现上,Q 是一个网络,所以你有点难知道, 在一开始的时候网络的输出到底会长怎么样子。假设你一开始没有任何的训练数据,参数是随机的,那给定某一个状态 s,不同的 a 输出的值可能就是差不多的,所以一开始 Q ( s , a ) Q(s,a) Q(s,a)应该会倾向于是均匀的。也就是在一开始的时候,你这个概率分布算出来,它可能是比较均匀的。

4. tips:Experience Replay

4.1 怎么借助buffer训练 Q 的模型

在这里插入图片描述

4.2 使用Experience Replay(经验回放)有什么好处?

这么做有两个好处

5. DQN

DQN 使用深度神经网络近似拟合状态动作值函数 Q ( s , a ) Q(s,a) Q(s,a).

在这里插入图片描述

5.1 DQN 和 Q-learning 有什么不同?

整体来说,DQN 与 Q-learning 的目标价值以及价值的更新方式都非常相似,主要的不同点在于:

6. 练习

6.1 简答

6.2 问答

1. 为什么在DQN中采用价值函数近似(Value Function Approximation)的表示方法?

答:首先DQN为基于深度学习的Q-learning算法,而在Q-learning中,我们使用表格来存储每一个state下action的reward,即我们前面所讲的状态-动作值函数 Q ( s , a ) Q(s,a) Q(s,a) 。但是在我们的实际任务中,状态量通常数量巨大并且在连续的任务中,会遇到维度灾难的问题,所以使用真正的Value Function通常是不切实际的,所以使用了价值函数近似(Value Function Approximation)的表示方法。

2. critic output通常与哪几个值直接相关?

答:critic output与state和actor有关。我们在讨论output时通常是对于一个actor下来衡量一个state的好坏,也就是state value本质上来说是依赖于actor。不同的actor在相同的state下也会有不同的output。

3. 我们通常怎么衡量state value function V π ( s ) V^{\pi}(s) Vπ(s)?分别的优势和劣势有哪些?

答:

4. 随机性策略和确定性策略有什么区别吗?

答:随机策略表示为某个状态下动作取值的分布,确定性策略在每个状态只有一个确定的动作可以选。 从熵的角度来说,确定性策略的熵为0,没有任何随机性。随机策略有利于我们进行适度的探索,确定 性策略的探索问题更为严峻。

5. 不打破数据相关性,神经网络的训练效果为什么就不好?

答:在神经网络中通常使用随机梯度下降法。随机的意思是我们随机选择一些样本来增量式的估计梯度,比如常用的 采用batch训练。如果样本是相关的,那就意味着前后两个batch的很可能也是相关的,那么估计的梯度也会呈现出某种相关性。如果不幸的情况下,后面的梯度估计可能会抵消掉前面的梯度量。从而使得训练难以收敛。

标签:rt,状态,right,EasyRL,笔记,st,DQN,pi,left
来源: https://blog.csdn.net/weixin_42301220/article/details/123157189