问题标签 [q-learning]

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.

0 投票
2 回答
1841 浏览

machine-learning - Q-learning(多目标)

我刚刚开始学习 Q-learning,并看到使用 Q-learning 解决我的问题的可能性。

问题:我应该检测某种数据组合,我有四个矩阵作为系统的输入,我已经对输入进行了分类(每个输入可以是低 (L) 或高 (H) )。我需要检测某些类型的输入,例如 LLLH、LLHH、HHHH 等

注意:1)LLLH表示L中的第一个输入,第二个输入是L,第三个输入是L,第四个输入是H!2)我已将每种类型的输入类型标记为状态,例如 LLLL 是状态 1,LLLH 是状态 2,依此类推。

我在 Q-learning 中研究的是,大多数时候你有一个目标(只有一个状态作为目标),这使得代理更容易从 R-matrix 学习和创建 Q-matrix。现在在我的问题中我有很多目标(许多状态作为目标并且需要被检测到)。我不知道如何设计状态,如何通过有很多目标来创建奖励矩阵以及代理将如何学习。你能帮我在这种情况下如何使用 Q-learning。考虑到我在 20 多个州有 16 个进球!

正如我上面提到的,我知道什么是 q-learning,状态和目标是如何工作的,Q_matrix 的计算(它是如何学习的)......但问题是现在我有很多目标,我真的不知道如何将我的问题与 q-learning 联系起来。我需要多少个状态,以及如何标记奖励,因为我有很多目标。

我至少需要有关如何创建具有多个目标的奖励矩阵的帮助

0 投票
1 回答
1681 浏览

netlogo - 在 NetLogo 中实现强化学习(多智能体模型中的学习)

我正在考虑在我的模型中为不同类型的代理实施学习策略。老实说,我仍然不知道我应该先问什么样的问题或从哪里开始。

我有两种类型的代理,我希望他们通过经验来学习,他们有一组动作,根据可能发生的特定情况,每个动作都有不同的奖励。我是强化学习方法的新手,因此欢迎任何关于我应该问自己什么样的问题的建议:)

以下是我将如何提出我的问题:

  1. 代理人有一生,他们会跟踪一些对他们来说很重要的事情,这些指标对于不同的代理人来说是不同的,例如,一个代理人想要增加 A 另一个想要 B 超过 A。
  2. 状态是代理人生命周期中的点,他们有多个选择(我对状态没有明确的定义,因为它们可能会发生几次或根本不发生,因为代理人四处走动,他们可能永远不会面临某种情况)
  3. 奖励是代理可以从特定状态下的动作中获得的指标的增加或减少,并且代理不知道如果他选择另一个动作会得到什么收益。
  4. 增益不是恒定的,状态没有很好的定义,也没有一种状态到另一种状态的正式转换,
  5. 例如,代理可以决定与其中一个位于同一地点的代理(操作 1)或与同一位置的所有代理(操作 2)共享 如果某些条件成立,则操作 A 将对该代理更有利,而在其他条件Action 2会有更高的reward;我的问题是我没有看到任何奖励未知的示例,因为在这种情况下共享还取决于其他代理的特征(这会影响奖励系统的条件),并且在不同的状态下会有所不同。

在我的模型中,动作和后续状态之间没有关系,这让我想知道在这种情况下考虑 RL 是否可以。

我希望在这里优化的是我的代理能够以更好的方式推理当前情况,而不仅仅是响应由其内部状态触发的需求。他们有一些性格可以定义他们的长期目标,并可以影响他们在不同情况下的决策,但我希望他们记住在某种情况下采取什么行动帮助他们增加了他们偏爱的长期目标。

0 投票
1 回答
2295 浏览

algorithm - Q 学习算法问题

我正在尝试做一个简单的 Q 学习算法,但无论出于何种原因它都不会收敛。代理基本上应该从 5x5 网格上的一点到达目标点。当我运行它时,它似乎找到了最佳方式,但是它没有收敛,我不知道为什么。任何帮助,将不胜感激。我觉得某处有一个小错误,所以这就是为什么我要寻找一双新的眼睛。

代码:

0 投票
1 回答
188 浏览

python - Java 到 Python 代码不起作用

我正在尝试将 Java 代码转换为 Python 代码,到目前为止我已经完成了。Java 代码有效,但 Python 代码无效。请帮我。

Python代码

Java 代码

追溯

0 投票
1 回答
447 浏览

machine-learning - Q-Learning:你能倒退吗?

