RL-赵-(七)-不基于模型:Q-Learning【TD算法】【离线】【基于RM算法在无模型条件下求解贝尔曼最优公式->直接计算出最优ActionValue->直接更新目标π】【无需PE与PI迭代】

在这里插入图片描述
直接求解q*(最优action value)得到最优策略,无需在PE与PI迭代来找最优策略。

直接估计optimal action values,不需要进行policy evaluation和policy improvement相互迭代计算来找最优策略。

在这里插入图片描述
接下来,我们介绍Q-learning,这是最广泛使用的强化学习算法之一。

  • Sarsa基于一个给定的policy估计action value,它必须整合policy improvement step才能寻找最优策略。
  • Q-learning直接估计optimal action values,从而找到最优策略。

TD算法【用来计算State Value v v v
v t + 1 ( s t ) ⏟ new estimate = v t ( s t ) ⏟ current estimate − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ⏟ υ ˉ t TD target  v ˉ t ] ] ⏞ TD error  δ t \color{red}{ \underbrace{v_{t+1}(s_t)}_{\text{new estimate}} =\underbrace{v_t(s_t)}_{\text{current estimate}} - \alpha_t(s_t)[\overbrace{v_t(s_t)-[\underbrace{r_{t+1}+\gamma v_t(s_{t+1})}_{\bar{\upsilon}_t}^{\text{TD target }\bar{v}_t}]]}^{\text{TD error}\ \delta_t}} new estimate vt+1(st)=current estimate vt(st)αt(st)[vt(st)[TD target vˉt rt+1+γvt(st+1)]] TD error δt
其中:

  • v ˉ t ≐ r t + 1 + γ v ( s t + 1 ) \bar{v}_t\doteq r_{t+1}+\gamma v(s_{t+1}) vˉtrt+1+γv(st+1) 被称为TD target。
  • δ t ≐ v ( s t ) − [ r t + 1 + γ v ( s t + 1 ) ] = v ( s t ) − v ˉ t \begin{aligned}\delta_t\doteq v(s_t)-[r_{t+1}+\gamma v(s_{t+1})]=v(s_t)-\bar{v}_t\end{aligned} δtv(st)[rt+1+γv(st+1)]=v(st)vˉt 被称为TD error。

Sarsa算法【用来计算Action Value q q q
{ q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ q t ( s t + 1 , a t + 1 ) ] ] q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) \color{red}{ \left \{\begin{array} {l}q_{t+1}(s_{t},a_{t})=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma q_t(s_{t+1},a_{t+1})]\Big]\\[1ex] \\q_{t+1}(s,a)=q_{t}(s,a),\quad\forall(s,a)\neq(s_{t},a_{t}) \end{array} \right.} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]]qt+1(s,a)=qt(s,a),(s,a)=(st,at)

其中 t = 0 , 1 , 2 , . . . . . . t=0,1,2,...... t=0,1,2,......

  • q t ( s t , a t ) q_t(s_t,a_t) qt(st,at) q π ( s t , a t ) q_\pi(s_t,a_t) qπ(st,at) 的估计;
  • α t ( s t , a t ) \alpha_t(s_t,a_t) αt(st,at)是依赖于 s t , a t s_t,a_t st,at 的learning rate。

一、Q-learning 算法【求解一个贝尔曼最优方程】

求解一个贝尔曼最优方程。

在这里插入图片描述
Q-learning 算法【用来计算最优Action Value q ∗ q^* q
{ q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) ] ] , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) \color{red}{ \left \{\begin{array} {l}q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left[q_t(s_t,a_t)-[r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a)]\right],\\[1ex] \\q_{t+1}(s,a)=q_{t}(s,a),\quad\forall(s,a)\neq(s_{t},a_{t}) \end{array} \right.} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γmaxaAqt(st+1,a)]],qt+1(s,a)=qt(s,a),(s,a)=(st,at)

