丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給奕欣
發(fā)送

0

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

本文作者: 奕欣 2017-03-26 22:13
導(dǎo)語(yǔ):在圍棋這種邏輯縝密的推理游戲中,AI 究竟是怎么“思考”每一步的落子的?

雷鋒網(wǎng)按:騰訊圍棋 AI 程序“絕藝”(Fine Art)在世界電腦圍棋大賽 UEC 上力壓多支日韓參賽退伍獲得冠軍,一時(shí)間又引發(fā)了大家對(duì) AI 和圍棋的關(guān)注和討論。

其實(shí),自去年 3 月份 AlphaGo 戰(zhàn)勝李世石之后,人們對(duì)會(huì)下圍棋的人工智能程序已經(jīng)不陌生了。大部分人都知道 AlphaGo 是利用了一種名叫深度學(xué)習(xí)的技術(shù),然后基于互聯(lián)網(wǎng)棋譜大數(shù)據(jù)的支持,每天自己跟自己對(duì)弈,所以才能這么厲害。

但鮮有人知道的是:在圍棋這種邏輯縝密的推理游戲中,AI 究竟是怎么“思考”每一步的落子的?AI 真的清楚自己每一步落子的意義么?AI 真的具有推理能力?

為了徹底揭開(kāi)其中的奧秘,地平線大牛講堂邀請(qǐng)到 UEC 曾經(jīng)的打入決賽的隊(duì)伍 —— Facebook 圍棋 AI 程序 DarkForest 的首席工程師及第一作者田淵棟博士為我們一探究竟,本文由亞萌和奕欣整理,并由田老師做了審核和編輯,特此感謝。

嘉賓介紹

田淵棟,F(xiàn)acebook 人工智能研究院研究員,F(xiàn)acebook 圍棋 AI 程序 DarkForest 首席工程師及第一作者,卡耐基梅隆大學(xué)機(jī)器人研究所博士,曾擔(dān)任 Google 無(wú)人駕駛團(tuán)隊(duì)軟件工程師,并獲得國(guó)際計(jì)算機(jī)視覺(jué)大會(huì)(ICCV)馬爾獎(jiǎng)榮譽(yù)提名。

今天非常榮幸能來(lái)地平線科技做分享。我將簡(jiǎn)單介紹一下深度學(xué)習(xí)在游戲領(lǐng)域的進(jìn)展,結(jié)合最近的一些熱點(diǎn)新聞,比如說(shuō)像CMU的Poker Player戰(zhàn)勝了世界上最強(qiáng)的撲克高手,大家也一定很好奇這是怎么回事,當(dāng)然也會(huì)結(jié)合我們目前所做的一些工作。

游戲已經(jīng)成為AI研究測(cè)試平臺(tái)

研究者可能以前會(huì)覺(jué)得游戲只是消遣的工具,但隨著人工智能的發(fā)展以及它在游戲上的一些應(yīng)用,大家也開(kāi)始意識(shí)到,游戲現(xiàn)在已經(jīng)演變?yōu)橐环NAI研究的工具,游戲可以作為一個(gè)平臺(tái),作為一個(gè)虛擬環(huán)境,用于測(cè)試人工智能的一些技術(shù)。

游戲作為平臺(tái)有兩個(gè)好處。

  • 其一是可以生成無(wú)限多的帶標(biāo)注的數(shù)據(jù)以供神經(jīng)網(wǎng)絡(luò)訓(xùn)練,解決數(shù)據(jù)不足的問(wèn)題;

  • 其二是游戲的環(huán)境是完全可控的,難度可以調(diào)節(jié),重復(fù)性也非常完美。

這兩點(diǎn)讓它成為一個(gè)很好的研究平臺(tái)。游戲其實(shí)有很多種,在這里我們分為兩類,即:

  • 完全信息博弈游戲:所有玩家都知道發(fā)生了什么事情;

  • 不完全信息博弈游戲:玩家需要在環(huán)境中探索,才能了解對(duì)方玩家在做什么。

當(dāng)然還有其它的一些分類,在此不做贅述。

有些游戲規(guī)則很簡(jiǎn)單,但實(shí)際玩起來(lái)的時(shí)候并沒(méi)有想象中的容易。我舉一個(gè)非常簡(jiǎn)單的例子:假設(shè)有三張牌JQK,兩個(gè)人玩這個(gè)游戲,每個(gè)人各抽一張牌后,可以根據(jù)牌的大小選擇放棄或是加注。最后雙方亮牌比較大小。大家可以猜下哪一手具有優(yōu)勢(shì)?后手其實(shí)是有優(yōu)勢(shì)的。根據(jù)最優(yōu)策略的指導(dǎo),先手有可能會(huì)輸?shù)?/18的錢,因?yàn)橄仁植坏貌蛔鲆恍Q定,而后手可以根據(jù)先手的決定來(lái)決定自己的策略。

如果我們把游戲樹(shù)畫出來(lái)的話,可以看到,即使是這樣一個(gè)簡(jiǎn)單的游戲,它可能有無(wú)窮多個(gè)納什均衡點(diǎn)。所以你會(huì)發(fā)現(xiàn)一個(gè)很簡(jiǎn)單很簡(jiǎn)單的游戲,其中也有很多講究,沒(méi)有那么容易理解,更何況圍棋呢?

