洛奇英雄传,怎么使用神经网络与深度学习打造 FGO 主动出牌 Bot,张天志

频道:最近大事件 日期: 浏览:131

尽管肝活动是手机游戏体会的一环,但在一个功率至上的年代玩家们想要一键刷使命脚本/BOT 也是在情理之中,之前日本玩家就现已针对各种手游制造过物理外挂,比方 LLSIF 自动打歌器,FGO 无限池自动点击器等等,而现在技能宅们现已不满足物理外挂,而是运用人工智能技能、神经网络算法制造出了可以自动挑选 BAQ 卡牌的 FGO AI BOT 并将其命名为「Project Pendragon」,而且还经过加强学习技能打造出了升级版的 Pendragon Alter Bot。

Michael Sugimura 发明的「Project Pendragon」人工智能 BOT 是运用三个神经网络在 FGO 中由 BOT 自己决议在什么时分出什么样的卡(ABQ),据「Project Pendragon」的制造者自己的体会,运用这个 BOT 后为他在 FGO 游戏中节省了许多时间,尤其是在早上他会让 BOT 替自己刷 10 分钟到 15 分钟的 FGO。




FGO 的游戏规矩是在一个回合中玩家需求从游戏给出的五张手牌中挑选其间三张对敌人进行进犯,手牌有三种类型 B 卡(加进犯)、A 卡(加 NP)、Q 卡(加暴击星),每种类型的手牌总共有多少张取决于部队中的人物,五张手牌是来源于部队中三位人物自带的 15 张手牌(3 人物每人五张自带手牌)。另一个重要的游戏机制是卡牌的 BUFF 奖赏/进犯奖赏,三种类型相同的卡牌有 BUFF 奖赏,三张同一人物的卡牌可以带来额定进犯。

作者的思路是树立一系列的神经网络让机器来玩 FGO,再经过 python 将机器的挑选输入到游戏中完结自动挑选卡牌刷本,关于 BOT 来说一个根本但有用的游戏战略便是尽量的让自己挑选的卡牌可以构成奖赏,为人物加 BUFF 或许损伤作用,使得战役更有功率然后缩短游戏时间。

BOT 的逻辑结构

1、在 BOT 发起时,BOT 自己会检测是否看到进犯按钮,假如发现了进犯按钮就会进入到出牌战略挑选阶段,从五张手牌中挑选要打出的三张牌

2、BOT 首要仍是洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志查看 5 张牌傍边是否有三张相同人物的手牌,假如有 BOT 会优先挑选「brave chain」(第一张牌挑选红卡)。

3、假如 BOT 发现无法打出「brave chain」,BOT 面瘫老公早上好会检测五张手牌的类型(ABQ),优先挑选三张相同类型的牌,打出 BUFF 奖赏(加进犯/训犬根底教程加 NP/加星)。

4、假如 BOT 仍是找不到可以处处的「chain」,则会依照 A、B、Q 的优先顺位出牌(作者自己的出牌风格优先考虑打 A 卡集 NP)。

以上过程一旦完结,BOT 将再次开端检测是否呈现进犯按钮,呈现的话就会进入到下一次的判别。

在这个 BOT 出牌的逻辑判别过程中,辨认进犯按钮与卡牌类型并进行处理是一个经典的卷积神经网络(CNN)而辨认处理同一个人物的三张手牌则是孪生卷积网络(siamese CNN)

作者运用 PyTorch 构建了两个卷积神经网络并用 NVIDA 1080、1060 GPU 作为硬件设备练习网络。

但在此之前让 FGO 在 PC 上运转的难度超出了作者的幻想

Bot 自己挑选的源赖光三连


理论上在 PC 上玩 FGO 应该是件很简略的工作,但 Google 一下就知道现在市面上没有一款模仿器可以轻松支撑 FGO,而且 FGO 还不支撑安卓设备翻开开发者形式(翻开后无法进入 FGO 游戏)。在阅历了时间短的失望后作者想到了运用 TeamViewe 来操控自己的安卓设备的计划,测验一下后发现作用很好,仅有的缺陷便是长时间运用手机发热惊人。

在用 TeamViewer 设置后 PC 与手机端后,作者成功发起 FGO 而且经过 python 的 PyAutoGUI 成功的向手机发送了鼠标点击指令,之后便是实在的经过 FGO 中的游戏行为让神经网络进行学习。

在 FGO 游戏中只需玩家按下进犯按钮才会看到给出的五张手牌并从中进行挑选,咱们让 BOT 每秒钟检测一次进犯按钮,假如检测到再履行后续的代码。

点击进犯按钮之后便是要确认手牌在屏幕上的方位,FGO 中的五张手牌总是坐落屏幕上相同的方位也便是手牌呈现的方位是固定的,这就让咱们可以标识出手牌并输入到神经网络傍边。

