问题标签 [sarsa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在冰湖游戏中从 Q-Learning 算法实现 SARSA
我正在使用 Q-Learning 和 SARSA 算法解决冰湖游戏。我有 Q-Learning 算法的代码实现并且有效。这段代码取自 Maxim Lapan 的“深度强化学习实践”的第 5 章。我正在尝试更改此代码以实现 SARSA 而不是 Q-Learning,但我不知道如何去做。我研究了这两种算法,但对它们如何转化为代码一无所知。我必须对此代码进行哪些更改才能实施 SARSA?
reinforcement-learning - LunarLander v2 openai 健身房的直升机停机坪坐标
我正在尝试通过现有 LunarLanderv2 的帮助来实现自定义月球着陆器环境。https://github.com/openai/gym/blob/master/gym/envs/box2d/lunar_lander.py
我很难弄清楚直升机停机坪的极坐标。我打算找到航天飞机的理想着陆位置。
java - 减少游戏的状态空间 Connect Four 应用 RL 算法 SARSA 和 Q-Learning
我想为棋盘游戏 Connect Four 实施强化学习算法 SARSA 和 Q-Learning。
由于将所有这些信息存储在 Q-Table 中,我熟悉这些算法并且知道它们对大型状态空间的限制。连接四有一个估计约为 7.1*10 13的大状态空间,例如 MIT Slide 7,这就是为什么简单地应用这些算法是行不通的(尽管这篇论文声称它确实如此)
但是,我找到了一个类似帖子的答案,该帖子提出了一种可能的解决方案来简化状态空间。
一方面,您可以通过分离动作空间来简化问题。如果您分别考虑每列的值,则基于它旁边的两列,您将 N 减少到 3 并将状态空间大小减少到 10 6。现在,这是非常易于管理的。您可以创建一个数组来表示此值函数并使用简单的 RL 算法(例如 SARSA)对其进行更新
不幸的是,我不理解提议的简化,并想问以下问题:
- 通过分别考虑每一列,将动作空间与状态空间分开。但是,如果我对 SARSA 和 QL 的理解是正确的,它们会使用它们
Q(S,A)
来估计价值函数,因此状态动作对被分配了一个值。 - 如何根据旁边的两列计算一列的值?
- 在这种情况下,它旁边的含义是什么?如果使用每列的两个相邻列,那么我们创建五对(N=5)还是从内向外创建对(例如中间三列、中间五列、全部七列)?
- 一个状态(整个板的?)然后映射到包含每个动作/列的值函数的数组?
任何对其他文献或简化的参考将不胜感激!
algorithm - 网格环境中的 Q-learning 和 Sarsa 用于短期与长期奖励
我创建了我的自定义网格(7 x 7)环境来应用 RL 算法。我特别选择了 Q-learning 和 Sarsa。
网格环境由 3 种终止状态组成:负奖励状态(-100)、最大奖励状态(100)和 2 种半奖励状态(50)。
训练的主要目标是让智能体避免带有负奖励的状态,并更喜欢长期奖励(100)而不是短期半奖励(50)。
当半奖励状态更接近主要奖励时,受过训练的代理会奇怪地工作,但是,如果半奖励状态不接近主要奖励,那么两种算法都有效地训练代理只进入主要奖励。
所以,据我了解,结果是基于半奖励状态的位置。
我的 Q-learning 和 Sarsa 的超参数如下:epsilon=1(随着线性函数逐渐衰减),gamma=0.99(我读到,为了让智能体学习主要奖励,gamma 应该很高,0.9 -0.99 大约),alpha=0.1
问题可能是我的环境吗?我很困惑,因为这两种算法在没有半奖励状态的情况下都能很好地工作。所以问题在于,根据半奖励状态所在的位置,算法有时不会训练智能体选择长期奖励。
如果有人有类似的问题,如果您能分享您如何解决它,我将不胜感激。