Q-learning:
这里并不知道为啥每一轮都要初始化s,但是在每一轮需要采取动作的每一步(step)要做的事情如下:
根据epsilon-greedy策略在当前状态s选择一个动作(有一定的概率选择当前Q值最高的动作),获得当前动作的回报,并转移到下一个状态s’
根据贝尔曼公式更新Q值表(Q值的含义是当前状态采取某个动作的价值,和回报还不太一样,这里把下一个状态也考虑进来了),注意这里价值评估的公式,公式含义(1-alpha)*Q(s,a)表示之前的学习记下来多少,alpha*(...)表示这次学习到的价值;分为两部分,一个是当前动作带来的reward r,另一部分是到了下一个动作s‘之后可以获得的最大价值,这里还有个a’是因为s‘的价值是不确定的,因为s’可能有很多动作,每一个动作会产生不同价值,选择其中最大的那个来更新Q值表(贪心策略),这里的gamma叫衰减系数或者折扣因子,这个值越大就越重视下个状态的价值,但这是记忆中的下个状态,相当于就是说是越重视以往的经验。
通过多次迭代Q值表会趋于稳定,就得到了每个状态下获得最大价值的动作。
Sarsa:
仔细看这里和Q-learning的不同在于采取了动作a之后马上又根据epsilon-greedy的策略选择了下一个动作a‘,然后再用(s',a’)的Q值去更新(s,a)的Q值;也就是说采取了动作a到达s‘之后的Q值(s状态)更新从Q-learning的在s’里贪心选一个,变成了Sarsa的在s‘里先贪心选好下一个动作,再根据这个动作实打实地更新s的Q值,并且下一个动作就是这个贪心选的动作;这两者也因评估策略和行动策略是否一致,而被分为off-policy和on-policy。
参考:
https://www.jianshu.com/p/8eda52d51ae9
https://www.zhihu.com/question/26408259 如何用简单例子讲解 Q - learning 的具体过程?
https://zhuanlan.zhihu.com/p/46850008 强化学习(七)--Q-Learning和Sarsa