Artificial intelligence Q-learning和SARSA有什么区别?

Artificial intelligence Q-learning和SARSA有什么区别?,artificial-intelligence,reinforcement-learning,q-learning,sarsa,Artificial Intelligence,Reinforcement Learning,Q Learning,Sarsa,虽然我知道这是开策略,而不是关策略,但当查看他们的公式时,(对我来说)很难看出这两种算法之间有什么区别 根据书(由萨顿和巴托)。在SARSA算法中,给定一个策略,相应的动作值函数Q(在状态s和动作a中,在时间步t)即Q(st,at)可以如下更新 Q(st,at)=Q(st,at)+α*(rt+γ*Q(st+1,at+1)-Q(st,at)) 另一方面,Q-学习算法的更新步骤如下 Q(st,at)=Q(st,at)+α*(rt+γ*maxaq(st+1,a)-Q(st,at)) 也可以写成 Q(s

虽然我知道这是开策略,而不是关策略,但当查看他们的公式时,(对我来说)很难看出这两种算法之间有什么区别

根据书(由萨顿和巴托)。在SARSA算法中,给定一个策略,相应的动作值函数Q(在状态s和动作a中,在时间步t)即Q(st,at)可以如下更新

Q(st,at)=Q(st,at)+α*(rt+γ*Q(st+1,at+1)-Q(st,at))

另一方面,Q-学习算法的更新步骤如下

Q(st,at)=Q(st,at)+α*(rt+γ*maxaq(st+1,a)-Q(st,at))

也可以写成

Q(st,at)=(1-α)*Q(st,at)+α*(rt+γ*maxaq(st+1,a))

式中,γ(γ)是贴现因子,rt是在时间步t从环境中获得的奖励

这两种算法之间的差异是因为SARSA只查找下一个策略值,而Q-learning查找下一个最大策略值吗

TLDR(以及我自己的答案)

感谢所有从我第一次问起就回答这个问题的人。我玩过Q-Learning,从经验上理解了两者的区别。所有这些都相当于您选择下一个最佳操作的方式,从算法角度来看,这可能是平均、最大或最佳操作,具体取决于您选择如何实施

另一个主要区别是这种选择何时发生(例如,在线与离线),以及这种选择如何/为什么会影响学习。如果你在2019年读到这篇文章,并且是一个动手的人,那么处理RL玩具问题可能是理解差异的最佳方式

最后一个重要的注意事项是,Suton和Barto以及Wikipedia对于下一个州的最佳/最大行动和奖励经常有混合、混淆或错误的公式表示:

r(t+1)

事实上

r(t)


希望这能帮助任何陷入困境的人。

是的,这是唯一的区别。在策略上,SARSA学习与其遵循的策略相关的操作值,而在策略下,Q-Learning学习与贪婪策略相关。在一些常见条件下,它们都收敛到实值函数,但收敛速度不同。Q-Learning的收敛速度稍慢,但有能力在改变政策的同时继续学习。此外,当与线性近似相结合时,Q-学习不能保证收敛

实际上,在ε-贪婪策略下,Q-Learning计算Q(s,a)和最大动作值之间的差值,而SARSA计算Q(s,a)和平均动作值和最大动作值的加权和之间的差值:

Q-学习:Q(st+1,at+1)=maxaQ(st+1,a)


SARSA:Q(st+1,at+1)=ε·meansaq(st+1,a)+(1-ε)·maxaQ(st+1,a)

你的Q学习公式中有一个索引错误。 萨顿和巴托的第148页

Q学习中的Q(st,at)

这是你的: Q-学习:Q(St,At)=Q(St,At)+a[R(t+1)+折扣*最大Q(St+1,At)-Q(St,At)]

应改为 Q-Learning:Q(St,At)=Q(St,At)+a[R(t+1)+折扣*最大Q(St+1,a)-Q(St,At)]


正如您所说,您必须找到更新等式的最大Q值。通过更改a,您将获得一个新的Q(St,At)。小心地说,给你最大Q值的a不是下一个动作。在这个阶段,你只知道下一个状态(St+1),在进入下一轮之前,你想用St+1更新St(St当我学习这一部分时,我发现它也很混乱,所以我把R.Sutton和A.G.Barto的两个伪代码放在一起,希望让区别更清楚

蓝色框突出显示两种算法实际不同的部分。数字突出显示更详细的差异,稍后解释

TL;NR

|             | SARSA | Q-learning |
|:-----------:|:-----:|:----------:|
| Choosing A' |   π   |      π     |
| Updating Q  |   π   |      μ     |
其中π是ε-贪婪策略(例如,ε>0且有探索),μ是贪婪策略(例如ε==0,无探索)

  • 假设Q-learning使用不同的策略来选择下一个动作A'和更新Q。换句话说,它试图在遵循另一个策略μ的同时计算π,因此它是一种非策略算法

  • 相比之下,SARSA始终使用π,因此它是一种基于策略的算法

  • 更详细的解释

    |             | SARSA | Q-learning |
    |:-----------:|:-----:|:----------:|
    | Choosing A' |   π   |      π     |
    | Updating Q  |   π   |      μ     |
    
  • 两者之间最重要的区别在于每次操作后Q的更新方式。SARSA使用Q'完全遵循ε-贪婪策略,就像从中提取a一样。相比之下,Q-学习在下一步的所有可能操作上使用最大Q'。这使得它看起来像是遵循ε=0的贪婪策略,即在这方面没有探索部分

  • 然而,当实际采取行动时,Q-学习仍然使用ε-贪婪策略采取的行动。这就是为什么“选择一个…”在重复循环中的原因

  • 遵循Q-学习中的循环逻辑,A'仍然来自ε-贪婪策略

  • 数学上的区别是什么? 正如在大多数其他答案中已经描述的那样,这两个更新在数学上的区别实际上是,当更新状态-动作对(St,At)的Q值时:

    • Sarsa使用行为策略(即代理在环境中生成经验所使用的策略,通常是epsilon贪婪策略)选择+1处的附加操作,然后使用Q(St+1,At+1)(按gamma贴现)作为更新目标计算中的预期未来回报
    • Q-learning不使用行为策略来选择+1处的附加操作。相反,它将更新规则中的预期未来回报估计为maxA Q(St+1,A)。此处使用的max运算符可被视为“遵循”完全贪婪的策略。代理实际上不是