【问题标题】:deal with illegal move on Reinforcment Learning处理强化学习的非法举动
【发布时间】:2021-12-20 10:58:14
【问题描述】:

我正在尝试创建一个代理来玩“nim”游戏。

(数字是与每个链接关联的“id”)

我创建了一个健身房环境。

我的观察空间是: 整数类型的 Box(0,2, shape=(,144))。

有 144 个可能的链接

0 = 无链接

1 = 我们连接的链接

2 = 被对手连接的链接

我的行动空间是: 离散(144) 我们选择了要连接的链接号。

一开始所有144个链接都可以连接 随着游戏的进行,链接已连接,我们无法在已连接的链接上玩。

我的奖励是:

  • 如果我们连接一个链接,+100
  • -1000 如果对手关闭一个盒子
  • 如果我们关闭一个盒子,+1000
  • -10000 如果对手赢得比赛
  • 如果我们赢了比赛,+10000
  • -100000000 如果我们采取不合理的行动

这是我用来训练代理的代码:

env = DotsAndBoxesEnv()
state = env.reset()
model = A2C('MlpPolicy', env, verbose=1, tensorboard_log=logPath)
model.learn(total_timesteps=1000000)

问题是代理在我训练它时只使用非法动作。 更准确地说,他一遍又一遍地演奏同一个号码。

我怎样才能改进他的训练?

【问题讨论】:

    标签: python deep-learning reinforcement-learning openai-gym stable-baselines


    【解决方案1】:

    我在自定义多人游戏环境中遇到了类似的问题。原因似乎是我的经纪人正在训练的对手是RNG,基本上,它只是选择随机的合法动作。我的猜测是,对手的随机移动提供的训练信息太少,而 nnet 不能仅仅弄清楚如何移动。

    为我解决问题的是我决定让对手使用 MiniMax 算法,因此它的行为背后至少有一些逻辑。这似乎解决了仅 10 分钟训练后 nnet 选择非法动作的问题。

    【讨论】:

    • 我让我的对手发挥了第一个可能的举动,它没有改善。还很糟糕吗?因为即使让我的对手走第一个可能的动作,随着时间的推移,我也没有更好的结果。
    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 2013-12-06
    • 2018-11-05
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多