Sarsa
Sarsa的学习过程和Q-Learning基本一样,不同的地方是Q-Learning在走下一步的时候是先看下一步应该走哪,但是最后不一定走,而Sarsa是决定完要走的步之后一定会去走那一步。换句话说,Q-Learning在更新当前位置的Q值的时候会参考表中收益最大的那个值,但下一步不一定会走到那个位置,而Sarsa是先选取下一步要走的位置的Q值来更新当前位置的Q值,当然,选完它下一步一定会去走那一步。
Sarsa虽然说是说到做到,但是由于它选取下一步的位置是严格按照已有学习到的经验来选择,所以它探索未知位置的能力就会很差,相对于说了不一定算的Q-Learning来说,反而Q-Learning更勇敢一些,由于跟Q-Learning很像,就不详细介绍了,主要介绍Sarsa-lambda的学习步骤。
Sarsa学习步骤
Sarsa lambda
Sarsa lambda在Sarsa的基础上增加了一个概念,就是它到终点后会再反过来看一下自己曾经走过的路。
整体来说还是Sarsa的框框,只是增加一个指标,只是这样可以使学习效率变高,能更快速的达到目的Q表。
这个指标就是在获取到最终奖励时,也可以说是到达最终目的地时,各个位置的
不可或缺性
。表示方法:先定义一个E表,用来记录经过的位置(State),每走一步,如果这个点不在E表中,则添加这个点到E表中,并将这个E(s,a)的值改为+1(还可以优化,下面说),如果表中存在这个位置,则直接更新这个位置的值,然后在走下一步之前对E表进行整体衰减。也就是说每走一步,就要对E表的当前位置的值进行刷新,然后再进行衰减。衰减的意义就在于如果一旦到达终点,就可以体现出来E表中各个位置对到达终点的
不可或缺性
。如果衰减比例为0,也就是每次都给E表里的值乘0,就意味着表里最后就剩下一个离终点最近的位置了,如果为1呢,则E表里的重复的越多的位置收益越大(so,这不合理,需要优化),所以,衰减比例应该取一个0~1之间的数比较合理。E表的用法就是在Sarsa的基础上,每次更新的时候加上这个E表里对应位置的值就可以了。这就是传说中的Sarsa lambda了,是不是没这么吓人。下面说一下如何优化:
前面我们说每次经过这个某个位置,都把E表里对应值+1,这样对有些位置会很不公平,可能会出现离终点最近的那个位置的E值比中间的某个点的E值还要低,这很不科学。优化办法就是给E里的值定个上限,比如就是1,每次走到这个位置,就把他重新定为1,然后从1开始衰减,这样就不会出现上述的bug了。ok,再盗一张图来形象说一下优化的路子:
E表值
简单介绍一下图里的内容,第一行说的是某个位置出现和时间的关系;第二行说的是E值+1那个情况;第三行说的是定个上限为1的规矩。
好了,Sarsa到目前为止就告一段落了,乍一看还真挺不好理解的,仔细想想其实原理也不是很复杂。晚安~
网友评论