0

我正在学习使用 Unity 和 Mlagents。我准备了一个培训环境,在其中我有一个必须按材料类型(金属、塑料等)回收对象的代理。

例如:当智能体碰撞一个塑料瓶并检测到它有一个塑料标签时,如果它与人类碰撞,则该物体会物理移动到一个用于塑料的空间,金属也会移动(并获得 +1 奖励)( Human Tag) 受到 -2 的惩罚。

到目前为止一切正常,经过训练(强化学习)的代理正确地实现了他的目的。

问题是内部代码仅包含以下行:如果代理与人发生碰撞,他将受到惩罚(-2)如果代理与墙壁发生碰撞,他将受到惩罚(-1)如果代理与塑料物体发生碰撞,物体移动到塑料的特定空间(+1)如果代理与金属物体碰撞,物体移动到金属的特定空间(+1)

问题:你如何给智能体一个“机会”,让他们在错误分类对象时犯错误,然后再从中学习?目前它只是在“如果”之后行动

我认为可能使用一些随机参数,当代理与对象碰撞时,它会随机将其分配给一个回收点,如果这导致不正确的回收点,它将受到惩罚,但是......代理可以从中学习吗?这意味着代理将在学习和训练期间“控制”随机参数。

我将不胜感激任何想法或建议。

4

1 回答 1

0

拥有一个训练有素的代理是导致它基本上只遵循 if 语句的原因。一个可能的解决方案是尽早中断其训练,并使用该模型。这样它就不会是完美的,但它会对做什么有一个大致的了解。

于 2020-06-12T19:34:29.267 回答