[RL Notes] 蒙特卡洛控制
Contents [show]
1. 动作价值的蒙特卡洛估计
在动作价值函数的策略评估问题中,要估计策略 π 下从状态 s 选择动作 a 的期望回报,即
qπ(s,a)≐Eπ[Gt|St=s,At=a]
通过动作价值函数可以比较同一状态下采取不同行动的差异,这对于学习策略是十分重要的。
使用蒙特卡洛方法对动作价值进行估计的过程和蒙特卡洛预测类似——收集策略 π 下“状态-动作”二元组所产生回报的样本,再计算平均。
类似于蒙特卡洛预测,如果在某一幕中访问了状态 s,并且在这个状态中选择了动作 a,则称“状态-动作”二元组 (s,a) 被访问了一次。如果只计算每一幕中“状态-动作”二元组第一次被访问的回报的平均,则得到首次访问型 MC 算法,只需将首次访问型 MC 预测算法中对状态的访问改成对“动作-价值”二元组的访问即可。如果计算“状态-动作”二元组所有访问的平均,则得到每次访问型 MC 算法。
使用蒙特卡洛方法对动作价值函数进行估计的一个问题是,需要确保每个“状态-动作”二元组都被访问到。如果某个“状态-动作”二元组从未被访问,就无法收集到对应的回报样本,也就无法对这个“状态-动作”二元组的价值进行估计,进而无法比较该状态下这个动作与其他动作的优劣。
这就要求要在学习中保持试探。一种方法是确保每个“状态-动作”都会作为一幕的起点,称为试探性出发(exploring starts)。但在真实环境中,并不是总能满足试探性出发的要求,此时可以使用另一种方法,即确保每个状态下所有动作都有非零概率被选择的随机策略。
2. 蒙特卡洛控制
通过动作价值的估计,就可以进一步实现广义策略迭代(GPI)来解决控制问题,即找到近似最优的策略。
广义策略迭代包括策略评估和策略改进两个步骤,不断迭代得到一个不断改进的策略和价值函数序列。在蒙特卡洛广义策略迭代中,策略评估阶段使用蒙特卡洛方法估计动作价值,策略改进阶段使用贪心策略,即
πk+1(s)≐argmaxaqπk(s,a)
基于试探性出发的蒙特卡洛(蒙特卡洛 ES)算法如下所示。
蒙特卡洛 ES(试探性出发),用于估计 π≈π∗
初始化:
对所有 s∈S,任意初始化 π(s)∈A(s)
对所有 s∈S,a∈A(s),任意初始化 Q(s,a)∈R
对所有 s∈S,a∈A(s),Returns(s,a)←空列表
无限循环(对每幕):
选择 S0∈S 和 A0∈A(S0) 以使得所有“状态-动作”二元组的概率都 >0
从 S0,A0 开始根据 π 生成一幕序列 S0,A0,R1,⋯,ST−1,AT−1,RT
G←0
对每幕中的每一步循环,t=T−1,T−2,⋯,0:
G←γG+Rt+1
如果二元组 St,At 在 S0,A0,S1,A1,⋯,St−1,At−1 中没有出现过:
将 G 加入 Returns(St,At)
Qt(St,At)←average(Returns(St,At))
π(St)←argmaxaQ(St,a)