在学习的过程中依据实践状况作者也对神经网络进行了必定的调整

运用 TeamViewer 将 PC 端与安卓端相连


要让 Bot 辨认出不同的卡牌类型



作者截取了几十个呈现进犯按钮和没有呈现进犯按钮的游戏画面,还截取了大约 60 张不同色彩手牌的 FGO 游戏图画,尽管事例图画上的人物并不相同,可是卡牌色彩之间是有共同性的,他期望 BOT 优先考虑卡牌的色彩(色彩代表卡牌类型)做出判别。在堆集了两个事例数据集后,作者凭借 Pytorch 的预练习网络进洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志行学习,并对预练习网络进行了一些微调。

作者终究挑选运用 ResNet 50 模型进行神经网络的练习(作者想看看在自己显卡上运用较大的 Resnet 50 模型要花多长时间 ),对mum193于每个神经网络进行了 5 个周期的练习,学习后的两个分类使命(洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志辨认 Attack 与辨认卡牌类型)精确度都达到了 95% 以上。

用于确认卡牌类型的神经网络运用的是极乐摇摇摇 ResNet 50 模型这也构成了 BOT 的骨干,由于在 FGO 中只需 BOT 确认好卡牌的类型就可以尽或许的完结「chain」。

Bot 完结的蓝卡 Chian



运用孪生卷积网络寻觅「brave ch海贼王剧场版13鬼域乡大冒险ain」

好像上面所说 FGO 的另一种出牌奖赏是相同人物的三张卡牌可以构成「brave chain」添加一次额定进犯,要想让 BOT 可以自动辨认相同人物的卡牌而且使出「brave chain」,有好几种办法可以完结这个需求,第一个便是树立一个经典的卷积神经网络,让这个卷积神经网络可以辨认出 FGO 游戏中现存的一切人物,可是考虑到 FGO 人物许多以及处理数据,这个办法很费事。所以作者决议运用孪生卷积网络(siamese CNN)完结这个需求。

孪生卷积网络的长处在于可以运用适当小的数据集来练习出一个神经网络,以便在不同色彩的卡牌中能姚慧汶够更好的进行人物类似度辨认,而且也便利咱们适当大程度的添加数据集。作者关于孪生卷积网络也进行了必定的调整巴啦啦小魔仙之漆黑王子格雷亚,修改了网络结构让网络包含了 Maxpooling。孪生卷积网络被练习成最大化或许最小化两个输入图画的特征向量之间的欧几里得间隔,这取决于图画之间是否相同。这个模型可以测验比照一张手牌与其他四张手牌,并判别是否类似,但这个模型的缺陷便是要将每张卡牌与其他四张卡牌进行比照,所以在最差的状况下运算时间是 N。

咱们可以输入图画经过两个输出向量之间欧几里得间隔,可以得到 siamese CNN 所看到的两张图片的不同之处,洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志数值越低意味着图片越类似,FGO 中的许多人物侧脸十分类似,所以需求更多的图画数据进行比照来强化网络的判别。

马修与自己以及其他人物的比照数值





马修与梅林的差异度数值意外的小



孪生卷积网络自动挑选的泳装 Saber 「brave chain」



间隔一个完美的 FGO 自动游戏 Bot 还有多远的路?

这个 FGO Bot 在玩 FGO 上的体现仍是十分胜任的,可是 Bot 并没有理由游戏中的其他机制来进一步的进步功率(Bot 自身的判别逻辑是单纯的以手牌体系为根底)。

在 FGO 中人物发起宝具需求集满 NP,作者设定让 Bot 在经过必定的回合数后死神的圣约再发起宝具,以防止将宝具提早糟蹋在杂兵身上。

FGO 傍边还有职阶相克体系。职阶相克可以给予敌方更高的损伤。

FGO 傍边还有角便便洞先生色技能,这些技能会带来不同的作用,在正确的机遇运用可以带来进犯进步、回血等作用,人物技能体系在 FGO 战役中十分有用,但现在 Bot 并不能自动运用技能。

这个 Bot 的下一步是做成强化学习运用,但 FGO 游戏存在 AP 体系,每一次战役都需求耗费必定的 AP 点数,假如耗光就需求天然康复或许吃金苹果、银苹果快速康复,所以这就让咱们很难在 FGO 游戏里进行数千次的行为迭代,代替计划是构建出一个模仿的 FGO 游戏环境供 BOT 进行探究,但这十分耗时。

「Pendragon Alter」的诞生

