0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種使用卷積神經(jīng)網(wǎng)絡(luò)來預(yù)測(cè)斗地主游戲中玩家行為的方法

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-10-21 10:34 ? 次閱讀

近年來,從圍棋到 Dota 團(tuán)戰(zhàn)賽,深度神經(jīng)網(wǎng)絡(luò)應(yīng)用在各種游戲競(jìng)賽中不斷取得突破。這一次,有人把這種方法用到斗地主游戲的研究中,可以說真的很接地氣了!

本論文是 ICLR 2019 的投稿論文,目前該論文還處于雙盲審狀態(tài),因此也還未公布作者。營(yíng)長(zhǎng)在看到這篇論文的時(shí)候,就想第一時(shí)間分享給大家。接下來,我們就一起來看看這個(gè)有趣的研究吧!也預(yù)祝作者的論文能夠成功被接收,今后在這個(gè)項(xiàng)目上還可以再有進(jìn)展!

摘要

近幾年,深度神經(jīng)網(wǎng)絡(luò)在圍棋,國(guó)際象棋和日本象棋(Shogi)等多款游戲中都能夠擊敗人類。和這些棋類相比,中國(guó)的紙牌游戲“斗地主”也是非常出名!斗地主屬于非完整信息類的游戲即不知對(duì)方底牌,在游戲過程中包含隱藏信息,具有隨機(jī)性,并且多個(gè)玩家間存在合作與競(jìng)爭(zhēng)關(guān)系。本文,我們將介紹一種使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來預(yù)測(cè)斗地主游戲中玩家行為的方法,它是通過人類的游戲記錄來進(jìn)行監(jiān)督訓(xùn)練。在沒有搜索情況下,此網(wǎng)絡(luò)就能以絕大優(yōu)勢(shì)擊敗了性能最好的AI程序;在重復(fù)模式(Duplicate Mode)下也能戰(zhàn)勝了頂級(jí)的人類業(yè)余玩家。

簡(jiǎn)介

斗地主(CCP)易于學(xué)習(xí)但想要擅長(zhǎng)或精通卻是難事,它不僅需要數(shù)學(xué)知識(shí)和戰(zhàn)略性的思考,更需要玩家精心策劃每一步。游戲規(guī)則我們?cè)谶@里就不多說了,主要說一下我們的研究思路和成果。

我們選擇 CNN來解決斗地主游戲問題的主要原因如下:

首先,CNN在完善的信息游戲中取得了超越人類的卓越表現(xiàn)

其次,在CCP中存在同一類別不同等級(jí)的兩套出牌方式(例如“34567”比“45678”等級(jí)來得低,等級(jí)低的不能壓等級(jí)高的。)

迄今為止,還沒有使用深度神經(jīng)網(wǎng)絡(luò)來研究斗地主游戲的。該網(wǎng)絡(luò)是否能夠在游戲輸入信息不完善的情況下選擇合理的操作還有待證明。由于在每局游戲中有隊(duì)友的存在,這就出現(xiàn)了兩個(gè)問題:一是要教會(huì)該網(wǎng)絡(luò)進(jìn)行合作;二是它要具備良好的推理能力。針對(duì)這些問題,我們?cè)O(shè)計(jì)了 DeepRocket,它是目前能夠在斗地主游戲中取得最好效果的一種網(wǎng)絡(luò)。在下面的實(shí)驗(yàn)中,我們證明了該網(wǎng)絡(luò)可以在不完善的信息游戲中學(xué)會(huì)合作與推理。

Deep Rocket 框架

DeepRocket系統(tǒng)包含三個(gè)部分:叫地主模塊、策略網(wǎng)絡(luò)以及帶牌(Kicker)網(wǎng)絡(luò)。當(dāng)游戲開始時(shí)叫地主模塊會(huì)被調(diào)用以便計(jì)算 DeepRocket的得分(叫地主和搶地主時(shí)分?jǐn)?shù)會(huì)加倍)。在 DeepRocket出牌之前會(huì)先調(diào)用策略網(wǎng)絡(luò),策略網(wǎng)絡(luò)會(huì)依據(jù)當(dāng)前環(huán)境預(yù)測(cè)出最應(yīng)該執(zhí)行的策略,其中包括帶牌模式(帶單張或者一對(duì))。當(dāng)策略中含有帶牌時(shí),Kicker 網(wǎng)路才會(huì)被調(diào)用。游戲流程如下圖1、2所示。

圖1 DeepRocket游戲流程

圖2 策略網(wǎng)絡(luò)和 Kicker 網(wǎng)絡(luò)的工作流程

▌叫地主模塊

