机器之心编辑部

你还在氪金抽卡?高玩用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 个以上的中毒标记,或利用特殊咒语。


万智牌的一部分卡牌。

卡牌是万智牌游戏的核心,由以下几部分组成:

  • 卡牌名称:位于牌的左上角。

  • 施法费用(Mana):位于牌的右上角。表示需要施放的法术力。

  • 卡牌插画:位于牌的正中。

  • 卡牌类型:位于牌的插画下方靠左的位置。万智牌中有七种基本类别:「Land」、「Creature」、「Artifact」、「Enchantment」、「Planeswalker」、「Permanet」、「Sorcery」、「Instant」

  • 稀有度:位于类别栏的右侧的标志,表示此牌的稀有程度。(金色代表「Rare」,银色代表「Uncommon」,黑色代表「Common」,不同版本可能有更稀有的卡牌)

  • 效果描述:用于描述这张卡牌的效果。

  • 力量和防御力属性:仅属于「Creature」这个类别的牌具有,位于牌的右下角,由斜线分开的两个数字表示,表现出该生物的力量和防御力(如:「3/3」表示 3 的力量和 3 的防御力)。

  • 所属颜色:类似于阵营,图标会出现在施法费用旁边。一共有五种,见下图:

稀有卡牌一键生成,只要几个词

项目作者在 Reddit 中提到,这个项目可以自动生成万智牌卡牌,而玩家只需要输入卡牌的名字,而卡牌类型和施法费用可以自定义或交给机器决定。大约需要十几秒,机器就会生成一张新卡,包括卡牌插画、稀有度和卡牌效果的文字描述。

在左上角的框中填入卡牌名称,玩家可自定义卡牌类型(Card Type)和施法费用(Card Mana Cost)或留空。机器会在右侧自动生成一张新的卡牌图片。

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

Krovikan Vampire(寇维肯吸血鬼)

这是一张 Uncommon 的卡牌,类型是 Creature 中的吸血鬼,还有出牌时的效果。牌面右上角则有施法费用、颜色等信息。从效果描述上来看,当这张牌入场或攻击时,其获得+2 的力量和+0 的防御力,直到回合结束。

这些信息都是由机器生成的,效果的描述和卡牌名称能够很好的搭配,行文也足够连贯。

机器之心也尝试生成了一些卡牌:

「火手」。

「自然低语」。

「闪电獠牙」。惊喜的是,有时候可以生成「Rare」稀有度(右侧为金色)的手牌。

从实验来看,机器可以根据卡牌名称提供该种名称下类似的效果。比如类似火「Fire」的词语更偏向于产生带有伤害效果的手牌。而自然「Nature」这样的词语更偏向于获得增益效果。

GPT-2卡牌生成器

根据作者的描述,实现玩家制卡背后的技术是 GPT-2

GPT-2 是 OpenAI 于 2018 年提出的一种基于 Tranformer 的预训练语言模型。Transformer 是一种流行的注意力机制,在 BERT 预训练语言模型中也有使用。

在预训练 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 地址。

如此神奇的模型可以源源不断生成各种各样的卡牌。考虑到作者已开源了项目代码,也许更换数据,你也可以为自己的手游或桌游生成超高稀有度的卡牌了。

工程生成模型GPT-2语言模型
2
相关数据
注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

GPT-2技术

GPT-2是OpenAI于2019年2月发布的基于 transformer 的大型语言模型,包含 15 亿参数、在一个 800 万网页数据集上训练而成。据介绍,该模型是对 GPT 模型的直接扩展,在超出 10 倍的数据量上进行训练,参数量也多出了 10 倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。

推荐文章
暂无评论
暂无评论~