ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一行代码看穿灵魂:SARSA 与 Q-learning 的反直觉洞察与实战真相

一行代码看穿灵魂:SARSA 与 Q-learning 的反直觉洞察与实战真相 一行代码看穿灵魂SARSA 与 Q-learning 的反直觉洞察与实战真相导读大部分教科书在讲 SARSA 和 Q-learning 时无非是抄两个贝尔曼更新公式背诵一遍 “On-policy vs Off-policy”。但当你真正把策略矩阵打出来、看到上面匪夷所思的“死循环箭头”时你才会发现所有教科书都漏掉了最精彩的东西。本文拒绝复读机式理论只聚焦两件事最核心的代码差异以及只有跑过实机、踩过坑才会有的深层认知。一、代码解剖价值更新只有一行之差在基于表格型Tabular的时序差分学习中SARSA 和 Q-learning 的训练主干几乎 99% 一模一样唯一的质变发生在计算目标价值target的那一行# 1. SARSA 的更新逻辑 (On-Policy)defget_update_sarsa(row,col,action,reward,next_row,next_col,next_action):# 用肉身下一步真正要走的动作 (next_action) 来评估价值target0.9*Q[next_row,next_col,next_action]reward valueQ[row,col,action]return(target-value)*0.1# 2. Q-learning 的更新逻辑 (Off-Policy)defget_update_qlearning(row,col,action,reward,next_row,next_col):# 完全不管下一步肉身要走啥直接假定下一步会取到理论最大值 (.max())target0.9*Q[next_row,next_col].max()reward valueQ[row,col,action]return(target-value)*0.1而在动作选择行为策略上它们通常都使用带有ε\varepsilonε-greedy 的探索函数defget_action(row,col):# 10% 的概率会“手抖”随机乱走 (探索)ifrandom.random()0.1:returnrandom.choice(range(4))# 90% 的概率选择当前已知的最大分数动作 (利用)returnQ[row,col].argmax()计算最终update 值的时候qlearning 忽略了 随机失误带来的损失。但是在实际走动的时候qlearning 还是会探索的。也就是Qlearning 出现了 手脑不一致的情况短期看不严谨。但是放在一个更大的视野里面经过足够的淬炼最终却探索出来了更好的道路。二、两种做人哲学稳健做题家 vs 上限孤勇者把 SARSA 和 Q-learning 的行为拟人化是理解这两种算法最直观、最深刻的方式维度SARSA同策略 On-PolicyQ-learning异策略 Off-Policy代码本质评估真实动作Q(s′,a′)Q(s, a)Q(s′,a′)评估理论极限max⁡a′Q(s′,a′)\max_{a} Q(s, a)maxa′​Q(s′,a′)对待“失误手抖”防天灾更防自己手抖把 10% 随机跳崖的惩罚结结实实算进路线价值里认天灾无视自己手抖坚信复盘时只要自己不失误这条近道就是理论最优人物画风谨小慎微的稳健做题家缺乏野心小富即安好了伤疤忘了疼的孤勇者千锤百炼上限拉满路线抉择宁可翻山越岭多绕 30 步走天花板绝不靠近悬崖半步紧贴着悬崖边缘一路向右以最短直线距离直达终点训练期表现非常稳健累计收益高摔死少平平安安活到终点惨不忍睹累计收益极低执着于走悬崖近道动不动就手抖摔死测试期表现ε0略显平庸虽然稳但浪费了大量冗余步数绝世高手登峰造极一旦肉身不再手抖以最短极限步数直接通关三、普遍规律还是个例工业落地的终极权衡这个现象不是 Cliff Walking 的个例而是强化学习领域的普遍铁律1. 为什么深度强化学习的开山祖师是 DQN而不是 “Deep SARSA”在虚拟游戏Atari、星际争霸、DOTA2中死一万次肉身也不需要花一分钱。算法研发者追求的就是通关最高分、最短耗时等理论极限。Q-learning 这种“哪怕训练期摔得鼻青脸肿只要最后把理论上限拉满”的特质天生契合模拟器。2. 为什么现实工业界又把 SARSA 的思想请回来了如果你在做自动驾驶或实体机械臂Q-learning 就像一个压着悬崖白线超车的赛车手它要求控制系统 100% 精确在真实物理世界的一阵阵风或机械抖动下瞬间就会车毁人亡SARSA 则像一个老司机就算旁边能抄近道它也会主动为自己留出半个车道的安全缓冲带Safe RL。四、金句复盘Q-learning 算账时的“贪心”贪在它把“未来的自己”想象得绝对完美SARSA 算账时的“保守”谨慎在它把“自己犯蠢时的惨剧”提前算做了成本一个算法是成佛还是翻车不取决于它有多聪明而取决于你允许它在现实中摔多少次跤。
返回列表