在分完牌后需要先確定誰是地主,所以我們?yōu)榇嗽O(shè)計(jì)了一個(gè)基于邏輯代碼的叫地主模塊。叫地主的關(guān)鍵因素在于手牌的好壞。是否決定叫地主取決于手牌中是否有大牌(如:“A”、“2”以及大小王)和手牌順不順(有較少的雜牌)。

▌策略網(wǎng)絡(luò)

策略網(wǎng)絡(luò)采用監(jiān)督學(xué)習(xí)的方式。其中該網(wǎng)絡(luò)包含 10 層 CNN 層和 1 層全連接層,激活函數(shù)采用 Relu。最終的 softmax層輸出所有合理出牌方式 a的概率分布。輸入為當(dāng)前的游戲狀態(tài)。策略網(wǎng)絡(luò)的訓(xùn)練樣本來自于隨機(jī)抽樣,這些樣本包含當(dāng)前狀態(tài)以及最優(yōu)的決策,采用隨機(jī)梯度上升的方式訓(xùn)練網(wǎng)絡(luò),讓策略網(wǎng)絡(luò)的出牌與人類的出牌越來越相近。

我們使用 800 萬條游戲記錄來訓(xùn)練策略網(wǎng)絡(luò),一條記錄代表一場(chǎng)完整的游戲,一局斗地主按回合來分,又能分為許多樣本。

策略網(wǎng)絡(luò)的輸入是一個(gè) 15×19×21 的三維二元張量。我們用 X、Y和 Z代表三個(gè)維度。其中 X代表牌的種類,從 3 到大小王。Y表示每個(gè)種類牌的數(shù)量(從 1 張到 4 張),以及 CCP中卡牌的組合如單張、對(duì)子等。Z代表每一輪的順序信息,作用是在游戲中將可變長(zhǎng)度變換為固定長(zhǎng)度,具體細(xì)節(jié)如表 1 所示。

表1 Z的含義

重復(fù)試驗(yàn)之后發(fā)現(xiàn),512 濾波器最為合適,10 層 CNN能使得模型獲得最佳的性能,其中每層都使用不同的步長(zhǎng)。當(dāng)我們將 Kicker網(wǎng)絡(luò)加到 DeepRocket中后,策略網(wǎng)絡(luò)會(huì)輸出 309 個(gè)決策的概率。具體的組合情況如表 2 所示。

表2 組合類型

▌Kicker 網(wǎng)絡(luò)

僅憑叫地主模塊以及策略網(wǎng)絡(luò)就足以完成一場(chǎng)游戲,但決定帶牌的類型對(duì)游戲來說也至關(guān)重要。

我們將帶不同的牌標(biāo)記為不同的策略。并額外建立了一個(gè) Kicker網(wǎng)絡(luò)來預(yù)測(cè)所帶的牌。策略網(wǎng)絡(luò)負(fù)責(zé)預(yù)測(cè) Main Group(如: 3334中的 3 個(gè) 3)和所帶牌的種類如單張或者對(duì)子。而 Kicker網(wǎng)絡(luò)則負(fù)責(zé)預(yù)測(cè)所帶的牌具體是哪幾張。

Kicker網(wǎng)絡(luò)的輸入包含剩余的牌以及策略網(wǎng)絡(luò)的輸出值,它由一個(gè)15×9×3的三維二元張量構(gòu)成。其中 X的含義與策略網(wǎng)絡(luò)中相同,而 Y與 Z的含義如表所示。Kicker網(wǎng)絡(luò)包含 28 種輸出,其中 15 種為單牌,13 種為對(duì)子。

Kicker網(wǎng)絡(luò)由 5 層 CNN層和 1 層全連接層構(gòu)成,輸出為帶牌的概率。Kicker網(wǎng)絡(luò)每次僅輸出一個(gè)帶牌種類。如果策略網(wǎng)絡(luò)預(yù)測(cè)應(yīng)該出“333444”以及兩張單牌,這時(shí)則要調(diào)用兩次 Kicker網(wǎng)絡(luò)。

實(shí)驗(yàn)

▌實(shí)驗(yàn)設(shè)置

我們獲取了 800 萬條游戲記錄,首先將其劃分為 8000 萬個(gè)“狀態(tài)-行為”對(duì),90%作為訓(xùn)練數(shù)據(jù)集,10%作為測(cè)試數(shù)據(jù)集;然后將其作為網(wǎng)絡(luò)的輸入;最后使用 TFRecords 存儲(chǔ)到硬盤中;這樣不僅方便修改網(wǎng)絡(luò)參數(shù),也加快了訓(xùn)練速度。策略網(wǎng)絡(luò)的大小為 256,對(duì)人類專家的行為預(yù)測(cè)準(zhǔn)確度可達(dá) 86%-88%。使用 i7-7900X CPU,NAVIDA 1080Ti GPU以及 Ubuntu 16.04的操作系統(tǒng)計(jì)算策略網(wǎng)絡(luò)的輸出需要 0.01-0.02 秒。

