網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI
網易伏羲實驗室在人工智慧領域積極探索,推出了遊戲行業人工智慧解決方案,橫跨AI反外掛、AI競技機器人、AI 對戰匹配以及 AI 劇情動畫製作四大AI能力,實現了AI 技術在遊戲行業的新突破。本次分享的內容就是源於AI卡牌競技機器人在遊戲中的運用經驗。
以下為分享實錄:
我們在天諭手遊的諭戲遊戲中使用了 AlphaZero 來製作 AI。本次演講主要分為以下4個部分。第一部分介紹AlphaZero的基本思想和核心演算法Monte Carlo Tree Search,簡稱MCTS。第二部分是關於天諭手遊中卡牌遊戲諭戲的介紹。第三部分介紹我們如何在諭戲上應用alphazero來產生AI。最後展示我們取得的結果和展望未來的工作。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/4717031e770af58b1f6e6830918e76cff827cc0a94d19c1c36a830848b37e7dd.jpg)
一、AlphaZero 和 MCTS
什麼是AlphaZero?
圍棋一直被視為人工智慧經典遊戲中最具挑戰性的遊戲。但是 AlphaGo 在 2016 年擊敗了世界冠軍李世石。 AlphaGo 是第一個擊敗圍棋人類世界冠軍的計算機程式,可以說是當時最強的圍棋選手。
AlphaGo有如此高的成就和榮譽,那AlphaZero為什麼會誕生呢?
因為在階段性訓練和網路數量方面,AlphaGo 的系統相當複雜。一年後,其作者 DeepMind 對其進行了改進,提出了一種新的圍棋 AI: AlphaGo Zero,它是 AlphaGo 的簡化和增強版本。由於演算法的通用性和圍棋知識較少,DeepMind 又將演算法遷移到國際象棋和日本將棋,並推出了新的 AI:AlphaZero。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/72b3609119319e5b0c62a67908c12c534aa9759048298d789c567d3848d87976.jpg)
簡單說完alpha系列的演化,我們來看看它的演算法。由於演算法細節繁瑣複雜,這裡只做簡單的科普。AlphaGo的核心演算法為蒙特卡羅樹搜尋與改進。蒙特卡羅樹搜尋是演算法的核心。它主要通過使用隨機抽樣來解決確定性問題。 如下圖所示,分為選擇,擴充套件,模擬與反向傳播4個步驟。每當我們需要做決策時,我們都可以通過這棵樹得到蒙特卡洛演算法下的最優策略。當然,它不一定是真正的最優策略。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/5885803e73ac08f63e09b3398aa676ee82b1214ab698376a4123ea8d4c305d02.jpg)
原本的 MCTS 看起來很笨,而且計算量很大。 AlphaGo 對其進行了很多改進。它使用深度神經網路進行評估而不是隨機搜尋來評估情況,如下圖所示,Alphago中有3個神經網路;同時,DeepMind 還提出了 PUCT 演算法,引入了神經網路的直覺,引導 MCTS 在搜尋時進行探索,大大提高了搜尋效率。由於引入了神經網路,AlphaGo 變得可學習,並且可以通過訓練神經網路不斷提升自身實力。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/1a7ee4529b697260d068a343e173d14f454abc7bafd7e5e5df9acbe4bfeb0d92.png)
AlphaGo 的訓練過程分為兩個步驟:
第一步,收集大量人類專家資料進行監督學習,學習人類思維。經過訓練,神經網路已經達到了業餘水平。
第二步,轉化為強化學習。神經網路的資料來自自我對弈。通過不斷的強化訓練,AlphaGo的水平不斷提升,最終達到了超越人類的水平。
2. 從AlphaGO到AlphaGo Zero
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/d99a8398163d317adaefea906695fe68573f34c2ecfd7afbdfc5f09eefdc4deb.jpg)
AlphaGo Zero 不使用人類專家資料進行監督學習。將訓練簡化為一個階段,從頭開始自我對弈和強化學習。基於內在的變化,AlphaGo Zero 的實力相比 AlphaGo 有了很大的提升,如上圖所示。經過3天的學習,零號AlphaGo以100:0的比分超越了AlphaGo Lee的實力,21天后達到了AlphaGo Master的水平,並在40天內超越了之前的所有版本。
二、諭戲介紹
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/20fd1d381560bc59316cd27aad76d0af358d78eada9ba486126ba69a30df295d.jpg)
天諭手遊是網易遊戲開發的一款大型多人線上角色扮演遊戲。自2021年1月8日上線以來,它在中國是一款非常成功的遊戲。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/5ea9ae4f831122f865a05a2846ca7dfb18c9cd32739778d936c3d15af89e405f.jpg)
諭戲是天諭手遊中的回合製紙牌玩法,目的是讓玩家熟悉世界觀背景,放鬆心情。諭戲的玩法是兩個玩家之間的1V1對戰。有3種不同大小的棋盤,分別是3乘3、4乘4和6乘4。諭戲有200多張卡片,包括人物卡和法術卡。沒有比賽和排行榜。玩家只能選擇與 AI 或他們的朋友對戰。當玩家需要測試新套牌的強度或者沒有朋友可以對戰時,我們的AI就會出場。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/d76b2e095ca1491a1a8e98914a30688c33ca46f0aa4a887dc0db90f219c1bb5c.jpg)
這是遊戲中諭戲具體場景的截圖,圖片資訊量很大。
中間是一個3乘3場地。場地上有人物卡和天氣。藍色的代表我們自己的角色,紅色的代表敵人的角色。卡的具體資訊將在後面詳細說明。
左上角和右下角是雙方玩家的墳墓。當角色卡死亡或使用法術卡時,他們會進入墳墓。
左下方和右上方是卡組,玩家將帶著自己的卡組進入遊戲。
上面和下面是手牌,初始手牌是從卡組中隨機抽取的(數量根據場地的大小而變化)。
遊戲過程類似於巫師的昆特牌。玩家不會每輪都從牌組中抽牌。一般每回合打一張手牌,用完所有手牌後遊戲結束。
棋盤兩邊是2位玩家的點數和金錢,最右邊是結束回合按鈕。
左下角的換卡按鈕,後面會詳細說明。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/7d204bdf69672cbd2f09de45d98b1898591f7822fc00dcd431964779f5ee0060.jpg)
每張卡都有自己的頭銜和效果,很多效果都是在一些固定的頭銜上觸發的。
對於人物卡,左上角也有一個初始點。如果當前點低於初始點,則顯示為紅色,可被治癒;如果它更高,它將顯示為綠色。人物卡還有一些臨時的buff標誌,比如當前技能可用,這個人物有多少錢等等。
三.AlphaZero在諭戲中的應用
接下來,我們將詳細介紹我們是如何在諭戲上應用alphazero來生產AI的。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/92a4b1bfebc1fe71eadf597bdba11ee554322406de7bd164b7a8510cb1b1dca8.jpg)
我們使用的深度神經網路的結構如上圖所示。輸入分為場地輸入和向量輸入。場地輸入主要是場地上的資訊。它是一個 3 維張量。在resnet和cnn之後,使用flatten操作將其轉化為向量。向量輸入通過全連線網路後直接變成向量。然後將兩者拼接在一起,通過全連線得到三個輸出,分別是當前情況的卡片id、位置和值估計。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/6b106f198c96e875d1d2bcca0e9b21e5fbadd85232991b55a3a1cfc29c34df82.jpg)
棋盤輸入的前 2 個維度是棋盤的大小。例如,3乘3板的輸入大小是3乘3乘n。深度 n 是一些人工提取的特徵,而不是直接使用卡片 id。這樣做的好處是泛化性更好,神經網路更容易學習。這些功能分為 4 類。天氣、卡片基本屬性、卡片名稱和卡片效果。天氣包括霧、雷、冰、侵蝕。卡牌基本屬性包括陣營、點數、護甲、金錢、技能冷卻等。頭銜和效果有很多維度,最終總深度在90左右。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/1c41b12f90dbbfd65a1d99f31192aa5cc6fe5f1943a96190a5203d727dc7a3c2.jpg)
向量輸入不使用特徵,因為它不如場地輸入重要。它直接以卡片的id作為索引,卡片的數量作為值。主要包括4個部分,自己的手牌,牌組,墳墓和敵人的墳墓。敵人的手牌和牌組不作為輸入,因為它們是不可見的。我們將這 4 個部分拼接成一個向量作為輸入。例如,我手上有 2 張 ID 為 1 的卡和 1 張 ID 分別為 0、2、5 和 8 的卡,如圖所示。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/9c4d1adb0129b1ef77d0b576ac7a5b6eeb73655e698c1e4fa04e748cc6b0a1c9.jpg)
輸出時,我們使用合法掩碼來確保輸出動作是合法的。
輸出動作主要分為兩步。首先,輸出卡的id。合法掩碼保證這個id必須是手上可以使用的卡片。然後將倒數第二層和選中卡片的id拼接輸出合法位置。最後將這張牌打到指定位置。此外,我們還將結束回合按鈕編碼到卡號中作為卡號0。選擇此操作將結束本回合,否則我們將繼續出下一張卡。因為諭戲類似於巫師的昆特牌,一般來說每輪最多隻能使用一張牌,但由牌產生的衍生牌,這裡稱為虛空牌,不受此限制。對於神經網路難以處理的不規則的情況,我們使用規則來實現後續的選擇。
最後,模型也會輸出一個值作為當前情況的估計。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/49036b1e479a883e16ce9c71c7231025df8c473f86da293f58047c49fb26915f.jpg)
在諭戲中,我們的AI會以NPC的身份與玩家對戰,所以使用的套牌是固定的。我們有50多套固定卡組,每個卡組都由一個獨特的模型控制。訓練時,從遊戲中隨機抽取2套牌進行對戰,可以是相同的。例如,如果第 3 副和第 7 副牌隨機對戰,它們將分別呼叫模型 3 和模型 7,並且該遊戲的資料將僅用於訓練模型 3 和模型 7。
當然,我們同時擁有數千個遊戲進行訓練。並且我們在訓練期間沒有使用卡片交換操作。
我們的第一次訓練使用了大約 100 個 CPU 和 8 個 GPU,耗時一個月。
之後,更新迭代使用了 50 個 CPU 和 4 個 GPU,耗時一週。
因為線上使用時玩家的出牌速度較慢,所以4個CPU就可以滿足要求。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/bb04b66565200533dc94eb14829f9174510213d75fa1506e4138c6145f5dc6fc.jpg)
我們知道圍棋、國際象棋和將棋是具有完整資訊的遊戲。在這類遊戲中搜尋非常容易。但是在不知道對方手牌的情況下在諭戲中搜尋呢?
在訓練時,我們直接讓對手給一個操作,並用這個操作來搜尋對手。
比如剛才的模型3對戰模型7。現在輪到模型3出牌了,模型3手上有兩張id為1和2的牌。它不知道哪個卡更好。因此,模型3先打出一張id為1的牌,然後根據當前情況讓模型7出一張牌,然後模型3再打出一張id為2的牌,直到遊戲結束。而模型3也可以先是牌2,然後是牌1。以上過程都是模擬搜尋。搜尋結果可用後,模型 3 根據概率選擇更好的策略。這些功能的實現需要依賴一個可以生成和載入快照的遊戲環境。線上時,我們不搜尋手牌,因為我們不能讓對手採取行動。這也是上網時資源佔用少的原因。
但是我們會搜尋換卡。在每一輪中,都有機會將手牌與牌組中的兩張牌中的一張交換。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/0f07d67359c04f2a7ebf1906107d9181939daef01e56e718cbf6195fc5235841.jpg)
因為換卡只和自己有關,所以我們可以遍歷它所有可能的結果。然後將其輸入網路,只取值輸出,選擇換卡操作後值最大的結果。
三、我們的成就和未來的工作
視訊連結:https://v.qq.com/x/page/z326224991y.html
我們來看一場對抗AI的遊戲。在這個遊戲中,AI可以巧妙地利用螃蟹的效果互相吃掉,積分翻倍。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/5ec10e72f95afdfc54bb9b5c36e3e8742fbaee19b691125ed802c0073271a5d3.jpg)
在遊戲開發過程中訓練AI不僅可以發現一些會報錯的bug,還可以發現設計的bug。如以上兩張圖片所示。左邊的一張牌具有可以回收3個棋盤上的錢幣並轉化為手牌的效果。另一張卡的效果是使用錢幣時少使用2個錢幣。但是我們發現了一個神奇的BUG,回收幣也出現了少用兩個幣的效果。結果,棋盤上只有一枚錢幣,卻拿到了三張錢幣卡。
右圖是一張牌在霧中吃另一張牌的結果。霧的效果是卡點減半。然後我們的新卡一放下就從6分減半到3分。然後在迷霧中吃掉8分的牌,得到11分。但正確的情況是先吃到14點,減半到7點
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/dbe36500a21eb7c075c9275102d8bc0a1e1dc15c42dbfea82e71e51b432ebb67.jpg)
不僅能發現BUG,我們的 AI 還可以幫助開發人員實現遊戲平衡。在遊戲結束時,第一個玩家將隨機獲得一個骰子的獎勵積分。經過AI訓練,我們發現3乘3場地的先手玩家有優勢,但在6乘4場地有劣勢。所以以後我們在遊戲中建立諭戲房間的時候,可以設定一個規則來取消這個骰子獎勵。
我們上線後,AI的呼叫量一直處於較高水平。AI剛開始的時候勝率是60多,後來隨著玩家熟練度和套牌的增多,降到了50。經過我們的迭代,它變成了 65 以上。
![網易伏羲GDC分享:在回合製紙牌遊戲中應用 AlphaZero 開發 AI](https://i.iter01.com/images/f149eb7ede4eedff3d17f7edb761fbf3fb588a208319fc07f2ce3a815870db7e.jpg)
未來,我們希望 AI 能夠預測玩家的手牌和套牌。
隨著卡片的更新,模型也需要手動更新,否則無法適應新的卡片。我們將使其自動化。
我們還將 AlphaZero 應用於其他回合制遊戲,例如麻將和五子棋。
相關文章
- 網易伏羲GDC分享:伏魔AI遊戲外掛防控系統在網易遊戲的實踐經驗AI遊戲
- 網易伏羲GDC分享-模仿學習在遊戲人工智慧的運用經驗遊戲人工智慧
- 人工智慧改變遊戲未來?網易伏羲AI Lab展示遊戲開發黑科技人工智慧AI遊戲開發
- AI顛覆遊戲研發運營,網易互娛AI Lab驚豔GDC 2021AI遊戲
- AI在視訊遊戲中的應用AI遊戲
- GDC2018分享:遊戲AI中的知識表示概述遊戲AI
- 蒼之女武神:卡牌回合制遊戲遊戲
- 加固玩家對遊戲的信任度,網易伏羲AI競技機器人全方位提升遊戲體驗遊戲AI機器人
- win10 移植蜘蛛紙牌遊戲在哪_Win10系統下怎麼開啟蜘蛛紙牌遊戲Win10遊戲
- 人工智慧(AI)在遊戲中的應用(下)人工智慧AI遊戲
- 網易雷火UX在GDC演講:卡牌遊戲機器人的訓練與提升,以及為何我們需要它UX遊戲機器人
- 開發者談音效在遊戲中的8種基本應用遊戲
- 網易製作人李偉奇:《陰陽師百聞牌》遊戲製作創新思考遊戲
- 騰訊[程式設計題] 紙牌遊戲程式設計遊戲
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- 【GDC2023乾貨分享】開源軟體在引擎開發中的幫助
- Azure OpenAI在遊戲NPC和製作場景中的應用OpenAI遊戲
- OPF理論在回合RPG中的分析和應用
- SpongeBob SolitairePants Mac(海綿寶寶紙牌遊戲)AIMac遊戲
- 《紙人》開發分享:如何做出一款具有中國特色的恐怖遊戲?遊戲
- 前沿探索|AI 在 API 開發測試中的應用AIAPI
- 開發者分享如何在遊戲設計中做到難易程度的平衡遊戲設計
- 開春111款遊戲版號下發,網易永劫手遊、疊紙無限暖暖、遊科黑神話...遊戲
- java程式:簡易撲克牌遊戲Java遊戲
- 網易三浪:從廣告、遊戲到網易有道,在善變中前行遊戲
- Nebula Graph 在網易遊戲業務中的實踐遊戲
- 回合制遊戲中的10種遊戲平衡手段遊戲
- 育碧出席GDC2023 分享遊戲研發最新趨勢及創新遊戲
- win10系統下怎麼新增紙牌遊戲Win10遊戲
- 卡牌鏈遊NFT遊戲系統開發/原始碼/卡牌鏈遊/NFT遊戲原始碼
- 絕悟AI參展GDC,AI深入遊戲產業全鏈路AI遊戲產業
- 遊戲雜談:大製作遊戲和小製作遊戲,在開發思路方式上的差別遊戲
- 全球遊戲生態蝌蚪鏈TCT亮相GDC2018遊戲開發者大會遊戲開發
- 為電子遊戲添“彩” ——色彩原理在電子遊戲中的應用與發展遊戲
- 視訊在H5遊戲中的應用H5遊戲
- 因果推斷在騰訊遊戲中的應用遊戲
- defi+nft卡牌鏈遊開發原理丨NFT卡牌盲盒遊戲系統模式開發遊戲模式
- NFT鏈遊卡牌遊戲系統技術開發示例丨NFT卡牌丨鏈遊遊戲丨Dapp遊戲APP