Q-learning
上一状态是在S1;现在的状态S2
上一状态所采取的行动a2;现在将要采取的行动a2
Q-learning是通过本状态(S2)所对应Q表中的最大值maxQ(S2)来更新在上一状态(S1)时所采取的行动Q(s1,a2)的值
通俗一点的解释一下:
也就是当我到达S2之后,S2的下一步也是确定的,即maxQ(S2),然后利用maxQ(S2)更新Q(s1,a2)
Sarsa
Sasra是通过在本状态(S2)将要采取的行动(上图中将要采取的行动是a2,在实际中不一定是a2,这取决于e-greed)来更新在上一状态(S1)时所采取的行动Q(s1,a2)的值
通俗一点的解释一下:
也就是当我到达S2之后,S2的下一步并不是确定的,S2的下一步行动需要再进行一次e-greed,然后利用将要采取的行动更新Q(s1,a2)
区别
上面的介绍其实已经给出了区别,在更新的过程中,Q-learning是直接根据Q表选max(Si),也就是说在这一步Q-learning是完全基于价值的(即e-greed=1)。而Sasra需要根据e-greed来确定是基于价值还是基于概率。
Q-learning只用到了一次e-greed
- 在上一状态S选择行动时
Sasra用到了两次e-greed
-
在上一状态S选择行动时
-
在当前状态S_更新上一状态S所采取的行动a时
当e-greed=1时,两者的效果是一样的,都是基于价值的。
Q-learning可以看成Sasra的一种特例,即e-greed=1
代码中的区别
上面介绍完了伪代码的区别,现在说一下在代码中的区别,相同的地方就不说了。
为了更容易看清两者的区别,代码以截图的形式给出,
源代码请搜:莫烦强化学习
S_的代表S的下一状态
在Q-learning中只需要传入S的下一状态S_,然后取最大值。
在Sasra中需要传入S的下一状态S_,以及下一状态所采取的行动a_