當前位置: 華文問答 > 遊戲

如果用強化學習來打王者榮耀?有什麽設計演算法的思路和需要考慮的地方?

2017-06-07遊戲

對於強化學習在遊戲AI領域的套用,上次我們提到了:人工智能的電腦打英雄聯盟LOL能拿冠軍嗎? - 知乎

理論上,對於有明確目標的演算法模型都可以用 強化學習 來嘗試,如遊戲AI。不過實際上,強化學習在遊戲AI中的套用更多時候是為了驗證和偵錯演算法模型的準確性。透過傳統的簡單遊戲已經驗證了部份強化學習演算法,而對於英雄聯盟、王者榮耀這種復雜的即時策略類遊戲,其演算法設計會相對復雜很多。

雖然強化學習在傳統的機器學習分類中沒有被提及,但事實上它已經能夠幫助解決深度學習中很多智能控制和分析預測等領域的實際問題,比如透過使用者反饋來最佳化人機之間的多輪對話策略,以及在自然語言生成中,竹間智能都套用到了強化學習演算法,並取得了良好的效果。此次 竹間智能 機器學習科學家 李思文 ,將結合王者榮耀遊戲AI來繼續分享一些強化學習演算法設計上的思路。


就目前來說,在王者榮耀這類 「復雜」 的遊戲中訓練出高水平 「類人」 AI的難度確實大,不過如題所述,在此討論的是有什麽設計演算法的思路和需要考慮的地方。