「Project Pendragon」的中心是两个卷积神经网络与一个孪生卷积网络组成的 BOT,运用强化学习技能咱们的方针是让 Bot百战经典名将与名战 可以自己挑选卡牌而不必再为 Bot 人为拟定规矩,这就需求构建出一个 FGO 游戏环境,让 Bot 从头开端在 FGO 游戏中进行探究,那么咱们该怎样简略构建一个 FGO 游戏环境让 Bot 在其间游戏学习构建神经网络呢?

作者将经过练习并整合的全新加强学习网络装回到玩耍兼职按摩 FGO 的结构环境中,作者将这个新的网络称为「Pendragon Alter」。FGO 中就有一些人物的 Alter 版别,运营可以以此在不必添加很多额定开发的状况下,制造更多的游戏人物(而且添加氪金收入)。

Pendragon Alter 使出的「Arts chain」(三蓝卡)



作者构建 FGO 游戏环境运用的是 OpenAI gym 库,在 FGO 中玩家通常在任何给定时间里都有三个人物在战役要打退 3 波 9 个敌人(大多数时间如此),为了简化这个战役环境,作者将游戏环境设计成一对一战役,战役两边的意图是经过回合制损伤将对手的 HP 减到 0.

这些一对一战役的结构根本上是一个循环,每次迭代都取决于一个部队将另一个部队的 HP 砍到 0。敌方每回合挑选一个范围内的随机数作为损伤值,玩家人物则是依据每回合打出的三张手牌进行损伤输出,每回合呈现的五张手牌是依据 FGO 人物初始牌组呈现的。在进犯损伤循环构建完结后,作者依据现在已知的 FGO 游戏内的损伤加成机制和数值,在后台添加了相关的参数,包含 NP、暴击星、Chain 奖赏(比开始更杂乱,还考虑到了第一张卡的类型带来的三种不同 Chain 作用)

而在构建模型的动作空间(Action Space)这一步作者遇到了难题,在第一轮脑筋风暴中作者期望模型可以依据一切或许的办法对不同的手牌进行分类,从 ABQ 三种卡牌类型中构建出一个手牌输出,但很快就遇到了如下问题

手牌 A、Q、Q、B、A

输出 Q、Q、Q、

手牌只需两张蓝卡但输出却是 3 张蓝卡,这就发生了抵触,为了处理这个问题作者想到的处理办法是让模型的动作空间(Action Space)变为从 5 个卡牌中挑选 3 个卡牌的一切或许摆放 A(5,3)=60,不考虑卡牌类型在两次手牌之间的改变,而是要确保输出的成果是来自五个有用的卡牌, A(5,3)的 60 种摆放很好的表明了动作空间。

Hand: “Arts”, “Quick”, ”Quick”, “Buster”, “Arts”

output_1: “Card 1”, “Card 2”, “Card 3”

output_2: “Card 1”, “Card 2”, “Card 4”

...

output_60: “Card 5”, “Card 4”, “Card 3”

从第 1 种到第 60 种输出都是有用的,在这样的动作空间中咱们树立的任何网络都洋洋很高兴是用 5 个输入节点代表 5 张手牌,60 个输出节点代表 5 选 3 的一切或许摆放。

作者最开端忧虑的是神经网络能否自己归纳出「打出三张相同类型的卡牌是个好的挑选」的概念,给定输入向量

Hand_1: “Arts”, “Arts”, ”Quick”, “Buster”, “Arts”

Hand_2: “Buster”, “Quick”, ”Arts”, “Arts”, “Arts”

作者忧虑神经网络是否可以归纳出打出手牌中的三张蓝卡都是个很好的战略,“Card 1”, “Card 2”, “Card 5" 与“Card 3”, “Card 4”, “Card 5” 都有相同的作用,不过神经网络最终的确自己就学会了

Pendragon Alter 自己挑选以“Card 3”,“Card 2”,“Ca洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志rd 4” 次序打兰葛降酸茶出的三蓝



Deep Q-Learning

在强化学习的环境中,没有原始数据集咱们答应一个神经网络探究一个环境的动作空间,在这个环境中由于不同的挑选它会遭到奖赏或许赏罚,这样神经网络就可以测验怎样以最佳的方法适应于这个环境。在 FGO 游戏环境中也便是要让网络判别出 60 种出卡挑选中哪一种是最好的,在强化学习中有探究与开发概念(exploration vs exploitation)。有的时分一个行为应该是出于随机挑选而不云门店收银机是简略由神经网络(本事例)来做最优挑选,这有助于咱们的神经网络持续探究并寻觅到额定的奖赏,不然神经网络就仅仅运用了它已知的奖赏,不周根项一分钟速算会找到额定的奖赏。

咱们可以经过向神经网络输出的卡牌组合添加奖赏来完结让 Bot 可以强化更好的挑选一起考虑到过错的挑选,让神经网络在不断的奖赏与自我迭代当lumion快捷键中探究关于游戏最优或许性挑选。

