[RL Notes] 蒙特卡洛控制

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(试探性出发),用于估计 ππ
初始化:
  对所有 sS,任意初始化 π(s)A(s)
  对所有 sSaA(s),任意初始化 Q(s,a)R
  对所有 sSaA(s)Returns(s,a)
无限循环(对每幕):
  选择 S0SA0A(S0) 以使得所有“状态-动作”二元组的概率都 >0
  从 S0,A0 开始根据 π 生成一幕序列 S0,A0,R1,,ST1,AT1,RT
  G0
  对每幕中的每一步循环,t=T1,T2,,0
    GγG+Rt+1
    如果二元组 St,AtS0,A0,S1,A1,,St1,At1 中没有出现过:
      将 G 加入 Returns(St,At)
      Qt(St,At)average(Returns(St,At))
      π(St)argmaxaQ(St,a)