- 为什么上下左右移动
当初始状态的时候,agent在左上角,每一个动作的价值都是0,由于排序是up,down,left,right,所以在取max值的时候优先会取到up,这个时候超出边框了,reward是负数,也就是q(s=‘(0,0)’, a=‘up’)是负数,复位后agent还是在(0,0)的位置,这个时候agent再选择最大值的时候就不会选择up了,因为up是负数了,同样,left也是负数,如果按照greedy的方式就选不到up和left。这个时候会发现agent优先往下,为啥不是往右呢?因为咱们的动作价值的排序是按照up,down,left,right来看的,up和left都是负数,down和right现在还都是0,所以选择max的时候就会选到down。
当选择down的时候,agent的位置变成了(0,1),这个位置之前也从来没有探索过,所以四个动作的价值都是0,按照greedy的方式会选择up,为啥呢?还是因为动作排序的方式是up,down,left,right,哭死了。如果选择了up,agnet就又回到了(0,0)也就是初始位置。之前分计算,(0,0)的up和left都是负数,所以只能选择down和right,如果按照greedy的方式,就会优先选择down,这个时候agent就会转移到(0,1),所以就会发现一直再上下上线的波动,即使我们增加了e-greedy随机探索的方式,agent选择了right,移动过了(1,0),下一步如果是greedy,依然会选择up,跳出边框后再次复位(0,0)。整体来看就是上下跳动,然后夹杂着左右移动。