问题标签 [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 回答
1554 浏览

machine-learning - Q学习转移矩阵

我试图弄清楚如何在 gridworld 示例中实现 Q 学习。我相信我了解 Q 学习如何运作的基础知识,但它似乎并没有给我正确的价值观。

这个例子来自 Sutton 和 Barton 关于强化学习的书。

网格世界的指定使得代理可以在任何给定状态下以相等的概率采取动作 {N,E,W,S},并且所有动作的奖励为 0,除非代理尝试离开网格,在这种情况下它是 - 1. 有两种特殊状态,A 和 B,其中代理确定性地分别移动到 A' 和 B',奖励分别为 +10 和 +5。

我的问题是关于我将如何通过 Q 学习来实现这一点。我希望能够通过矩阵求逆来估计价值函数。代理以某种初始状态开始,什么都不知道,然后采取由 epsilon-greedy 算法选择的动作并获得我们可以模拟的奖励,因为我们知道奖励是如何分配的。

这引出了我的问题。每次代理从某个状态 S -> S' 转换时,我是否可以构建一个转换概率矩阵,其中概率是根据代理采取特定动作并进行特定转换的频率计算的?

0 投票
2 回答
855 浏览

artificial-intelligence - 游戏中的 Q-learning 没有按预期工作

我试图在我编写的一个简单游戏中实现 Q-learning。该游戏基于玩家必须“跳跃”以避免迎面而来的盒子。

我设计了具有两个动作的系统;jumpdo_nothing状态是与下一个块的距离(划分和地板以确保没有大量状态)。

我的问题似乎是我的算法实现没有考虑“未来的奖励”,所以它最终跳错了时间。

这是我对 Q-learning 算法的实现;

以下是它使用的一些属性:

我必须使用 lastAction/lastDistance 来计算 Q,因为我不能使用当前数据(将作用于之前帧中执行的操作)。

think在完成所有渲染和游戏内容(物理、控件、死亡等)后,每帧调用一次该方法。

0 投票
1 回答
1076 浏览

neural-network - 使用 Q-Learning 和函数逼近求解 GridWorld

我正在研究简单的 GridWorld(3x4,如 Russell & Norvig Ch. 21.2 中所述)问题;我已经使用 Q-Learning 和 QTable 解决了它,现在我想使用函数逼近器而不是矩阵。

我正在使用 MATLAB 并尝试了神经网络和决策树,但没有得到预期的结果,即发现了错误的策略。我已经阅读了一些关于该主题的论文,但其中大多数都是理论性的,并没有过多地关注实际实现。

我一直在使用离线学习,因为它更简单。我的方法是这样的:

  1. 用 16 个输入二进制单元初始化决策树(或 NN)——网格中的每个位置一个,外加 4 个可能的动作(上、下、左、右)。
  2. 进行大量迭代,为每个迭代保存 qstate 和训练集中计算的 qvalue。
  3. 使用训练集训练决策树(或 NN)。
  4. 擦除训练集并从步骤 2 开始重复,使用刚刚训练的决策树(或 NN)来计算 qvalues。

这似乎太简单了,以至于我确实没有得到预期的结果。这是一些MATLAB代码:

它有一半时间选择一个随机动作。updateq函数是:

任何建议将不胜感激!

0 投票
1 回答
269 浏览

machine-learning - 使用任何监督学习算法训练 pacman 代理

我创建了一个简单的吃豆人游戏(无药丸),并使用 Q Learning 算法对其进行了训练。现在我正在考虑使用一些监督学习算法对其进行训练。我可以通过收集状态信息来创建一个数据集,然后将其存储在某个人类玩家所采取的行动中,然后从中训练一个分类器。我的问题是我要进入正确的方向,因为它没有任何奖励系统,所以让吃豆人完美地沿着迷宫移动是正确的方法吗?

0 投票
1 回答
718 浏览

reinforcement-learning - 批量 q 学习和增长批量 q 学习的区别

我对批处理和增长批处理 q 学习之间的区别感到困惑。另外,如果我只有历史数据,我可以实现增长batch q learning吗?

谢谢!

0 投票
3 回答
10262 浏览

reinforcement-learning - Q-learning 和贪婪选择的 SARSA 是等价的吗?

Q-learning 和 SARSA 之间的区别在于 Q-learning 比较当前状态和可能的最佳下一个状态,而 SARSA 比较当前状态和实际下一个状态。

如果使用贪心选择策略,即 100% 的时间选择具有最高动作值的动作,那么 SARSA 和 Q-learning 是否相同?

0 投票
3 回答
8158 浏览

machine-learning - Q 学习代理的学习率

学习率如何影响收敛速度和收敛本身的问题。如果学习率是恒定的,Q 函数会收敛到最优值还是学习率必须衰减以保证收敛?

0 投票
1 回答
1383 浏览

python - python访问字典,只有一个键有两个键

我目前正在使用 Q learning,并且我有一个字典 Q[state, action],其中每个状态都可以是任何东西,即字符串、数字、列表.. 取决于应用程序。每个状态有 3 或 4 个可能的动作。对于每个状态,我需要找到具有最高 Q 值的动作。问题是我不知道如何直接从具有两个键的字典中访问状态具有的所有可能操作,因此我尝试使用 for 循环:

其中 argMax()

问题是计算时间太长。有什么想法可以让它更快,可能是通过消除 for 循环?

0 投票
1 回答
80 浏览

machine-learning - Q 不落火的学习技巧

请看下面的图片:

我的目标是代理在环境中旋转和移动而不是掉入火坑,我有这样的想法:

在此处输入图像描述

所以我读过一些地方:目标是一集的终点,所以如果我们认为目标不是落入火灾,目标的反面(即放入火坑)将是一集的终点。您对目标设定有何建议?

另一个问题是我为什么要设置奖励矩阵?我读过 Q Learning 是无模型的!我知道在 Q Learning 中,我们将设定目标,而不是实现目标的方式。(与监督学习相反。)

0 投票
1 回答
1439 浏览

machine-learning - 不同 epsilon 值对 Q-learning 和 SARSA 的影响

由于我是该领域的新手,我怀疑不同的 epsilon 值将如何影响 SARSA 和 Qlearning 与 epsilon 贪婪算法进行动作选择之间的影响。

我知道当 epsilon 等于 0 时,总是根据从 Q 派生的策略选择动作。因此,Q-learning 首先更新 Q,然后根据更新的 Q 选择下一个动作。另一方面,SARSA 选择下一个动作和更新后 Q。

当 ε 等于 1 时怎么样?ε 是从 0 增加到 1 吗?

谢谢!