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

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

0

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

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

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

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

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

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

嘉賓介紹

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

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

游戲已經(jīng)成為AI研究測試平臺

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

游戲作為平臺有兩個好處。

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

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

這兩點讓它成為一個很好的研究平臺。游戲其實有很多種,在這里我們分為兩類,即:

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

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

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

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

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

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

  • 游戲能作為一個平臺,對我們的算法進行效果測試。

  • 游戲自身也是一個好的體驗平臺,能夠檢驗我們的算法。

比如說我們要花很長時間才能證明無人車的效果是否好,目前來看,不如做一個游戲,能夠打敗最強的棋手,讓大家了解人工智能的水平,這樣的影響力。

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

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

Game AI是如何工作的?

首先我先簡單介紹一下Game AI是怎么工作的。

大家可能覺得計算機非常強、無所不能,但這是不對的,因為就算計算機有超級超級強的計算能力,也不可能窮盡所有的情況。

那么計算機是怎么做的呢?計算機其實是通過以下的方式來進行游戲決策。

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

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

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

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

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

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

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

接下來我們講得更細一點。

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

這種情況下搜索是很重要的,但對局面的評判沒那么難,因為對象棋來說,少個馬或者多個車,都會知道你是不是快輸了,或者是不是處于劣勢。雖然評估不是特別難,但對搜索的要求很高,以下有幾種方法可以加速它的搜索。比如 Alpha-beta Pruning(剪枝算法)、iterative Deepening 和 Transition Table。

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

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

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

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

圍棋是另外一種思路,它特點是不一樣的:

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

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

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

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

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

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

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

具體到細節(jié)上來說,分為以下幾個部分:

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

  • Value network,決定這個局面分數(shù)是多少。

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

騰訊“絕藝”

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

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

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

德州撲克 

接下來我們講一下德州撲克。首先我們要確認,這是“一對一無限注德州撲克”游戲(Heads-up no-limit Texas Hold'em)?!耙粚σ弧币馑季褪俏液湍銉蓚€人的零和游戲,我輸錢你贏錢、我贏錢你輸錢,并不是很多人在一張牌桌上有人當(dāng)莊家的那種。多人游戲要難很多,主要是現(xiàn)在用的辦法在多人游戲下不能保證效果,然后狀態(tài)空間也變大很多。

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

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

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

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

CMU Poker bot

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

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

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

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

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

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

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

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

DarkForest 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 第一點,就是通過搜索來做出對將來的規(guī)劃和推理。 

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

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

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

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

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

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

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

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

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

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

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

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

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

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