原文链接:https://blog.csdn.net/qq_27514521/article/details/81146632 Q-learning和sarsa都是利用时间差分目标来更新当前行为值函数的。唯一不同的是在Q-learning中,行动策略(产生数据的策略)和要评估的策略不是一个策略,因此称之为异策略(off-policy),而在sarsa中,正好相反,也就是行动策略(产生数据的策略)和要评估的策略是一个策略,称之为同策略(on-policy)。下面从算法的角度解释其中的区别。

时间差分方法Q-learning和sarsa的区别

如上图所示,为sarsa的算法流程图。

第一个repeat循环表示每一幕(产生一轮数据或者对游戏来说是玩一局完整的游戏)。首先初始化状态时间差分方法Q-learning和sarsa的区别,然后根据时间差分方法Q-learning和sarsa的区别网络结构和时间差分方法Q-learning和sarsa的区别策略选择一个动作时间差分方法Q-learning和sarsa的区别,下面的循环是对当前幕来说,划个重点!!这里和Q-learning有个很大的区别就是这里的选择策略A在下面循环的外面,因为对当前幕的循环来说,选择策略只需要最开始选择一次就行了,因为同策略(on-policy)的关系,行动策略(对应于当前的选择策略时间差分方法Q-learning和sarsa的区别)和要评估的策略(下面进行更新的策略)是一个策略,所以下一轮的行动策略会被要评估的策略赋值,也就不需要再初始化了。然后下面就是选择完策略时间差分方法Q-learning和sarsa的区别之后,执行策略时间差分方法Q-learning和sarsa的区别,得到当前价值时间差分方法Q-learning和sarsa的区别,观测到下一个状态时间差分方法Q-learning和sarsa的区别。在状态时间差分方法Q-learning和sarsa的区别处,同样根据Q网络结构和时间差分方法Q-learning和sarsa的区别策略选择一个动作时间差分方法Q-learning和sarsa的区别,这样就得到了一个完整的数据序列时间差分方法Q-learning和sarsa的区别,这也就是sarsa名字的由来。

然后根据公式

时间差分方法Q-learning和sarsa的区别

更新Q网络。

然后更新时间差分方法Q-learning和sarsa的区别,时间差分方法Q-learning和sarsa的区别

下面介绍Q-learning算法

时间差分方法Q-learning和sarsa的区别

Q-learning算法流程图如上所示。

首先和sarsa一样,对每一幕进行循环,然后初始化状态时间差分方法Q-learning和sarsa的区别。接下来的不同之处在于Q-learning的初始化选择动作A在当前幕循环的里面,上面也解释到了sarsa中为啥在外面的原因,这里选择动作时间差分方法Q-learning和sarsa的区别在循环里面就是因为在异策略(off-policy)的情况下,行动策略和下面的要评估的策略不是一个策略,不能通过要评估的策略进行更新,所以选择策略时间差分方法Q-learning和sarsa的区别必须在循环里面,每轮循环都进行赋值。选择完策略时间差分方法Q-learning和sarsa的区别之后,执行策略时间差分方法Q-learning和sarsa的区别,得到当前价值时间差分方法Q-learning和sarsa的区别,观测到下一个状态时间差分方法Q-learning和sarsa的区别。注意!!!!这里并没有和sarsa算法一样,对当前的状态S'更具Q网络和时间差分方法Q-learning和sarsa的区别选择一个策略时间差分方法Q-learning和sarsa的区别,而是根据当前Q网络计算出在状态S'处Q值最大的策略进行更新。即如下的公式

时间差分方法Q-learning和sarsa的区别

这里的要评估的策略是使得对当前网络时间差分方法Q-learning和sarsa的区别来说,在状态时间差分方法Q-learning和sarsa的区别时间差分方法Q-learning和sarsa的区别网络值最大的动作,与下一轮循环所选择的行动策略时间差分方法Q-learning和sarsa的区别时间差分方法Q-learning和sarsa的区别不是一个策略(即异策略)

所以接下来只需要更新时间差分方法Q-learning和sarsa的区别

相关文章: