基于时态差分法的强化学习:Sarsa和Q-learning

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 时态差分法(Temporal Difference, TD)是一类在强化学习中广泛应用的算法,用于学习价值函数或策略。Sarsa和Q-learning都是基于时态差分法的重要算法,用于解决马尔可夫决策过程(Markov Decision Process, MDP)中的强化学习问题。

下面是最简单的TD方法更新:

它只使用当前行动之后的奖励值和下一个状态的值作为目标。Sarsa(State-Action-Reward-State-Action)和Q-learning是都是基于时态差分法的强化学习方法。

Sarsa和Q-learning的区别

Sarsa代表State-Action-Reward-State-Action。是一种基于策略的方法,即使用正在学习的策略来生成训练数据。Q-learning是一种非策略方法它使用不同的策略为正在学习的值函数的策略生成训练数据。

Sarsa的更新规则如下:

其中:

  • Q(s, a) 是在状态s下采取动作a的值函数估计。
  • α 是学习率,控制每次更新的步长大小。
  • r 是在状态s下采取动作a后获得的即时奖励。
  • γ 是折扣因子,表示未来奖励的折现率。
  • s' 是在执行动作a后得到的新状态。
  • a' 是在新状态s'下选择的下一个动作。

Q-learning是另一种基于时态差分法的增强学习算法,用于学习一个值函数,表示在状态s下采取最优动作得到的期望累积奖励。Q-learning的更新规则如下:

其中:max(Q(s', a')) 表示在新状态s'下选择下一个动作a'时的最大值函数估计。

从上面的更新可以看出这两个方法非常相似,主要区别在于它们的更新策略。在Sarsa中,更新策略考虑了在新状态下采取的下一个动作,而在Q-learning中,更新策略总是选择了新状态下使值函数最大化的动作。因此,Sarsa更倾向于跟随当前策略进行学习,而Q-learning更倾向于学习最优策略。

cliff walking环境下的表现

这是RL书中描述的一个简单环境,如下面的截图所示。

  • 事件开始于状态S,我们的代理开始于这种状态
  • 一个事件在状态G结束,也就是这是终态。
  • 在S和G之间的最下面一行的状态是悬崖状态
  • 从悬崖状态以外的任何状态转换的奖励为-1,并且代理会移动到邻近的状态
  • 悬崖状的奖励为-100,并且代理移动到开始状态S,也就是说结束了
  • 当代理到达终端状态G,走了100步或者最终处于悬崖状态时,就代表结束了
  • 图中蓝色路径是安全的,但不是最优的,因为它需要很多步才能到达目标状态
  • 红色路径是最优的,但它是非常危险的,因为代理可能会发现自己在悬崖边缘

从环境的描述来看,代理的目标是最大化累积奖励,即采取尽可能少的步数,因为每一步的值为-1。最优路径是悬崖上方的那条,因为它只需要13步,值为-13。我使用上面的2td(0)方法来确定它们是否在上面以获得最优路径。

实验环境如下:

在训练中使用以下超参数:

  • episodes:2000
  • discounting factor:1
  • Alpha: 0.1,这是学习率
  • Epsilon: 0.1, 选择具有相同概率的所有动作的概率,用于ε贪婪算法

结果:

Sarsa和Q-learning在收敛的时间上大致相同,但Q-learning能够学习13个步骤的最优路径。Sarsa无法学习最优路径,它会选择避开悬崖。这是因为它的更新函数是使用贪婪的方式来获取下一个状态-动作值,因此悬崖上方的状态值较低。

Q-learning在更新中使用了下一个状态动作值的最大值,因此它能够小心地沿着边缘移动到目标状态G。下图显示了每个训练论测的学习步骤数量。为了使图表更加平滑,这里将步骤数按20个一组取平均值。我们可以清楚地看到,Q-learning能够找到最优路径。

下图显示了2种算法的在线性能*这些值再次以20组为单位进行平均)。我们可以看到,Sarsa的性能比Q-learning更好。这是因为随着Q-learning学习获得最优路径,偶尔会发现自己陷入绝境,因为要更新的状态动作对的生成遵循了贪婪算法。而Sarsa学会了避开靠近悬崖的状态,从而减少了靠近悬崖的机会。

总结

这个简单的例子说明了Sarsa和Q-learning之间的比较,我们总结两个算法的区别:

Sarsa和Q-learning都是基于时态差分法的强化学习算法,它们在解决马尔可夫决策过程(MDP)中的强化学习问题时有一些重要的区别。

  1. 更新策略:- Sarsa:在Sarsa中,更新策略是"状态-动作-奖励-下一个状态-下一个动作",即更新后的动作与下一个状态相关。这意味着Sarsa在更新值函数时会考虑在新状态下采取的下一个动作,因此其学习过程更加稳定,可以学习到策略的各种特征。- Q-learning:Q-learning的更新策略是"状态-动作-奖励-最大值动作",即更新后的动作是在新状态下具有最大值函数估计的动作。这使得Q-learning更加倾向于学习最优策略,但也可能导致其学习过程不稳定,容易受到噪声干扰。
  2. 学习方式:- Sarsa:由于Sarsa在更新时会考虑在新状态下执行的下一个动作,它更适合于在线学习和与环境进行交互时的应用。Sarsa在实际应用中可能更加稳定,但也可能会收敛较慢。- Q-learning:Q-learning更倾向于学习最优策略,但由于其更新策略不考虑实际执行的下一个动作,可能在一些情况下收敛更快,但也更容易受到噪声的影响。
  3. 探索策略:- Sarsa:由于Sarsa考虑了在新状态下执行的下一个动作,它在学习过程中倾向于跟随当前策略进行探索,可能更适合于需要较多探索的任务。- Q-learning:Q-learning在更新时不受当前策略的影响,更容易在学习过程中进行探索。然而,这种无关探索策略可能导致Q-learning在某些情况下过度探索,陷入不收敛的状态。
  4. 应用场景:- Sarsa:适用于需要稳定学习过程、重视探索的任务,或者在与环境进行交互时进行在线学习的情况。- Q-learning:适用于倾向于学习最优策略的任务,或者在需要快速收敛时的情况。

这两种算法只是强化学习领域众多算法中的两种,还有其他更高级的算法如Deep Q Network (DQN)、Actor-Critic等,可以根据问题的复杂度和要求选择适当的算法。

最后如果你想自行进行试验,这里是本文两个试验的源代码

https://avoid.overfit.cn/post/b7ecfa32ef354a4e9e0c9e2e5da7376d

作者:Kim Rodgers

目录
相关文章
|
机器学习/深度学习 存储 算法
【强化学习】常用算法之一 “DQN”
DQN算法是深度学习领域首次广泛应用于强化学习的算法模型之一。它于2013年由DeepMind公司的研究团队提出,通过将深度神经网络与经典的强化学习算法Q-learning结合,实现了对高维、连续状态空间的处理,具备了学习与规划的能力。本文对DQN算法进行了详细的讲解,包括发展史、算法公式和原理、功能、示例代码以及如何使用。DQN算法通过结合深度学习和Q-learning算法,实现了对高维、连续状态空间的处理,具备了学习和规划的能力。
1606 0
【强化学习】常用算法之一 “DQN”
|
机器学习/深度学习 存储 算法
机器学习面试笔试知识点之非监督学习-K 均值聚类、高斯混合模型(GMM)、自组织映射神经网络(SOM)
机器学习面试笔试知识点之非监督学习-K 均值聚类、高斯混合模型(GMM)、自组织映射神经网络(SOM)
106 0
|
机器学习/深度学习 存储 算法
【强化学习】常用算法之一 “Q-learning”
Q-learning算法是一种基于强化学习的无模型学习方法,通过学习到目标系统的Q值函数来解决智能体在给定环境下的最优决策策略问题。Q-learning算法是基于后验策略方法,即学习出目标系统的价值函数Q之后,通过使用某种策略来最大化该价值函数,称之为后验策略。Q-learning算法是偏差-方差权衡的算法,在偏差较高的情况下可以在基于模型的强化学习中找到一个接近最优策略的解决方案。同时它也具有较高的收敛速度和广泛的适用性,因为其只需要存储一个值函数,不需要存储模型。
456 0
【强化学习】常用算法之一 “Q-learning”
|
机器学习/深度学习 算法 自动驾驶
【强化学习】常用算法之一 “PPO”
强化学习是一种通过智能体与环境的互动来学习最优行为策略的机器学习方法。相较于监督学习和无监督学习,强化学习的特点在于具有延迟奖赏和试错机制。在强化学习中,智能体通过选择动作来影响环境,并且从环境中获得奖励作为反馈。强化学习的目标是通过与环境的交互,使得智能体能够学会最优的行为策略。PPO算法属于策略优化(Policy Optimization)算法家族,是由OpenAI在2017年提出的。与其他策略优化算法相比,PPO算法具有较高的样本利用率和较好的收敛性能。
1262 1
【强化学习】常用算法之一 “PPO”
|
机器学习/深度学习 算法 知识图谱
【强化学习】常用算法之一 “SARSA”
强化学习是一种通过学习与环境交互来最大化累积奖励的方法。在强化学习中,一个智能体在特定环境中根据当前状态选择一个动作,执行该动作后,环境将转移到新的状态,并且智能体将获得奖励。强化学习的目标是通过学习,使智能体能够选择一系列能够获取最大累积奖励的动作序列,即找到最优策略。SARSA算法是一种基于状态-动作值的强化学习算法,用来学习最优策略。本文详细介绍了强化学习中的SARSA算法,包括其发展历程、算法原理、功能以及使用方法,并给出了求解迷宫问题的示例代码。
520 0
【强化学习】常用算法之一 “SARSA”
|
机器学习/深度学习 算法 决策智能
【ICLR2020】通过强化学习和稀疏奖励进行模仿学习
【ICLR2020】通过强化学习和稀疏奖励进行模仿学习
164 0
|
机器学习/深度学习 人工智能 自然语言处理
【ICLR2020】基于模型的强化学习算法玩Atari【附代码】
【ICLR2020】基于模型的强化学习算法玩Atari【附代码】
178 0
|
机器学习/深度学习 算法 搜索推荐
手把手教你强化学习 (三)马尔可夫决策过程与贝尔曼方程
手把手教你强化学习 (三)马尔可夫决策过程与贝尔曼方程
628 0
|
机器学习/深度学习 算法
介绍Q-Learning和两种常见的强化学习算法原理
介绍Q-Learning和两种常见的强化学习算法原理
93 0
|
机器学习/深度学习 存储 算法
DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型(一)
DQN、A3C、DDPG、IQN…你都掌握了吗?一文总结强化学习必备经典模型
379 0