为什么健身房环境不带有“有效动作”?正常的健身房环境接受任何操作作为输入,即使它甚至不可能。
这是强化学习中的正常现象吗?模型真的必须一直学习什么是有效动作吗?env.get_valid_actions()有一个函数让模型知道哪些动作是可行的不是更好吗?或者这是否有可能而我错过了它?
为什么健身房环境不带有“有效动作”?正常的健身房环境接受任何操作作为输入,即使它甚至不可能。
这是强化学习中的正常现象吗?模型真的必须一直学习什么是有效动作吗?env.get_valid_actions()有一个函数让模型知道哪些动作是可行的不是更好吗?或者这是否有可能而我错过了它?
一般来说,如果代理在给定的环境中根本无法采取无效的行动(例如,由于严格的游戏规则,如国际象棋),那么标准做法是通过提供某种环境来支持函数或过滤器,状态中可用的动作集.
但是,似乎基本的 Gym 界面不支持它,并且没有计划支持它。
您仍然可以使用该env.step方法编写一个在 Gym API 中提供此信息的环境,方法是将其作为info字典的一部分返回:
next_state, reward, done, info = env.step(action)
返回值可以包含自info定义环境特定数据,因此如果您正在编写一个有效操作集根据状态更改的环境,您可以使用它与您的代理进行通信。需要注意的是,您的环境和代理都将按照您为此发明的约定工作,并且相同的方法不会扩展到其他环境或被其他代理的开发人员使用。
或者,您可以支持以 Gym API 未涵盖的任何其他自定义方式计算有效操作 - 环境上的新方法,游戏的单独“规则引擎”等。代理和环境都可以调用它以正确执行其角色。
没有官方 API 的情况可能会发生变化,但从链接的 Github 问题来看,Open AI 开发人员似乎为此考虑了一个通用接口,它占了所有不同类型的动作空间,比它更努力曾经值得。