在NetLogo中实施强化学习(在多智能体模型中学习)

时间:2014-01-15 12:32:23

标签: netlogo reinforcement-learning agent-based-modeling q-learning

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

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

以下是我如何制定问题:

  1. 代理人有一生,他们会跟踪一些对他们而言重要的事情,这些指标对于不同的代理商是不同的,例如,一个代理商想要增加A另一个代理商想要B超过A.
  2. 国家是代理人一生中的积分 有多个选项(我没有明确的定义 因为它们可能会发生几次或根本不会发生因为 代理商四处走动,他们可能永远不会遇到这种情况。)
  3. 奖励是指代理人可以从特定国家的某项行动中获得的指标的增加或减少,而代理人如果选择其他行动则不知道会有什么好处。
  4. 增益不是恒定的,状态没有明确定义,也没有一个国家正式过渡到另一个国家,
  5. 例如,代理商可以决定与共同定位的代理商之一(行动1)或同一地点的所有代理商共享(行动2)如果某些条件成立,行动A将对该代理人更有回报在其他条件下,行动2将获得更高的回报;我的问题是我没有看到任何未知奖励的例子,因为在这种情况下分享还取决于其他代理人的特征(这会影响奖励制度的条件),并且在不同的状态下它会有所不同。
  6. 在我的模型中,动作与以下状态之间没有关系,这让我想知道在这种情况下是否可以考虑RL。

    我希望在这里优化的是我的代理能够以更好的方式推断当前情况,而不仅仅是回应他们的内部状态所触发的需求。他们有一些个性可以定义他们的长期目标,并可能影响他们在不同情况下的决策,但我希望他们记住在某种情况下哪些行动有助于他们增加他们的首选长期目标。

1 个答案:

答案 0 :(得分:3)

  

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

这看起来很奇怪。如果不改变状态,行动会怎样做?请注意,代理不必知道他们的操作将如何改变其状态。类似地,动作可以不完美地改变状态(机器人踏板可以滑出,因此当它试图时它实际上不会移动)。事实上,有些算法专门针对这种不确定性而设计。

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

  

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

您可以考虑扩展您认为属于“州”的内容。例如,这个位置似乎肯定会进入识别状态的变量。并非所有州都需要获得奖励(尽管良好的RL算法通常可以推断中立状态的良好程度)。

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

现在,关于未知奖励。这实际上完全没问题。奖励可以是random variable。在这种情况下,应用标准RL算法的一种简单方法是在做出决策时使用变量的expected value。如果分布未知,那么算法可以只使用到目前为止观察到的奖励的平均值。

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

希望这有帮助!

更新2/7/2018:最近的一个upvote让我想起了这个问题的存在。在被问到这几年后,我实际上已经在NetLogo中进入了更大程度的RL。特别是,我为NetLogo做了python extension,主要是为了更容易将机器学习算法与模型集成。当模型运行时,扩展的One of the demos会使用深度Q学习训练一组代理。