而关于 Bot 的奖赏开始以战役成果来定,成功数值+1,失利数值-1,这样的奖赏机制让 Bot 可以展示出一些不错的手牌调配,可是没有更进一步优化的决议计划比方打出 Chain,在开始的几轮练习中 Bot 的胜率很少能超越 30%,最好的成果是 50% 的胜率,但仍然可以持续改善,为此作者又为 Bot 添加了额定奖赏,让 Bot 可以运用 FGO 游戏更为杂乱的机制。

作者给 Bot 添加了运用三张类型相同手牌会得到额定奖赏(A 连、B 连、Q 连都行),在进行一番测验后,再度添加当 NP 堆集到 100% 的时分 Bot 取得别的的额定奖赏,这都是为了让 Bot 可以像实在玩家相同经过同类型卡三连扩大作用,经过 NP 一次性处理敌人完毕战役,让 Bot 意识到这类操作的重要性。

这样做的一个确认或许是让 Bot 过于着重这类操作,但未来可以经过为 Bot 添加回忆机制盯梢整个战役中的一切挑选与取得的奖赏,进行自我评价,而不是现在在每个回合完毕后进行评价。

不过经过现在的额定奖赏机制 Bot 可以在战役傍边保持 60%-70% 的胜率,而且经往后洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志期调整在经过 5 万次战役模仿后将胜率进步到 80%,而胜率还将有或许进一步进步。

Pendragon Alter 与 Pendragon 比照


在模仿战役中可以取得 80% 的胜率,Pendragon Alter 的体现现已不错了,现在咱们可以看看 Pendragon Alter 在实践游戏中的体现。和之前相同让强化学习版 Bot 运用 TeamViewer 从 PC 端操控安卓端游戏。作者以为 FGO 游戏内的一个不错的出牌战略是让 Bot 可以在任何或许的时间都打出 Chain,在实践游戏测验中 Pendragon Alter 可以以适当共同的节奏打出蓝卡和红卡 Chain。


可是在打绿卡 Chian 方面 Pendragon Alter 尽管可以打出但并不像打蓝卡 Ch中航国金ian 和红卡 Chain 那样连接。假如手牌有两张红卡或蓝卡与三张绿卡,如下图所示 Pendragon Alter 在 QAQQA 的手牌组合傍边做出了 AQA 的挑选,这样的挑选是最大化了蓝卡作用。


假如有三张绿卡一张蓝卡和一张红卡, Pendragon Alter 更喜爱将蓝卡或许红卡放在打出的第二张牌中,而不是做成绿卡三连。这就意味着 Bot 自己抛弃了取得添加暴击星的时机,而是更乐于形成更多的损伤值或许是 NP 值。

这个洛奇英雄传,怎样运用神经网络与深度学习打造 FGO 自动出牌 Bot,张天志现象十分有意思,这或许是在 Bot 练习的初始阶段 15 张手牌里只包含了 3 张绿卡,而蓝卡和红卡则是各有 6 张,所以 Bot 更适合打蓝卡和红卡,第二个风趣的现象是 Pendragon Alter 好像对出牌的第一张牌和第三张牌带来的额定奖赏更有直觉。


Pendragon Alter 在无 Chain 可打的状况下也会表明出对第一张牌和第三张牌奖赏作用的了解,在下图的状况中Pendragon Alter 不会挑选任何一张绿卡,而是打出 BBA,经过将红卡放在第一和第三的方位形成更高的损伤值,而中心的蓝卡则是可以添加人物 NP,所以根本上 Pendragon Alter 成为了一个测验在为人物充 NP 的时龙井说唱被关了几年候最大化输出损伤的 Bot。

当无 Chian 可打时 Pendragon Alter 的体现是优于开始的 Pendragon,由于 Alter 可以更好组织卡牌方位,仍是上面的动图,咱们看一下两个 Bot 是怎样给出相同手牌下的出牌挑选。

Hand: "Buster","Quick","Arts","Buster","Quick" BQABQ

Project Pendragon Bot: “Arts”, “Buster”, “Buster” ABB

Alter Pendragon Bot: “Buster”, “Arts”, “Buster" BAB

尽管两个 Bot 给出的出牌牌组十分类似但 AB 与 BA 两个方位的不同在 FGO 游戏中发生的效师士传说笔趣阁果会有很大的不同。

Pendragon 是一个主打蓝卡其次红卡最终绿卡的 Bot,这意味着 Pendragon 在或许的状况下总是在打蓝卡,但这并不会最大化蓝卡的作用或许红卡的输出。可以一起最大化红卡输出和蓝卡加 NP 作用的是 Pendragon Alter,第一张红卡和第三张红卡进步了整套损伤,中心的蓝卡则是添加了更多的 NP。