gym.spaces.box 观察状态理解
gym.spaces.box Observation State Understanding
所以我正在尝试使用健身房在自定义环境中执行一些强化学习,但是我对 spaces.box 的工作原理感到非常困惑。每个参数是什么意思?如果我有一个游戏状态涉及很多信息,例如角色的生命值、他们的统计数据和能力,我不太确定像这样的东西会在 Box 中表示为观察状态。同样在具有很多能力的游戏中,对它们进行单热编码还是将它们保留为常规增量 ID 会更好,因为我想使用神经网络来查找预期的 Q 值。
spaces.Box
表示您正在处理实数值。
例如:
action_space = spaces.Box(np.array([-1,0,1]), np.array([1,1,2]))
这里的动作是三维的。此外,[-1,0,1]
是最低可接受值,[1,1,2]
是最高可接受值。
本质上,a=[a1,a2,a3]
,
a1
在[-1,1]范围内,a2
在[0,1]范围内,a3
在[1,2]范围内.
如果有很多 "abilities" 并且种类繁多,那么如果使用 one-hot 编码,状态向量可能会变得非常大。因此,建议使用常规增量 ID。但是将它们归一化到 [0,1] 范围内,这样神经网络激活就不会饱和。
所以我正在尝试使用健身房在自定义环境中执行一些强化学习,但是我对 spaces.box 的工作原理感到非常困惑。每个参数是什么意思?如果我有一个游戏状态涉及很多信息,例如角色的生命值、他们的统计数据和能力,我不太确定像这样的东西会在 Box 中表示为观察状态。同样在具有很多能力的游戏中,对它们进行单热编码还是将它们保留为常规增量 ID 会更好,因为我想使用神经网络来查找预期的 Q 值。
spaces.Box
表示您正在处理实数值。
例如:
action_space = spaces.Box(np.array([-1,0,1]), np.array([1,1,2]))
这里的动作是三维的。此外,[-1,0,1]
是最低可接受值,[1,1,2]
是最高可接受值。
本质上,a=[a1,a2,a3]
,
a1
在[-1,1]范围内,a2
在[0,1]范围内,a3
在[1,2]范围内.
如果有很多 "abilities" 并且种类繁多,那么如果使用 one-hot 编码,状态向量可能会变得非常大。因此,建议使用常规增量 ID。但是将它们归一化到 [0,1] 范围内,这样神经网络激活就不会饱和。