如何評價 DeepMind 對卡牌遊戲進行的學習的論文?

http://arxiv.org/pdf/1603.06744.pdf 論文

http://www.iyingdi.com/article/17220/share?plg_nld=1system=iosplg_auth=1plg_uin=1plg_usr=1plg_dev=1shareFrom=iosversion=321plg_nld=1skin=dayplg_vkey=1

剛在旅法師營地看到,是 DeepMind 剛剛發出的。

輸入是卡牌文字描述,輸出是 Java 代碼的樣子。貌似對隨從識別比較好,法術不太行。

貌似不應該叫 AlphaGo 的,不過營地這樣寫,比較好理解吧。


今天在營地看到了這個帖子,感覺挺有意思的。然後去關注了一下,看了一下deepmind發的paper.

本質上來說,這個項目並不是研究爐石的AI,也就是並不是讓人工智慧去下圍棋一樣研究爐石的玩法。它其實是一個NLP的項目,也就是自然語言處理。通俗點來講,就是讓計算機理解人類的語言。在這個項目中的主要工作,就是把爐石的卡牌信息作為輸入,然後由計算機處理,生成相應的代碼。

這次的研究選取了兩個卡牌遊戲,分別是萬智牌和爐石傳說。至於為什麼選取卡牌遊戲進行分析,我個人的理解是

1.首先卡牌遊戲現在比較熱門,可以引起比較大的關注度。

2.卡牌遊戲的詞綴比較少,可以簡化模型。

3.樣本總量比較大

上面的數據就是萬智牌和爐石卡牌數據的一些信息。

下面舉一個翻譯成功的例子。這張牌大家都很熟悉,騎士的神恩術。

如果對編程比較熟悉的應該可以看出來這個是python代碼。

我們簡單分析一下這個構造函數。

super().__init__("Divine Favor", 3,CHARACTER_CLASS.PALADIN, CARD_RARITY.RARE)

"Divine Favor"第一個參數,卡牌的名字

3,消耗的法力水晶數

CHARACTER_CLASS.PALADIN,,聖騎士職業卡

CARD_RARITY.RARE 表示稀有度為藍卡。

