学习RL(二)
动态规划 在环境动力学模型$p(s’, r|s, a)$已知的情况下,学习状态价值或者是动作价值。 策略评估–Policy Evaluation 讨论的是如何在已知策略的情况下计算状态价值函数,从而得到采用该策略的价值有多大。 在DP当中policy evaluation就是计算状态价值函数,也就做prediction problem。 这里讨论的是如何计算状态价值函数,该函数是从初始的状态(不准)迭代计算的,迭代的终止条件是状态价值的更新幅度小于一个预设的阈值$\theta$,也就是说当状态价值函数的更新幅度小于$\theta$的时候,就认为状态价值函数已经收敛了。 还有一个具体的细节:提到了两种状态价值迭代的方式,一种是维护上一次所有状态价值的数组和当前状态价值的数组,计算当前的状态价值的时候只参考上一个状态的数组,还有一种是直接将上一次的数组某个状态价值更新了,其他状态价值的计算直接用更新了的。后面的讨论默认都是基于第二种方式。 明显地,想要实现上面的计算过程有一个概率需要知道,那就是状态转移概率$p(s’, r|s, a)$,也就是在状态$s$下采取行动$a$之后,转移到状态$s’$并且得到奖励$r$的概率,这也是叫做环境模型已知。这个概率在DP当中是已知的,在后续的MC和TD当中是未知的。 策略改进–Policy Improvement 讨论的是在已有一个策略,且该策略所对应的状态价值已经确定的情况下,如何调整$a=\pi(s)$为$a’=\pi’(s)$,使得改进了的策略在将来与环境交互中获得更多的奖励。 想法的来源是在状态为$s$的情况下,我们知道,继续沿用策略$\pi$, 所得到的后续收益就是$V(s)=\mathbb{E}(G|S=s)$。那么,一个问题来了:有没有可能,在状态为$s$的情况下,采取一个不同于$\pi(s)$的行动$a’$, 从而得到一个更大的收益$\mathbb{E}(G|S=s, A=a’)$,也就是说,是否存在一个行动$a’$使得$Q(s, a’) > V(s)$。如果存在这样的行动,那么我们就可以把当前状态下的策略改进为$\pi’(s)=a’$, 也就是说,在状态为$s$的时候,不再按照之前的策略$\pi(s)$来选择行动,而是按照新的策略$\pi’(s)=a’$来选择行动:因为采取$a’$获得了更多的收益。这种单个状态下的动作改变,其实是更普遍的情况下的一个特例,普遍地,在已知策略$\pi$和状态价值$V _{\pi}(s)$的情况下,我们可以通过计算$Q _{\pi}(s,a)=\mathbb {E}(r _{t+1}+ \gamma V _{\pi}(s’)|S=s,A=a)=\sum _{r _{t+1},s’}p(s’,r _{t+1}|s,a)\big ( r _{t+1}+ \gamma V _{\pi}(s’)\big )$来找到一个行动$a’$使得$Q _{\pi}(s,a’) > V _{\pi}(s)$,从而把当前状态下的策略改进为$\pi’(s)=a’$。 贪心策略:对于任意一个状态$s$,遍历所有可能采取的行动,看看哪种行动的状态-行动价值最高,那么,当后面遇到状态为$s$的时候,就直接采取行动$\pi’(s)$。 $$ \pi’(s) = \arg \max _a Q _{\pi}(s,a) = \arg \max _a \sum _{r _{t+1},s’}p(s’,r|s,a)\big ( r _{t+1}+ \gamma V _{\pi}(s’)\big ) $$ ...