圍棋的規(guī)則非常簡(jiǎn)單,但我們可能要花一輩子的時(shí)間才能真正理解這個(gè)游戲的內(nèi)涵。大家都知道AlphaGo的故事,一年前我們見(jiàn)證了這場(chǎng)震驚世界的比賽。一開(kāi)始我們可能還認(rèn)為AlphaGo可能不敵世界上最強(qiáng)的棋手,但結(jié)果發(fā)現(xiàn)完全不是這么回事。通過(guò)這個(gè)事實(shí),我們就可以理解以下兩點(diǎn):

  • 游戲能作為一個(gè)平臺(tái),對(duì)我們的算法進(jìn)行效果測(cè)試。

  • 游戲自身也是一個(gè)好的體驗(yàn)平臺(tái),能夠檢驗(yàn)我們的算法。

比如說(shuō)我們要花很長(zhǎng)時(shí)間才能證明無(wú)人車的效果是否好,目前來(lái)看,不如做一個(gè)游戲,能夠打敗最強(qiáng)的棋手,讓大家了解人工智能的水平,這樣的影響力。

當(dāng)然和圍棋相比,游戲《星際爭(zhēng)霸》要難得多。其中有意思的一個(gè)地方在于,它的每一個(gè)策略及動(dòng)作的可選范圍非常大,而且在很多地方屬于不完全信息博弈,你需要猜測(cè)對(duì)方在做什么。另外游戲的時(shí)間非常長(zhǎng),每一步的選擇非常多時(shí),就需要做更多更復(fù)雜的決策。

我對(duì)于游戲的觀點(diǎn)是:游戲最終會(huì)與現(xiàn)實(shí)接軌。如果我們能將游戲做得越來(lái)越好,就能將游戲模型通過(guò)某種方式轉(zhuǎn)換到現(xiàn)實(shí)世界中使用。在我看來(lái),通過(guò)游戲這條路,是能夠讓人工智能在現(xiàn)實(shí)世界中實(shí)現(xiàn)廣泛應(yīng)用的。

Game AI是如何工作的?

首先我先簡(jiǎn)單介紹一下Game AI是怎么工作的。

大家可能覺(jué)得計(jì)算機(jī)非常強(qiáng)、無(wú)所不能,但這是不對(duì)的,因?yàn)榫退阌?jì)算機(jī)有超級(jí)超級(jí)強(qiáng)的計(jì)算能力,也不可能窮盡所有的情況。

那么計(jì)算機(jī)是怎么做的呢?計(jì)算機(jī)其實(shí)是通過(guò)以下的方式來(lái)進(jìn)行游戲決策。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

首先有一個(gè)當(dāng)前狀態(tài),從這個(gè)當(dāng)前狀態(tài)出發(fā),我們會(huì)做一些搜索。就像我剛才所說(shuō)的,計(jì)算機(jī)不可能窮盡所有的決策情況,因此在某些節(jié)點(diǎn)時(shí)需要停下來(lái)計(jì)算一下當(dāng)前的狀況,并用這個(gè)結(jié)論反過(guò)來(lái)指導(dǎo)最優(yōu)的策略?,F(xiàn)在基本上所有游戲智能都是這么做的。

當(dāng)然具體到游戲里就各有巧妙不同,主要根據(jù)不同的action數(shù)目,游戲所采用的技術(shù)也不同。比如跳棋游戲每步的決策比較少,國(guó)象稍微多一些,這樣我們可以用傳統(tǒng)的Alpha-Beta Pruning再加逐步加深的搜索法。在這個(gè)辦法里面,每一次向下搜索,是要考慮到所有的決策的。這是很多國(guó)際象棋AI采用的方法,這個(gè)方法因?yàn)槭巧疃葍?yōu)先搜索,內(nèi)存占用很小。

但是同樣的辦法不能用在圍棋上,因?yàn)槊恳徊降目赡苓x擇太多。所以后來(lái)采用了蒙特卡洛樹(shù)搜索,這個(gè)方法其實(shí)在十幾年前才第一次被用在圍棋上,在用了這個(gè)方法之后,圍棋的棋藝也提高了很多。在此之前人類學(xué)習(xí)半年就可以戰(zhàn)勝它。而在深度學(xué)習(xí)出現(xiàn)之前,這一數(shù)字延長(zhǎng)到了幾年時(shí)間,當(dāng)然現(xiàn)在你基本上學(xué)一輩子也干不掉了。而像《星際爭(zhēng)霸》這種比較開(kāi)放的問(wèn)題,根據(jù)你盤面上的各種單位的數(shù)目和種類,可能每一步都有指數(shù)級(jí)的可選行為,現(xiàn)在就沒(méi)有人知道怎么做,如果要從搜索下手的話,第一步都跨不出來(lái)。

第二部分估值函數(shù)(就是對(duì)盤面的估計(jì))也有很多可以討論的地方,比如這里主要的問(wèn)題是“這游戲到底有多難?”,如果這游戲搜索的深度很淺的話,也許我們可以倒過(guò)來(lái)做,用一種叫End-game database(殘局庫(kù))的辦法。比如像國(guó)際象棋,如果棋盤上只有兩個(gè)子或者三個(gè)子,那么它的所有可能位置都能夠窮盡出來(lái),然后反向建立一個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)會(huì)告訴你,如果處于某個(gè)局面,下一步該怎么下,子數(shù)少的時(shí)候,這完全是可以搜索出來(lái)的。這個(gè)條件是樹(shù)要淺,每一步的可能性要少,深的話就很難做。

