无模型的强化学习方法
无模型的强化学习算法
学习「强化学习」(基于这本教材,强烈推荐)时的一些总结,在此记录一下。
动态规划算法需要马尔可夫决策过程是已知的(状态转移函数、奖励函数已知),智能体不用真正地与环境互动也能在「理性」世界里求得最优策略。
现实通常并非如此,环境已知恰恰是很少见的。所以这里来看看「无模型的强化学习方法」,主要介绍:基于 「时序差分」 的Sarsa 和 Q-learning。
时序差分方法
时序差分结合了「蒙特卡洛方法」和「动态规划」。在「蒙特卡洛方法」中我们知道,要想估计一个状态的价值,可以以该状态出发,模拟出大量状态转移序列再求得这些序列的期望回报:
我们将
其中
Sarsa算法
我们同样可以用时序差分算法来更新动作价值函数Q(s, a):
这样一来,在不知道「奖励函数
那该根据什么选取动作呢?可以使用 「

结合上面两个做法,我们可以制定这么一个强化学习流程:从初始状态出发,通过
这样,我们已经可以得到一个完整的强化学习算法了(教材中的图):

可以看到,这个算法的动作状态更新用到了当前状态s、当前选择动作a、执行动作获取的奖励r、执行动作后进入的下一个状态s'以及s'下选择的下一个动作a',故得名 「Sarsa算法」。
多步Sarsa算法
蒙特卡洛方法会求整个序列的回报并取多个序列的回报期望用于评估状态价值,这是十分合理的,只是需要算很多序列后再进行策略提升,显得比较慢;时序差分法则比较快,但只用了一个奖励和下一状态的价值估计,这个估计终究不是真实的价值,显得不是很「准」。而 「多步Sarsa算法」 则综合二者,主要是将「时序差分误差」进行了调整:

它不像蒙特卡洛方法那样「全走完」,也不像Sarsa那样「走一步」,而是选择了「走n步」。也就是说靠近现在的一部分状态它会正常计算,离得比较远的则采取估计。算法的其它部分都与常规的Sarsa一样,只不过要注意有时可能还没走够n步就已经到达目标状态了,这时的估计部分就相当于0。
Q-learning算法
Q-learning算法也是基于「时序差分算法」实现的,与「Sarsa算法」最大的不同在于,它不是通过

总结
采样数据的策略称为「行为策略」,用这些数据来更新的策略称为「目标策略」。如果一个算法中的行为策略和目标策略相同,那这个算法就是 「在线策略算法」;反之称为 「离线策略算法」。

Sarsa 是在线策略算法,而 Q-learning 是离线策略算法。离线策略算法可以重用旧的策略产生的轨迹,可以节省资源,也更受欢迎。
补充:Dyna-Q算法
与前文提到的两种方法不同,Dyna-Q算法是 基于模型的强化学习算法,在这里提它是因为它与Q-learning有些关系:

Dyna-Q算法需要一个模拟的环境模型
而这个字典会用于「Q-planning」,Q-planning要做的就是从字典中随机取出一个键值对(也就是(s、a)和(r、s')),并让它们进行「虚拟」的Q-learning。这也是Dyna-Q是「基于模型」的体现。
可以看到,在每次与环境进行交互执行一次 Q-learning 之后,Dyna-Q 会做N次 Q-planning。如果 N 为0的话,那Dyna-Q就等价于Q-learning了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略