摘要:而最近,一位機器學習開發者開源了萬智牌的卡牌生成器,玩家只需要指定名稱就可以生成卡牌,其中不乏稀有牌。玩家只需要指定卡牌名稱,機器就可以自動生成牌面、效果、稀有度等信息。

機器之心報道

機器之心編輯部

集換式卡牌類遊戲繞不開的就是抽卡。爲了一張卡面精美、效果拔羣的卡牌,無數玩家獻祭了自己的錢包。而最近,一位機器學習開發者開源了萬智牌的卡牌生成器,玩家只需要指定名稱就可以生成卡牌,其中不乏稀有牌。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

玩過集換式卡牌類遊戲的讀者都知道,卡牌的效果決定了戰鬥力的強弱,越是稀有的卡(如 SSR)越有着更強的效果。但是,抽不到稀有的卡牌也讓無數玩家心碎。近日,機器學習愛好者用

GPT-2

製作了一個萬智牌生成器。玩家只需要指定卡牌名稱,機器就可以自動生成牌面、效果、稀有度等信息。項目作者 Max Woolf 畢業於卡內基梅隆大學,目前擔任美國新聞聚合網站 BuzzFeed 的數據科學家,也曾在蘋果就職。他已經提供了一個網站,有興趣的玩家可以生成自己的萬智牌卡牌。經過嘗試,筆者發現出稀有牌的數量比遊戲抽卡出的多很多。

  • 生成器網址:https://minimaxir.com/apps/gpt2-mtg/
  • 項目地址:https://github.com/minimaxir/mtg-gpt-2-cloud-run

什麼是萬智牌

萬智牌(Magic: The Gathering)是著名的卡牌類遊戲,類似的遊戲有「爐石傳說」。進行遊戲的雙方各自有一套牌組。遊戲開始時,雙方各有 20 點「生命」。雙方打出牌,目標是使對方輸掉這盤遊戲。雙方可以利用牌面上的效果將對方的「生命」降至 0 或以下,或迫使對手的牌庫沒有牌可抓,或牌手累積 10 個以上的中毒標記,或利用特殊咒語。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

萬智牌的一部分卡牌。

卡牌是萬智牌遊戲的核心,由以下幾部分組成:

  • 卡牌名稱:位於牌的左上角。
  • 施法費用(Mana):位於牌的右上角。表示需要施放的法術力。
  • 卡牌插畫:位於牌的正中。
  • 卡牌類型:位於牌的插畫下方靠左的位置。萬智牌中有七種基本類別:「Land」、「Creature」、「Artifact」、「Enchantment」、「Planeswalker」、「Permanet」、「Sorcery」、「Instant」
  • 稀有度:位於類別欄的右側的標誌,表示此牌的稀有程度。(金色代表「Rare」,銀色代表「Uncommon」,黑色代表「Common」,不同版本可能有更稀有的卡牌)
  • 效果描述:用於描述這張卡牌的效果。
  • 力量和防禦力屬性:僅屬於「Creature」這個類別的牌具有,位於牌的右下角,由斜線分開的兩個數字表示,表現出該生物的力量和防禦力(如:「3/3」表示 3 的力量和 3 的防禦力)。
  • 所屬顏色:類似於陣營,圖標會出現在施法費用旁邊。一共有五種,見下圖:
你還在氪金抽卡?高玩用GPT2自己生成SSR卡

稀有卡牌一鍵生成,只要幾個詞

項目作者在 Reddit 中提到,這個項目可以自動生成萬智牌卡牌,而玩家只需要輸入卡牌的名字,而卡牌類型和施法費用可以自定義或交給機器決定。大約需要十幾秒,機器就會生成一張新卡,包括卡牌插畫、稀有度和卡牌效果的文字描述。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

在左上角的框中填入卡牌名稱,玩家可自定義卡牌類型(Card Type)和施法費用(Card Mana Cost)或留空。機器會在右側自動生成一張新的卡牌圖片。

作者提供了一些例子,比如:

Krovikan Vampire(寇維肯吸血鬼)

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

這是一張 Uncommon 的卡牌,類型是 Creature 中的吸血鬼,還有出牌時的效果。牌面右上角則有施法費用、顏色等信息。從效果描述上來看,當這張牌入場或攻擊時,其獲得+2 的力量和+0 的防禦力,直到回合結束。

這些信息都是由機器生成的,效果的描述和卡牌名稱能夠很好的搭配,行文也足夠連貫。

機器之心也嘗試生成了一些卡牌:

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

「火手」。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

「自然低語」。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

「閃電獠牙」。驚喜的是,有時候可以生成「Rare」稀有度(右側爲金色)的手牌。

從實驗來看,機器可以根據卡牌名稱提供該種名稱下類似的效果。比如類似火「Fire」的詞語更偏向於產生帶有傷害效果的手牌。而自然「Nature」這樣的詞語更偏向於獲得增益效果。

GPT-2:卡牌生成器

根據作者的描述,實現玩家制卡背後的技術是 GPT-2。

GPT-2 是 OpenAI 於 2018 年提出的一種基於 Tranformer 的預訓練語言模型。Transformer 是一種流行的注意力機制,在 BERT 預訓練語言模型中也有使用。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

在預訓練 GPT-2 時,模型輸入爲無標註的語料,訓練目標爲預測一句話中的下一個字。相比於 BERT,GPT-2 增加了 Transformer 層數,採用了更多、更寬泛的語料進行訓練,達到了更好的效果。

發佈之初,由於擔心被濫用,OpenAI 僅開源了「縮水版」的 GPT-2-simple 版本,僅有 117M 的參數量,而真正的 GPT-2 參數量達到多達 15 億。

即使是 GPT-2-simple,它的效果也是驚人的。已有使用 GPT-2 生成假新聞的實現。也有很多人使用 GPT-2 進行更多的實驗,OpenAI 自己也用 GPT-2 製作了一個 AI 音樂生成器。

在本項目中,作者使用了 GPT-2 117M,即最早開源的 GPT-2-simple。模型訓練了 6500 步,在 P100 GPU 上耗費了兩個小時。

作者表示,由於訓練量較小,GPT-2 在卡牌名稱和效果上出現了過擬合的情況。超參「Temperature」在 0.7 和 1.0 時,生成的卡牌比較普通,1.2 時,網絡開始生成自己的規則和卡片,達到 1.5 和 2.0 時,生成的卡片類似於卡牌生成網站 MTGCardsmith。

目前項目已經開源,作者提供了生成卡牌效果和圖片的 API。

GPT-2 效果怎麼樣

其實用 GPT-2 生成文本已經是非常通用的做法了,如果第一次看到它生成的文本,那麼肯定會被驚豔到。似乎 GPT-2 依靠語言模型已經能生成非常「合理」的段落了,甚至我們都不太能確定它到底是機器寫的還是人類製作的。

如下所示爲機器之心嘗試用 GPT-2 中 3.45 億參數量的大模型做預測。即使我們每次都給相同的前提,模型也會生成完全不同的故事。在下面的例子中,我們發現 GPT-2 生成的樣本還是非常合理的,甚至它還會生成一些不存在的 GitHub 地址。

你還在氪金抽卡?高玩用GPT2自己生成SSR卡

如此神奇的模型可以源源不斷生成各種各樣的卡牌。考慮到作者已開源了項目代碼,也許更換數據,你也可以爲自己的手遊或桌遊生成超高稀有度的卡牌了。

相關文章