从形式上看,Q-learning与Sarsa非常相似,唯一的不同在于TD targct:

  • Q-learningTD target 是: r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a) rt+1+γmaxaAqt(st+1,a)
  • SarsaTD target 是: r t + 1 + γ q t ( s t + 1 , a t + 1 ) r_{t+1}+\gamma q_t\left(s_{t+1},a_{t+1}\right) rt+1+γqt(st+1,at+1)

在这里插入图片描述
Q-learning在数学上解决什么问题呢?它旨在解决
q ( s , a ) = E [ R t + 1 + γ max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a q(s,a)=\mathbb{E}[R_{t+1}+\gamma\max_aq(S_{t+1},a)|S_t=s,A_t=a],\forall s,a q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a
这是 贝尔曼最优公式(Bellman optimality equation) 针对 action value 的表达式。

二、Off-policy、On-policy

在这里插入图片描述
在深入研究Q-learning之前,我们首先介绍两个重要的概念,首先,在TD learning task中存在两个策略:

  • 第一个是 behavior policy(行为策略),是和环境进行交互然后生成experience samples【行为策略用于生成经验样本】;
  • 第二个是 target policy(目标策略),一直更新它,直到最后得到一个最优策略【目标策略不断朝着最优策略进行更新】;

基于behavior policy 和 target policy,定义两种策略类型:On-policyOff-policy

  • 当behavior policy和target policy相同的时候,这样的学习策略称为On-policy
  • 当behavior policy和target policy不同的时候,这样的学习策略称为Off-policy

在这里插入图片描述
Off-policy learning 的好处是: 它可以基于由任何其他策略生成的经验样本搜索最优策略【可以从之前别人的经验当中学习】。作为一个重要的特殊情况,behavior policy(行为策略)可以选择为探索性(exploratory)的。例如,如果我们想要估计所有state-action pair的action values,我们可以使用一个探索性策略生成访问每个state-action pair足够多次的episodes。

  • 一个比较典型的例子就是比如说这个behavior policy是一个探索性的,就是它探索性非常强,能够探索所有的state action pair,然后我们可以基于这种探索性然后非常好地去估计出来每一个state action pair它们的action value。
  • 相反如果不是这个样子如果我必须要用我的target policy同时再作为behavior policy然后再去生成经验,因为target policy可能是Greedy的或者是ε-Greedy的,它的探索性就比较弱 那我可能就很难去探索到所有的state action pair,进而难以估计出所有(s,a)它的最优值

1、如何判断一个时序差分(TD)算法是on-policy还是off-policy?

在这里插入图片描述
如何判断一个时序差分(TD)算法是on-policy还是off-policy?

  • 首先,检查这个算法在数学上解决什么问题,
  • 然后,检查这个算法在实施过程中需要哪些东西才能让算法跑起来。

这值得特别注意,因为对初学者来说,这是最令人困惑的问题之一。

在这里插入图片描述

1.1、Sarsa 是 On-policy π t \pi_t πt 既是一个target policy, 又是一个behavior policy】。

  • 第一,Sarsa 的目标就是求解一个给定 π π π 的Bellman公式
    q π ( s , a ) = E [ R + γ q π ( S ′ , A ′ ) ∣ s , a ] , ∀ s , a \begin{aligned}q_{\pi}(s,a)=\mathbb{E}[R+\gamma q_{\pi}(S',A')|s,a],\forall s,a\end{aligned} qπ(s,a)=E[R+γqπ(S,A)s,a],s,a
    其中, R , S , A R,S,A R,S,A分别满足以下概率分布:
    • R ∼ p ( R ∣ s , a ) R\sim p(R|s,a) Rp(Rs,a)
    • S ′ ∼ p ( S ′ ∣ s , a ) S^{\prime}\sim p(S^{\prime}|s,a) Sp(Ss,a)
    • A ′ ∼ π ( A ′ ∣ S ′ ) \color{red}{\boldsymbol A}^{\prime}\sim\pi(A^{\prime}|S^{\prime}) Aπ(AS)
  • 第二,Sarsa 算法如下
    q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ q t ( s t + 1 , a t + 1 ) ] ] q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha_{t}(s_{t},a_{t})[q_{t}(s_{t},a_{t})-[r_{t+1}+\gamma q_{t}(s_{t+1},a_{t+1})]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]]
    其中需要采样: ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t,a_t,r_{t+1},s_{t+1},a_{t+1}) (st,at,rt+1,st+1,at+1)
    • 如果 ( s t , a t ) (s_t,a_t) (st,at)给定,那么 r t + 1 r_{t+1} rt+1 s t + 1 s_{t+1} st+1不依赖于任何策略!
    • a t + 1 \color{red}{a_{t+1}} at+1 is generated following π t ( s t + 1 ) \color{red}{\pi_t(s_{t+1})} πt(st+1),也就是说 π t ( s t + 1 ) \color{red}{\pi_t(s_{t+1})} πt(st+1) 既是一个target policy, 又是一个behavior policy。

