强化学习模型设计——如何加到5

reinforcement learning model design - how to add upto 5

我正在使用 Keras 在 python 中试验强化学习。大多数可用的教程都使用 OpenAI Gym 库来创建环境、状态和动作集。

在练习了很多别人写的好例子之后,我决定要创建自己的强化学习环境、状态和动作集。

这就是我认为教机器做的事情会很有趣。

  1. 从 1 到 4 的整数数组。我将调用这些目标。

targets = [[1, 2, 3, 4]]

  1. 附加号码列表(随机)从 1 到 4。我将调用这些项目符号。

bullets = [1, 2, 3, 4]

  1. 当我向一个目标发射子弹时,目标的数量将是原始目标数量+子弹数量的总和。
  2. 我想向其中一个目标发射一颗子弹(一次一颗)
  3. 例如,给定目标 [1 2 3 4] 和子弹 1,我希望机器预测要射击的正确索引。
  4. 在这种情况下,它应该是索引3,因为4 + 1 = 5

    curr_state = [[1, 2, 3, 4]]

    bullet = 1

    action = 3 (<-- index of the curr_state)

    next_state = [[1, 2, 3, 5]]

我一直在绞尽脑汁想出将其构建到强化设计中的最佳方法。我尝试了一些,但模型结果不是很好(意思是,它很可能无法成为第 5 名)。

主要是因为状态是二维的:(1)目标; (2)当时的子弹。到目前为止,我采用的方法是将状态转换如下:

State = 5 - targets - bullet

我想知道有没有人能想出更好的方法来设计这个模型? 提前致谢!

好的,看来没人帮你,所以我就按照你说的给你写了一个Python环境文件。我还为您制作了尽可能多的 OpenAI 风格,这是它的 link,它在我的 GitHub 存储库中。您可以复制代码或分叉它。我将在下面解释:

https://github.com/RuiNian7319/Miscellaneous/blob/master/ShootingRange.py

状态 = [0, 1, 2, ..., 10]

操作数 = [-2、-1、0、1、2]

因此游戏从 0 - 10 之间的随机数开始(如果需要,您可以轻松更改),随机数就是您上面描述的 "target"。给定这个目标,你的 AI 代理可以开枪,它会发射与上面数字相对应的子弹。 objective 是你的子弹和目标加起来为 5。如果你的 AI 代理超过 5,或者目标是大于 5 的数字,则有负值。

要获得正奖励,agent 必须获得 5。因此,如果当前值为 3,而 agent 射击 2,则 agent 将获得 1 的奖励,因为他获得的总值为 5,那一集将结束。

游戏有3种结束方式:

1) 特工获得 5

2) Agent 在 15 次尝试中未能获得 5

3) 数字在10以上,这种情况下,我们说目标太远了

有时,您需要射击多次才能获得 5 次。因此,如果您的代理射击,其当前子弹将被添加到状态,并且代理会从该新状态再次尝试。

示例:

当前状态 = 2。智能体射击 2。新状态为 4。智能体在下一个时间步从 4 开始。这 "sequential decision making" 创建了强化学习环境,而不是上下文老虎机。

我希望这是有道理的,如果您有任何问题,请告诉我。