用數學方法分析哪類遊戲中的AI難度最大
2019年是AI在遊戲領域全面開花的一年。
1月,DeepMind開發的AlphaStar在《星際爭霸II》比賽中以5:0戰勝了職業選手MaNa;4月,OpenAI開發的OpenAI Five在《Dota 2》比賽中2:0戰勝去年的TI 8冠軍OG;7月,Facebook和CMU聯合開發的Pluribus在6人不限注德州撲克比賽中戰勝人類世界冠軍;8月,微軟開發的Suphx在專業麻將平臺“天鳳”上榮升十段,躋身僅10餘位的現役十段選手之列。
自2016年AlphaGo橫空出世、掀起遊戲AI浪潮以來,圍棋、星際爭霸、Dota、德撲、麻將,一座座號稱“人類智慧高地”的遊戲被AI逐一攻克。
一個常見的疑問是,AI挑戰過的這些遊戲,它們的複雜度能否有一個直觀的衡量和對比呢?接下來,我們會從狀態空間和操作序列空間這兩個維度,來嘗試衡量一款遊戲的複雜度。對AI來說,前者反映了輸入資訊的複雜度,後者反映了輸出行為的複雜度。
狀態空間
狀態空間(State Space)反映了遊戲過程中所有符合規則的狀態的總數量。通常情況下,為了便於計算,估算時會包含進一些不會在現實遊戲中出現的情況。比如在估計井字棋的狀態空間時,會考慮所有位置均為X或均為O的極端情況,得到3^9這個結果。(盤面上共有9個位置,每個位置可能的取值有X、O或空缺這3種)
井字棋狀態空間計算
在圍棋中,考慮到盤面上一共有19*19=361個位置,每個位置可能的取值有黑子、白子或空缺這3種(包含進了棋盤全為黑子或全為白子的極端情況)。因此圍棋的狀態空間為3^361≈10^172。
圍棋狀態空間計算
麻將的狀態空間會複雜一些,但還是可以做個近似的估算。在不考慮吃碰槓等情況的前提下,在一局麻將中的任一時刻,我們把136張麻將牌分為三類:第一類是遊戲最後剩下的14張牌,由於這些牌不會被用到,所以不用考慮先後順序,這裡的可能情況是C(136,14)種;第二類是四個玩家各自手裡的13張牌,這些牌也沒有順序,所以對應的可能情況有C(122,13)*C(109,13)*C(96,13)*C(83,13)種;第三類是剩餘的70張牌,這些牌要麼還未被翻開,要麼已經被某位玩家打出,這兩種情況都是有先後順序的(因為順序變化會影響到對勝率的預估),對應的情況是先對70張牌取排列數=P(70,70),然後每個排列可以從70個位置中的任一位置形成斷點(斷點前為玩家打出牌的序列、斷點後為未翻出牌的序列),總可能情況是P(70,70)*70。將三類牌的可能情況數做連乘,結果約等於10^184。
麻將狀態空間估算
德州撲克的計算方式會更復雜一些。在兩人有限注德撲中,遊戲有4個回合,每回合雙方共有至多4次下注機會,狀態空間為10^17[1]。在兩人不限注德撲中,由於下注額沒有限制,變化會多很多,狀態空間為10^165[1]。(詳細計算過程可參見附錄連結)
而對於Dota2和星際這樣的遊戲來說,由於遊戲本身的狀態是連續的,無法拆分成離散的節點,不能像之前那樣計算。這種連續體現在兩個方面:一是時間層面的連續,遊戲中的行動是即時的(而非回合制的),這導致無法在時間上分別計算不同的狀態空間再做累加。不過鑑於任一時刻的決策其實只依賴於當前狀態(在完全相同的當前狀態下,玩家之前是先造的兵營再造的補給站、還是先造的補給站再造的兵營,並沒有差別),我們可以不考慮歷史狀態、僅計算截面狀態的數量;二是空間層面的連續,座標、移動方向、技能方向等都是任意的(玩家可以左轉30度,也可以左轉30.01度),這導致我們必須對狀態做簡化,否則狀態空間會無窮大。
具體來說,對於Dota 2,(在簡化後)假設把地圖劃分為100*100個區塊,當前時刻存在10個英雄,假設每個英雄有50個屬性(包含裝備情況、技能CD等)、每個屬性有100個取值,則對應的狀態空間為(100*100*100^50)^10≈10^1000。這裡還沒有考慮進野怪、防禦塔、兵線等資訊。
OpenAI Five對單個英雄的觀測內容
對於星際,(在簡化後)假設把地圖劃分為128*128個區塊,假設當前時刻同時存在200個單位、每個單位有20個屬性、每個屬性有10個取值,則對應的狀態空間為(128*128*10^20)^200≈10^5000。
AlphaStar與人類高手MaNa對戰時的視覺化介面
需要說明的是,對於麻將、德撲、星際、Dota2這類不完美資訊遊戲(Imperfect-Information Games)來說,參與者無法隨時訪問全部遊戲資訊(比如其他玩家的手牌、戰爭迷霧中的情況等),這給AI帶來了更大的挑戰,很難使用傳統的蒙特卡洛樹搜尋方法。
操作序列空間
操作序列空間反映了遊戲中所有不同操作序列的數量。也很難精確計算,一般的估計方式是利用平均動作空間(Action Space)和遊戲長度(Game Length)這兩個引數。前者表示每次操作的平均可執行動作數,後者表示整局遊戲中的總操作次數。操作序列空間=平均動作空間^遊戲長度。
圍棋中,平均一局遊戲進行150手、每一手平均有250個解,因此操作序列空間為250^150≈10^360。
麻將中,每局遊戲至多會進行17.5輪((136張牌-14張底牌-13張手牌*4家)/每輪出4張牌),考慮吃碰槓帶來的增加和提前胡牌帶來的減少,假設平均進行15輪,每輪從14張手牌中選一張打出,因此操作序列空間為14^15≈10^17。
德州撲克中,兩人有限注德撲的操作序列空間≈10^15[1],兩人不限注德撲的操作序列空間≈10^162[1]。(詳細計算過程可參見附錄連結)
Dota 2遊戲中,根據OpenAI在OpenAI Five部落格[2]中披露的資料:遊戲時長45分鐘、每秒鐘30幀,共計80,000幀,AI每4幀進行一次操作,共計20,000次操作,這是遊戲長度。任一時刻每個英雄可能的運算元是170,000,但考慮到其中大部分是不可執行的(比如使用一個尚處於冷卻狀態的技能),平均的可執行動作數約等於1,000,也即動作空間。因此,操作序列空間約等於1000^20000=10^60000。
星際遊戲中,根據DeepMind在AlphaStar現場訪談[3]中披露的資料:平均動作空間約等於10^26,遊戲長度在1,000級別,我們假設為2,000,則操作序列空間為(10^26)^2000≈10^52000。
下表整理了上述5款遊戲在狀態空間和操作序列空間這兩個維度的複雜程度,我們也加入了一些更簡單的棋牌遊戲作為對照[4]。
部分遊戲的狀態空間和操作序列空間大小
總結
從上表不難發現,更大的狀態空間和操作序列空間意味著更復雜的遊戲,往往也意味著更高難度的AI訓練。向未來看,伴隨著更大的遊戲地圖、更多的同局玩家數、更復雜的屬性維度,狀態空間會進一步增加;而伴隨著更多的操作選項、更快的操作手速、更長的遊戲時間,操作序列空間也會進一步增加。
百尺竿頭,更進一步。我們期待AI能逐一攻克更難更復雜的遊戲。
作者:可厲兒
來源:超引數科技
原地址:https://mp.weixin.qq.com/s/g_NKLYp_gQ23YzGNEUeGOg
相關文章
- Game with points(數學,難度中)GAM
- LearnFast.ai:用AI高效解決數學和物理難題的體驗分享ASTAI
- AI研究中數學和演算法哪個優先?AI演算法
- 學習C++程式語言的最大難度是什麼(轉)C++
- 冒險島中的BOSS難度評級及分析。
- 遊戲為何而難? 談談遊戲的難度設計遊戲
- 場景分析:遊戲關卡難度對玩家流失的影響遊戲
- HttpServletRequest中的方法是哪個類實現的?HTTPServlet
- 演算法陣列中降序數列的最大長度演算法陣列
- 機器學習中的維度災難機器學習
- 變數的策劃日誌(三):遊戲節奏與難度控制變數遊戲
- 機器學習系列文章:引數方法(最大似然、分類)機器學習
- Java坑人面試題系列: 包裝類(中級難度)Java面試題
- AI在視訊遊戲中的應用AI遊戲
- 別再只懂得調數值了,動作遊戲的怪物難度還有這些設計方法遊戲
- 談談遊戲難度設計遊戲
- 如何設計高難度遊戲遊戲
- JS中的類很難嗎?JS
- 用一個巨集實現求兩個數中的最大數
- 用jquery控制圖片的最大寬度jQuery
- 遊戲到底難不難,是誰說了算? 關於遊戲難度與玩家技巧的那些事遊戲
- 2023年遊戲人最大的體驗:“做遊戲好難”遊戲
- Java中查詢給定數字下最大素數的2種方法Java
- 深度強化學習的人工智慧在遊戲中的運用:遊戲AI入門及AI優化指南強化學習人工智慧遊戲AI優化
- 用分析函式分析每行裡面列值重複的列的最大個數函式
- 談談三消遊戲關卡的難度控制問題:元素難度評分機制遊戲
- 11月份手遊買量市場分析:三國類、傳奇類遊戲投放力最大遊戲
- 人工智慧(AI)在遊戲中的應用(下)人工智慧AI遊戲
- 機器學習中的數學-07-偏度與峰度機器學習
- 中輕度混合類遊戲的機會與創新趨勢遊戲
- AI在汽車中的應用:實用深度學習AI深度學習
- mysql中數值型資料有哪兩個類別?MySql
- IIS連線數、併發連線數、最大併發工作執行緒數、應用程式池的佇列長度、應用程式池的最大工作程式數詳解執行緒佇列
- 遊戲雜談:生存類遊戲中,“飽食度”“口渴值”有時並非必需的遊戲
- eclipse plugin development中 java eitor使 用的是哪個類啊EclipsePlugindevJava
- 如何降低Web前端學習難度?Web前端
- 如何讓AI理解數學?Facebook神經網路透過「語言翻譯」求解數學難題AI神經網路
- 求字串中對稱的子字串的最大長度字串