在这里插入图片描述

1.2、Monte Carlo 是 On-policy π t \pi_t πt 既是一个target policy, 又是一个behavior policy】。

Monte Carlo learning是on-policy。

  • 首先,MC方法要解决的问题是
    q π ( s , a ) = E [ R t + 1 + γ R t + 1 + . . . ∣ S t   = s , A t   = a ] , ∀ s , a \begin{aligned}q_\pi(s,a)=\mathbb{E}[R_{t+1}+\gamma R_{t+1}+...|S_t\:=s,A_t\:=a],\forall s,a\end{aligned} qπ(s,a)=E[Rt+1+γRt+1+...∣St=s,At=a],s,a
    其中the sample is generated following a given policy π \pi π

  • 第二,MC方法的实现是
    q ( s , a ) ≈ r t + 1 + γ r t + 2 + . . . q(s,a)\approx r_{t+1}+\gamma r_{t+2}+... q(s,a)rt+1+γrt+2+...

  • 一个策略 π π π 被用于生成采样,也进一步被用于估计策略的action values。基于这个action values, 我们可以改进policy,

在这里插入图片描述

1.3、Q-learning 是 Off-policy

Q-learning is off-policy

  • 第一,看Q-learning在数学上解决的问题,它用于求解贝尔曼最优方程:
    q ( s , a ) = E [ R t + 1 + γ max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a q(s,a)=\mathbb{E}[R_{t+1}+\gamma\max_aq(S_{t+1},a)|S_t=s,A_t=a],\forall s,a q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a
  • 第二,看实施Q-learning需要什么样的测量。算法如下:
    q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) ] ] q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)[q_t(s_t,a_t)-[r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a)]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γaAmaxqt(st+1,a)]]
    需要 ( s t , a t , r t + 1 , s t + 1 ) (s_t,a_t,r_{t+1},s_{t+1}) (st,at,rt+1,st+1)
    • 如果 ( s t , a t ) (s_t,a_t) (st,at)给定,那么 r t + 1 r_{t+1} rt+1 s t + 1 s_{t+1} st+1不依赖于任何策略!
  • Q-learning 中的 behavior policy 是需要从 s t s_t st 出发根据一个策略得到一个 a t a_t at, 这个策略就是 behavior policy;
  • Target policy是什么呢?我们会根据正在计算的 q t + 1 ( s t , a t ) q_{t+1}(s_t,a_t) qt+1(st,at) 来判断哪一个action的 q q q 比较大,我就选择那个action。那么当这个 q t + 1 ( s t , a t ) q_{t+1}(s_t,a_t) qt+1(st,at) 逐渐收敛到最优的 q ∗ q^* q 值的时候,所对应的 π π π 就是最优的 π ∗ π^* π
  • 因此Q-learning中的 behavior policy 和 target policy 是不同的,也就是说Q-learning是off-policy。

2、Q-learning算法

2.1 on-policy version

在这里插入图片描述

2.2 off-policy version