我正在查看一个样本考试,并且有一个关于 Q-learning 的问题,我已将其包含在下面。在第三步中,为什么采取的行动是“正确”而不是“向上”(回到 A2)。看起来回到 A2 的 Q 值将是 0.18,而向右走的 Q 值将是 0.09。那么为什么代理不回到 A2 而不是去 B3 呢?

迷宫和 Q 表

解决方案

编辑:另外,即使那里有一堵墙并且不可能正确,为什么 2,C 的行动“正确”的奖励值为 2?我们是否只是假设这不可能而忽略它的 Q 值?

Edit2:然后在第 6 步中,在状态 1、C 下“向下”和“向右”的 Q 值相等。那时代理只是随机选择吗?那么对于这个问题,我会选择最好的举动,因为代理人可能会选择它?

Edit3:说代理不会回到他以前来自的状态是真的吗?一个代理是否会多次探索同一个状态(不包括开始一个新的迷宫实例)?

0 投票
1 回答
458 浏览

reinforcement-learning - Q-learning:奖励计算的正确状态是什么

Q学习-奖励

我正在努力解释 Q 学习算法的伪代码:

奖励应该从后续状态s'还是当前状态中收取s

0 投票
2 回答
20799 浏览

machine-learning - 最优 epsilon (ϵ-greedy) 值

ε-贪婪策略

我知道 Q-learning 算法应该尝试在探索利用之间取得平衡之间取得平衡。由于我是该领域的初学者,我想实现一个简单版本的探索/利用行为。

最佳ε值

我的实现使用了 ϵ-greedy 策略,但在决定 epsilon 值时我不知所措。epsilon 应该受算法访问给定(状态、动作)对的次数的限制,还是应该受执行的迭代次数的限制?

我的建议:
  1. 每次遇到给定的(状态、动作)对时,降低 epsilon 值。
  2. 在执行完整的迭代后降低 epsilon 值。
  3. 每次遇到状态 s 时降低 epsilon 值。

非常感激!

0 投票
2 回答
103 浏览

data-structures - 用树解决 4 个难题

我正在尝试解决 4 盒拼图问题。根据我的经验,我的逻辑是每个数字都与空间交换,然后到达正确的位置。

我有这个:

我的目标状态:

什么在使用该方法:(键:R-> 右,D-> 下;上-> 上;L-> 左)

这就是我正在做的事情,但我每次都处于某些树相同的状态,但不是正确的目标状态。如果我使用错误的树方法或算法,请告诉我。因为我在通过互联网学习后正在实施这种树。

0 投票
1 回答
4041 浏览

reinforcement-learning - Q-Learning 收敛到最优策略

我正在使用基于 rglue 的python-rl框架进行 q-learning。我的理解是,随着剧集的数量,算法收敛到最优策略(这是一个映射,说明在什么状态下采取什么行动)。

问题 1:这是否意味着在经过若干集(比如 1000 集或更多集)之后,我应该基本上得到相同的状态:动作映射?

当我绘制奖励(或平均超过 100 集的奖励)时,我会在此链接中得到类似于图 6.13 的图表。

问题2:如果算法已经收敛到某个策略,为什么奖励会下降?奖励是否有可能发生巨大变化?

问题 3:我可以使用一些标准方法来比较各种 RL 算法的结果吗?

0 投票
4 回答
2659 浏览

machine-learning - 没有最终状态的 Q 学习是否可能?

我必须用 Q-learning 来解决这个问题。好吧,实际上我必须评估一个基于 Q-learning 的策略。

我是一名旅游经理。

我有n家酒店,每家可以容纳不同数量的人。

对于我入住酒店的每个人,我都会根据我选择的房间获得奖励。

如果我愿意,我也可以谋杀这个人,所以它不会进入酒店,但它会给我不同的奖励。(好吧,那是个玩笑……但这是说我可以进行自我转换。所以我房间里的人数在那个动作之后不会改变)。

  • 我的状态是一个向量,包含每家酒店的人数。

  • 我的动作是零和一的向量,它告诉我
    将新人放在哪里。

  • 我的奖励矩阵是由我
    在状态之间的每次转换(甚至是自我转换)中获得的奖励形成的。

现在,因为我可以获得无限数量的人(即我可以填充它但我可以继续杀死他们)我如何构建 Q 矩阵?没有 Q 矩阵,我无法获得政策,所以我无法评估它......

我看错了什么?我应该选择一个随机状态作为最终状态吗?我是否完全错过了重点?