5

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

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

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

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

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

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

4

1 回答 1

4

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

这似乎很奇怪。如果不改变状态,动作会做什么?请注意,代理不一定要知道他们的行为将如何改变他们的状态。同样,动作可能会不完美地改变状态(机器人可能会滑出,因此当它试图移动时它实际上并没有移动)。事实上,一些算法是专门为这种不确定性设计的。

无论如何,即使代理在没有任何控制的情况下在状态空间中移动,它仍然可以学习不同状态的奖励。实际上,许多 RL 算法涉及半随机地在状态空间中移动以找出奖励是什么。

我对状态没有明确的定义,因为它们可能会发生几次或根本不会发生,因为代理人四处走动,他们可能永远不会遇到情况

您可能会考虑将内容扩展为您认为的“状态”。例如,该位置似乎肯定应该进入标识状态的变量。并非所有状态都需要奖励(尽管好的 RL 算法通常会推断出中性状态的优度)。

我建议明确定义决定代理状态的变量。例如,状态空间可以是current-patch X internal-variable-value X other-agents-present。在最简单的情况下,代理可以观察构成其状态的所有变量。但是,有些算法不需要这样做。一个代理应该总是处于一个状态,即使这个状态没有奖励值。

现在,关于未知的奖励。这其实完全没问题。奖励可以是随机变量。在这种情况下,应用标准 RL 算法的一种简单方法是在做出决策时使用变量的期望值。如果分布未知,那么算法可以只使用迄今为止观察到的奖励的平均值。

或者,您可以在状态定义中包含决定奖励的变量。这样,如果奖励发生变化,那么它实际上处于不同的状态。例如,假设机器人在建筑物的顶部。它需要到达它前面的建筑物的顶部。如果它只是向前移动,它就会掉到地上。因此,该状态的奖励非常低。但是,如果它首先放置一块从一栋建筑物到另一栋建筑物的木板,然后向前移动,则奖励会发生变化。为了表示这一点,我们可以将其包含plank-in-place为一个变量,以便将板放置在适当的位置实际上会改变机器人的当前状态以及向前移动所产生的状态。因此,奖励本身并没有改变;它只是处于不同的状态。

希望这会有所帮助!

2018 年 2 月 7 日更新:最近的一次投票让我想起了这个问题的存在。在被问到之后的这些年里,我实际上在 NetLogo 中更深入地研究了强化学习。特别是,我为 NetLogo 做了一个python 扩展,主要是为了更容易将机器学习算法与模型集成。该扩展的一个演示在模型运行时使用深度 Q 学习训练一组代理。

于 2014-01-27T01:54:26.600 回答