另一個(gè)盤面估計(jì)的方法是人工去設(shè)計(jì)一些特征,把這個(gè)棋局局面拿過(guò)來(lái)之后,把這些特征的值算出來(lái),再加以線性組合得到一個(gè)估值。這樣的好處是速度很快,給一個(gè)局面可以用微秒級(jí)的速度得到結(jié)果,但就需要人類去甄別什么樣的特征是重要的、什么樣的特征是不重要的,這個(gè)就是傳統(tǒng)的辦法。

當(dāng)然,還有在深度學(xué)習(xí)出現(xiàn)之前圍棋AI里面用的方法,從當(dāng)前局面開(kāi)始通過(guò)隨機(jī)走子到達(dá)一個(gè)容易評(píng)分的狀態(tài),然后根據(jù)得到的結(jié)果反過(guò)來(lái)推剛才的局面是會(huì)贏還是會(huì)輸。最后現(xiàn)在出現(xiàn)了深度學(xué)習(xí)的方法,我把關(guān)鍵局面輸進(jìn)神經(jīng)網(wǎng)絡(luò)里去,輸出的結(jié)果就是當(dāng)前局面的分?jǐn)?shù)。

接下來(lái)我們講得更細(xì)一點(diǎn)。

像國(guó)際象棋(中國(guó)象棋也差不多)。這兩個(gè)游戲的特點(diǎn)是,它們戰(zhàn)術(shù)很多,你可能會(huì)挖很深,這個(gè)局面可能走了10步、20步,就可以把它將死。這樣的話,靠人去算就會(huì)發(fā)現(xiàn)總有方法算出所有情況。

這種情況下搜索是很重要的,但對(duì)局面的評(píng)判沒(méi)那么難,因?yàn)閷?duì)象棋來(lái)說(shuō),少個(gè)馬或者多個(gè)車,都會(huì)知道你是不是快輸了,或者是不是處于劣勢(shì)。雖然評(píng)估不是特別難,但對(duì)搜索的要求很高,以下有幾種方法可以加速它的搜索。比如 Alpha-beta Pruning(剪枝算法)、iterative Deepening 和 Transition Table。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

我在這簡(jiǎn)單介紹下 Alpha-beta Pruning。假設(shè)玩家需要對(duì)下一步做出判斷,需要搜索它的特征,一旦發(fā)現(xiàn)對(duì)方在某一分支有很好的應(yīng)招,那么這條路就不用再搜索了,因?yàn)閷?duì)方這個(gè)應(yīng)招會(huì)讓你這個(gè)分支的最優(yōu)解劣于另一個(gè)分支的最差解。這就是它的一個(gè)簡(jiǎn)單思想概括。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

這樣的搜索是深度優(yōu)先,所以不需要把之前的動(dòng)作都保留下來(lái),只要保留從根到葉子節(jié)點(diǎn)的搜索棧就可以了。需要從左邊開(kāi)始搜,搜到最下面到某個(gè)固定的深度之后返回。所以要先定好深度,不能搜無(wú)限深,否則第一個(gè)分支都出不來(lái)。注意在使用時(shí),搜索的深度也不是完全固定的,有時(shí)候要多往下走幾步。比如說(shuō)算到這一步看起來(lái)很好,我用皇后吃你個(gè)車,我多個(gè)車特別開(kāi)心,但再往下算發(fā)現(xiàn)自己的皇后被人吃回去了,這個(gè)叫作Horizon Effects,需要很多特別的處理步驟。因?yàn)榇嬖谶@個(gè)問(wèn)題,所以要先搜到一些比較好的策略,再一點(diǎn)一點(diǎn)加深 。

圍棋是另外一種思路,它特點(diǎn)是不一樣的:

  • 首先,它的每一步的可能性比較多;

  • 第二,它的路徑比較難做。在座如果有對(duì)圍棋有興趣可能會(huì)知道,圍棋少個(gè)子、多個(gè)子,就會(huì)對(duì)整個(gè)局面有天翻地覆的變化,完全不能以子數(shù)或者位置作為評(píng)判輸贏的標(biāo)準(zhǔn)。

我先介紹一下AlphaGo是怎么做的,之后說(shuō)一下我們是怎么做的。

大家知道,AlphaGo用的神經(jīng)網(wǎng)絡(luò)分為策略網(wǎng)絡(luò)和值網(wǎng)絡(luò),主要能實(shí)現(xiàn)以下功能:

  • 給出一個(gè)局面后,可以決定下哪些位置;

  • 給出一個(gè)關(guān)鍵局面時(shí),判斷它們的值,到底是白優(yōu)還是黑優(yōu)。

AlphaGo首先用了很多的計(jì)算機(jī)資源,采用了上萬(wàn)塊GPU進(jìn)行訓(xùn)練,甚至采用像TPU這樣的硬件進(jìn)行處理,所以計(jì)算資源是非常多非常厲害的。

