DOTA 5v5 AI 亮點不是如何「學」,而是如何「教」

作者 | 發布日期 2018 年 08 月 08 日 10:19 | 分類 AI 人工智慧 , 遊戲軟體 follow us in feedly

美國時間 日下午,OpenAI 主辦的線下比賽(OpenAI 稱為「OpenAI Five Benchmark」)一共進行了四局比賽。第一局 名現場觀眾組成的路人隊伍被 分鐘破中路二塔,分鐘上路上高地,12 分鐘破兩路,人頭比 264,可說是完全輾壓。



之後三局比賽是重頭戲,OpenAI Five 對陣 位前職業選手(BlitzCapFoggedMerlini)與一位現任職業選手(MoonMeander)組成的高手隊伍。第一局依然慘敗,21 分鐘破第二路高地,人類選手打出 GG,人頭比 398。第二局人類選手選擇更強的控制、更積極的打法,卻也只堅持 24 分鐘,人頭比 4112。這樣,三局兩勝的比賽就告終了。

▲ 第二局人類高手比賽結束後,OpenAI CTO Greg Brockman 依序向 位職業選手(前)擁抱致意。

勝負已分,第三局就純娛樂,現場觀眾幫 OpenAI Five 選了 個不怎麼厲害的英雄,最後果然讓人類玩家獲勝。

不過除了比賽比分,廣大強化學習研究人員和人工智慧愛好者還有一個深深的疑問就是,這樣的 AI 是如何訓練出來的。

毋庸置疑,DOTA 遊戲的複雜度比圍棋高,回饋也相當稀疏,即使選用 OpenAI 開發非常成熟的大規模分散式 PPO 實現「Rapid」,也難以直覺信服「只要有足夠訓練時間,就能學到如此豐富的遊戲行為」。比如首先 OpenAI Five 團隊協作表現出人類一樣的明確核心和輔助英雄,比如據 OpenAI 的研究人員介紹 OpenAI Five 也會選擇打肉山,只說這兩件事就都是人類玩家需經有意識的策略判斷和執行才能做出,強化學習演算法現在就有這麼高層次的思維了?不太可能吧!

下面這些 日比賽瞬間也值得玩味:

▲ 比賽進行到 20 分鐘,AI 的巫妖去看肉山。實際上整場比賽 AI 的英雄時不時就會去看看肉山。

▲ Blitz 的影魔被 AI Gank,用暗影護符原地隱身,AI 的直升機和冰女兩個有 AOE 的英雄在附近還有一個 AI 隊友的情況下直接撤退了。現場解說評價「簡直是人類對隱身物品的濫用」。

▲ 還是天輝方的 Blitz 的影魔,繞樹林被 AI 方的眼看到。值得注意的是,這時候天輝方下路 2 塔都已經丟了,而這個夜魘方的眼就插在夜魘下路 1 塔外不遠的地方。這個眼位可算是非常保守、非常奇怪。

▲ AI 的火槍手很喜歡見面就給大,Blitz 的滿血影魔露頭就被大──這個策略其實非常有效,團戰中人類方的冰女經常在團戰開始前先被火槍大到半血,然後團戰一開始就馬上陣亡。

▲ 22 分鐘 AI 的冰女補出點金手,不過接下來 分鐘內都沒有使用。

強化學習的範式決定了「幫助帶來高回饋的行為」會更容易學到,而 DOTA 的複雜就在於,許多行為和最終遊戲結果之間的關聯似乎若即若離,大多數場合都有一錘定音效果的行為也許人類自己都說不清。即便相信 AlphaGo 能在反覆自我對局找到更好策略的人,也不一定相信 DOTA 如此複雜的環境下僅靠自我對局就可以學到定位、分路、補兵、先手、看肉山、插眼等系列行為。

