David Silver Lecture 5 | Model-Free Control
参考:https://zhuanlan.zhihu.com/p/28108498
1 Introduction
上一讲学习了怎么在一个给定策略下估计一个价值函数(Value Function)。这一讲的内容主要是在模型未知的条件下如何优化价值函数,这一过程也称作模型无关的控制(Model-Free Control)。
感觉优化价值函数就是改进当前的Policy
1.1 On-policy Learning
“Learning on the job”
Learn about policy π \pi π from experience sampled from π \pi π
其基本思想是个体已有一个策略,并且遵循这个策略进行采样,或者说采取一系列该策略下产生的行为,根据这一系列行为得到的奖励,更新状态函数,最后根据该更新的价值函数来优化策略得到较优的策略。由于要优化的策略就是当前遵循的策略,所以是On-policy Learning。
1.2 Off-policy Learning
“Look over someone’s shoulder”
Learn about policy π \pi π from experience sampled from μ \mu μ
其基本思想是,虽然个体有一个自己的策略,但是个体并不针对这个策略进行采样,而是基于另一个策略进行采样,这另一个策略可以是先前学习到的策略,也可以是人类的策略等一些较为优化成熟的策略,通过观察基于这类策略的行为,或者说通过对这类策略进行采样,得到这类策略下的各种行为,继而得到一些奖励,然后更新价值函数,即在自己的策略形成的价值函数的基础上观察别的策略产生的行为,以此达到学习的目的。这种学习方式类似于“站在别人的肩膀上可以看得更远”。由于这些策略是已有的策略,所以是off-policy。
2 On-Policy Monte-Carlo Control
2.1 Generalised Policy Iteration - MC Policy Iteration
之前的想法是:Iterative Policy Evaluation + Greedy Policy Improvement
根据一个已有的policy
π
\pi
π得到此Policy 下的价值函数,然后再根据这个新的价值函数更新得到新的Policy,如此循环直到收敛。之所以它是贪婪的,是因为它每次都采取转移到可能的、状态函数最高的新状态的行为。
转移到公式上来说就是
V
(
s
)
=
m
a
x
a
q
(
s
′
,
a
)
V(s)=max_{a}q(s',a)
V(s)=maxaq(s′,a)
π
′
(
s
)
=
a
r
g
m
a
x
a
∈
A
[
R
s
a
+
P
s
s
′
a
V
(
s
′
)
]
\pi'(s)=argmax_{a\in \mathcal{A}} [\mathcal{R}_s^a+\mathcal{P}_{ss'}^a V(s')]
π′(s)=argmaxa∈A[Rsa+Pss′aV(s′)]
现在我们的想法是,既然我们上一讲学习了另外的更新价值函数的方法,如MC和TP,可不可以直接改变这个组合,如:
Monte-Carlo Policy Evaluation + Greedy Policy Improvement 从而做到Model Free (不需要知道Transition Matrix
P
\mathcal{P}
P )
答案是否定的,因为直接修改存在两个问题:
-
因为这里我们希望做到Model Free,但是Greedy Policy Iteration公式 π ′ ( s ) = a r g m a x a ∈ A [ R s a + P s s ′ a V ( s ′ ) ] \pi'(s)=argmax_{a\in \mathcal{A}} [\mathcal{R}_s^a+\mathcal{P}_{ss'}^a V(s')] π′(s)=argmaxa∈A[Rsa+Pss′aV(s′)]中存在转移矩阵。
Sol:使用Action Value Q ( s , a ) Q(s,a) Q(s,a)代替 V ( s ) V(s) V(s), [Rappel, q表示的是在状态s下采取action a的价值 。 q π ( s , a ) = E π [ R t + 1 + γ q π ( s t + 1 , A t + 1 ) ∣ s t = s , A t = a ] 。q_\pi(s,a)=\mathbb{E}_\pi [R_{t+1}+\gamma q_\pi(s_{t+1},A_{t+1})|s_t=s,A_t=a] 。qπ(s,a)=Eπ[Rt+1+γqπ(st+1,At+1)∣st=s,At=a]]。即,我们直接聚焦Action 本身,而不把action 拆开来看,因为 P s s ′ a ≠ 1 \mathcal{P}_{ss'}^a \neq 1 Pss′a=1的含义为action a并不一定能保证肯定能从s转移到s’。π ′ ( s ) = a r g m a x a ∈ A [ Q ( s , a ) ] \pi'(s)=argmax_{a\in \mathcal{A}} [Q(s,a)] π′(s)=argmaxa∈A[Q(s,a)]
-
在MC的时候,我们只按照我们见过的episodes来更新参数,因此我们并没有探索完全部的空间,再加上后续的Greedy,我们并不能保障会收敛到全局最优。
例如,你面前有2扇门,门后面能获得的奖励数量是随机的。
你打开左侧门得到即时奖励为0:V(left)=0;
你打开右侧门得到即时奖励1:V(right)=1;
在使用贪婪算法时,接下来你将会继续打开右侧的门,而不会尝试打开左侧门
你打开右侧门得到即时奖励+3:V(right)=(1+3)/2=2;(用MC更新的话)
你打开右侧门得到即时奖励+2 : V(right)=(1+3+2)/2=2;
这样一直下去你都会选择右边的门,但说不定左边第一次只是你运气不好呢?为了避免陷入全局最优,我们提出以下解决办法:Sol:(一种简单的情况)
ϵ − \epsilon- ϵ−Greedy
综上,我们可以使用
Monte-Carlo Policy Evaluation + Greedy Policy Improvement 并使用
ϵ
−
\epsilon-
ϵ−Greedy实现后者。
- π ′ ( s ) = a r g m a x a ∈ A [ Q ( s , a ) ] \pi'(s)=argmax_{a\in \mathcal{A}} [Q(s,a)] π′(s)=argmaxa∈A[Q(s,a)] 更新策略的时候使用Action Value q π ( s , a ) q_\pi(s,a) qπ(s,a) 而非State Value V ( S ) V(S) V(S)。(这已在 ϵ − \epsilon- ϵ−Greedy中体现了。)
- ϵ − \epsilon- ϵ−Greedy (见后面的详细介绍)
图中每一个向上或向下的箭头都对应着多个Episode。也就是说我们一般在经历了多个Episode之后才进行依次Q函数更新或策略改善。实际上我们也可以在每经历一个Episode之后就更新Q函数或改善策略。(即,每次只用最新的episode来进行更新,这样速度更快,对应图2)但不管使用那种方式,在Ɛ-贪婪探索算下我们始终只能得到基于某一策略下的近似Q函数,且该算法没没有一个终止条件,因为它一直在进行探索。因此我们必须关注以下两个方面:一方面我们不想丢掉任何更好信息和状态,另一方面随着我们策略的改善我们最终希望能终止于某一个最优策略,因为事实上最优策略不应该包括一些随机行为选择。因此我们引入另外一个概念GLIE。(见2.3)
2.2 ϵ − \epsilon- ϵ−Greedy
Ɛ-Greedy的目标使得某一状态下所有可能的行为都有一定非零几率被选中执行,也就保证了持续的探索,1-Ɛ的概率下选择当前认为最好的行为,而Ɛ的概率在所有可能的行为中选择(也包括那个当前最好的行为)。
一共有m个Action,
ϵ
m
∗
(
m
−
1
)
+
ϵ
m
+
1
−
ϵ
=
1
\frac{\epsilon}{m}*(m-1)+\frac{\epsilon}{m}+1-\epsilon=1
mϵ∗(m−1)+mϵ+1−ϵ=1,只有一个最优的行为。
Thm:
For any Ɛ-Greedy policy
π
\pi
π, 改进过后的新Policy
π
′
\pi'
π′满足
v
π
′
(
s
)
≥
v
π
(
s
)
v_\pi'(s)\geq v_\pi(s)
vπ′(s)≥vπ(s)
Dem:
- 这里第二个等号是因为 π ′ \pi' π′有 ϵ m + 1 − ϵ \frac{\epsilon}{m}+1-\epsilon mϵ+1−ϵ的概率选择最好的动作,然后 A \mathcal{A} A中一共有m个动作
- 这里第三个不等号的原因是 m a x a ∈ A a ≥ A中元素的加权和 max_{a\in A} a \geq \text{A中元素的加权和} maxa∈Aa≥A中元素的加权和,这里 ∑ a ∈ A π ( a ∣ s ) − ϵ m 1 − ϵ = 1 \sum_{a\in \mathcal{A}}\frac{\pi(a|s)-\frac{\epsilon}{m}}{1-\epsilon}=1 ∑a∈A1−ϵπ(a∣s)−mϵ=1,所以确实是一个加权和。
2.3 GLIE (Greedy in the Limit with Infinite Exploration) MC
我们需要平衡探索和最终得到的是一个确定的结果 -> GLIE
即在有限的时间内进行无限可能的探索。
- All state-action pairs are explored infinitely many times
- l i m k → ∞ N k ( s , a ) = ∞ lim_{k\to \infty}N_k(s,a)=\infty limk→∞Nk(s,a)=∞
- The policy converges on a greedy policy (随着探索
ϵ
\epsilon
ϵ逐渐降低)
- l i m k → ∞ π k ( a ∣ s ) = 1 ( a = a r g m a x a ′ ∈ A Q k ( s , a ′ ) ) lim_{k\to \infty}\pi_k(a|s)= 1(a=argmax_{a'\in \mathcal{A}}Q_k(s,a')) limk→∞πk(a∣s)=1(a=argmaxa′∈AQk(s,a′))
伪代码和定理:
我们每次都通过epsilon greedy得到一个更好的policy,并且我们探索的概率
ϵ
\epsilon
ϵ逐渐变小。
例子:二十一点游戏的最优策略
最优策略是这样:当你手上有可用A时,大多数情况下当你的牌面和达到17或18时停止要牌,如果庄家可见的牌面在2-9之间,你选择17,其它条件选择18;当你手上没有A时,最优策略提示大多数情况下牌面和达到16就要停止叫牌,当庄家可见的牌面在2-7时,这一数字更小至13甚至12。这种极端情况下,宁愿停止叫牌等待让庄家的牌爆掉。
3 On-Policy Temporal-Difference Learning
3.1 Sarsa
名字来源:
Sarsa的名称来源于上图所示的序列描述:针对一个状态
S
S
S,以及一个特定的行为
A
A
A,进而产生一个状态行为对(S,A),与环境交互,环境收到个体的行为后会告诉个体即时奖励R以及后续进入的状态S’;接下来个体遵循现有策略产生一个行为A’,根据当前的状态行为价值函数得到后一个状态行为对(S’,A’)的价值(Q(S’,A’)),利用这个Q(S’,A’)值更新前一个状态行为对(Q(S,A))的价值。
直觉解释:
- 一个Agent在状态S,根据当前Policy 会选择Action A,Agent执行该行为
- Action A会带来及时奖励R,并让Agent进入State S’
- 一个Agent在状态S’,根据当前Policy 会选择Action A’,Agent不执行该行为,但会得到一个价值Q(S’,A’)。
伪代码:
回顾
ϵ
−
\epsilon-
ϵ−Greedy:
- 算法中的Q(s,a)是以一张大表存储的,这不适用于解决规模很大的问题;
- 每次Action A结束之后,Q(S,A)的值就已经更新了,可能会改变Q(S’,A")的决策。在更新SA状态行为对的价值循环里,个体并不实际执行在S’下的A’行为,而是将行为A’留到下一个循环执行。
Thm Convergence of Sarsa
满足如下两个条件时,Sarsa算法将收敛至最优行为价值函数。
- 任何时候的策略 π t ( a ∣ s ) \pi_t(a|s) πt(a∣s)符合GLIE特性; (能探索环境,且逐渐减小)
- 步长系数 α t \alpha_t αt满足 ∑ t = 1 ∞ a t = ∞ , ∑ t = 1 ∞ a t 2 < ∞ \sum_{t=1}^\infty a_t = \infty, \sum_{t=1}^\infty a_t^2 < \infty t=1∑∞at=∞,t=1∑∞at2<∞
例子:Windy Gridworld
已知:如图所示,环境是一个10*7的长方形格子世界,同时有一个起始位置S和一个终止目标位置G,水平下方的数字表示对应的列中有一定强度的风,当该数字是1时,个体进入该列的某个格子时,会按图中箭头所示的方向自动移动一格,当数字为2时,表示顺风移动2格,以此类推模拟风的作用。任何试图离开格子世界的行为都会使得个体停留在移动前的位置。对于个体来说,它不清楚整个格子世界的构造,即它不知道格子是长方形的,也不知道边界在哪里。也不清楚起始位置、终止目标位置的具体为止。对于它来说,每一个格子就相当于一个封闭的房间,在没推开门离开当前房间之前它无法知道会进入哪个房间。个体具备记住曾经去过的格子的能力。格子可以执行的行为是朝上、下、左、右移动一步,也可以斜着走。此外,个体不会超出边界,可以想像成是有边框的。
风的设置是环境动力学的一部分,它与长方形的边界共同及个体的行为共同决定了个体下一步的状态。个体从环境观测不到自身位置、起始位置以及终止位置信息的坐标描述,个体在与环境进行交互的过程中学习到自身及其它格子的位置关系。个体的行为空间是离散的四个方向。可以设置个体每行走一步获得即时奖励为-1,直到到达终止目标位置的即时奖励为0,借此希望找到最优策略。衰减系数λ可设为1。
3.2 n-step Sarsa
类似与上一讲中的n-return,我们引入n-step Sarsa
我感觉这里的
Q
(
S
t
+
n
)
Q(S_{t+n})
Q(St+n)是包括那个时刻的动作的。
具体更新:
3.3 Forward View Sarsa( λ \lambda λ)
假如我们给n-步Q收获的每一个收获分配一个权重,如下图引入参数λ分配权重,并按权重对每一步Q收获求和,那么将得到 q λ q^\lambda qλ收获,它结合了所有n-步Q收获:
q t λ = ( 1 − λ ) ∑ n = 1 ∞ λ n − 1 q t ( n ) q_t^\lambda=(1-\lambda)\sum_{n=1}^\infty \lambda^{n-1}q_t^{(n)} qtλ=(1−λ)n=1∑∞λn−1qt(n)
具体更新方式:
Q ( S t , A t ) ← Q ( S t , A t ) + α ( q t λ − Q ( S t , A t ) ) Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha(q_t^\lambda-Q(S_t,A_t)) Q(St,At)←Q(St,At)+α(qtλ−Q(St,At))
即每次更新都会考虑未来n步的结果并做加权平均,这已经是一种介于MC和TP的方法了。但这里的问题是会有很多重复计算,也正因此,我们可以利用Backward View。
3.4 Backward View Sarsa( λ \lambda λ)
类似于 T D ( λ ) TD(\lambda) TD(λ),我们引入Eligibility Traces。但这里我们除了引入S,还要引入Action A,即我们考虑的是State-action Pair。
E 0 ( s , a ) = 0 E t ( s , a ) = γ λ E t − 1 ( s , a ) + 1 ( S t = s , A t = a ) \begin{aligned} E_0(s,a) &= 0 \\ E_t(s,a) &= \gamma \lambda E_{t-1}(s,a) + 1(S_t=s,A_t=a) \\ \end{aligned} E0(s,a)Et(s,a)=0=γλEt−1(s,a)+1(St=s,At=a)
同样这里的Eligibility Trace也是用作更新时的一个系数
δ t = R t + 1 + γ Q ( S t + 1 , A t + 1 − Q ( S t , A t ) ) Q ( s , a ) ← Q ( s , a ) + α δ t E t ( s , a ) \begin{aligned} \delta_t &= R_{t+1} + \gamma Q(S_{t+1},A_{t+1}-Q(S_t,A_t)) \\ Q(s,a) &\leftarrow Q(s,a) + \alpha \delta_t E_t(s,a) \\ \end{aligned} δtQ(s,a)=Rt+1+γQ(St+1,At+1−Q(St,At))←Q(s,a)+αδtEt(s,a)
3.5 Sarsa( λ \lambda λ) 伪代码
注意:
- E(s,a)在每浏览完一个Episode后需要重新置0,这体现了ET仅在一个Episode中发挥作用,而Salsa( λ \lambda λ)中的 λ \lambda λ越大,对历史信息的保留就越多。
- 其次要提及的是算法更新Q和E的时候针对的不是某个Episode里的Q或E,而是针对个体掌握的整个状态空间和行为空间产生的Q和E。
- For循环是为了更新其他的值,每一个时刻的E都会下降。
3.6 One-Step Sarsa 和 Sarsa( λ \lambda λ)的区别
假定最左侧图描述的路线是个体采取两种算法中的一个得到的一个完整Episode的路径。为了下文更方便描述、解释两个算法之间的区别,先做几个合理的小约定:1)认定每一步的即时奖励为0,直到终点处即时奖励为1;2)根据算法,除了终点以外的任何状态行为对的Q值可以是任意的,但我们设定初始时所有的Q值均为0;3)该路线是第一次找到终点的路线。
Sarsa(0)算法:
由于是现时策略学习,一开始个体对环境一无所知,即 Q Q Q值均为0,它将随机选取移步行为。
在到达终点前的每一个位置 S S S,个体依据当前策略 π \pi π,产生一个移动行为,执行该行为,环境会将其放置到一个新位置 S ′ S' S′,同时给以即时奖励 R = 0 R=0 R=0。在新的位置 S ′ S' S′上,根据当前的策略它会产生新位置下的一个行为,个体不执行该行为,仅仅在表中查找新状态下新行为的 Q ′ Q' Q′值,由于 Q ′ = 0 Q'=0 Q′=0,依据更新公式,它将把刚才离开的位置以及对应的行为的状态行为对价值 Q ( S , A ) Q(S,A) Q(S,A)更新为0。
如此直到个体最到达终点位置 S G S_G SG,它获得一个即时奖励 1 1 1,此时个体会依据公式更新其到达终点位置前所在那个位置(暂用 S H S_H SH表示,也就是图中终点位置下方,向上的箭头所在的位置)时采取向上移步的那个状态行为对价值 Q ( S H , A 向 上 走 ) Q(S_H,A_{向上走}) Q(SH,A向上走)值,它将不再是 0 0 0。这是个体在这个Episode中唯一一次用非0数值来更新Q值。
这样完成一个Episode,此时个体已经并只进行了一次有意义的行为价值函数的更新;同时依据新的价值函数产生了新的策略。这个策略绝大多数与之前的相同,只是当个体处在某一个特殊位置时将会有一个确定的行为:即在与终点相邻的下方的格子直接向上移动。
⚠️ Sarsa算法每走一步都会更新(因为是on-policy)。
此时如果要求个体继续学习,则环境将其放入起点。个体的第二次寻路过程一开始与首次一样都是盲目随机的,直到其进入终点位置下方的位置 S H S_H SH,在这个位置,个体更新的策略要求其选择向上的行为直接进入终点位置 S G S_G SG。
同样,经过第二次的寻路,个体了解到到达终点下方的位置 S H S_H SH价值比较大,因为在这个位置直接采取向上移步的行为就可以拿到到达终点的即时奖励。因此它会将其通过移动一步可以到达 S H S_H SH的其它位置以及相应的到达 S H S_H SH位置索要采取的行为这一状态行为对的价值提升。如此反复。
-
如果采用greedy策略更新,个体最终将得到一条到达终点的路径,不过这条路径的倒数第二步永远是在终点位置的下方。
-
如果采用Ɛ-greedy策略更新,那么个体还会尝试到终点位置的左上右等其它方向的相邻位置价值也比较大,此时个体每次完成的路径可能都不一样。通过重复多次搜索,这种Q值的实质性的更新将覆盖越来越多的状态行为对,个体在早期采取的随机行为的步数将越来越少,直至最终实质性的更新覆盖到起始位置。此时个体将能直接给出一条确定的从起点到终点的路径。
Sarsa(λ)算法:
该算法同时还针对每一次Episode维护一个关于状态行为对 ( S , A ) (S,A) (S,A)的 E E E表,初始时 E E E表值均为0。
当个体首次在起点 S 0 S_0 S0决定移动一步 A 0 A_0 A0(在我们的例子中是向右)时,它被环境告知新位置为 S 1 S_1 S1。此时发生如下事情:
- 首先个体会做一个标记,使 E ( S 0 , A 0 ) E(S_0,A_0) E(S0,A0)的值增加1,表明个体刚刚经历过这个事件 ( S 0 , A 0 ) (S_0,A_0) (S0,A0)
- 其次它要估计这个事件的对于解决整个问题的价值,也就是估计TD误差,此时依据公式结果为0,说明个体认为在起点处向右走没什么价值。这个“没有什么价值”有两层含义:
- 不仅说明在 S 0 S_0 S0处往右目前对解决问题没有积极帮助
- 同时表明个体认为所有能够到达 S 0 S_0 S0状态的状态行为对(State-Action Pair) ( S , A ) (S,A) (S,A)的价值没有任何积极或消极的变化。
- 随后个体将要更新该Episode中所有已经经历的 Q ( S , A ) Q(S,A) Q(S,A)值,由于存在 E E E值,那些在 ( S 0 , A 0 ) (S_0,A_0) (S0,A0)之前近期发生或频繁发生的 ( S , A ) (S,A) (S,A)的 Q Q Q值将改变得比其他 Q Q Q值明显些,此外个体还要更新其 E E E值,以备下次使用。
对于刚从起点出发的个体,这次更新没有使得任何Q值发生变化,仅仅在 E ( S 0 , A 0 ) E(S_0,A_0) E(S0,A0)处有了一个实质的变化。
随后的过程类似,个体有意义的发现就是对路径有一个记忆,体现在 E ( S , A ) E(S,A) E(S,A)里,具体的 Q Q Q值没发生变化。这一情况直到个体到达终点位置时发生改变。此时个体得到了一个即时奖励1,它会发现这一次变化(从 S H S_H SH采取向上行为 A 向 上 A_{向上} A向上到达终点 S G S_G SG)价值明显,它会计算这个TD误差为1,同时告诉整个经历过程中所有 ( s , a ) (s,a) (s,a),根据其与 ( S H , A H ) (S_H,A_H) (SH,AH)的密切关系更新这些状态行为对的价值 Q Q Q(上图右所示),个体在这个Episode中经历的所有状态行为对的 Q Q Q值都将得到一个非0的更新,但是那些在个体到达 S H S_H SH之前就近发生以及频繁发生的状态行为对的价值提升得更加明显。
在图示的例子中没有显示某一状态行为频发的情况,如果个体在寻路的过程中绕过一些弯,多次到达同一个位置 S S S,并在该位置采取的相同的动作 A A A,最终个体到达终止状态时,就产生了多次发生的 ( s , a ) (s,a) (s,a),这时的 ( s , a ) (s,a) (s,a)的价值(应该是E(s,a))也会得到提升。也就是说,个体每得到一个即时奖励,同时会对所有历史事件的价值进行依次更新,当然那些与该事件关系紧密的事件价值改变的较为明显。这里的事件指的就是状态行为对 ( s , a ) (s,a) (s,a),在同一状态采取不同行为是不同的事件。
当个体重新从起点第二次出发时,它会发现起点处向右走的价值不再是0。
-
如果采用greedy策略更新,个体将根据上次经验得到的新策略直接选择右走,并且一直按照原路找到终点。
-
如果采用Ɛ-greedy策略更新,那么个体还会尝试新的路线。
Rq:
- 由于为了解释方便,做了一些约定,这会导致问题并不要求个体找到最短一条路径,如果需要找最短路径,需要在每一次状态转移时给个体一个负的奖励。
4 Off-Policy Learning
假设我们看到的行为遵循的policy μ ( a ∣ s ) \mu(a|s) μ(a∣s)和我们希望evaluate的policy不一致。
重要的原因:
- 学习人类和其他Agent
- Re-use experience generated from old experiences.
- 学习optimal policy while following exploratory policy。(在探索的时候就学习)
- 学习multiple policies while following one policy。
4.1 Importance Sampling
MC 在off-policy下不太好用,只能用TD。
4.2 Importance Sampling for Off-Policy TD
目的:在遵循
μ
(
a
∣
s
)
\mu(a|s)
μ(a∣s)的同时评估另外一个策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)。
具体数学表示:
直觉:
个体处在状态
S
t
S_t
St中,基于策略
μ
\mu
μ产生了一个行为
A
t
A_t
At,执行该行为后进入新的状态
S
t
+
1
S_{t+1}
St+1,那么在当前策略下如何根据新状态的价值调整原来状态的价值呢?
Off-policy的方法就是,在状态 S t S_t St时比较分别依据另一个策略 μ \mu μ和当前遵循的策略 π \pi π产生行为 A t A_t At的概率大小。
如果策略 π \pi π得到的概率值与遵循当前策略 μ \mu μ得到的概率值接近,说明根据状态 S t + 1 S_{t+1} St+1价值来更新 S t S_{t} St的价值同时得到两个策略的支持,这一更新操作比较有说服力。
同时也说明在状态 S t S_t St时,两个策略有接近的概率选择行为 A t A_t At。假如这一概率比值很小,则表明如果依照被评估的策略 π \pi π,选择 A t A_t At]的机会很小,这时候我们在更新 S t S_t St价值的时候就不能过多的考虑基于当前策略 μ \mu μ得到的状态 S t + 1 S_{t+1} St+1的价值。
同样概率比值大于1时的道理也类似。这就相当于借鉴被评估策略的经验来更新我们自己的策略。
4.3 Q-Learning
- 应用这种思想最好的方法是基于TD(0)的Q-学习(Q-learning)。
- 不再需要Important Sampling。
它的要点在于,更新一个状态行为对的Q价值时,采用的不是当前遵循策略
μ
\mu
μ的下一个状态行为对的Q价值,而是采用的待评估策略
π
\pi
π产生的下一个状态行为对的Q价值(即是“过时”的策略)。公式如下:
红色部分的TD目标是基于另一个目标策略
π
\pi
π产生的行为A’得到的Q价值。
Q-Learning最主要的表现形式是,选择目标策略(Target Policy)为每次选择最大Q的action这个Policy。
- 个体遵循的策略(behaviour policy) μ \mu μ是基于当前状态行为价值函数Q(s,a)的一个 ϵ − \epsilon- ϵ−greedy策略,
- 目标策略(target policy) π \pi π(上方红色的部分)是基于当前状态行为价值函数 Q ( s , a ) Q(s,a) Q(s,a)不包含 ϵ \epsilon ϵ的单纯greedy策略 π ( S t + 1 ) = a r g m a x a ′ Q ( S t + 1 , a ′ ) \pi(S_{t+1}) = argmax_{a'} Q(S_{t+1},a') π(St+1)=argmaxa′Q(St+1,a′),即每次选获得Q最大的action。
因此TD(0)中的目标值可以大幅化简:
综上,Q-Learning最终的更新公式为
Q ( S t , A ) ← Q ( S t , A ) + α ( R t + 1 + γ m a x a ′ Q ( s t + 1 , a ′ ) − Q ( S t , A ) ) Q(S_t,A) \leftarrow Q(S_t,A)+\alpha(R_{t+1}+\gamma max_{a'} Q(s_{t+1},a')-Q(S_t,A)) Q(St,A)←Q(St,A)+α(Rt+1+γmaxa′Q(st+1,a′)−Q(St,A))
Thm:
Q学习控制将收敛至最优状态行为价值函数:
Q
(
s
,
a
)
→
q
∗
(
s
,
a
)
Q(s,a)\to q_*(s,a)
Q(s,a)→q∗(s,a)。
直觉:
- 每次状态 S t S_t St依据 ϵ − \epsilon- ϵ−greedy得到的行为 A t A_t At的Q函数都会朝着 S t + 1 S_{t+1} St+1状态所具有的最大的Q价值方向做一定比例的更新,从而提高 Q ( S t , A t ) Q(S_t,A_t) Q(St,At)。
- 另外一方面,个体于环境交互的时候遵循 ϵ − g r e e d y \epsilon-greedy ϵ−greedy,因此避免陷入了全局最优。
4.4 Q-Learning 伪代码
例子:悬崖行走
图中悬崖用灰色的长方形表示,在其两端一个是起点,一个是目标终点。途中从悬崖指向起点的箭头提示悬崖同时也是终止状态。可以看出最优路线是贴着悬崖上方行走。
该例体现出早期Q学习得到的策略要比SARSA要差一些,但后期最终总能找到最优策略。两者的曲线都有一定的起伏,说明两者都有一定的探索。
5 Summary
- TD是采样(sample)+有数据引导(bootstrap) [需要 Q ( S t + 1 ) Q(S_{t+1}) Q(St+1)]
- DP是全宽度+实际数据。
如果从Bellman期望方程角度看:
聚焦于状态本身价值
V
(
S
)
V(S)
V(S)的是迭代法策略评估(DP)和TD学习
聚焦于状态行为对价值函数
Q
(
S
,
A
)
Q(S,A)
Q(S,A)的则是Q-Learning(DP)和SARSA
如果从针对状态行为价值函数
Q
(
S
,
A
)
Q(S,A)
Q(S,A)的Bellman优化方程角度看
则是Q-Learning(DP)和Q学习。