具體到細(xì)節(jié)上來(lái)說(shuō),分為以下幾個(gè)部分:

  • Policy network,決定下一步怎么走;

  • Value network,決定這個(gè)局面分?jǐn)?shù)是多少。

  • 中間還有一部分是High quality playout/rollout policy,是在前兩者返回結(jié)果速度較慢的時(shí)候,在微秒級(jí)可以先得到結(jié)果。就是說(shuō)我如果用微秒級(jí)的快速走子預(yù)測(cè)下一步,它的準(zhǔn)確率是24.2%,但后來(lái)我自己做實(shí)驗(yàn)發(fā)現(xiàn)可以做到30%多些。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

AlphaGo的訓(xùn)練分為以下幾個(gè)部分:

第一部分,通過(guò)人類游戲先去訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)下棋,不然對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)每個(gè)步驟要往怎么下子都不知道,如果你隨便搜,很多東西都搜不到,所以需要人類棋譜先進(jìn)行訓(xùn)練。這其實(shí)是圍棋革命的開(kāi)始,可以訓(xùn)練出很好的結(jié)果。


這張圖上有一些trade off,雖然訓(xùn)練的第一步走子準(zhǔn)確率比較高,但訓(xùn)練出來(lái)的網(wǎng)絡(luò)可能前饋速度比較慢。所以最后取了折衷原則,灰色的那行就是最后采用的網(wǎng)絡(luò)(至少是在AlphaGo這篇文章發(fā)布的時(shí)候),所以可以發(fā)現(xiàn)時(shí)間是比較快的,4.8毫秒就可以往前算一步。

這里就可以發(fā)現(xiàn)游戲AI的指標(biāo)是比較綜合性的,不僅包括一步預(yù)測(cè)的準(zhǔn)確度,還包括每秒能跑多少次,這樣樹(shù)會(huì)很深,棋力就會(huì)變強(qiáng),一定程度上也是提高棋力的一種方法。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

AlphaGo快速走子(Fast Rollout)可以做到2微秒,同時(shí)也有比較好的精確度。

如果從開(kāi)始預(yù)測(cè)游戲最后的結(jié)果,那就是瞎猜50%的正確率。但在游戲進(jìn)行一陣之后再預(yù)測(cè)的時(shí)候,正確率就會(huì)提高。我希望這個(gè)下降的速度越快越好,比如在下到40手或45手的時(shí)候就知道游戲結(jié)局是什么。所以,這條線下降得越快,結(jié)果應(yīng)該越好。我們這里看 Fast Rollout 這條虛的藍(lán)線,效果當(dāng)然沒(méi)有用神經(jīng)網(wǎng)絡(luò)來(lái)得好,但是它兼顧了速度和準(zhǔn)確率,下降的速度也是比較快的。 

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

AlphaGo用的另一個(gè)主要的技術(shù)是蒙特卡羅樹(shù)搜索。這其實(shí)是個(gè)標(biāo)準(zhǔn)的方法,大家可以在任何一本教科書(shū)上找到怎么做。它的中心思想是,在每個(gè)樹(shù)節(jié)點(diǎn)上存有目前的累計(jì)勝率,每次采樣時(shí)優(yōu)先選勝率高的結(jié)點(diǎn),一直探索到葉節(jié)點(diǎn),然后用某種盤面估計(jì)的方法得到勝負(fù)的結(jié)果,最后回溯剛才探索的過(guò)程,反過(guò)來(lái)更新路徑上節(jié)點(diǎn)的勝率。這樣的話,下次探索的時(shí)候,如果發(fā)現(xiàn)這條路線的勝率變高了,下次更有可能往這上面走。

所以它與Alpha-beta Pruning不一樣的地方是,沒(méi)有界定它的深度是多少,就從0開(kāi)始,讓它自動(dòng)生長(zhǎng),長(zhǎng)出來(lái)后我們會(huì)發(fā)現(xiàn)很多路線是不會(huì)搜索的,可能往下走幾步就不走了,因?yàn)樗l(fā)現(xiàn)這幾步非常糟糕,就不會(huì)走下去;而有些招法非常有意思,就會(huì)挖得非常深,在某些特定招法下可能往下挖五六十步,都是有可能的。最后算法會(huì)選探索次數(shù)最多的節(jié)點(diǎn)作為下一步的棋。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

這是蒙特卡羅樹(shù)搜索比較有意思的地方,它比較靈活,不像國(guó)際象棋,后者每次打開(kāi)樹(shù)的時(shí)候,要保證所有下一步的招法都要考慮到;而蒙特卡羅樹(shù)搜索不需要,有些招不會(huì)搜索到。反過(guò)來(lái)說(shuō),它也有可能漏掉一些好棋,這樣就需要好的策略函數(shù)來(lái)協(xié)同。