1. 首先,如何定義「類人」

  • AI的行為是動態、有記憶的,是能基於新的環境資訊做調整的。
  • 類似王者榮耀的遊戲 dota, 推測其內建人機對戰的AI並非reinforcement learning (「推測」不代表一定),而是可能由大量邏輯堆積的,執行邏輯是固定的而不是動態的。玩家和開發者也可用透過 dota bot script (lua) 進行自訂AI:https:// developer.valvesoftware.com /wiki/Dota_Bot_Scripting 。

  • AI實作 ultimate goal (獲勝) 的手段是 policy,而非透過利用電腦超越人的「手速」優勢來獲勝。
  • 正如上面討論提到的: https:// deepmind.com/blog/deepm ind-and-blizzard-release-starcraft-ii-ai-research-environment/ 「Computers are capable of extremely fast control, but that doesn’t necessarily demonstrate intelligence, so agents must interact with the game within limits of human dexterity in terms of 「Actions Per Minute」.」 應該讓 AI的 APM 和人一致才行。


    2. 王者榮耀這類遊戲,到底「復雜」在哪裏

    在只考慮對一個AI(agent)做強化學習調教的情況下 實際情況是 multi-agent system, 需要協作和群體智慧),需要定義好:

  • Environment, agent state.
  • 傳統適合RL的簡單遊戲例如「Cart Pole」,甚至「 Flappy Bird」,他們的時空抽象化都是簡單的,且對於goal,其environment 是 fully observable。然而,對於王者榮耀這類遊戲,一方只能基於友方單位視野看到地圖,所以 environment是 partially observable 的,這就需要增加一批探索陰影地圖的action。對於 state 的抽象描述,基本就是參考2-D matrix來描述地圖了(方便作為DQN CNN的輸入),但王者榮耀這類遊戲的復雜在於, 不能用單一空間座標來描述state ,state的所有潛在「feature」至少包括:各單位的位置和攻擊,地圖可視範圍(白天和晚上也不一樣),各單位目前攜帶物品及使用範圍,各單位目前所學技能及施法範圍,各單位血量藍量等所有會影響action decision的,需要把這些 「feature」分成不用的layer, 每個layer類似DeepMind對星際爭霸采用的 「low resolution RGB image data for map & minimap」,見下圖:

    圖片:截圖自https://www. youtube.com/watch? v=5iZlrBqDYPM ,StarCraft II DeepMind feature layer

  • Action.
  • 不同於傳統適合RL的簡單遊戲,如「Cart Pole」、「Flappy Bird」等,Flappy Bird的action只有左右或上下的移動。而類似王者榮耀這類遊戲,其復雜之處在於 action 多 ,例如基礎的action:移動類的有8個移動方向,還有普通攻擊類、使用技能類、買賣物品、使用物品等。

    此處會有問題:看起來基礎的 action 的個數也不是很多啊,怎麽說action多呢?答:簡單來說,比如cart pole 的基礎的action 只有2個:{左,右}移動,但https:// arxiv.org/pdf/1512.0767 9.pdf 裏Multi-Step Plan Environment 中考慮的 the action set is the set of all possible n-length action sequence,也就是把基礎的 action 序列作為真正考慮的 action set 中的一員,e.g. 當n=20時,基礎的action為{左,右}移動2種,也會有2^20=1e6量級的action數目。

    至於為什麽要用一串基礎action的序列來作為一個實際action,考慮到 n-length 無論n取1還是大於1,相對的完成goal所需的實際steps數和n是倒數關系,所以是否需要考慮 n-length action sequence ,是需要視實驗和所處問題的實際情況考慮的。例如王者榮耀遊戲的真實玩家操作會是一系列基礎action, 比如不會走向友方單位並攻擊,不會一買完物品並賣掉,所以實際action用 n-length action sequence的話,在遇到數目大的情況下,有一批針對性的解決辦法。

    例如: https:// arxiv.org/pdf/1512.0767 9.pdf ,裏面提出的 Wolpertinger Architecture, 其中的 action embedding 可以既能「generalize over the set of actions」,又能在效能上做到「sub-linear complexity relative to the size of the action set」,因此對於 action 多的問題,還是有希望解決的(註:另有一方的工作是基於用 multi- class classification的思想去解決action多導致的scale問題:https:// users.cs.duke.edu/~parr /icml03.pdf ;

    基於error-correcting output codes (ECOC是對 class數大時結合binary classifier對multi- class classification的最佳化):http://www. maia.ub.es/~sergio/link ed/aisp2012.pdf ;

    把learning complexity 從 O(A^2) 降低到了O(Alog(A))和O(log(A)):http://www. cs.bris.ac.uk/~flach/EC MLPKDD2012papers/1125768.pdf )

  • Goal.
  • Ultimate goal 肯定是我方推倒地方基地獲勝,但如果將goal直接設定為這個的,reward將是延遲很多的。如此一來在sparse feedback情況下,agent不太能學好(盡管可以用epsilon-greedy的方法讓agent多嘗試不用的action)。於是https:// arxiv.org/pdf/1604.0605 7.pdf 提出了一種 hierarchical-DQN (h-DQN) framework,在時間尺度上切分出 intrinsically generated goals,讓agent intrinsically motivated的情況下探索新的行為去解決這些intrinsically generated goals,最終 learn an optimal policy to chain them together。過程是(a) 有個top-level module (meta-controller)去選generated goal,(b) 有個lower-level module (controller) 去達成或者關閉這個generated goal,然後這個 meta-controller 反復重復(a)-(b)。

    在王者榮耀裏也可以參考類似做法,比如為了實作ultimate goal推倒對方基地獲勝,裏面能舉出一些 intrinsically generated goals by time scale,例如:5分鐘左右集合團戰團滅對方,10分鐘左右要推倒對方幾座防禦塔等,具有參考意義。


    雖然就目前來說在王者榮耀中實作類人AI會比較難,並且更多真實世界裏的任務是難於遊戲AI的,但人也要像 RL 裏的 agent一樣不斷exploration&exploitation,才能實作最終的 goal.

    The field of Machine Learning seeks to answer the question :「How can we build computer systems that automatically improve with experience?」

    ---Tom M. Mitchell, Machine Learning, 1997


    另外對於王者榮耀、星際爭霸這類遊戲,除了RL以外,其本質上也是multi-agent system 問題。下次再深入談談。

    本回答來自竹間智能 機器學習科學家 李思文。