比如在玩井字棋Tic-tac-toe时,可允许的动作空间是随状态改变的,我们只能把棋下在没下的那些位置上,在训练初期,如果我们的Q网络输出的是一个不被允许的动作,这时该怎么办?
如果用A2C训练,policy网络对于不能采用的动作应该怎么设置?
动作变化不是特别大的话,可以加一个约束条件。选择动作时候,从满足约束的动作里选择。SMAC上的一些算法就是这样实现的。
网络输出logit后,加mask,再softmax选择动作,更新mask
JiahuiSun 所以mask要存放在replay buffer里是吗?