接下來(lái)我介紹一下值網(wǎng)絡(luò)(Value Network),AlphaGo稱是用了3000多萬(wàn)場(chǎng)次左右互搏的游戲訓(xùn)練出來(lái)的,左右互搏是怎么生成的呢?這是我早上畫的一張圖,解釋了系統(tǒng)是如何收集數(shù)據(jù)的:

  • 游戲開(kāi)始,我們先讓算法自動(dòng)走,走的時(shí)候是去采樣通過(guò)監(jiān)督學(xué)習(xí)學(xué)得的策略網(wǎng)絡(luò)(SL network)。

  • 走到某一步的時(shí)候,我們隨便走一步,感覺(jué)好象我要故意輸?shù)臉幼樱@樣的好處是讓棋局更加多樣化(diverse),讓算法看到完全不一樣的棋局,擴(kuò)大它的適用面。

  • 隨機(jī)走那一步之后,得到了當(dāng)前棋局,然后用更準(zhǔn)確的通過(guò)強(qiáng)化學(xué)習(xí)增強(qiáng)的策略網(wǎng)絡(luò)(RL network)去計(jì)算之后的應(yīng)對(duì),得到最后的輸贏。這樣就得到了當(dāng)前狀態(tài)到輸贏之間的一個(gè)樣本點(diǎn),用這些樣本點(diǎn)去訓(xùn)練策略網(wǎng)絡(luò)。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

然后你會(huì)發(fā)現(xiàn),AlphaGo的能力變得很強(qiáng),這個(gè)圖表最右欄有個(gè)叫ELO Ranking的東西(雷鋒網(wǎng)按:Elo Ranking是一種用于計(jì)算對(duì)抗比賽中對(duì)手雙方技能水平的方法,由Arpad Elo創(chuàng)建),這決定了圍棋的棋藝有多強(qiáng)。右邊本來(lái)是2400,現(xiàn)在變成快2900,中間差了500分,500分基本上相當(dāng)于兩個(gè)子的差距。本來(lái)是業(yè)余高段的水平,現(xiàn)在變成了職業(yè)初段的水平。當(dāng)然,現(xiàn)在應(yīng)該要比以前牛很多很多,我這里講的只是公開(kāi)出來(lái)的一些例子。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

騰訊“絕藝”

最近“絕藝”打UEC杯,還贏了冠軍,我相信很多人都對(duì)此感興趣。我們?nèi)ツ暌矃⒓恿四昧说诙.?dāng)然,今年的水平高出去年非常多。我不知道他們是怎么做的,文章也沒(méi)有發(fā)出來(lái),所以也不是特別清楚,但是我相信他們應(yīng)該達(dá)到了AlphaGO 發(fā)文章時(shí)候的水平。之后AlphaGO又做了很多改進(jìn),變成了Master,但那些改進(jìn)到最近都沒(méi)發(fā)出來(lái),這部分還是未知的。 

去年8月份我去美國(guó)圍棋大會(huì)(US Go Congress),見(jiàn)到了Aja Huang和Fan Hui,就問(wèn)他們AlphaGO現(xiàn)在做的怎么樣?他們沒(méi)有透露,但是從言語(yǔ)中我感覺(jué)到之前Nature上發(fā)的那篇文章,其實(shí)是有瓶頸的,就是說(shuō)沿著這條路走下去,可能不一定能做的非常好。所以,他們?nèi)绻且偻献?,比如走到Master這個(gè)層面,需要用一些其它的方法,要有更進(jìn)一步的創(chuàng)新。像我是聽(tīng)說(shuō)他們最近把訓(xùn)練好的值網(wǎng)絡(luò)單獨(dú)拿出來(lái),根據(jù)它再?gòu)念^訓(xùn)練一個(gè)策略網(wǎng)絡(luò)。我覺(jué)得這樣做的好處是會(huì)發(fā)現(xiàn)一些看起來(lái)很怪但其實(shí)是好棋的招法,畢竟人類千百年下棋的師承形成了思維定式,有些棋在任何時(shí)候都不會(huì)走,所以按照人類棋譜訓(xùn)練出來(lái)的策略網(wǎng)絡(luò)終究會(huì)有局限性;而從頭訓(xùn)練一個(gè)策略網(wǎng)絡(luò)的話,則會(huì)發(fā)現(xiàn)很多新招。

當(dāng)然,我不知道現(xiàn)在騰訊是不是有特別好的新想法出來(lái),或者用了更大量的對(duì)局?jǐn)?shù)據(jù)。不過(guò)看他們跟Zen對(duì)弈的棋局,我稍微點(diǎn)了一下步數(shù),大概200步不到就可以讓Zen認(rèn)輸,所以還是非常厲害的。

德州撲克 

接下來(lái)我們講一下德州撲克。首先我們要確認(rèn),這是“一對(duì)一無(wú)限注德州撲克”游戲(Heads-up no-limit Texas Hold'em)?!耙粚?duì)一”意思就是我和你兩個(gè)人的零和游戲,我輸錢你贏錢、我贏錢你輸錢,并不是很多人在一張牌桌上有人當(dāng)莊家的那種。多人游戲要難很多,主要是現(xiàn)在用的辦法在多人游戲下不能保證效果,然后狀態(tài)空間也變大很多。

“無(wú)限注”就是你每次下注的時(shí)候不一定是之前的整數(shù)倍,可以是任意數(shù)。那么有限注德?lián)渚褪敲看蜗伦⒌臅r(shí)候,是成倍數(shù)地下,“有限注”的問(wèn)題已經(jīng)在兩三年以前就解決了,當(dāng)時(shí)是發(fā)了一篇Science文章。那篇文章其實(shí)本應(yīng)該會(huì)跟AlphaGO一樣受到很大矚目,但是不知道為什么,當(dāng)時(shí)并沒(méi)有。 

