前奏
上一篇博客利用model free的蒙特卡洛和时序差分法对状态值函数进行估计,但是当我们在状态值函数的基础上做策略提升时,还是需要环境的,那我们还不如干脆在Q(s, a)的基础上直接控制策略。
- v(s)为基础,只有知道了给定动作后,各个状态的转移概率,才能知道哪个动作好
- q(s, a)为基础,直接就贪心了
贪心时采用的是ε-greedy,即以1-ε的概率选取是Q(s, a)最大的动作,以ε的概率选择随机的动作进行探索
蒙特卡洛法
和之前用蒙特卡洛法估计状态值函数一样,这里采样很多episode后得到Q(s, a),然后用ε-greedy进行策略提升
时序差分法
Sarsa: On-policy TD Control
方法名字的由来
Q-learning: Off-policy TD Control
On-policy和Off-policy的区别
on-policy 与 off-policy的本质区别在于:更新Q值时所使用的方法是沿用既定的策略(on-policy)还是使用新策略(off-policy)
而Sarsa和Q-learning就类似于讲DP时的策略迭代和值迭代,Sarsa在更新Q值时策略一直不变就像策略迭代更新V值时策略一直不变,只有V值稳定后才进行策略提升改变策略;Q-learning在更新Q值时就进行了贪心改变了既定的策略就像值迭代时直接选取使其估值最大的动作来更新它的估值。
Sarsa只是on-policy的一种,Q-learning也只是off-policy的一种
On-policy 的目标策略和行为策略是同一个策略,其好处就是简单粗暴,直接利用数据就可以优化其策略,但这样的处理会导致策略其实是在学习一个局部最优,因为On-policy的策略没办法很好的同时保持即探索又利用(epsilon-greedy只能缓解,而且最后只能达到epsilon最优);而Off-policy将目标策略和行为策略分开,可以在保持探索的同时,更能求到全局最优值。但其难点在于:如何在一个策略下产生的数据来优化另外一个策略?这时候需要重要性采样定理,根据目标策略 和行为策略 分别所产生的相同某段序列(在本文Episode中某一段称为Trajectory)的概率的比值来加权求和return求出价值, 然后根据该价值来学习,也即基于贪婪思想选取最大值的动作,然后作为新的目标策略
-强化学习中on-policy 与off-policy有什么区别?
-Bourne强化学习笔记1:用简单例子说明Off-policy的思想与使用方法