前言
- 行为策略(Behavior Policy)和目标策略(Target Policy)
- 行为策略用来与环境互动产生数据的策略,即在训练过程中做决定;
- 目标策略是学习训练完毕用来应用的策略;
- 存在两个策略的原因:强化学习中存在 exploitation(利用) 和 exploration(探索) 的问题,我们需要使用行为策略来保持探索性,来优化我们的目标策略
-
On Policy:实际上就是行为策略和目标策略是一个策略;
-
“Learn on the Job”: 通过在策略 π 抽取的经验中来学习更新策略 π
-
优势:简单粗暴
-
劣势:很可能只能找到局部最优解;因为利用和探索是一对矛盾,一方多必然导致另一方少,因此要平衡两者,就很难在保持利用的同时,充分地进行探索
-
-
Off Policy:将目标策略与行为策略分开
-
“Look over someone’s shoulder”: 通过在策略 μ 抽取的经验中来学习更新策略 π
-
优势:可以充分地进行探索,因此可以找到最好的策略;
-
难点:如何在一个策略下产生的数据来优化另外一个策略
-
-
On-policy-与Off-policy的区别在于:更新价值所使用的方法是沿着既定的策略(on-policy)抑或是新策略(off-policy)
- 本文首发于个人博客,欢迎到访本站获取更加系统全面的分享
一、Introduction
-
课程回顾:
- 上节课:
- Model-free Prediction
- 评估一个未知的 MDP 的状态值函数
- 本节课:
- Model-free Control
- 优化一个未知的 MDP 的状态值函数
- 上节课:
-
为什么要使用无模型的强化学习
- 实际上很多现实的问题都可以抽象为一个 MDP,但是对于 这其中的大多数的问题,MDP 或者是未知的,或者虽然是已知的,但是过于复杂,而 model-free control 可以解决这些问题
二、On-Policy Monte-Carlo Control
1)Generalised Policy Iteration【回顾】
-
实际上我们交替地对于 Policy 进行评估和优化,最终状态值函数和策略都收敛于最优状态值函数和最优策略;【这在 DP 中我们是见到过的】
- 从一个策略 π 和一个价值函数 V 开始,每一次箭头向上代表着利用当前策略进行价值函数的更新
- 每一次箭头向下代表着根据更新的价值函数贪婪地选择新的策略;
2)Generalised Policy Iteration With Monte-Carlo Evaluation
-
上面的方法是不是适合于蒙特卡洛(MC)方法呢?不可以!存在至少下面两个方面的问题:
-
上面的动态规划来优化策略,需要知道某一个状态的所有后续状态以及状态间转移概率,即:
-
解决方法:我们可以采用下面的方法来代替:
-
修改后的方法:从一个初始的 Q 和策略 π 开始,先根据这个策略更新每一个状态行为对的 q 值,随后基于更新的 Q 确定改善的贪婪算法
-
-
还有一个问题是:当我们每次使用贪婪算法来改善策略的时候,将有可能由于没有足够的探索,而不能产生最优的策略,而是被卡在局部最优解【我们实际上需要不时地尝试一些新的行为,即探索】
-
一个简单的方法是:确保持续地进行探索 ;在状态 s 上可以采取的不同的 m 个 actions 中,所有的 action 的概率都不是 0;ε-Greedy Exploration:
- 1- ε 的概率根据贪婪算法,选择当前策略下最优的 action
- ε 的概率随机地选择一个动作
-
-
3)ε-Greedy Policy Improvement
-
定理:证明使用 ε-Greedy 方法至少一定会比原来的策略同样好
- 证明:
-
因此我们就完全解决了上述的两个问题,Mote-Carlo Policy Iteration 就会变成下面的样子:使用 Q 函数进行策略评估,使用 ε-Greedy 探索来改善策略
- 每一个向上或者向下的箭头都对应多个 Episodes,即经过多个 Episodes 之后才会更新一次 Q 函数或者优化 Policy。
4)Monte-Carlo Policy Control
-
其实,我们可以使得上面的过程更加高效,没有必要完全地 evaluate the policy;
-
我们实际上不必等待多个 Episodes 来收集信息,我们可以每个 Episode 都进行更新
5) GLIE
实际上我们需要平衡两个方面:
- 我们需要不断地保持探索,这样才能不断地优化我们的策略
- 我们希望得到一个策略,这个策略不需要再进行探索优化,因为我们需要的是最好的策略,最好的策略应该是不包含这种随机的行为
其中一种平衡这种的方法是:Limit with Infinite Exploration (GLIE)
-
定义:
- 比如:ε-Greedy 是 GLIE ,当在 ϵ k = 1 k \epsilon_k = \frac{1}{k} ϵk=k1 的时候 ε 衰减为 0
-
GLIE Monte-Carlo Control
-
使用当前的策略 π 获取第 k 个 Episode: { S 1 , A 1 , R 2 , . . . , S T } \{ S_1, A_1, R_2, ..., S_T\} {S1,A1,R2,...,ST}
-
对于这个 Episode 路径中的每一个状态 S t S_t St 和 行为 A t A_t At ,使用下面的方法进行更新:
-
根据新的行为值函数(action-value function),即 Q 函数来提升 Policy
定理:GLIE蒙特卡洛控制能收敛至最优的状态行为价值函数
-
三、On-Policy Temporal-Difference Learning
1) MC vs TD Control
- TD 算法相对于 MC 算法的优势:
- 低方差(lower Variance)
- 在线学习(Online)
- 可以使用不完整的序列
- 方法:在我们的 Control 循环中,使用 TD 算法代替 MC 算法:
- 使用 TD 算法来更新 Q(S, A)
- 使用 ε-greedy 来优化 policy
- 每一步都进行更新(而不需要等到一个 Episode 结束)
2)Sarsa(λ)
-
Sarsa 名字的来源就是下图中所示:从一个特定的 (S, A)对开始,获取 R,到达另外一个状态,然后采取另外一个行动。如图,从上到下,组合起来就是 Sarsa
-
On-Policy Control With Sarsa
- 与 MC 算法的不同是:在每个 Episode 中每一个状态 S 采取行动 A 后都有更新 Q 值
-
Sarsa 算法:
-
Sarsa 算法收敛性:当满足下面的条件的时候,Sarsa 收敛于最佳动作值函数(optimal action-value function)
- 上面图中第一个式子,说明 step size 要足够的大,这样可以足够远地移动 Q value
- 第二个式子告诉我们,最后Q value 在最后的改变越来越小
通常使用 Sarsa 的时候,我们并不需要担心上面的,因为 Sarsa 会运行的很好
-
举个栗子:有风方格世界
- 从右图中的训练过程中可以看出,在优化的早期,在前面的 2000 步中,只完成了有限的 Episodes,但是随着训练的进行,后面的速度越来越快
-
n-step Sarsa
-
实际上,Sarsa 算法是只考虑一步,然后就优化 Q 值的,而 MC 算法是一直考虑到 Episode 结束的;因此,它们之间有如下的关系:
-
我们可以统一上面的式子,定义 n-step Q-return
-
根据上面的式子,我们可以定义 n-step Sarsa,即不仅仅是考虑一步,而是考虑 n 步:
-
-
**Forward View Sarsa(λ) **
- 实际上,这里是考虑结合所有的 n-step,如下图,是从考虑一步到考虑无穷步(一直到终止点);使用加权平均的方法;
- 这样做的一个弊端是:需要遍历完整的 Episode 才能更新 Q 值【并不是在线学习】
-
Backward View Sarsa(λ)
-
可以回顾上一节的关于 Eligibility Traces(ET) 的概念:实际上就是一个状态的影响是随着时间递减的;这里与上一节不同的是针对的不是一个状态,而是一个状态行为对:
-
这个体现的是一个结果与一个状态行为对之间的关系,最近且频繁发生的状态行为对对结果的影响最大
-
引入 ET 概念之后 Q 值更新的方法:
-
新的算法
- E(s, a) 在每浏览一个 Episode 之后都需要重新置为 0,这个体现了 ET 仅仅在一个 Episode 中起作用;
- 更新 Q 和 E 的时候并不是针对当前的状态和行为,而是所有的状态和行为都要进行更新
-
-
标准 Sarsa 与 Sarsa(λ) 的对比
- 对标准的 Sarsa 来说,实际上每一个 Episode 仅仅有效地更新了一个 Q 值
- 对于 Sarsa(λ) 来说,因为奖励的延迟,当获得一个奖励的时候,会考虑是什么因素影响了这个奖励,实际上就是用 E(s, a) 来记录这个影响的,越是距离最终的这个结果越近或者发生越频繁的,对这个结果影响越大,因此,会根据 E(s, a) 来更新历史路径上的 Q 值
四、Off-Policy Learning
1)为什么使用 off-policy?
- 希望通过观察人类或者其他智能体来学习
- 希望重复使用从旧的 policy 中获取的经验
- 在遵循一个探索式的 Policy 的同时优化现有的策略
- 通过遵循一个 policy 来学习多个policies
2)Importance Sampling
-
Importance Sampling for Off-Policy Monte-Carlo【仅有理论价值,没有实际意义】
-
MC 算法的 off-policy 是没有实际使用价值的【因为方差会非常大】
-
Importance Sampling for Off-Policy TD
-
离线 策略 TD 学习就是使用 TD 方法在遵循一个策略 μ(a|s) 的同时评估另外一个策略 π(a|s)
-
3)Q-learning
-
这里不需要 Importance Sampling;
-
使用 behaviour policy 来选择下一个动作:
-
但是我们可以根据目标策略来考虑另外的下一个动作:
-
实际上使用目标策略选择的行为来更新 Q 值:
-
什么是 Q-learning: 【behaviour policy 和 target policy 都可以优化,这是 Q-Learning 特殊的地方】
-
behaviour policy 是基于当前 Q 值的一个 ε-greedy 策略;
-
target policy 是基于当前 Q 值的完全 greedy 策略;
-
-
所以上文中红色部分可以进行如下的简化:
-
图解 Q-Learning 算法
-
Q-Learning 算法伪代码:
五、Summary
-
动态规划(DP)与 TD 算法的关系