結合 OpenAI 之前放出的一些資料和 OpenAI Five 開發團隊比賽現場的訪談,找到了「計算集群上相當於 180 年遊戲時間每天訓練」之外的,幫助我們理解更具體的 AI 達成端倪。相比說這些是「強化學習研究的小技巧」,我們更覺得這是「人類教學的小技巧」;相比 OpenAI Five 訓練中模型自己的探索行為,意義更重大的是人類成功把自己的知識和經驗設法教會了 OpenAI Five

  • 只使用最終比賽結果為回饋過於稀疏,所以 OpenAI 還增加一些評價人類選手表現的常用指標,比如總財產、擊殺數、死亡數、助攻數、補刀數等。這些指標的改進也會與比賽輸贏一起帶來回饋提升,促進模型學習(避免長時間停留在無效學習區)。
  • 同時為了避免 AI 過於關注這些偏向短期策略的資料,OpenAI 對基於指標的回饋設計並不是「指標數值越大越好」,而是只鼓勵 AI 在這些方面做到人類玩家的平均水準。這項巧妙的設計同時也可幫助 AI 學到不同英雄在團隊作戰的不同定位:以人類玩家的平均水準而言,火槍是核心英雄,應當高傷害匯出、高正補、高人頭、低助攻、低輔助行為,冰女則應當低正補、低人頭、高助攻、高輔助行為。資料指標的不同就可引領不同的行動策略。
  • DOTA 的英雄除了自身定位,之間也需要合作,比如抱團殺人拿塔。OpenAI 並沒有為 AI 之間設計顯性的溝通頻道,目前他們設計了一名為「團隊精神」的超參數,這個 0 1 之間的值會反應每個英雄關注自己的單獨回饋和整個團隊回饋之間的比例。訓練中 OpenAI 透過退火來最佳化這個值的具體大小。
  • 大家可能記得,OpenAI Five 剛發表時還不支援肉山。很快支援肉山之後,大家都很感興趣 OpenAI 團隊做了哪些改進。日比賽現場 OpenAI 的研究人員給了答案:正常的探索很難出現 個英雄都來到 Roshan 坑裡然後打了 Roshan 拿到正面回饋的情況,所以他們啟動模型學習的方法是,訓練過程把 Roshan 的血量設為隨機,那探索過程中英雄如果遇到血量很低的 Roshan,顯然就可輕鬆獲得高回饋,進而鼓勵 AI 開始關注 Roshan。不過同時 Roshan 也不是隨時都要打,隨機血量的設定會讓 AI 只有覺得能打過 Roshan 的時候才會打。
  • 從長期學習的角度講,只要有足夠訓練時間讓 AI 探索各種行為,人類覺得有幫助的各種遊戲作業,AI 最終都有機會學會(比如切假腿吃大藥,也比如打肉山),只不過 AI 做出夠多次數之前,都還無法形成有效的學習。人類希望 AI 快速學會的行為,可透過設計一些正回饋來鼓勵;另一方面,不常出現的局面,也會像我們對深度學習模型的正常預期,AI 並不知道該怎麼處理。
  • 關於裝備和眼,OpenAI 研究人員透露目前都是透過 API 編寫程式檔讓 AI 購買,AI 並不需要自己選擇;尤其是眼,目前程式檔設定是眼只要 CD 就會購買。這樣設定當然降低了訓練難度,讓 AI 享有穩定出裝,同時也給輔助英雄帶來有趣的結果:因為有眼就要買,就會占格子、遲早需要清出來,這成為一項促使 AI 插眼的動力;實際上,如果真的要為「插眼」本身設計回饋,OpenAI 研究人員發現,還真的很難找到任何指標量化眼插得好不好。所以這設計確實是一種簡單快捷的解決方案。

現在知道這些 OpenAI 的「教學」方法之後,再回過頭看看前面提到的 OpenAI Five 遊戲表現,是否顯得合理親切多了呢?

可說 OpenAI Five 開發團隊想了許多辦法,鼓勵 AI 用像人類的策略和作業玩 DOTA,但並不明確限制表現上限。人類玩家探索這個遊戲這麼久之後,借助人類的經驗快速避開低效的遊戲空間當然是一個好主意。從這角度講,OpenAI 現階段的 OpenAI Five 彷彿是早期 AlphaGo,以人類過往遊戲學習為基礎,然後嘗試提升和創新。

這套系統繼續最佳化之後在 DOTA2 國際邀請賽(TI)面對現役職業選手能有怎樣的表現,比現在明顯進化全面的(也許是 Master 版)OpenAI Five、甚至去掉一切約束完全自己探索的 OpenAI Five Zero 版,未來是否還有更多可能呢?我們拭目以待。

(本文由 雷鋒網 授權轉載;首圖來源:OpenAI

延伸閱讀: