A Closer Look at Invalid Action Masking in Policy Gradient Algorithms
Shengyi Huang, Santiago Ontañón
cs.LG, cs.AI, stat.ML
2020-06-25
把无效动作的logit打成大负数再softmax,梯度仍合法;μRTS上掩码在各地图都拿到满分40,惩罚法随地图变大几乎探不到奖励。
StarCraft、Dota 这类游戏的合法动作随状态变。工程上会把所有状态的动作并成一个固定离散空间,再从里面采样。Dota 2 的全空间有 1,837,080 维,随手一抽经常是买不起的装备、走进墙、选中敌方单位。业界通行做法是把无效动作掩掉,只在合法集合里采样。论文认为这件事一直被当成实现细节,缺少策略梯度层面的证明,也缺少「无效动作变多时到底差多少」的对照。
另一种土办法是给无效动作加负奖励,让策略自己学会别点。动作空间一大,这个信号会把探索淹死。
策略网络先出 logits,再 softmax。掩码把无效维换成一个很大的负数 M(例如 -1e8),softmax 之后这些维的概率接近 0,对应梯度也接近 0。关键命题:掩码对每个状态要么是恒等、要么是常数,两者都可微,所以掩码后的分布 π' 仍满足策略梯度定理的可微假设。更新用的是 π' 的对数概率,不是未掩码分布的对数概率。
对照四条策略,都用 PPO,环境是 μRTS 收资源:工人采矿 +1,送回基地再 +1,满分大约 40,最长 200 步。动作是 8 段 MultiDiscrete,源单位和攻击目标的范围随地图边长平方涨。地图 4×4、10×10、16×16、24×24。四条策略是:
掩码并不完整,只盖源单位和攻击目标,动作类型参数仍可能非法。
正规掩码在四张图上都把回合回报打到 40,第一次正奖励出现在总步数的 0.05%–0.08%,收敛大约占总训练的 9%–18%。惩罚法在 4×4 还能干活(rinvalid=-0.01 时回报 40),10×10 及以上回报掉到 0–1,有时连第一个 +1 都要耗掉训练的百分之几。rinvalid=-1 在小图上会抑制探索,表现最差。
| 策略 | 地图 | 回合回报 | 首次正奖励占总步数 |
| 掩码 | 4×4 到 24×24 | 40.00 | 0.05%–0.08% |
| 惩罚 -0.01 | 4×4 | 40.00 | 0.51% |
| 惩罚 -0.01 | 10×10 | 0.50 | 1.57% |
| 惩罚 -0.01 | 24×24 | 0.50 | 1.92% |
| 朴素掩码 | 24×24 | 38.50 | 0.07%(收敛却要 49%) |
朴素掩码回报有时更高,4×4 上到 59.61,因为学会跑去地图另一头再采。但 PPO 的 KL 发散明显更大,24×24 上收敛占用 49% 训练步,对更难任务不稳。训练有掩码、测试去掉之后,4×4 还能拿到 33.53,24×24 掉到 17.37,仍明显高于惩罚法,说明掩码训练多少把「别选非法单位」写进了权重,只是大图上保不住。
这是把「掩掉非法动作」从工程口诀写成策略梯度事实,并给出随非法动作膨胀的对照。做大离散动作空间的人,掩码应该是默认项,不要指望负奖励自己教会合法性。采样和更新必须走同一套掩码后分布;只在采样时掩、反传时不掩,看起来能学,KL 会炸。
任务本身只是收资源,不是完整对战。结论该当成「探索效率」的证据,不是 RTS 强度的证据。
掩码只打在两个动作分量上,并不是规则全集。环境用了 9 帧跳帧,时序和真实 RTS 不同。每组 4 个种子,曲线噪声不小。去掉掩码后大图明显退化,部署时如果规则引擎暂时给不出 mask,不能假设策略还能用。μRTS 的合法动作仍可用规则算出来;更脏的动作空间里,mask 本身从哪来,这篇没谈。