Q-learning和sarsa都是利用时间差分目标来更新当前行为值函数的。唯一不同的是在Q-learning中,行动策略(产生数据的策略)和要评估的策略不是一个策略,因此称之为异策略(off-policy),而在sarsa中,正好相反,也就是行动策略(产生数据的策略)和要评估的策略是一个策略,称之为同策略(on-policy)。下面从算法的角度解释其中的区别。
如上图所示,为sarsa的算法流程图。
第一个repeat循环表示每一幕(产生一轮数据或者对游戏来说是玩一局完整的游戏)。首先初始化状态,然后根据
网络结构和
策略选择一个动作
,下面的循环是对当前幕来说,划个重点!!这里和Q-learning有个很大的区别就是这里的选择策略A在下面循环的外面,因为对当前幕的循环来说,选择策略只需要最开始选择一次就行了,因为同策略(on-policy)的关系,行动策略(对应于当前的选择策略
)和要评估的策略(下面进行更新的策略)是一个策