1.有模型强化学习智能体与免模型强化学习智能体
我们可以通过智能体到底有没有学习环境模型来对智能体进行分类。 有模型(model-based) 强化学习智能体通过学习状态的转移来采取动作。 免模型(model-free) 强化学习智能体没有去直接估计状态的转移,也没有得到环境的具体转移变量,它通过学习价值函数和策略函数进行决策。免模型强化学习智能体的模型里面没有环境转移的模型。
我们可以用马尔可夫决策过程来定义强化学习任务,并将其表示为四元组 <𝑆,𝐴,𝑃,𝑅><S,A,P,R>,即状态集合、动作集合、状态转移函数和奖励函数。如果这个四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则智能体可以对真实环境进行建模,构建一个虚拟世界来模拟真实环境中的状态和交互反应。 具体来说,当智能体知道状态转移函数 𝑃(𝑠𝑡+1∣𝑠𝑡,𝑎𝑡)P(st+1∣st,at) 和奖励函数 𝑅(𝑠𝑡,𝑎𝑡)R(st,at) 后,它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟世界中学习和规划策略即可。这种学习方法称为有模型强化学习。 有模型强化学习的流程如图 1 所示。
图 1 有模型强化学习流程
然而在实际应用中,智能体并不是那么容易就能知晓马尔可夫决策过程中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型强化学习。免模型强化学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新动作策略,这样反复迭代直到学习到最优策略。
Q:有模型强化学习和免模型强化学习有什么区别?
A:针对是否需要对真实环境建模,强化学习可以分为有模型强化学习和免模型强化学习。有模型强化学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型强化学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。
总之,有模型强化学习相比免模型强化学习仅仅多出一个步骤,即对真实环境进行建模。因此,一些有模型的强化学习方法,也可以在免模型的强化学习方法中使用。在实际应用中,如果不清楚该用有模型强化学习还是免模型强化学习,可以先思考在智能体执行动作前,是否能对下一步的状态和奖励进行预测,如果能,就能够对环境进行建模,从而采用有模型学习。
免模型强化学习通常属于数据驱动型方法,需要大量的采样来估计状态、动作及奖励函数,从而优化动作策略。例如,在雅达利平台上的《太空侵略者》游戏中,免模型的深度强化学习需要大约两亿帧游戏画面才能学到比较理想的效果。相比之下,有模型的深度强化学习可以在一定程度上缓解训练数据匮乏的问题,因为智能体可以在虚拟世界中进行训练。 免模型学习的泛化性要优于有模型强化学习,原因是有模型强化学习算需要对真实环境进行建模,并且虚拟世界与真实环境之间可能还有差异,这限制了有模型强化学习算法的泛化性。 有模型的强化学习方法可以对环境建模,使得该类方法具有独特魅力,即“想象能力”。在免模型强化学习中,智能体只能一步一步地采取策略,等待真实环境的反馈;有模型强化学习可以在虚拟世界中预测出将要发生的事,并采取对自己最有利的策略。
目前,大部分深度强化学习方法都采用了免模型强化学习,这是因为:免模型强化学习更为简单、直观且有丰富的开源资料,如 AlphaGo 系列都采用免模型强化学习;在目前的强化学习研究中,大部分情况下环境都是静态的、可描述的,智能体的状态是离散的、可观察的(如雅达利游戏平台),这种相对简单、确定的问题并不需要评估状态转移函数和奖励函数,可直接采用免模型强化学习,使用大量的样本进行训练就能获得较好的效果。
如图 2 所示,我们可以把几类模型放到同一个图里面。图 2 有3个组成成分:价值函数、策略和模型。按一个智能体具有三者中的三者、两者或一者的情况可以把它分成很多类。
图 2 强化学习智能体的类型
2.马尔可夫决策过程
强化学习是一个与时间相关的序列决策的问题。例如,如图 3所示,在 𝑡−1 时刻,我看到熊对我招手,下意识的动作就是逃跑。熊看到有人逃跑,就可能觉得发现了猎物,并开始发动攻击。而在 𝑡 时刻,我如果选择装死的动作,可能熊咬咬我、摔几下就觉得挺无趣的,可能会走开。这个时候我再逃跑,可能就成功了,这就是一个序列决策过程。
在输出每一个动作之前,我们可以选择不同的动作。比如在 𝑡 时刻,我选择逃跑的时候,可能熊已经追上来了。如果在 𝑡t 时刻,我没有选择装死,而是选择逃跑,这个时候熊已经追上来了,那么我就会转移到不同的状态。有一定的概率我会逃跑成功,也有一定的概率我会逃跑失败。我们用状态转移概率 𝑝[𝑠𝑡+1,𝑟𝑡∣𝑠𝑡,𝑎𝑡]来表示在状态 𝑠𝑡 选择动作 𝑎𝑡 的时候,转移到状态 𝑠𝑡+1 ,而且得到奖励 𝑟𝑡 的概率是多少。状态转移概率是具有马尔可夫性质的(系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态)。因为在这个过程中,下一时刻的状态取决于当前的状态 𝑠𝑡,它和之前的 𝑠𝑡−1 和 𝑠𝑡−2 没有关系。再加上这个过程也取决于智能体与环境交互的 𝑎𝑡 ,所以包含了决策的过程,我们称这样的过程为马尔可夫决策过程。马尔可夫决策过程就是序列决策的经典的表现方式。马尔可夫决策过程也是强化学习里面一个非常基本的学习框架。状态、动作、状态转移概率和奖励 (𝑆、𝐴、𝑃、𝑅),这4个合集就构成了强化学习马尔可夫决策过程的四元组,后面也可能会再加上折扣因子构成五元组。
图 3马尔可夫决策过程四元组
3.关键的一些概念
3-1 构成强化学习的马尔可夫决策过程的四元组有哪些变量?
状态、动作、状态转移概率和奖励,分别对应(𝑆,𝐴,𝑃,𝑅),后面有可能会加上折扣因子构成五元组。
3-2 请通俗地描述强化学习的“学习”流程。
可以将强化学习的“学习”流程类比于人类的学习流程。人类学习就是尝试每一条路,并记录尝试每一条路后的最终结果。在人类尝试的过程中,其实就可以慢慢地了解到哪一条路(对应于强化学习中的状态概念)会更好。我们用价值函数 𝑉(𝑠)来定量表达该状态的优劣,然后用Q函数来判断在什么状态下做什么动作能够得到最大奖励,在强化学习中我们用Q函数来表示状态-动作值。
3-3 请描述基于Sarsa算法的智能体的学习过程。
对于环境和智能体。两者每交互一次以后,智能体都会向环境输出动作,接着环境会反馈给智能体当前时刻的状态和奖励。那么智能体此时会进行两步操作:
(1)使用已经训练好的Q表格,对应环境反馈的状态和奖励选取对应的动作进行输出。
(2)我们已经拥有了(𝑠𝑡,𝑎𝑡,𝑟𝑡+1,𝑠𝑡+1,𝑎𝑡+1) 这几个值,并直接使用 𝑎𝑡+1 更新我们的Q表格。
3-4 Q学习算法和Sarsa算法的区别是什么?
Sarsa算法是Q学习算法的改进(这句话可参考论文 “On-Line Q-Learning Using Connectionist Systems”的摘要部分),详细描述如下。
(1)首先,Q学习是异策略的时序差分学习方法,而 Sarsa 算法是同策略的时序差分学习方法。
(2)其次,Sarsa算法在更新Q表格的时候所用到的 𝑎′ 是获取下一个Q值时一定会执行的动作。这个动作有可能是用 𝜀-贪心方法采样出来的,也有可能是 max𝑄 对应的动作,甚至是随机动作。
(3)但是Q学习在更新Q表格的时候所用到的Q值 𝑄(𝑆′,𝑎′) 对应的动作不一定是下一步会执行的动作,因为下一步实际会执行的动作可能是因为进一步的探索而得到的。Q学习默认的动作不是通过行为策略来选取的,它默认 𝑎′为最佳策略对应的动作,所以Q学习算法在更新的时候,不需要传入 𝑎′ ,即 𝑎𝑡+1 。
(4)更新公式的对比(区别只在目标计算部分)。
Sarsa算法的公式:𝑟𝑡+1+𝛾𝑄(𝑠𝑡+1,𝑎𝑡+1) 。
Q学习算法的公式:𝑟𝑡+1+𝛾max𝑎𝑄(𝑠𝑡+1,𝑎) 。
总结起来,Sarsa算法实际上是用固有的策略产生 {𝑆,𝐴,𝑅,𝑆′,𝐴′} 这一条轨迹,然后使用 𝑄(𝑠𝑡+1,𝑎𝑡+1)更新原本的Q值 𝑄(𝑠𝑡,𝑎𝑡)。但是Q学习算法并不需要知道实际上选择的动作,它默认下一个动作就是Q值最大的那个动作。所以Sarsa算法的动作通常会更加“保守胆小”,而对应的Q学习算法的动作会更加“莽撞激进”。
3-5 同策略和异策略的区别是什么?
Sarsa算法就是一个典型的同策略算法,它只用一个 𝜋 ,为了兼顾探索和开发,它在训练的时候会显得有点儿“胆小怕事”。它在解决悬崖寻路问题的时候,会尽可能地远离悬崖边,确保哪怕自己不小心向未知区域探索了一些,也还是处在安全区域内,不至于掉入悬崖中。
Q学习算法是一个比较典型的异策略算法,它有目标策略(target policy),用 𝜋π 来表示。此外还有行为策略(behavior policy),用 𝜇μ 来表示。它分离了目标策略与行为策略,使得其可以大胆地用行为策略探索得到的经验轨迹来优化目标策略。这样智能体就更有可能探索到最优的策略。
比较Q学习算法和Sarsa算法的更新公式可以发现,Sarsa算法并没有选取最大值的操作。因此,Q学习算法是非常激进的,其希望每一步都获得最大的奖励;Sarsa算法则相对来说偏保守,会选择一条相对安全的迭代路线。
引用参考
[1] datawhalechina.github.io/joyrl-book/…