强化学习-什么是Q-learning,什么是sarsa
发现很多博客文章对Q-learning和sarsa的描述不是很好理解,两者区别更是看不明白,误导初学者,遂自己把理解写出来,希望能帮助大家学习Q-learning(如有问题,感谢不吝指正)
Q-learning
Q-learning的核心是Q表,即state-action价值表。Q表实质上就是构造一个以state状态和action动作为两个维度,值为Q值得Q表,Q值即中每个action对应的价值:
a1 | a2 | |
---|---|---|
1 | -4 | |
0 | 2 | |
2 | 1 |
Q-learning算法论文截图:
完全理解了下面这张图,就理解了Q-learning
image
学习过程
1,根据上面的Q表和论文公式截图,我们在状态时,选择Q值大的action,a1,到达状态;选择策略为Q(e,g.,-greedy) ---->> 90%的几率都选择最大的Q值的action,10%的几率随机选择一个action(即Epsilon greedy策略,epsilon=0.9)
2,执行动作,获得观测obs,r,
3,更新,使用贪婪策略,因为选择action和更新Q的策略不同,所以称其为Off-policy Learning
4,循环,但是第3步骤max选择出来的action,不一定会执行,因为我们从第一步选取执行的动作时,是随机贪婪策略
其中是学习率,0~1之间;
是未来reward的衰减值。
是不以贪婪策略而去选择随机策略的概率,也叫探索率。由于我们一般会选择使当前轮迭代价值最大的动作,但是这会导致一些较好的但我们没有执行过的动作被错过。就像虽然我们有了好方法,但有时仍然会去尝试一些没有试过的方式,所以称之为探索。
sarsa
sarsa与Q-learning的区别是更新Q值得函数不同,执行逻辑略有差异。
见图:
image
学习过程
学习过程的差异主要在第三步,在经过一,二选择和执行动作之后:
- Q-learning是在中选择maxQ来更新,然后从新用Q(e,g.,-greedy)策略选择action执行。
- 而sarsa此处更新时用Q(e,g.,-greedy)策略选取action的Q值来计算loss更新上个状态的Q值,然后继续使用这个action来执行
- 因为更新Q的action和执行的action相同(策略相同,动作也是同一个),所以称其为On-policy Learning
sarsa-lambda
- sarsa和Q-learning都是每次获取reward,更新获取reward的前一步。
- sarsa-lambda是更新获取reward前的所有步骤的Q值,lambda是衰减系数,步骤越久远lambda的幂次越高,更新步骤就因此越小(lambda(0,1))
观察下图算法逻辑,对比sarsa,发现,实质上在Q表外增加E值表
以上两步是E的更新逻辑,作用是使得当前的E增加1,然后以为衰减系数,更新所有的E。
最终E的值作用在了Q值上,使Q值存在了受步骤影响的因素,越近的步骤影响越大。