强化学习4:Monte Carlo

23-08-10

强化学习4:蒙特卡洛(MonteCarlo)

概述

通过贝尔曼方程求解最优策略 有3种基本方法:动态规划法、蒙特卡洛法和时间差分法。前面我们介绍了如何利用动态规划法去求解环境知识完备(即马尔可夫决策过程已知)的强化学习任务。
简而言之,首先通过策略评估计算给定策略的优劣程度,然后采用策略迭代算法获得基于策略的最优价值函数,并根据最优价值函数确定最优策略;出于效率的考虑,也可以采用值迭代算法来获得最优价值函数和最优策略
在实际任务中,环境知识完备性这一先决条件较难满足,但是,也就是无法在现实世界同时知道MDP的5元组⟨S,A,P,R,γ⟩。也就意味着大量的强化学习任务难以直接采用动态规划法进行求解。对于环境知识不完备的MDP,即转移矩阵以及奖励未知的研究领域称为无模型(Model-Free)方法。Model-free方法的基本方法就是使用蒙特卡洛法(Monte Carlo,MC)和时间差分法(Temporal-difference,TD)。
虽然不知道状态转移概率 P \mathcal{P} P,但是这个概率真实存在。可以直接尝试,不断采样,然后会得到奖赏,通过奖赏来评估值函数。这与蒙特卡罗方法的思想一致。

蒙特卡洛 Monte Carlo

“蒙特卡洛”这一名字来源于摩纳哥的城市蒙特卡洛(MonteCarlo)。该方法由著名的美国计算机科学家冯·诺伊曼和S.M.乌拉姆在20世纪40年代第二次世界大战中研制原子弹(”曼哈顿计划”)时首先提出。 蒙特卡洛法是一种基于采样的算法名称,依靠重复随机抽样来获得数值结果的计算方法,其核心理念是使用随机性来解决原则上为确定性的问题。通俗而言,蒙特卡洛法采样越多,结果就越近似最优解,即通过多次采样逼近最优解。

举个简单的例子。
去蔬菜基地摘玉米,规则是每次只能摘一个玉米,并且手中只能留下一个玉米,最后走出蔬菜基地的时候也只能带走一个玉米,目标是使得最后拿出蔬菜基地的玉米最大。可以达成这样一个共识:进入蔬菜基地后每次摘一个大玉米,看到比该玉米更大的则替换原来的玉米。基于上述共识,可以保证每次摘到的玉米都至少不比上一次摘到的玉米小。如果摘玉米的次数越多,挑出来的玉米就越大,但无法确保最后摘到的玉米一定是最大的,除非把整个蔬菜基地的玉米都摘一遍。即尽量找较大的,但不保证是最大的。采样次数越多,结果就越近似最优解,这种方法就属于蒙特卡洛法。

蒙特卡洛法能够处理免模型的任务的究其原因是无须依赖环境的完备知识(Environment backup),只需收集从环境中进行采样得到的经验轨迹(Experience episode),基于经验轨迹集数据的计算,可求解最优策略。

比如,现评估某状态的价值函数。我们采样了两个经验轨迹,从一个经验轨迹里面得到的回报是5,然后下一个经验轨迹里面的得到的回报是7,我们可以从起始状态来评估此状态的价值函数为:

蒙特卡洛策略评估(MC Policy Evaluation)

特卡洛法采用时间步有限的、完整的经验轨迹,其所产生的经验信息可推导出每个状态的平均奖励,以此来代替奖励的期望(即目标状态值)。换言之,在给定的策略下,蒙特卡洛法从一系列完整的经验轨迹中学习该策略下的状态值函数。 当模型环境未知(Model-free)时,智能体根据策略进行采样,从起始状态出发,执行该策略步后达到一个终止状态,从而获得一条完整的经验轨迹。 对于时刻的状态,未来折扣累积奖励为: 蒙特卡洛法利用经验轨迹的平均未来折扣累积奖励作为状态值的期望。 而强化学习的目标是求解最优策略,得到最优策略的一个常用方法是求解状态值函数的期望。如果采样的经验轨迹样本足够多,就可以精确估计出状态上下遵循策略的期望,即状态值函数 当根据策略收集到的经验轨迹样本趋于无穷多时,得到的状态值也就无限接近于真实的状态值。

计算Return的两种方法

首次访问蒙特卡洛策略评估(First-Visit Monte-Carlo Policy Evaluation)

在给定一个策略,使用一系列完整经验轨迹评估某一个状态时,对于每一个经验轨迹,仅当该状态首次出现的时间列入计算:

每次访问蒙特卡洛策略评估(Every-Visit Monte-Carlo Policy Evaluation)

在给定一个策略,使用一系列完整经验轨迹评估某一个状态时,对于每一个经验轨迹,仅当该状态每次出现在状态转移链时,例如,一次在时刻,一次在时刻,则两次对应的,都应该纳入对的计算

累进更新(增加)平均值 (Incremental Mean)

不论是First-Visit还是Every-Visit,在计算回报均值时,都是利用总回报除以状态s的总访问次数的,我们能否对均值进行增量式的求取?

这里假设每次的回报为,在次后平均回报为: 次后平均回报为: 这种增量式的推导过程可以按照如下过程进行:

  • 静态问题就是说我们的MDP是不变的,比如转移矩阵,比如奖励函数
  • 非静态问题即随着时间的推移,MDP中的某些参数将会发生改变。

蒙特卡洛累进更新(Incremental Monte-Carlo Updates)

对于一系列经验轨迹:

按照更新平均值的方法可以进行如下累进更新响应的价值函数:

这里我们将MC方法变为增量式,我们可以扩展开改变,将他定义为一个类似于学习率的参数,在处理非静态问题时,使用这个方法跟踪一个实时更新的平均值是非常有用的,可以扔掉那些已经计算过的episode信息。

引入参数后的状态价值更新方法可以更改为:

About this Post

This post is written by Rui Xu, licensed under CC BY-NC 4.0.

#AI#Reinforcement Learning