binglu’s blog
← 返回文章
强化学习

SARSA 是什么?和 Q-learning 的区别

冰露5 分钟

什么是 SARSA?

SARSA(状态-动作-奖励-状态-动作)是一种策略强化学习(RL)算法,它通过与环境交互帮助智能体学习最优策略。智能体探索环境,采取行动,接收反馈,并持续更新其行为以最大化长期奖励。

和其他算法(如 Q-learning)不同,Q-learning 总是假设能找到理论上最好的选择,而 SARSA 只看智能体真实做了什么、得到了什么结果来调整策略。这让它特别适合那些每一步决策后果都很重要的真实场景。

SARSA 和 Q-learning 都是在线算法,区别在于:SARSA 是同策略(用实际选出的动作更新),Q-learning 是异策略(用理论最优动作更新)。这让 SARSA 更保守安全,Q-learning 更激进高效。

SARSA 分为五步骤

S:当前的状态

A:基于当前状态和当前策略要采取的动作

R:当前采取动作后,获得的反馈结果(奖励/惩罚)

S:基于当前状态,采取动作后得到反馈结果后的新状态

A:基于新状态,和当前的策略,将要采取的新动作

这 5 个变量共同构成了 SARSA 更新 Q 值时用到的全部信息,也就是更新式中的 (s,a,r,s′,a′)

SARSA 专注于根据即时奖励和预期未来奖励来更新代理的 Q 值(衡量给定状态-动作对质量的一个指标)。

SARSA 和 Q-learning 二者都是**时序差分学习(时序:时间前后,差分,二者差值)**的一种体现,都是在线更新,即每一步更新一次 Q 值,更新实际是根据预期回报与实际回报之间的差异进行调整。

这里的更新要看两个点,一个是即时奖励(权衡当前动作对当前目标值的影响),一个是未来奖励(权衡当前动作对整体结果导向的影响),类似于象棋中走一步吃一子(即时奖励),走一步对全局的胜负导向(未来奖励)

达到终止状态或达到固定步数结束

QA 问答:

什么是在线、离线学习?

通俗来说,在线就是边训练边学习,动态更新的过程;

离线就是可以可预先存好一份 别的策略(比如以前存下来的历史数据,或者完全随机的动作)产生的数据集来学习。类似机器学习中监督学习,在这个数据集上进行反复训练,从而找到最佳迭代值。

离线=不再与环境交互,只用静态数据集反复训练
(异策略只是“用别的策略数据”,不一定离线)

什么是同策略?什么是异策略?

同策略就是当前行动策略=当前策略 当前选择了哪条路,就评估我当前所走的这条路的价值

异策略就是当前行动策略=/当前策略 当前选择哪条路,评估的是当前最佳应该走的路线的价值

一个是依据当前行动价值来进行更新,一个是依据当前最佳价值来更新

这里就存在一个问题点,我按照最佳的理论路线进行评估和更新策略,但是我当前走的是左,评估的是右,会导致失衡问题,这就是‘乐观偏差’。

但是虽然我当前走左失败了,Q 值更新发现往右的奖励依然是最高,那依然会朝着右边进行迭代,这样就能让 Q 值在长期逐步逼近迭代至最佳 Q 值。

所以 Q-learning 就是放弃短期收益,追求长期效果。

二者更新 Q 值基于什么?

一个是依据当前行动价值来进行更新,一个是依据当前最佳价值来更新

区别是什么?

区别在于,SARSA 偏向于现实主义者,追求和注重安全,有风险的会选择避让,而 Q-learning 是理想主义者,有风险的如果收益更高,会选择富贵险中求。

二者缺点?

鱼和熊掌不可兼得,得到一些东西,总会失去一些东西。

SARSA 过于稳定与保守,没有创新意识,就意味着它可能永远陷入局部最优解,找不到最佳迭代路线,可能会达不到预期的效果,且它是动态更新,需要新数据,旧数据对它基本无作用,数据利用率低。

而 Q-learning 是激进派,它不会畏惧危险,使用方式不恰当会翻车,高风险,高回报的代表。

什么时候用什么?

如果是追求安全与稳定,不追求极致效果输出,且数据没有留存,是新的数据,那就选 SARSA 毋庸置疑;

如果是追求极致的效果,且有预存的离线数据可供反复训练,那就使用暴力的 Q-learning 吧。

总结:

技术与算法的效果只取决于其使用的应用场景,本身并无绝对优劣,存在就有存在的意义与价值。