首页 文章

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

提问于
浏览
4

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

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

以下是我如何制定我的问题:

  • 代理商有生命周期,他们会跟踪一些对他们而言重要的事情,这些指标对于不同的代理商是不同的,例如,一个代理商希望增加另一个代理商希望B超过A.

  • 状态是代理人一生中的分数,他们有多个选项(我没有明确的状态定义,因为它们可能会发生几次或根本没有发生,因为代理人四处移动,他们可能永远不会遇到这种情况)

  • 奖励是代理人可以从特定国家/地区的某项行动中获得的指标的增加或减少,而代理人如果选择其他行动则不知道会获得什么 .

  • 增益不是恒定的,状态没有明确定义,并且没有一个国家正式过渡到另一个国家,

  • 例如,代理人可以决定与同一地点的代理人(行动1)或同一地点的所有代理人共享(行动2)如果某些条件成立,行动A将对该代理人更有回报,而在其他条件下,行动2将获得更高的回报;我的问题是我没有看到任何未知奖励的例子,因为在这种情况下共享也取决于其他代理人的特征(这会影响奖励制度的条件),并且在不同的状态下它会有所不同 .

在我的模型中有 no relationship between the action and the following state ,这让我想知道在这种情况下是否可以考虑RL .

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

1 回答

  • 3

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

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

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

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

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

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

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

    或者,您可以包含确定州的定义中的奖励的变量 . 这样,如果奖励改变,那么它实际上处于不同的状态 . 例如,假设机器人位于建筑物顶部 . 它需要到达前面的建筑物的顶部 . 如果它向前移动,它会落到地上 . 因此,该州的回报非常低 . 但是,如果它首先放置从一个建筑物到另一个建筑物的木板,然后向前移动,则奖励会发生变化 . 为了表示这一点,我们可以包括 plank-in-place 作为变量,因此将板放置到位实际上会改变机器人's current state and the state that would result from moving forward. Thus, the reward itself has not changed; it'只是处于不同的状态 .

    希望这有帮助!

    更新2/7/2018:最近的一个upvote让我想起了这个问题的存在 . 自问这些年以来,我为NetLogo做了一个python extension,主要是为了更容易将机器学习算法与模型集成 . 当模型运行时,扩展的One of the demos训练使用深度Q学习的代理集合 .

相关问题