然後下面:difference = len(game.other_player.hand)- len(player.hand

定義了一個變數,數值等於雙方手牌數之差。

然後通過一個循環,進行抽牌。

for i in range(0, difference):player.draw()

我們可以看出來這個翻譯還是比較成功的,基本已經表達出來卡牌的意思,由此也可以看出來deepmind技術的強大。

文中用佛丁作為例子,解釋了程序是如何讀取卡牌信息的。

首先可以看出來,866分別作為前三個輸入,也就是卡牌的身材,第四五個輸入Tirion Fordring,為卡牌名稱。

然後是聖盾,嘲諷,亡語等效果。可以看出如果是固定的詞綴還是比較好理解的,但像亡語這種描述性詞綴的難度會大大增加

另外,發現deepmind復用了github上開源爐石模擬器hearthbreaker中對於卡牌的描述,如果編譯結果接近於hearthbreaker中的代碼則認為編譯正確.


關注點應該在根據卡牌描述生成代碼。作為碼農來說這個有點不妙啊,自然語言翻譯成程序代碼,短時間來看增加程序員的產量,但是長期來看的話以後可能專門的程序員需求就不大了。。。對整個社會來說好處很大就是了,這個比圍棋ai的實用價值大多了


這個挺有意思的,今天我也是剛看到。我覺得營地的新聞編輯好像沒有完全明白人工智慧在幹什麼,事實上Deepmind在學習的並不是如何玩牌,而是如何自動把萬智牌/爐石傳說的規則描述從自然語言(牌面上的規則敘述)轉化成機器語言(代碼)。換言之,Deepmind並不是在學說牌該怎麼打,而是在學習如何從自然語言上理解每張牌能幹什麼。這個研究的主要價值在於自然語言處理,換言之就是機器如何理解人類說的話(而不是人寫的代碼),而萬智牌和爐石傳說這兩個遊戲只不過是工具而已,其實並沒有什麼太大的相關性,選擇他們的主要原因讓我想也是因為他們總辭彙量相對不大,然後樣本比較多(尤其是萬智牌),並且數據質量非常高。營地的原新聞讓我看,雖然標題還挺正經,但是到了正文部分似乎挺含混不清的,容易讓讀者覺得Deepmind在學的是打牌的策略(尤其是和AlphaGo的混淆)。

當然,我覺得這個研究對於萬智牌的意義也不能說完全沒有。我個人一直覺得使用包括機器學習在內的方法來無論是開發更高級的萬智牌AI還是說探索一些諸如萬智牌最優組法之類問題的最大阻礙,就是在於萬智牌極為複雜的規則翻譯成機器語言這件事的繁瑣性。事實上,因為這種繁瑣性,所以個人研究者很難去從事這方面的研究,而大型團隊顯然又不會看上萬智牌這塊蛋糕。如果說Deepmind的演算法最終能夠實現比較高的準確率的話,那麼可能會為(像我這樣的)可能的個人研究者打開一扇新的大門。

不過必須說我個人不太看好Deepmind最終能夠在萬智牌上取得比較高的翻譯準確率。因為目前Deepmind的學慣用目標,XMage(一個完全由愛好者手寫搭建的開源萬智牌規則庫)上,很多牌的機器語言化都遇到了阻礙。而MO作為一款商用軟體到今天還有很多規則類的Bug。讓我想Deepmind更可能在爐石上成功,畢竟爐石的規則複雜性要低不少,而那跟萬智牌玩家們顯然是沒什麼關係的了: (。


夭壽啦,電腦會自己編程啦!


原來那個paper是deepmind的。。


謝沒人邀……憋了幾天還是想來答一發

首先如上面已有的答案所說,這篇paper所做的並不算是所謂「讓機器在學習如何玩牌」,而應該說是讓機器理解牌的描述信息。因而本質上說這還應該屬於NLP範疇。

從文末的related work和最終結果的測評方法(BLEU score)看,deepmind是將「根據自然語言描述生成程序代碼」這一過程視為機器翻譯的一種,很想厚著臉皮說一句跟我個人之前的想法類似- -然而個人水平太渣並不怎麼了解機器翻譯方面的工作和現有的方法……

從motivation角度看……………………好吧我好像並沒有看到什麼明確的motivation,也許這是deepmind某一新的AI計劃的一步,也許他們只是想show一下這個模型。

這一模型簡單來說還是屬於字元級別的RNN,但在輸出時加入了多個「選擇器」讓神經網路自行選擇是從原有輸入中直接copy字元還是自己生成字元。可以看到的是加入的這一部分使得神經網路在需要生成卡牌名,生命值,攻擊力這些對於每張卡牌(或者說training sample)來說都比較獨特的信息時表現較好。也許這也是deepmind選擇使用爐石卡牌進行實驗的原因——這種結構化的固定格式的信息似乎在其他NLP問題上並不多見。

但是……從給出的結果中也可看到之前我們在應用char-level RNN生成程序代碼時的一個問題:生成出的代碼可能是幾乎完全符合語法規則的,但是在生成到一定階段後,開始出現的是與上文其實並不相關的其他代碼。這一問題可能還是源於RNN本身可以記錄的信息長度有限(儘管使用了LSTM),個人很期待deepmind在解決這一問題上的後續工作(如果他們是這麼覺得的話- -)


推薦閱讀:

同為卡牌對戰遊戲,為何《爐石傳說》能夠迅速成為當代電競的主流項目,而萬智牌則始終處於較為小眾的地位?
關於萬智牌早年哪些失敗,還沒有完全實現,或己消失的機制有哪些?
剛接觸萬智牌,應該做什麼?
地牌的設定對萬智牌遊戲的隨機性是增強了還是減弱了?
edh未來會不會是萬智牌最受歡迎的玩法?

TAG:人工智慧 | 機器學習 | 萬智牌 | 爐石傳說Hearthstone | AlphaGo |