有兩個(gè)很牛的撲克AI,這兩個(gè)都是用的同樣的框架,叫作Counterfactual Regret Minimization(CFR),簡(jiǎn)言之是把游戲中遇到的可觀測(cè)狀態(tài)(叫作信息集Information Set)都羅列出來(lái),然后對(duì)于每個(gè)可觀測(cè)狀態(tài),通過(guò)最小化最大悔恨值的辦法,找到對(duì)應(yīng)的策略。然后反復(fù)迭代。

  • 一個(gè)是CMU的Libratus,它打了20天的比賽,贏了4個(gè)最牛的撲克玩家。(雷鋒網(wǎng)按:在2017年1月,Libratus玩了12萬(wàn)手一對(duì)一不限注的德州撲克。到比賽結(jié)束時(shí),人工智能領(lǐng)先人類選手共約177萬(wàn)美元的籌碼。)

  • 另外一個(gè)叫DeepStack(雷鋒網(wǎng)按:加拿大阿爾伯塔大學(xué)、捷克布拉格查理大學(xué)和捷克理工大學(xué)訓(xùn)練的AI系統(tǒng)與11位職業(yè)撲克手進(jìn)行了3000場(chǎng)無(wú)限注德州撲克比賽,勝率高達(dá)10/11),他們?cè)诰W(wǎng)上也打過(guò)一些大型職業(yè)比賽。

CMU Poker bot

CMU Poker bot沒(méi)有用深度學(xué)習(xí)。他們用到了End-game solver,因?yàn)榈聯(lián)湟痪謺r(shí)間比較短,可能就幾個(gè)回合就結(jié)束了,所以你可以從下往上構(gòu)建游戲樹(shù)。這樣的好處是,最下面節(jié)點(diǎn)游戲樹(shù)的狀態(tài)是比較容易算出來(lái)的,用這個(gè)反過(guò)來(lái)指導(dǎo)設(shè)計(jì)上面的游戲樹(shù)。另外他也用了蒙特卡羅方法,標(biāo)準(zhǔn)的CFR在每次迭代的時(shí)候,要把整個(gè)游戲樹(shù)都搜一遍,這個(gè)對(duì)于稍微復(fù)雜一點(diǎn)的游戲來(lái)說(shuō)是不可接受的,因?yàn)槭侵笖?shù)級(jí)的復(fù)雜度,所以用蒙特卡羅方法,每次選一些節(jié)點(diǎn)去更新它上面的策略。還有一點(diǎn)就是,一般來(lái)說(shuō)我們?cè)谧鲇螒虻臅r(shí)候往往會(huì)想到怎么去利用對(duì)方的弱點(diǎn),但其實(shí)不是這樣的。更好的方法是,我盡量讓別人發(fā)現(xiàn)我的弱點(diǎn),然后據(jù)此我可以去改進(jìn)它,變得越來(lái)越強(qiáng)。用術(shù)語(yǔ)來(lái)講,就是去算一下對(duì)手的最優(yōu)應(yīng)對(duì)(Best response),讓對(duì)手來(lái)利用你的弱點(diǎn),然后用這個(gè)反過(guò)來(lái)提高自己的水平。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

阿爾伯塔大學(xué)的DeepStack 

我們看到DeepStack的基本流程是AlphaGo和國(guó)象的某種混合版本,即有限深度的搜索,加上用值網(wǎng)絡(luò)估值。具體來(lái)說(shuō),從當(dāng)前狀態(tài)出發(fā)向前看三四層的子樹(shù),在最底一層用值網(wǎng)絡(luò)估算一下值(誰(shuí)好誰(shuí)壞),然后用通常的CFR去求解這棵子樹(shù)的的最優(yōu)策略。對(duì)于值網(wǎng)絡(luò)來(lái)說(shuō),每個(gè)人有兩張手牌,52選2,就有1326種情況,但每種情況都有概率,以這個(gè)作為輸入。輸入同時(shí)也包括當(dāng)時(shí)的籌碼數(shù)和公共牌。輸出的是在每種手牌情況下,估計(jì)的值函數(shù)(counterfactual value)會(huì)是多少。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

深度學(xué)習(xí)在游戲AI中的角色

之前說(shuō)了各種各樣的游戲AI,為什么Deep Learning 在其中扮演重要的角色呢?

游戲AI里需要解決的一個(gè)核心問(wèn)題就是,給策略函數(shù)和值函數(shù)建模。那傳統(tǒng)的方法存在兩個(gè)缺陷,一個(gè)是傳統(tǒng)方法需要很多手動(dòng)步驟把一個(gè)大問(wèn)題分解成子問(wèn)題,然后把每個(gè)子問(wèn)題單獨(dú)建模,這個(gè)造成工作量很大;還有一個(gè)問(wèn)題就是手調(diào)的參數(shù)太多,以前的游戲AI就是這樣,每個(gè)參數(shù)都要調(diào),人力是要窮盡的,這也是個(gè)缺陷;最后就是寫游戲AI的人需要真的精通這個(gè)游戲。比如說(shuō)寫圍棋AI,作者得要有棋力,然后把棋力變成一條條規(guī)則放進(jìn)去。那現(xiàn)在我們用深度學(xué)習(xí)的方法,就會(huì)發(fā)現(xiàn)能夠很大程度上解決這些問(wèn)題,而且效果還好很多,像我圍棋水平很爛也沒(méi)有關(guān)系。這也是它為什么那么火的原因。

