问题标签 [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.
reinforcement-learning - 具有函数逼近的 Q 学习,其中每个状态没有相同的动作集
我将使用函数逼近的 Q 学习应用于每个状态没有相同动作集的问题。当我计算目标时
目标 = R(s,a,s') + (max_a' * Q(s',a'))
由于每个状态都没有相同的操作集,所以我是否应该在状态定义中也包含一组操作?否则发生的情况是,两个状态在所有其他功能中可能彼此非常相似,除了它们从那里开始有非常不同的可用操作集这一事实。即使我包括一组动作,问题也是向量的长度,因为每个状态都有不同数量的动作。请帮我。
machine-learning - MDP 中的随机状态转换:Q 学习如何估计?
我正在对网格世界实施 Q-learning 以找到最佳策略。困扰我的一件事是状态转换是随机的。例如,如果我处于状态 (3,2) 并采取行动“北”,我将以 0.8 的概率降落在 (3,1),以概率 0.1 降落到 (2,2),然后降落到 (4 ,2) 概率为 0.1。我如何在算法中拟合这些信息?正如我目前所读到的,Q-learning 是一种“无模型”学习——它不需要知道状态转移概率。我不相信算法将如何在训练过程中自动找到这些转换概率。如果有人能把事情弄清楚,我将不胜感激。
machine-learning - Q-Learning 算法会被过度训练吗?
已经证明,Q-Learning 算法收敛到最优策略的唯一 Qs。那么得出 Q-Learning 算法不会被过度训练的结论是否正确?
r - 如何在 R 中实现 q-learning?
我正在学习 q-learning 并找到了一个 Wikipedia 帖子和这个网站。
根据教程和伪代码,我在 R 中写了这么多
但是我有一个问题max(Qdash-Q[row,col]
,根据网站是Max[Q(next state, all actions)]
如何以编程方式搜索下一个状态的所有操作?
第二个问题是这个伪代码
是这个吗
neural-network - 使用神经网络的 Q 学习
我正在尝试为乒乓球游戏实现深度 q 学习算法。我已经使用表格作为 Q 函数实现了 Q 学习。它工作得很好,并学会了如何在 10 分钟内击败幼稚的 AI。但我无法使用神经网络作为 Q 函数逼近器使其工作。
我想知道我是否走在正确的轨道上,所以这里总结一下我正在做的事情:
- 我将当前状态、采取的行动和奖励作为当前体验存储在回放内存中
- 我使用多层感知器作为 Q 函数,具有 1 个隐藏层和 512 个隐藏单元。对于输入 -> 隐藏层,我使用的是 sigmoid 激活函数。对于隐藏层 -> 输出层,我使用的是线性激活函数
- 状态由球员和球的位置以及球的速度来表示。位置被重新映射到更小的状态空间。
- 我正在使用 epsilon-greedy 方法来探索 epsilon 逐渐下降到 0 的状态空间。
学习时,随机选择一批 32 个后续经验。然后我计算所有当前状态和动作 Q(s, a) 的目标 q 值。
forall Experience e in batch if e == endOfEpisode target = e.getReward else target = e.getReward + discountFactor*qMaxPostState end
现在我有一组 32 个目标 Q 值,我正在使用批量梯度下降用这些值训练神经网络。我只是在做 1 个训练步骤。我应该做多少?
我正在用 Java 编程并使用 Encog 进行多层感知器实现。问题是训练很慢,性能很弱。我想我错过了一些东西,但不知道是什么。我希望至少有一个不错的结果,因为表格方法没有问题。
r - 使用 R 以编程方式在 q 学习中找到 max(Q(s',a')) 的下一个状态
我正在使用 R 编写一个简单的网格世界 q-learning 程序。这是我的网格世界
这个简单的网格世界有 6 个状态,其中状态 1 和状态 6 是开始和结束状态。我避免添加火坑、墙壁、风,以使我的网格世界尽可能简单。对于奖励矩阵,我的起始状态值为-0.1,结束状态为 +1,其余状态为 0。起始状态的 -0.1 奖励是为了阻止代理回到起始位置。
我在 R 中编写了我的程序及其工作,但是当当前状态大于第 4 行时,在查找下一个状态时出现问题。Q 矩阵在第 4 行之后不会更新。
目前,当我的算法启动代理时,总是从 state-1 开始。在第一个状态(R 的第一行)有两个动作 Right(R(1,2)) 或 Up(R(1,4))。如果随机选择一个动作说Up (R(1,4)),那么智能体移动到下一个状态作为动作 Q(4,action)。
但是现在考虑状态 4(第四行或 R)它有两个动作 Right-R(4,2) 和 Down-R(4,3) 这会导致我的算法出现问题,如果随机选择一个动作说,Right。从逻辑上讲,它应该移动到第 5 个状态,但我上面的代码使用动作 2 作为下一个状态。因此,它没有进入第 5 个状态,而是进入第 2 个状态。
最后,如果状态和动作矩阵的维度相同(mxm),我的算法将完美运行,但在我的问题中,我的状态和动作矩阵不同(mxn)。我试图找到解决此问题的方法,但未能找到一种合乎逻辑的方法来找到 $max(Q(s',a'))$ 的下一个状态,目前我被卡住了吗?
machine-learning - Q-learning更新频率
在 Q-learning 中,从当前状态开始,智能体在每个离散时间步采取行动,并且在执行动作后,智能体会立即获得奖励,以了解执行动作的成功或失败。假设我们想使用 Q-learning 控制车速,其中动作是目标速度,代理的目标是尽快到达停止线(距离起点 1 公里)。
1)所以在这个例子中,代理是否需要在每个离散时间步(1 秒)采取行动,或者代理可以在每 100 米而不是每个离散时间步采取行动。是否必须在每个离散时间步采取行动?
2)Q-learning中的延迟奖励是什么意思?是在代理到达目标后更新奖励,而不是在每个时间步采取每个动作后更新奖励吗?提前致谢 :)
deep-learning - 为什么深度 Q 学习中动作的 Q 值如此接近?
我正在尝试训练 DRL 代理使用 DQN 方法玩游戏。游戏非常简单,类似于突围。水果不断从屏幕顶部(垂直)落下,代理只需将自己对准水果即可获得奖励。它可以采取三种行动:左移、停留、右移。
假设a2是指不移动桨,a3是指向右移动,a1是指向左移动。
假设我们采取了次优动作 a3(向右移动)并移动到下一个状态。那么该状态下的最佳动作将是向左移动(a1),然后执行最佳动作。因此,动作 a2 和 a3 之间的唯一成本差异将是浪费了两个步骤来返回和返回。
如果采取次优行动没有负回报,那么智能体就没有选择最优行动的动机。因此,采取次优行动的负面回报应该足够高,以至于不鼓励代理这样做。我试图用数学方法把这种直觉放在这里。这可以解释为什么 q 值彼此如此接近。
那么,最优 Q* 函数满足以下条件:
1)这是正确的吗?(这个论点有缺陷吗?)
2)这可以解释为什么深度 Q 学习中的 Q 值非常接近吗?