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

artificial-intelligence - Q-Learning 与神经网络相结合(有益的理解)

据我了解,可以用神经网络替换 Q 值的查找表(状态-动作-对-评估)来估计这些状态-动作对。我编写了一个小型库,它能够通过自建的神经网络进行传播和反向传播,以学习特定输入输出的所需目标值。

所以我在谷歌搜索和谷歌搜索整个网络时也找到了这个网站(就像我觉得的那样):http ://www.cs.indiana.edu/~gasser/Salsa/nn.html其中Q-learning与简要介绍了神经网络。

对于每个动作,都有一个额外的输出神经元,这些输出“单元”之一的激活值告诉我估计的 Q 值。(一个问题:激活值与神经元的“输出”相同还是不同?)

我使用标准的 sigmoid 函数作为激活函数,所以函数值 x 的范围是

所以我想,我的目标值应该总是从 0.0 到 1.0 -> 问题:我的理解正确吗?还是我误解了什么?

如果是,则出现以下问题:计算目标奖励/新Q值的公式为:q(s,a) = q(s,a) + learningrate * (reward + discountfactor * q'(s,a ) - q(s,a))

那么,如果目标应该是从 0.0 到 1.0,我该如何执行这个方程来获得神经网络的正确目标?!我如何计算好的奖励价值?朝着目标前进比远离目标更值得吗?(接近目标时的 +reward 比 -reward 更远的目标距离?)

我觉得我的理解有一些误区。我希望,你能帮助我回答这些问题。非常感谢!

0 投票
2 回答
907 浏览

neural-network - 如何用神经网络实现 Q-learning?

我创建了一个具有 2 个输入节点、4 个隐藏节点和 3 个输出节点的神经网络。初始权重在 -1 到 1 之间是随机的。我使用反向传播方法来更新具有 TD 误差的网络。但是,性能并不好。

我想知道,问题可能出在哪里?
1. 是否需要偏置节点?
2. 是否需要资格跟踪?

如果有人可以提供任何示例代码,我将不胜感激。

0 投票
1 回答
1433 浏览

neural-network - 权重更新 - 强化学习 + 神经网络

我目前正在尝试了解 TD-Gammon 的工作原理并有两个问题:

1)我找到了一篇解释权重更新的文章。它由三部分组成。最后一部分是 V(s) 相对于 w 的微分。在文本中,它被称为“运行总和”。我如何计算该值?(我只对从输出到隐藏层的权重变化感兴趣,而不对进一步的权重变化感兴趣)

2)在阅读了这个更新权重的过程之后,出现了一个问题:为什么我们不使用强化学习为状态创建一个目标值并将该值赋予我们的神经网络,以便它学会返回那个当前状态的价值?为什么有一个额外的更新规则直接操纵权重?

0 投票
1 回答
721 浏览

algorithm - 演员-评论家强化学习中的动作约束

我已经在一个简单的网格世界上实现了自然的 actor-critic RL 算法,它有四种可能的动作(上、下、左、右),我注意到在某些情况下它往往会卡在上下或左右。

现在,在这个领域中,上下和左右是对立的,并且觉得如果我能够以某种方式让代理意识到这一事实,学习可能会得到改善。我正在考虑在计算动作激活后简单地添加一个步骤(例如,从右激活中减去左激活,反之亦然)。但是,我担心这会在一般情况下导致收敛问题。

似乎添加约束将是该领域的共同愿望,所以我想知道是否有人知道我应该为此目的使用的标准方法。如果不是,那么我的临时方法是否合理。

提前致谢!

0 投票
1 回答
827 浏览

neural-network - 训练具有大线性输出的神经网络

我正在编写一个前馈神经网络,我想将它与强化学习结合使用。我有一个以 tanh 作为激活函数的隐藏层和一个线性输出层。

我有三个归一化为 [0,1] 的输入。还有三个输出节点,它给出了从环境中获得的奖励。回报总是负面的。At the beginning, when the chosen actions lead to bad decisions, it can be like -50000, with good decisions it can be -5.

我正在努力实现反向传播。由于奖励如此之大,因此误差值很大,从而产生了巨大的权重。经过几轮训练,隐藏层的权重如此之大,我在隐藏层中的节点只创建了值 -1 或 1。

这是我的代码:

0 投票
1 回答
1097 浏览

artificial-intelligence - 平均奖励问题的 SARSA 算法

我的问题是关于在强化学习中使用 SARSA 算法来解决一个不折不扣的、持续的(非偶发的)问题(它可以用于这样的问题吗?)

我一直在研究 Sutton 和 Barto 的教科书,他们展示了如何修改 Q-learning 算法,以便将其用于未折扣的问题。他们在第 6.7 章中将新算法(针对未折扣问题)称为 R 学习。基本上,在 R 学习中,每次迭代 Q(s,a) 的更新规则是:

Q(s,a) = Q(s,a) + alpha * [r - rho + max_a{Q(s',a)} - Q(s,a)]

这里,只有在状态 s 选择了贪婪动作时,rho 才会在每次迭代中更新。rho 的更新规则是:

rho = rho + beta * [r - rho + max_a{Q(s',a)} - max_a{Q(s,a)}]

(这里,alpha 和 beta 是学习参数。)现在,我的问题是关于 SARSA,而不是 Q-learning。我想修改 SARSA 算法,使其适用于平均奖励(未折扣)问题,就像修改 Q-learning 以用于平均奖励问题一样(我不知道这是否可能?) . 但是,在文献中,我找不到关于如何针对平均奖励问题修改 SARSA 的确切解释。

这是我对如何在未折现问题中使用 SARSA 的猜测。我猜想更新规则应该是:

Q(s,a) = Q(s,a) + alpha * [r - rho + Q(s',a') - Q(s,a)],

其中 a' 是在状态 s 实际选择的动作。这似乎相当明显。但是 rho 应该如何更新呢?我的猜测是,由于 SARSA 是一种 on-policy 算法,因此 rho 应该始终在每次迭代时更新——无论是否在 s 处选择了贪婪动作——并且更新规则应该是:

rho = rho + beta * [r - rho + Q(s',a') - Q(s,a)]。

有人能告诉我这是否正确吗?还是应该根据状态 s 和 s' 的最优动作来更新 rho?

0 投票
1 回答
1161 浏览

reinforcement-learning - 伯克利吃豆人项目:功能除以 10

我正忙于为游戏吃豆人编写强化学习代理程序,偶然发现了伯克利的 CS 课程的吃豆人项目,特别是强化学习部分

对于近似 Q 学习代理,使用特征近似。此代码中实现了一个简单的提取器。我很好奇的是,为什么在返回特征之前,它们会按比例缩小 10?通过运行没有因子 10 的解决方案,您会注意到吃豆人的表现明显更差,但为什么呢?

0 投票
1 回答
165 浏览

machine-learning - 给定嘈杂动作和非单调强化的结果空间学习

我希望构建或调整一个最好基于 RL 理论的模型,以解决以下问题。非常感谢任何指导或指示。

我有一个连续的动作空间,可以从 10-100(含)范围内选择动作。每个动作都与一定的强化值相关联,根据价值函数,范围从 0 到 1(也包括在内)。到目前为止,一切都很好。这就是我开始思考的地方:

并发症1:

价值函数V根据给定动作x和目标动作A之间的距离将动作映射到强化。两者之间的距离越小,强化越大(即强化与 abs( A - x ) 成反比。但是,价值函数仅对于接近A的动作非零(abs( A - x ) 较小)比,说,epsilon)和其他地方为零。所以:

**V**与 成正比1 / abs(**A** - **x**)abs(**A** - **x**) < epsilon并且

**V** = 0abs(**A** - **x**) > epsilon.

并发症2:

我不知道每一步都采取了什么行动。我大致知道它们是什么,因此我知道它们属于x +/- sigma 范围,但不能将单个动作值与我收到的强化准确关联。

我想解决的确切问题如下:我有一系列嘈杂的动作估计和精确的强化值(例如,在试验 1 中,我可能有大约 15-30 的x和 0 的强化;在试验 2 中,我可能有x ~25-40 和 0 的强化;在试验 3 中,x为 ~80-95 和 0.6 的强化。)我想构建一个模型,该模型表示每个步骤后目标动作A的最可能位置的估计,可能根据一些学习率参数对新信息进行加权(因为确定性会随着样本的增加而增加)。

0 投票
2 回答
1184 浏览

machine-learning - Qlearning - 定义状态和奖励

我需要一些帮助来解决使用 Q 学习算法的问题。

问题描述:

我有一个火箭模拟器,其中火箭走的是随机路径,有时也会坠毁。火箭有 3 种不同的引擎,可以开启或关闭。根据启动的发动机,火箭会飞向不同的方向。

提供关闭/打开引擎的功能

在此处输入图像描述

任务:

构造一个始终朝上的Q-learning控制器。

读取火箭角度的传感器可作为输入。

我的解决方案:

我有以下状态:

在此处输入图像描述

我还有以下操作:

  • 所有引擎关闭
  • 左引擎开启
  • 右引擎开启
  • 中置引擎开启
  • 左右开
  • 左边和中间
  • 右边和中间

以及以下奖励:

角度 = 0,奖励 = 100 所有其他角度,奖励 = 0

问题:

现在问题来了,这是奖励和状态的一个好的选择吗?我可以改进我的解决方案吗?其他角度有更多的奖励会更好吗?

提前致谢

0 投票
1 回答
8384 浏览

machine-learning - 在强化学习中设置 gamma 和 lambda

在任何使用广义时间差分(例如 SARSA、Q 学习)的标准强化学习算法中,都会出现一个问题,即对于特定任务,lambda 和 gamma 超参数使用什么值。

我知道 lambda 与资格迹线的长度相关,而 gamma 可以解释为对未来奖励的折扣多少,但是我怎么知道我的 lambda 值对于给定任务何时太低,或者我的 gamma 太高?

我意识到这些问题没有明确的答案,但是了解一些具有不适当值的“危险信号”将非常有用。

以标准的推车杆或倒立摆任务为例。我应该将 gamma 设置为高,因为它需要许多步骤才能使任务失败,还是因为状态信息完全是马尔可夫而设置低?而且我什至无法理解 lambda 值的理性...