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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

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

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

摘要

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

簡介

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

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

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

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

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

Deep Rocket 框架

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

圖1 DeepRocket游戲流程

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

▌叫地主模塊

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

▌策略網(wǎng)絡

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

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

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

表1 Z的含義

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

表2 組合類型

▌Kicker 網(wǎng)絡

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

我們將帶不同的牌標記為不同的策略。并額外建立了一個 Kicker網(wǎng)絡來預測所帶的牌。策略網(wǎng)絡負責預測 Main Group(如: 3334中的 3 個 3)和所帶牌的種類如單張或者對子。而 Kicker網(wǎng)絡則負責預測所帶的牌具體是哪幾張。

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

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

實驗

▌實驗設置

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

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

▌與目前最好的 AI 對比

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

圖3 DR與 MW的比賽結果

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

▌與人類專家對比

我們舉辦了一場人機比賽,邀請了四位頂級業(yè)余選手,在循環(huán)模式下進行了 10 場比賽。結果,DR以 30:24 的分數(shù)戰(zhàn)勝了人類團隊。

▌合作與推理

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

牌面:

4456777889JKKAA2B;

335567899TTJJKAA2;

4456689TTJQQQK22S;

33Q;

游戲進程:

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;

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

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

牌面:

33345578TTJKKA22S;

34566789TQQQKKAA2;

4456678999TJJQA2B;

78J;

游戲進程:

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

以上加粗部分是關鍵步驟,雖然最后農(nóng)民輸了,但是他選擇打“A”是一個不錯的選擇,因為地主只剩一張牌,而農(nóng)民手里還有 (“7, 8, J, A, S”)五張牌,選擇出“A”也是人類專家的正常邏輯,DR 能夠從人類中學到此行為。

展望

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

在未來,DR可以在以下方面進行改進:

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

我們將嘗試使用隨機權重訓練模型。

我們將訓練分別代表三個角色的三個輸出模型。

最后預祝作者的論文被成功接收,今后在這個項目上還可以再有進展!

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

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

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

    。本文就以卷積神經(jīng)網(wǎng)絡為例談談怎么步優(yōu)化卷積神經(jīng)網(wǎng)
    發(fā)表于 12-23 06:16

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

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

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

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

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

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

    卷積神經(jīng)網(wǎng)絡模型原理 卷積神經(jīng)網(wǎng)絡模型結構

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

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

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

    卷積神經(jīng)網(wǎng)絡層級結構 卷積神經(jīng)網(wǎng)絡卷積層講解

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

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

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

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

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

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

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

    cnn卷積神經(jīng)網(wǎng)絡模型 卷積神經(jīng)網(wǎng)絡預測模型 生成卷積神經(jīng)網(wǎng)絡模型

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

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

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

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

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

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

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