人工智能可以创造一些令人惊叹的东西。在这一点上,这对你来说应该不是什么令人震惊的消息-考虑到你刚刚在这里降落,我可以想象你已经在这个地区有了一些背景,或者至少已经有了一些兴趣。
上面这些精美的非手工制作的卡片是由MTG HiveMind设计的,MTG HiveMind是一个神经网络和算法的集合,他们从头开始学习,用真正的卡片训练如何设计新的!
MTGH只需要几秒钟就可以设计出独特的卡片,如果由人来执行,这个过程会花费更长的时间。不仅如此,它还可以想出真正独特的卡片机制,正如我想在这里强调的那样,使用这张卡片:
在过去的25年里,Magic the Gathering发生了很大的变化,新的机制被制造出来,旧的机制被调整了,在许多扩展版本中,我们不断地接触到游戏中的新噱头。
飞行是1993年由神奇的理查德·加菲尔德(Richard Garfield)创造的第一个机械师,他是数学博士,也是“魔法聚会”(Magic The Gathering)的创作者。一个简单的关键字走到了现在的魔术时代,自从魔术诞生以来,它在每一套生物中都有特色。13年后,暂停被添加到游戏中,作为在游戏中随着时间的推移进一步潜入奖励概念的一种方式,最初的设计是作为纸牌的另一种成本,通常更便宜,但需要更长的时间才能充分发挥纸牌的潜力。后来,像Epochrasite和Ghitu的Jhoira这样的卡片探索了一些以这个机械师为特色的不同的曲折。
尽管这两种机制在时间、相关性和深度上存在差距,MTG HiveMind还是设法将它们放在一张卡片上,使用了明显的游戏设计扭曲。鲜血的味道并不像大多数卡片通常会做的那样将暂停作为一种替代成本,它实际上是利用机械师的书写方式来制造一种坚持战斗的精神,在被摧毁后返回游戏几个回合!
正如你可能已经注意到的,这张卡片有一种人类设计的味道。感觉就像一张魔术聚集卡。蓝色原型颜色与水元素生物结合得很好,它会飞,在被摧毁后,它需要几个轮回来重组自己并回到战斗中来!。色彩成本、文字大小、底色和稀缺性,所有这些方面共同组成了一张感觉真实的卡片。
在深入研究它的实际工作原理之前,有几点声明值得一提的是。
魔术集合牌不像人脸图片。当然,它们看起来不同,但有一个比这更重要的方面:我们没有十亿张卡可以使用。
这听起来可能很多,但事实并非如此。魔术集牌的一致性不强。每次玩家看到一套新的纸牌时,他们都期待着惊喜,而惊喜必然是对模式的一种打破。对于人类来说,这就是娱乐,还有更多的东西需要我们去思考。从机器学习的角度来看,这是痛苦的。每套都有大约250张卡片,充满了新的、完全不同的机制,在不同的颜色和类型之间展示。
魔术中有一些香草牌,但我们也有双面牌、翻转牌、行星人牌、升级牌和奇形牌。就归一化而言,MTG数据集是混乱的。样品很小,而且种类繁多。
由于我们正在处理的数据的性质,MTG HiveMind的目标不是创建完美的卡片,这将是一项艰巨的任务。相反,目的是设计独特的、令人兴奋的卡片。不要期望它会带来平衡和一致的结果。它的设计并不是为了做到这一点。
想象一下,您需要创建一个复杂的部件,例如,一个原子弹。你可能不得不雇佣来自不同背景的不同专业人士,让他们朝着最终目标共同努力。要找到一个知道如何制作整个产品的人会困难得多,从开采矿物到进行亚原子数学计算。即使你找到一个有能力的人,步骤的执行也是合理的,应该是多面手的品质,而不是专家的品质。
为了在给定的任务中获得更好的性能,将其分成较小的部分并开发特定的方法是一个明智的选择。
神经网络的工作原理也没什么不同。我们不能将原始卡片图像提供给系统,并期望它生成完整的卡片。
由于这个原因,MTG HiveMind不是一个单一的系统,而是一个神经网络的集合,每个神经网络都有独特的方面,这些神经网络都经过了训练,以完成非常具体的任务。一些硬编码算法在设计无法从示例中学到的卡功能时也起着重要作用,我们将在汇编部分详细讨论这一点。
要注意的第一个方面是,所有四个神经网络(名称生成器、描述生成器、颜色分类器和类型分类器)都使用real Magic进行了训练,以便收集数据。
此数据集最初从MTGJSON检索,然后进行大量信息处理。鉴于卡片的描述千差万别,我们在几种情况下希望简化信息。我们来看两个不同的示例:
Auramizer和OutNumber是不同的牌,它们有自己独特的文本,但关于这些牌有一个有趣的事实:它们都指的是自己。这意味着,当“多于”描述“多于”造成伤害时,它并不是在谈论游戏中的任何其他牌,它实际上是在自我引用。
假设有一百张具有相似描述的卡片,在文本中提到它们自己唯一的名字。我们不想区别对待这一事件,因为它们在结构上都是一样的。每次提到一个新的卡名,它不是一个新的设计元素或机制,它只是一个自我引用。在这种情况下,将自己描述中的卡名映射到关键字很有意义。它带来了一致性,而不会造成大量信息丢失。
如果期望神经网络学习Magic The Gathering Card描述的结构,则向其提供如下标准化的数据要有效得多:
这个模型永远不会知道数量超过是什么意思,但可以期待它学会如何很好地进行自我参照。从技术上讲,我们失去了生成引用其他特定卡片的卡片的可能性,但这在Magic中并不常见,所以在这种情况下,信息丢失也是有益的。
在其他场景中,比如增加生物威力或添加指示物,过程并不那么简单。从技术上讲,你可以创建一个神经网络,很好地理解卡片上这些值的含义,但考虑到我们正在处理的限制,我们负担不起那种奢侈的意识。
将文本(如[+1/+1]和[+2/+1])简化为关键字(如[+n/+n]),并为数据集提供更多一致性,代价是以后必须用生成的信息填补这些空白,同时也使神经网络无法学习这些数字周围的有趣模式。
保留文本中的原始信息,增加了神经网络需要学习的模式的复杂性,并接受了这样一个事实,即缺乏数据可能会导致它在处理这些数字时预测奇怪的句子。
在大多数情况下,做出的决定是简化信息。这种方式产生的结果要有趣得多,即使考虑到它们更模糊。
MTG HiveMind学习了如何使用关键字创建独特的卡片,以及如何生成有趣的信息来填充关键字字段-这在汇编一节中进行了解释。
不仅对数据集进行了归一化以提高一致性,而且对部分卡片进行了过滤。如前所述,诸如翻转牌、升级牌和行星人之类的牌已从数据集中删除。在这些情况下,样本大小并不重要,并且机制的表述方式会给数据集增加太多的熵。
在将数据集标准化并准备好使用之后,可以训练生成器模型和分类器,并期望它们学习它们的任务。
系统有两个组件负责生成内容:名称生成器和描述生成器。这些组件是递归神经网络(简称RNN),是为预测序列而创建的模型,例如短语中的字符序列或股票价格中的值序列。
很多人已经写过关于RNN的文章,它们是如何工作的,以及它们与普通神经网络的不同之处,因此,我不会深入解释这个模型。我建议看一看安德烈·卡帕西(Andrej Karpy)精准撰写的递归神经网络(Recurn Neurn Network)的不合理有效性。
使用处理后的数据集训练两个RNN仅几分钟后,有趣而独特的结果开始出现!
这是使用用真实卡名训练的RNN生成的名称示例。正如您所看到的,姓名生成器学习了如何创建Solid Magic的收集卡名称。
此文本是由描述生成器创建的。它是使用数据集中的真实文本进行训练的,如上所述,它看起来像一张一致的卡片,并且它还使用[name]作为关键字进行自我引用。
没有转换法力的永久物消耗3或更少,并且不需要支付其法力费用就可以施放该法术。装备[法力]。
不幸的是,第二个描述不如上一个清晰。它使用本地术语,但它根本没有任何意义。正如您可能已经预料到的那样,在尝试创建真正的新内容时,模型生成的描述在很大程度上看起来令人困惑。
使用人工智能来生成新内容总是有点棘手,很难找到适合模型的大胆程度;如果你强制内容过于多样化,描述就会开始看起来垃圾,如果你太担心产生清醒的结果,新内容就会开始看起来平淡无奇。
到目前为止,我们已经看到了名称和描述是如何创建的,但这还不是一张完整的卡片,卡片还需要颜色和类型。这就是分类器的用武之地。颜色分类器和类型分类器仅根据卡片的描述,负责将卡片与颜色和类型标签进行匹配。
这些神经网络被期望学习特定的模式,例如:能够识别一张有践踏的牌很可能是一个生物,而不是瞬间或巫术。类似于此的任务可以很轻松地执行和学习,并且不需要大量的结构。事实上,这些分类器是非常传统的神经网络模型。
关于如何使用神经网络来解决分类问题,可以在“神经网络”一书中看到一个令人敬畏的解释,但是什么是“神经网络”呢?由3Blue1Brown制造。值得一看。
这里是有趣的部分:两个分类器都是用真正的魔术牌训练的,并用它以前没有见过的牌进行测试,以确保它正确地对新牌进行分类。如果模型成功地将正确的颜色和类型标签匹配到它从未见过的卡片,这也意味着我们可以给它一个由Description Generator所做的描述,并期望它与准确的颜色和类型相匹配。
下图显示了颜色分类器与现有卡片匹配的分类,以及它建议给不存在的卡片的颜色,这些颜色是由描述生成器创建的。
如您所见,它在为描述分配颜色标签方面做得很好。类型也是如此。更具体地说,这些模型在对它们以前从未见过的卡片进行分类时达到了显著的准确性,颜色分类器在标记卡片时87%的时间是正确的,类型分类器在95%的时间是正确的。
此时,可以生成唯一的名称和卡片描述,也可以匹配具有一致颜色和类型标签的名称和卡片描述。卡片差不多完成了,但还留有一些小缺口:
汇编器填补信息空白,并生成神经网络组件没有覆盖的该卡的各个方面。它负责使用常规神经网络解决方案无法接近的方面。要么是因为它们太武断,无法在可识别的模式上学习,要么是因为它们太简单,用神经网络解决这个问题会矫枉过正,要么是因为它们有自相矛盾的要求。
仅根据一般的卡片描述来计算法力成本并不是微不足道的。这项任务即使对我来说也很复杂,我有大约1000亿个神经元。考虑到这项任务,在词组和成本之间建立关系比看起来要复杂得多。为了更清楚地说明这一点,我们来看一个示例:
首先,我们知道这种生物会飞。问题是,这毫无意义。法力消耗为零的牌,如扑翼机可以飞行,而Emrakul也可以飞行,但是它的费用是15英镑。
然后,你可以从你控制的每个神器中获得生命。这也不能说明问题,即使你对魔术了解很多,也很难判断这种能力的影响。
展出的牌是丝木天使,共耗费8点法力来施放。
那么,其他的卡片特征呢,比如力量和韧性呢?他们不能告诉你更多关于卡转换法力的费用吗?
这确实是一个很好的建议,问题是我们不能确定法力消耗是基于力量和坚韧,还是能量等级是基于卡片的法力消耗。
在开发过程中,转换的法力成本问题比我想象的要困难得多。
使用神经网络的不同方法做得很差,总体来说,结果感觉相当随机,精度很低。虽然颜色和类型分类在训练后的几秒钟内就达到了惊人的准确性,但成本分类并不能比随机的得分更高。
在这种情况下,我的方法是尝试一个更有创意的解决方案。对于法力成本,解决方案是将生成的卡描述与Magic the Gathering数据库中的彼此现有卡进行比较,并从最近的卡中获取成本,添加一点噪音以确保它足够有机。记住,我们的目标不是生成平衡卡,而是有趣的卡,事实证明这个方法出人意料地好!
在这一点上,力量和韧性不再是问题,很容易给出一个自然适合卡片的启发式值,不一定是平衡的,但至少它应该看起来像一张真正的魔术牌。
这现在将我们引向一个非常相似的问题:子类型。类似于转换的法力成本问题,仅根据其描述很难区分卡片子类型。
针对此特定问题,创建了每个子类型经常附带的颜色和单词列表。例如,搜索地精将返回红色、匆忙和生物等结果。
这样做之后,将比较生成的卡特征,例如名称、描述和颜色,以查看与列表上的每个元素匹配的方面的数量。然后,它选择最适合的子类型或最适合的子类型之一。
例如,如果生成了一张会飞的白卡,它可能会被归类为天使,而不是妖精。这是因为它与第一个亚型在相似性方面得分要高得多。
汇编者负责填补的最后一个信息缺口是法力域和稀缺性。
稀有度很容易计算,就像在真正的魔术中,聚集牌是根据牌的描述长度计算的。然后根据卡片转换的法力成本和颜色填充法力字段。
MTG HiveMind全线管线已基本完工。但还有一个重要的部分留下了:艺术品!
从机械上讲,卡片艺术品并没有太大的不同,甚至MTG HiveMind的重点都不是在卡片上找到一个令人愉快的图像并展示出来。然而,当我们考虑到卡片的真实感时,艺术是卡片的一个重要方面。完全出于这个原因,MTG HiveMind为创建的卡片搜索匹配的图稿。
这个过程也可以通过使用可以创造艺术品的神经网络来实现,但这将是极其复杂的。从数据库生成唯一的卡片文本已经很困难了,所以您可以想象从原始数据库创建图像一点也不容易。出于几个原因,使用另一个神经网络来创建卡片艺术的想法是不可行的。
最具成本效益的方式是搜索真正的艺术家创作的作品。
这个过程相当简单,它基本上在ARtSTATION数据库中搜索包含特定关键字(如颜色或卡片类型)的帖子。然后,检索图像,并将原始艺术家的姓名打印在卡片上。
好了。这就是创建新卡的整个流程的工作方式。现在只需点击一下,就可以创建数千张卡片。
让我们看看一些结果,并讨论改进、问题和代码。
到目前为止,大部分展示的卡片都是可以接受的。并不是MTG HiveMind创建的所有作品都是这样的,因为它肯定会创建非常糟糕的东西。大多数卡实际上都有一个或多个问题,在某些情况下,它们可能是绝对的浪费。
如你所见,这些卡都是垃圾。大部分文字没有多大意义,颜色怪异,整体设置不太合适。
像这样的卡片是意料之中的,它们实际上代表了在开发MTG HiveMind时所做决策的不利之处。它们是不平衡的,文本变得完全是胡说八道,因为它被赋予了创造独特描述的自由,而且艺术没有被纳入策展过程。
MTG HiveMind确实创造了很多糟糕和普通的作品,但人类也是如此,对吗?你可以在互联网上找到的大多数卡片,甚至是真正的魔术卡片,有时设计得都很糟糕,展示的是笨拙的艺术品和奇怪的文字。我们有理由认为,该算法也会产生一些不好的结果。但重要的是,如果在选择特殊牌的过程中考虑到过滤器,它可能会生成显著高的平均质量池。丢弃不起作用的东西并保持令人印象深刻的结果的设计过程是自然的,当然,当查看MTG HiveMind设计的卡片样本时,这也是必要的。
在生成的卡片中有一个质量梯度,值得一看的是那些乍看起来像是独一无二的,但最终却是荒谬的或简单地令人困惑的作品。
他们中的大多数都属于这一类,如果你不想太多,他们看起来就像真的卡片。从视觉上看,它们的方面似乎吻合,但文本没有太大意义,或者缺乏上下文或协同效应。
MTG HiveMind学会了设计令人惊叹的卡片,如果你想看到更多由它生成的卡片,你可以查看MTGH的Twitter账号,每天看看一张新的卡片。
MTG HiveMind的开发过程中出了很多问题,我肯定学到了很多关于神经网络的知识。目前,卡片生成系统存在两个主要问题:缺乏连贯性和难以生成信息。
大家都知道,对转换后的牌、法力消耗和子类型进行分类是有问题的,而且使用神经网络在这个特定的挑战中帮不了我太多。不能用机器学习解决这个问题让我手无寸铁,我找到的解决方案有点笨拙。它起作用了,但是有一个l。
.