一文弄懂,Q-learning和Sarsa的区别
2023.3.6
本文主要参考莫烦老师内容
1. 理解Q_learning算法
主要看下面讲解,就不抄了:
https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/intro-q-learning
读懂几个内容:
1.1 三块内容轻微解释
Epsilon greedy
:是个概率值。也就是有一定创造性,有一定概率会跳出Q表的值,不去选最大值,随机一个动作。如果没有这个,始终按最大值动作走,那么有些动作可能永远取不到。算法决策
:算法怎么往下走的,整体的流程。算法更新
:那就是怎么优化这个Q表格(这点类似于梯度下降在神经网络的作用)。
最终目的:得到一个Q表,我们根据规则,又快又准的找到目标
1.2 对Q(s1,a2)现实
们在 s1 采取了 a2, 并到达 s2, 这时我们开始更新用于决策的 Q 表, 接着我们并没有在实际中采取任何行为, 而是再想象自己在 s2 上采取了每种行为, 分别看看两种行为哪一个的 Q 值大, 比如说 Q(s2, a2) 的值比 Q(s2, a1) 的大, 所以我们把大的 Q(s2, a2) 乘上一个衰减值 gamma (比如是0.9) 并加上到达s2时所获取的奖励 R (这里还没有获取到我们的棒棒糖, 所以奖励为 0), 因为会获取实实在在的奖励 R , 我们将这个作为我现实中 Q(s1, a2) 的值
所以现实Q = R+r*[XXX]
1.3 估计Q(s1,a2)理解
估计Q(s1,a2)理解那就是Q表里对应的那个值
1.4 QLearning 中的 Gamma理解
gamma = 0
:只看见眼前的奖励gamma = 1
:上帝视角,也就是机器人能清清楚楚地看到之后所有步的全部价值
2. Q-learning和Sarsa的区别
算法上其实就是算Q现实时候不一样,上一步的Q现实
Q_learing
:下一步q表最大值+r
Sarsa
:具体的某一步估计q值+r
2.1 理解为什么Q_learning更激进
我们通过1.4QLearning 中的 Gamma理解
,就知道当前的Q值,和以后所有的Q都是有关系的,越近影响越大。
Q_learning
:取max,也就是不考虑最终走到很大负奖励的值,只考虑会不会最终获得最大奖励,如果获得了,那这条路就牛逼,所以么Q_learning更勇猛,不害怕错,更激进Sarsa
:是取某具体的一步,只要周围有错(很大的负奖励),那么就有机会获得这个不好的奖励,那么整条路反馈都会评分很差。之后会尽量避开。那么最终导致Sarsa会对犯错更敏感,会远离犯错的点,更保守
最终结果呈现是: