奖励功能,避免违法行为,尽量减少违法行为并学会取胜 - 强化学习

数据挖掘 机器学习 神经网络 深度学习 强化学习
2022-03-05 01:01:30

我目前正在为具有以下特征的游戏实施 PPO:

  • 观察空间:9x9x(>150)
  • 行动空间:144
  • 在给定的状态下,只有少数动作(~1-10)是合法的
  • 时间步长 t 中的状态与状态 t+1 有很大不同
  • 环境是偶发的(约 25 步,取决于级别),并以胜利或松散结束
  • 在某些关卡中,随机策略(如果仅采取法律行动)可能会导致胜利,在某些关卡中需要策略。

我希望算法学习:

  • 尽量避免违法行为,最好只采取合法行为
  • 学会打法的最佳组合,以最快的速度取胜

我尝试了不同的奖励功能,到目前为止最好的一个是:

  • 非法行为:-0.10
  • 法律行动:+0.10
  • 赢:+1.0

我在一个随机策略会击败的简单级别上对其进行了测试。在我训练期间,我的策略学会了采取大约 80% 的法律行动,但从未成功。如果我跑得更久,也许会开始赢,它可能会上升得更多。

上述奖励函数的问题在于,它不鼓励以尽可能少的动作获胜,因为每个合法动作都会获得正奖励。

我还尝试了以下奖励功能:

  • 非法行为:-0.10
  • 法律行动:-0.02
  • 赢:+1.0

但它收敛到大约 20% 的合法动作。

我有两个问题:

  1. 任何熟悉类似问题的人都知道我如何设计奖励功能?
  2. 有谁知道他们讨论学习三个不同目标的问题的任何论文:避免非法行为、获胜和通过最少数量的行为获胜?
2个回答

您是否希望您的代理人在任何给定时间执行非法行为或根本不执行?避免非法操作的一种方法是在计算 softmax 概率时在 144 个操作向量上使用掩码(因此保留操作索引)。然后根据掩码概率对操作进行采样。首先,您需要确定在给定步骤中哪些行为是非法的,这取决于游戏的动态。一个例子是用于学习在星际争霸 II 中玩迷你任务的算法。

为了强制你的代理以最少的步数行动,你应该引入一个小的惩罚(比如说 -0.01),这样你的代理也会尝试优化这部分奖励。

对于赢得比赛的问题,没有答案。这取决于许多因素,我在此仅举几例:给定游戏的代理架构、奖励稀疏性、观察类型(图像、非矢量数据)、数据预处理、代理的输入、探索量等。无法保证如果您使用 X 类型的方法将解决您的任务(除非您的任务已经由特定类型的学习者解决)。您可以命名您想要解决的游戏/任务。

RL 书籍中给出的大多数网格世界示例对每一步都使用 -1 的奖励,直到达到最终状态。这鼓励算法以尽可能少的步骤达到最终状态。因此,对于每一项合法行为,您都可以给予 -1 的奖励,为了避免在某个状态下的非法行为,您可以给予 -10 左右的奖励。由于您说每集可能有大约 25 个步骤,因此将获胜奖励增加到 25 个以上,例如 50 个,以便算法了解获胜更重要,因为它提供了更多奖励。