DarkForest 

接下來(lái)我介紹一下我們的圍棋AI,DarkForest。當(dāng)時(shí)我們?cè)贏lphaGo出來(lái)的3個(gè)月前(2015年11月),就發(fā)了一篇文章,并且公布了在KGS(一個(gè)國(guó)外的圍棋平臺(tái))上的對(duì)局統(tǒng)計(jì)。當(dāng)時(shí)很多人跑過(guò)來(lái)說(shuō)這個(gè)很有意思,也有一些媒體報(bào)道。這個(gè)想法其實(shí)很簡(jiǎn)單,就是我們?cè)O(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò),輸入當(dāng)前局面,希望預(yù)測(cè)一步甚至三步的落子,通過(guò)這種方式提高性能。DarkForest當(dāng)時(shí)在沒(méi)有搜索的時(shí)候,在KGS上能夠做到業(yè)余三段的水平,這在當(dāng)時(shí)是非常有意思的結(jié)果。當(dāng)然現(xiàn)在隨便一個(gè)本科生都可以訓(xùn)練出來(lái)了。 

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

這是一些分析,左邊是一些特征,右邊是通過(guò)訓(xùn)練的時(shí)候,發(fā)現(xiàn)三步比一步要穩(wěn)定,效果也要好一點(diǎn)。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

當(dāng)時(shí)我和我的實(shí)習(xí)生去參加第九屆UEC的比賽,我們從DCNN里拿出來(lái)前3或前5步使用,每一步做蒙特卡洛樹(shù)搜索了75000次,達(dá)到了業(yè)余五六段的水平,拿了第二名。之后我們就把代碼都放在網(wǎng)上,大家都可以用,都是開(kāi)源的。當(dāng)然,我們?cè)趪迳系耐度脒€是比較少的。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

DarkForest也可以拿來(lái)分析AlphaGO和李世石的對(duì)弈??梢园l(fā)現(xiàn)勝率會(huì)有變化。第一局102手,AlphaGO的打入,當(dāng)時(shí)討論這是不是一個(gè)勝負(fù)關(guān)鍵點(diǎn),至少會(huì)認(rèn)為在那個(gè)點(diǎn)認(rèn)為有點(diǎn)意思。我們也拿來(lái)分析一下,最近Master下的兩局,也可以看到勝率的變化情況。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

最近,我們也用了比較相似的框架做了First Person Shooter Game,當(dāng)時(shí)做的是Doom,這是比較復(fù)古的一個(gè)游戲。就是在一個(gè)虛擬環(huán)境里用上下左右鍵操縱,然后看到敵人就開(kāi)槍,最后看分?jǐn)?shù)是多少。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

我們?cè)谶@個(gè)工作中用了Actor-Critic模型,不僅輸出策略函數(shù)還輸出值函數(shù),兩個(gè)函數(shù)是共享大量參數(shù)的。 這個(gè)模型我這里就講一些直觀上的理解。 

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

首先,這個(gè)模型在訓(xùn)練時(shí),會(huì)獎(jiǎng)勵(lì)那些導(dǎo)致超越目前期望分?jǐn)?shù)的行為。也就是說(shuō),我們對(duì)每個(gè)狀態(tài)的值有一個(gè)估計(jì),在做完了某個(gè)動(dòng)作(或者一連串動(dòng)作)之后,如果新?tīng)顟B(tài)的綜合獎(jiǎng)勵(lì)值高于由值函數(shù)算出的預(yù)期,我們就可以更多地鼓勵(lì)它做這個(gè)動(dòng)作。

其次,我們希望值函數(shù)的估計(jì)越來(lái)越準(zhǔn)。值函數(shù)一開(kāi)始是隨機(jī)的,這樣就連帶拖慢了整個(gè)算法的收斂速度。在訓(xùn)練時(shí),我們可以用探索得來(lái)的綜合獎(jiǎng)勵(lì)值去更新估計(jì)值。這樣反復(fù)迭代,時(shí)間長(zhǎng)了以后會(huì)迭代到真實(shí)的值。

另一個(gè)要求是增加多樣性,我們希望輸出的行動(dòng)不要太集中在一個(gè)動(dòng)作上,不然你會(huì)發(fā)現(xiàn)訓(xùn)練一陣之后AI變得很機(jī)械,只會(huì)做固定的動(dòng)作,或者卡死在一些地方(比如說(shuō)卡在角落里轉(zhuǎn)不出來(lái))。這個(gè)通過(guò)加一個(gè)最大熵的能量項(xiàng)來(lái)實(shí)現(xiàn)。

這是一方面,算是目前比較標(biāo)準(zhǔn)的強(qiáng)化學(xué)習(xí)的步驟。這篇文章的創(chuàng)新點(diǎn)是我們加了一個(gè)“課程學(xué)習(xí)”( Curriculum Training)的過(guò)程,因?yàn)橛螒蚶锏貓D比較復(fù)雜,需要讓它先從簡(jiǎn)單地圖學(xué)會(huì)基本操作(開(kāi)槍、上子彈等),有了這些基本操作再把這個(gè)AI放到比較復(fù)雜的環(huán)境里再訓(xùn)練。 

像這個(gè)就是我們?cè)O(shè)計(jì)的簡(jiǎn)單地圖。在這個(gè)地圖里我們有8個(gè)不同的場(chǎng)景,每個(gè)場(chǎng)景里的敵人都不一樣。第一個(gè)場(chǎng)景里敵人動(dòng)作都非常慢,血也很少,可能一槍就打死了;第二個(gè)場(chǎng)景可能敵人行動(dòng)快一些,難度大些,開(kāi)始用火箭彈而不是用手槍來(lái)對(duì)付你。通過(guò)這種方法會(huì)把bot一點(diǎn)點(diǎn)慢慢訓(xùn)練出來(lái),然后一點(diǎn)點(diǎn)讓AI變得越來(lái)越強(qiáng)。 

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

我們參加了VizDoom AI Competition,這個(gè)是機(jī)機(jī)對(duì)戰(zhàn)。我們拿了第一個(gè)Track的第一名。我們發(fā)現(xiàn)最后得分比其它參賽者的高很多。網(wǎng)上有一些視頻可以看一下,視頻里比較有意思,就是我們這個(gè)AI的動(dòng)作比較堅(jiān)決,擊中和移動(dòng)速度都比較靈活,打別的人時(shí)候,自己還會(huì)主動(dòng)躲閃其它人射來(lái)的火箭彈。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

除了機(jī)機(jī)對(duì)戰(zhàn),他們還做了一個(gè)比賽,讓所有BOT跟一個(gè)比較厲害的人類打,很有意思。我們的BOT有30秒鐘的分?jǐn)?shù)超過(guò)人的水平,不過(guò)后來(lái)就不行了。你們會(huì)發(fā)現(xiàn),機(jī)器和人會(huì)有不同的行為,因?yàn)槿说姆磻?yīng)速度不會(huì)特別快,但人有一些長(zhǎng)期的計(jì)劃,他會(huì)知道什么是你的弱點(diǎn)然后去利用它。但BOT在比賽的時(shí)候,并不具備學(xué)習(xí)的能力,所以它們都有恒定的行為模式。像有些BOT一直在轉(zhuǎn)圈子,有些BOT在原地不動(dòng),還有些BOT(比如說(shuō)第二名)就一邊蹲著一邊打人,沒(méi)人打得到它。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

這是一些分析,可以看到什么樣的場(chǎng)景下它的值函數(shù)最高和最低。上面一排是分?jǐn)?shù)最高的,也就是子彈馬上就要打到對(duì)方了,我們的bot馬上要得分,這個(gè)可以說(shuō)是它最得意的時(shí)候;下面一排是分?jǐn)?shù)最低的,也就是我給對(duì)方一槍,對(duì)方?jīng)]死,但此刻我自己也沒(méi)有子彈了。

以上,我們可以總結(jié)成下面兩句關(guān)鍵點(diǎn):

  • 第一點(diǎn),就是通過(guò)搜索來(lái)做出對(duì)將來(lái)的規(guī)劃和推理。 

  • 第二點(diǎn),就是深度學(xué)習(xí)來(lái)做策略函數(shù)和值函數(shù)的逼近,是比較好的方法。 

其實(shí)很單調(diào),不是么?接下來(lái)要做什么?其實(shí)我們還有很多問(wèn)題沒(méi)有辦法解決,這里列了很小一部分。

  • 在星際里面,我們有指數(shù)級(jí)的行動(dòng)可能,在這種情況下怎么做決策?

  • 如果你要用強(qiáng)化學(xué)習(xí)的方法來(lái)做,沒(méi)有激勵(lì)機(jī)制怎么辦,這種情況下去訓(xùn)練一個(gè)機(jī)器人,它不知道怎么做才能提高自己的水平。但是人類似乎就可以找到自己的目標(biāo);

  • 多個(gè)AI間如何溝通協(xié)作;

  • 在虛擬環(huán)境中訓(xùn)練出一個(gè)AI,要如何應(yīng)用于現(xiàn)實(shí)生活;

  • 我們訓(xùn)練模型,一般需要大量的數(shù)據(jù)(數(shù)百萬(wàn)級(jí)甚至上億),但是人類稍微在一個(gè)環(huán)境里待一段時(shí)間就適應(yīng)了,那么我們?nèi)绾巫寵C(jī)器也能做到這一點(diǎn);

  • 如何讓bot學(xué)會(huì)戰(zhàn)略性思考,分清戰(zhàn)略和戰(zhàn)術(shù)的區(qū)別。如何讓它的思考有層次性?

等等,還有很多問(wèn)題等待我們?nèi)ソ鉀Q。

這就是我的發(fā)言,謝謝大家! 

AI科技評(píng)論注:目前田淵棟老師的演講視頻已上傳到騰訊視頻,歡迎關(guān)注“AI科技評(píng)論”后回復(fù)“田淵棟演講”獲取視頻鏈接。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

Facebook 田淵棟詳解:深度學(xué)習(xí)如何進(jìn)行游戲推理?

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)