在这里插入图片描述
off-policy version的第一步 Updata q-value 与 on-policy version一样。不一样的是第二步 Update target policy。

  • on-policy version当中的第二步它是一个ε-Greedy,但是off-policy version当中它变成了一个Greedy。
  • 第二步 Update target policy当中仍然是根据第一步Updata q-value所得到的q value来做更新这个策略,但是它不再是ε-Greedy了它就是一个Greedy,并且这时候这个策略我们给它一个名字叫 π T π_T πT。那为什么这时候它是Greedy而不是ε-Greedy呢?就是在on-policy version中因为我ε-Greedy的原因是我待会要用这个ε-Greedy的策略去生成数据,然后我希望它具有一定的探索性,所以能够访问到那些没有被访问的state-action pair。但是现在off-policy version的第二步Update target policy我生成了这个策略,我根本就不会用它去生成数据因为生成数据是 π b π_b πb 的事,那所以为什么还要让它是ε-Greedy的?它就直接是Greedy就行,因为我们知道Greedy的策略会是最优的。随着 q q q 的估计越来越准确, π π π 的估计也会收敛到最优的策略。所以很显然这里边有两个策略一个是 π b π_b πb,一个是 π T π_T πT,所以这个是off-policy的情况。

三、Q-learning案例

在这里插入图片描述
任务描述: 在网格世界中,找到所有states的一个最优策略。
任务设定: r t a r g e t = 1 , r f o r b i d d e n = r b o u n d a r y = − 1 r_{target}=1,r_{forbidden}=r_{boundary}=-1 rtarget=1,rforbidden=rboundary=1,学习率 α = 0.1 \alpha=0.1 α=0.1, discount rate γ \gamma γ的值是0.9。
Ground truth: an optimal policy and the corresponding optimal state values.
在这里插入图片描述
首先,选定一个behavior policy,然后用这个behavior policy产生很多的data/experience(1 million steps):
在这里插入图片描述
由off-policy Q-learning找到的policy:
在这里插入图片描述
上面的策略是探索性比较强的,因为要在每一个state找出最优的策略。The importance of exploration: episodes of 1 million steps.
如果策略的探索性不是那么强,the samples are not good.

探索性下降到0.5,得到的结果变差。 ε = 0.5 \varepsilon = 0.5 ε=0.5
在这里插入图片描述
探索性下降到0.1,得到的结果更差。 ε = 0.1 \varepsilon = 0.1 ε=0.1
在这里插入图片描述

四、TD算法统一公式(A unified point of view)

上面所介绍的所有算法都可以用一个统一的表达式表示出来:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − q ˉ t ] q_{t+1}\left(s_{t},a_{t}\right)=q_{t}\left(s_{t},a_{t}\right)-\alpha_{t}\left(s_{t},a_{t}\right)[q_{t}\left(s_{t},a_{t}\right)-\color{blue}{\bar{q}_{t}}] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)qˉt]

其中 q ˉ t \bar{q}_t qˉt 是TD target。

所有的TD算法之间的不同点在于 q ˉ t : \bar{q}_t: qˉt:

在这里插入图片描述
MC方法也可以用这个统一的表达式表示,通过设定 α t ( s t , a t ) = 1 \alpha_t\left(s_t,a_t\right)=1 αt(st,at)=1,有 q t + 1 ( s t , a t ) = q ˉ t q_{t+1}\left(s_t,a_t\right)=\bar{q}_t qt+1(st,at)=qˉt

在这里插入图片描述
可以看到, E [ ] \mathbb{E}[] E[] 中的表达式就是 TD target。

这些TD方法从本质上说是来求解一个给定策略的贝尔曼公式,但是怎么让它来搜索最优的策略呢?

其实就是把policy evaluation这个步骤和policy improvement相结合,就得到一个搜索最优策略的算法。

Summary

时序差分算法的核心思想是用对未来动作选择的价值估计来更新对当前动作选择的价值估计,这是强化学习中的核心思想之一。

猜你喜欢

转载自blog.csdn.net/u013250861/article/details/134960978