问题标签 [reinforcement-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 投票
1 回答
160 浏览

machine-learning - 我应该使用强化学习将哪些内容保存到文件/数据库中?

我正在尝试进入机器学习领域,并决定自己尝试一下。我写了一个小井字游戏。到目前为止,计算机使用随机动作与自己对战。

现在,我想通过编写一个代理来应用强化学习,该代理将根据它对董事会当前状态的了解进行探索或利用。

我不明白的部分是:代理使用什么来训练自己以适应当前状态?假设一个 RNG bot (o) 玩家这样做:

[..][..][..]

[..][x][o]

[..][..][..]

现在代理必须决定最好的移动应该是什么。训练有素的人会选择第 1、第 3、第 7 或第 9 名。它是否在数据库中查找到导致他获胜的类似状态?因为如果是这样,我认为我需要将每一个动作保存到数据库中,直到最终状态(赢/输/平局),这对于单场比赛来说会是相当多的数据吗?

如果我想错了,我想知道如何正确地做到这一点。

0 投票
1 回答
2295 浏览

algorithm - Q 学习算法问题

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

代码:

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 回答
155 浏览

algorithm - 静态环境的人工智能

我有一个网格环境,每个单元格中都包含一个静态代理。当我的代理进入一个单元格时,这个单元格中的静态代理可能会从我身上拿走分数,给我分数,或者什么也不做。我的代理无法观察相邻的单元格,直到它移动到一个单元格中,它只能向上、向下、向左或向右移动。

该代理在探索时无法学习。它从一个特定的角落进入网格,并且只能从那个角落离开。如果代理成功地探索环境并以积极的健康状态返回角落,那么它可以从收集到的经验中学习,包括它访问过的(行、列)位置,以及位于这些位置的静态代理的属性。职位。如果探员在探索过程中的生命值降至零,则游戏结束。但是我可以根据需要多次重新开始探索。

每个静电剂具有三种形状中的一种、三种颜色中的一种和两种尺寸中的一种。它还有一个相关的“奖励”,表明它从我身上添加/删除了多少点。

在这种环境下,每一步都会让我损失一分。我想设计一个能正确识别与此网格中每种类型的静态代理相关的奖励的代理。

请有人推荐一种学习和/或进化的方法来解决这个问题?由于代理可能无法观察相邻方格的限制,我目前被困住了。我不确定如何从单独遇到的(行、列)和静态代理属性中从这个测试环境中学到任何东西。

0 投票
1 回答
3889 浏览

algorithm - 何时使用某种强化学习算法?

我正在学习强化学习并阅读萨顿的大学课程书。除了经典的 PD、MC、TD 和 Q-Learning 算法之外,我还在阅读用于解决决策问题的策略梯度方法和遗传算法。我以前从未有过这个主题的经验,而且我在理解什么时候应该优先选择一种技术时遇到了问题。我有一些想法,但我不确定。有人可以简要解释或告诉我一个来源,我可以在哪里找到关于应该使用某种方法的典型情况的信息?据我所理解:

  • 只有当 MDP 的动作和状态很少并且模型已知时,才应该使用动态规划和线性规划,因为它非常昂贵。但是什么时候DP比LP好?
  • 当我没有问题的模型但我可以生成样本时使用蒙特卡洛方法。它没有偏差,但具有高方差。
  • 当 MC 方法需要太多样本以具有低方差时,应使用 Temporal Difference 方法。但是什么时候应该使用 TD,什么时候应该使用 Q-Learning?
  • 策略梯度和遗传算法适用于连续 MDP。但是什么时候一个比另一个更好呢?

更准确地说,我认为程序员在选择学习方法时应该问自己以下问题:

  • 代理是在线学习还是离线学习?
  • 我们可以分开探索和开发阶段吗?
  • 我们可以进行足够的探索吗?
  • MDP 的视界是有限的还是无限的?
  • 状态和动作是连续的吗?

但我不知道问题的这些细节如何影响学习方法的选择。我希望一些程序员已经对 RL 方法有一些经验,并且可以帮助我更好地理解他们的应用程序。

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 矩阵,我无法获得政策,所以我无法评估它......

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