Kicker網(wǎng)絡(luò)同樣是監(jiān)督式學(xué)習(xí),也使用以上的 800 萬條游戲記錄作為數(shù)據(jù)集,但在訓(xùn)練之后它能達(dá)到 90%的準(zhǔn)確度,甚至比策略網(wǎng)絡(luò)更高。

▌與目前最好的 AI 對(duì)比

在 DeepRocket出現(xiàn)之前,MicroWe是最好的CCP AI。如圖 3 和圖 4 所示,我們進(jìn)行了 50000 場(chǎng)游戲測(cè)試,每一次迭代表示 5000 場(chǎng)。我們將 20 張卡牌直接發(fā)給地主,這樣地主的勝率會(huì)比平常低?!癉R VS MW”代表 DeepRocket是地主,而 MicroWe是農(nóng)民。從圖中可看出 DR 表現(xiàn)比 MW好。

圖3 DR與 MW的比賽結(jié)果

圖4不同 AI之間比賽的勝率

▌與人類專家對(duì)比

我們舉辦了一場(chǎng)人機(jī)比賽,邀請(qǐng)了四位頂級(jí)業(yè)余選手,在循環(huán)模式下進(jìn)行了 10 場(chǎng)比賽。結(jié)果,DR以 30:24 的分?jǐn)?shù)戰(zhàn)勝了人類團(tuán)隊(duì)。

▌合作與推理

在 DR的游戲記錄中,我們找到了一個(gè)典型的例子能夠展現(xiàn)其良好的合作能力(T:10;B:大王;S:小王。其中冒號(hào)之前表示玩家,冒號(hào)后表示打出的牌,以分號(hào)作為某玩家出牌結(jié)束標(biāo)志,0 代表地主)

牌面:

4456777889JKKAA2B;

335567899TTJJKAA2;

4456689TTJQQQK22S;

33Q;

游戲進(jìn)程:

0,33;1,55;2,66;0,77;1,AA;1,6;2,T;0,J;1,K;0,2;2,S;2,44;0,KK;2,22;2,89TJQK;2,QQ;0,AA;0,56789;1,789TJ;1,3;2,5;

以上加粗部分是關(guān)鍵步驟,在游戲的最后 DR打出一張“3”來幫助隊(duì)友取得勝利,由此可見 DR具有良好合作能力的。

我們也找到了一個(gè)能夠展現(xiàn) DR推理能力的例子:

牌面:

33345578TTJKKA22S;

34566789TQQQKKAA2;

4456678999TJJQA2B;

78J;

游戲進(jìn)程:

0,345678;1,56789T;0,6789TJ;0,QQQKK;0,AA;2,22;2,55;2,3334;2,TT;2,A;0,2;

以上加粗部分是關(guān)鍵步驟,雖然最后農(nóng)民輸了,但是他選擇打“A”是一個(gè)不錯(cuò)的選擇,因?yàn)榈刂髦皇R粡埮?,而農(nóng)民手里還有 (“7, 8, J, A, S”)五張牌,選擇出“A”也是人類專家的正常邏輯,DR 能夠從人類中學(xué)到此行為。

展望

雖然,我們已經(jīng)證明了 CNN能夠預(yù)測(cè)斗地主游戲中玩家的行為,并與隊(duì)友進(jìn)行合作;在沒有任何的 MCTS之下能達(dá)到頂級(jí)選手的水平甚至更高。但是,我們也還有許多方面要進(jìn)行完善。第一個(gè)是強(qiáng)化問題,直接將應(yīng)用在 AlphaGo的方法移植到 CCP中是行不通的;第二個(gè)是關(guān)于 Monte Carlo搜索或者 MCTS的問題。

在未來,DR可以在以下方面進(jìn)行改進(jìn):

叫地主的方式可以改進(jìn),在搶地主的過程中只有 0、1、2 和 3 是正確操作,0 代表玩家不想當(dāng)?shù)刂鳌N覀儗L試用深度神經(jīng)網(wǎng)絡(luò)去訓(xùn)練叫地主的方式。

我們將嘗試使用隨機(jī)權(quán)重訓(xùn)練模型。

我們將訓(xùn)練分別代表三個(gè)角色的三個(gè)輸出模型。

