Q-learning与Sarsa算法辨析
这个是Q-learing的一个算法,根据代码,它就是,先设定训练100次,然后,给它一个随机的状态,这里我们假设状态6就是终点,那么走迷宫的时候,如果没走到6,就要一直走下去,,所以里面还要用到一个while循环,然后在每个状态的时候,找一个非负的动作,存储在数组里,(算是合理动作的集合吧),下一个状态的指针指向采取随意一个合理动作的结果,(就是合理的情况下随便走),然后从S状态到S'状态的Q(最佳动作)直接赋值给,原本reward+衰减值乘下一个状态的最佳动作的reward,接着状态更新,进入下一轮while循环。。。。。就是继续走迷宫,一轮学习尚未结束。。。
然后讲讲Sarsa
Sarsa是一个缩写,全称。。state,action,reward,state',action',是不是有点感觉了
Sarsa虽然代码看上去比较复杂,但其实逻辑上相对简单,与Q-learning共性的part不讲了,就是循环的那些,直奔主题,还是选择一个合理的动作存起来,接着进入重点,下一个状态state'还是赋值给随便一个合理动作,,接着再从下一个状态,再挑出几个合理动作,然后再随机挑选一个幸运观众成为action',然后,q(s,a)就会赋值为r+衰减值*q(s',a'),毫无套路可言,一切按部就班,多么朴实啊,所以策略没有改变,然后策略更新,进入下一个状态
不过我还是遇到了一个问题,就是Q-learning的话,我感觉。。他和sarsa都是用贪心算法找下一个action value最大值,然后都是执行拥有最大值的下一个action value,只是说它们就是采取动作的时间不一样,但都是最大值,所以有啥差别呢