
不要打已死的無人機:action masking 如何讓 AI 快 10 倍學會防禦決策
更有趣的是行為層面。論文的視覺化截圖顯示,RL agent 面對多架無人機同時逼近時,會主動把資源集中在高價值區域,對低威脅目標降低優先級。這個策略沒有人明確編程給它,它是從大量模擬互動中浮現出來的。
50 架無人機從邊界湧入。它們有快有慢,有大有小,炸藥載量也各不相同。防線只有 4 組攔截武器,每組射擊後需要冷卻。三個關鍵設施分散在不同位置,價值也不一樣。
每 0.1 秒,系統要做一次決策:這 4 組武器,各自去打哪架?
這不是一個能靠直覺解決的問題。
規則系統的侷限
傳統做法是寫規則。「距離最近的優先」、「爆炸力最大的優先」,這類啟發式邏輯說得通,實作也快。問題在規模。
當 50 架無人機同時逼近,靠距離排序,4 組武器可能全擠向同一個象限,讓另外兩個設施完全無人看守。靠爆炸力排序,會忽略武器當前的狀態。一組武器正在轉向(chasing 狀態),還需要幾步才能鎖定目標,這時候貿然指派它去打「最危險的」,不如讓另一組已鎖定的武器先出手。
規則無法在多個武器之間做動態協調,也無法預測長期後果。它只看當下。
Alessandro Palmas 在 2025 年發表的這篇論文,想用強化學習取代規則層。
訓練出了問題
強化學習的思路是:不寫規則,讓 AI agent 在模擬環境中反覆試錯,自己學出最好的策略。把問題形式化為 POMDP(部分可觀測馬可夫決策過程),讓 agent 在每一個 timestep 觀察環境狀態,選擇每組武器的目標,收到回饋,更新策略。
訓練卻比預期慢得多。
問題出在動作空間。每一步,agent 可以選擇的目標包含所有 50 架無人機,無論它們是否仍在飛行。已被擊落的無人機、已撞上目標的無人機,都還出現在選項裡。在強化學習的框架下,agent 要通過負面回饋才能學會「這個選擇沒有意義」。它必須不斷犯這個錯,才能把它學走。
這是一種系統性的浪費。
刪掉蠢選項
解法叫做 action masking。做法很直接:每一個 timestep,系統根據當前環境狀態,動態生成一張可用目標清單。已被中和或已撞上目標的無人機,從選項裡移除。agent 的動作空間隨著情境即時縮小,它不需要學「不要打死的目標」,因為死的目標根本不出現在面前。
這個改動的成本幾乎是零。維護一張即時更新的黑名單,額外計算量可以忽略不計。
效果是:MaskedPPO 的收斂速度,比標準 PPO 快了整整 10 倍。
結果
這篇論文的評測設計很嚴謹:50 架無人機,4 組防禦武器,3 個保護區域,每組設定跑 100 次模擬,重複 5 個隨機種子,共 500 次完整模擬。比較對象是一套精心設計的規則基準。
數字如下:RL agent 把平均傷害從 52.14% 壓到 40.70%,降幅 22%;追蹤效率從 53.29% 提升到 66.81%,提升 25%;武器利用率從 54.99% 提升到 63.29%,提升 15%。
更有趣的是行為層面。論文的視覺化截圖顯示,RL agent 面對多架無人機同時逼近時,會主動把資源集中在高價值區域,對低威脅目標降低優先級。這個策略沒有人明確編程給它,它是從大量模擬互動中浮現出來的。
規則系統沒有「高價值區域值得集中防守」這個概念,只有固定的排序邏輯。
「不做什麼」也是決策
這篇論文最值得細看的地方,不是 RL 比規則好這個結論,而是 action masking 背後的設計思路。
給決策系統更少的選擇,有時候比給它更多資訊更有效。把無效選項從動作空間裡清除,學習變得更快,策略也更穩定。在這個案例裡,零成本的介入帶來了 10 倍的訓練效率。
「不做什麼」和「做什麼」,從來都是同等重要的決策。