最后預(yù)祝作者的論文被成功接收,今后在這個(gè)項(xiàng)目上還可以再有進(jìn)展!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:來呀!AI喊你斗地主——首個(gè)搞定斗地主的深度神經(jīng)網(wǎng)絡(luò)

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)在工程上經(jīng)歷了曲折的歷史,您為什么還會(huì)在意它呢? 對(duì)于這些非常中肯的問題,我們似乎可以給出相對(duì)簡(jiǎn)明的答案。
    發(fā)表于 07-17 07:21

    卷積神經(jīng)網(wǎng)絡(luò)卷積的處理過程

    。本文就以卷積神經(jīng)網(wǎng)絡(luò)為例談?wù)勗趺?b class='flag-5'>來進(jìn)步優(yōu)化卷積神經(jīng)網(wǎng)
    發(fā)表于 12-23 06:16

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    十余年來快速發(fā)展的嶄新領(lǐng)域,越來越受到研究者的關(guān)注。卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型是深度學(xué)習(xí)模型中最重要的一種經(jīng)典結(jié)構(gòu),其性能在近年來深度學(xué)習(xí)任務(wù)上逐步提高。由于可以自動(dòng)學(xué)習(xí)樣本數(shù)據(jù)的特征表示,
    發(fā)表于 08-02 10:39

    卷積神經(jīng)網(wǎng)絡(luò)原理:卷積神經(jīng)網(wǎng)絡(luò)模型和卷積神經(jīng)網(wǎng)絡(luò)算法

    卷積神經(jīng)網(wǎng)絡(luò)原理:卷積神經(jīng)網(wǎng)絡(luò)模型和卷積神經(jīng)網(wǎng)絡(luò)算法 卷積
    的頭像 發(fā)表于 08-17 16:30 ?1345次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)概述 卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn) cnn卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)

    卷積神經(jīng)網(wǎng)絡(luò)概述 卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn) cnn卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)?
    的頭像 發(fā)表于 08-21 16:41 ?2716次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)模型原理 卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)

    卷積神經(jīng)網(wǎng)絡(luò)模型原理 卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)? 卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-21 16:41 ?950次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的基本原理 卷積神經(jīng)網(wǎng)絡(luò)發(fā)展 卷積神經(jīng)網(wǎng)絡(luò)三大特點(diǎn)

    中最重要的神經(jīng)網(wǎng)絡(luò)。它是一種由多個(gè)卷積層和池化層(也可稱為下采樣層)組成的神經(jīng)網(wǎng)絡(luò)。CNN 的基本思想是以圖像為輸入,通過
    的頭像 發(fā)表于 08-21 16:49 ?2214次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)卷積層講解

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)卷積層講解 卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-21 16:49 ?7132次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法

    卷積神經(jīng)網(wǎng)絡(luò)的介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法 卷積神經(jīng)網(wǎng)絡(luò)涉及的關(guān)鍵技術(shù)
    的頭像 發(fā)表于 08-21 16:49 ?1767次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點(diǎn) 卷積神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)的區(qū)別

    深度神經(jīng)網(wǎng)絡(luò)一種基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)算法,其主要特點(diǎn)是由多層神經(jīng)元構(gòu)成,可以根據(jù)數(shù)據(jù)自動(dòng)調(diào)整神經(jīng)元之間的權(quán)重,從而實(shí)現(xiàn)對(duì)大規(guī)模數(shù)據(jù)進(jìn)行
    發(fā)表于 08-21 17:07 ?3791次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)算法代碼matlab

    的工作原理和實(shí)現(xiàn)方法、卷積神經(jīng)網(wǎng)絡(luò)的工作原理 卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-21 16:50 ?1130次閱讀

    cnn卷積神經(jīng)網(wǎng)絡(luò)模型 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型 生成卷積神經(jīng)網(wǎng)絡(luò)模型

    cnn卷積神經(jīng)網(wǎng)絡(luò)模型 卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型 生成卷積神經(jīng)網(wǎng)
    的頭像 發(fā)表于 08-21 17:11 ?1141次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建 卷積神經(jīng)網(wǎng)絡(luò)模型是一種深度學(xué)習(xí)算法。它已經(jīng)成為了計(jì)算機(jī)視覺和自然語言處理等各種領(lǐng)域的主流算法,具有很大的應(yīng)用前景。本篇
    的頭像 發(fā)表于 08-21 17:11 ?892次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的原理與實(shí)現(xiàn)

    1.卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡(jiǎn)稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、視頻分析、自然語言處理等領(lǐng)域。 卷積
    的頭像 發(fā)表于 07-02 16:47 ?392次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)分類方法有哪些

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像分類、目標(biāo)檢測(cè)、語義分割等計(jì)算機(jī)視覺任務(wù)。本文將詳細(xì)介紹卷積
    的頭像 發(fā)表于 07-03 09:40 ?340次閱讀