DeforGAN:用GAN实现星际争霸开全图外挂!

点击上方“机器学习与生成对抗网络”,关注"星标"

获取有趣、好玩的前沿干货!

文章来源:机器之心

作者:Yonghyun Jeong等

参与:李诗萌、Geek AI

对于广大星际争霸迷来说,地图全开作弊代码「Black sheep wall」应该是再熟悉不过了!如何根据现有状态预测未知信息是博弈过程中举足轻重的一环。日前,韩国三星公司的研究人员在星际争霸游戏中,将预测战争迷雾背后的作战单位信息建模为了一个部分可观察马尔科夫决策过程,并使用基于 GAN 的方法实现了当前性能最佳的战争迷雾去雾算法。

  • 论文地址:https://arxiv.org/abs/2003.01927

  • 项目地址:https://github.com/TeamSAIDA/DefogGAN

本文提出了 DefogGAN,这是一种推断即时战略(Real-Time Strategy,RTS)游戏中战争迷雾后的隐藏信息状态的生成式方法。给定一个部分可观测的状态,DefogGAN 可以将游戏的去雾图像作为预测信息生成。这样的信息可以创造战略智能体。DefogGAN 是一种条件 GAN 的变体,它使用了金字塔重建损失,从而在多个特征分辨率尺度上进行优化。本文使用一个大型专业的星际争霸录像数据集验证了 DefogGAN。结果表明 DefogGAN 可以预测敌方建筑物和作战单位,准确率与职业玩家相当,并且比当前最佳的去雾模型的性能更好。

AlphaGo 的成功为人工智能在游戏中的应用(Game AI)带来了极大的关注。通过深度强化学习训练的智能体可以在国际象棋、围棋和 Atari 等经典游戏中轻而易举地胜过人类。随着任务环境越来越复杂,实时战略游戏(RTS)成为了一种评估最先进的学习算法的方式。如今,Game AI 为机器学习带来了全新的机遇和挑战。开发 Game AI 的好处十分广泛,不仅限于游戏应用中。在科学中应用智能体(例如,在有机化学领域中预测的蛋白质折叠)和企业的商业服务(例如,天机器人)的探索,使 Game AI 正走向一个新的时代。

在本文中,作者提出的 DefogGAN 采用生成式方方法补全因战争迷雾造成的显示给玩家的不完全信息。本文使用星际争霸作为实验场景——这是一款 RTS 游戏,游戏中有三个均衡的种族供玩家选择,玩家要建立完全不同的游戏风格和战略。在发行逾二十年后,星际争霸依然是一款非常受欢迎的电子竞技游戏。为了实现让 Game AI 超越高水平人类玩家的艰巨目标,本文作者使用超过 30,000 场的职业玩家的游戏录像训练了 DefogGAN。在星际争霸中,这样的目标是很难实现的。因为星际争霸长期以来一直广受欢迎,玩家们开发出了各种各样的成熟的游戏策略,除此之外,在电竞现场和暴雪战网(Battle.net)中玩家们还广泛使用了微操技术。

图 1:DefogGAN 预测值和真实值的比较。友方和敌方单位在地图(黑色)上分别用绿色和红色表示。DefogGAN 预测出了观察不到的敌方单位。

战争迷雾指在某个没有友方单位的区域中,不能获得视野和信息,这样的区域包括所有之前探索过但目前无人值守的区域。部分可观察马尔科夫决策过程(Partially Observable Markov Decision Process,POMDP)最适合描述战争迷雾问题。一般而言,POMDP 为真实世界中大多数有大量未观察到的变量的问题提供了一个实用的表达方式。对 Game AI 来说,解决部分可观察问题是提升性能的关键所在。事实上,许多现有的设计智能 Game AI 的方法都会遇到部分可观察问题。最近,生成模型被用来降低部分可观察问题的不确定性。利用生成模型的预测结果,智能体的性能得到了提升。然而,生成方法无法完全与顶尖的人类职业玩家的高水平侦察技术匹敌。

星际争霸为研究与 Game AI 相关的复杂 POMDP 问题提供了一个绝佳的平台。本文作者利用生成对抗网络,建立了 DefogGAN,它可以根据生成的逼真信息准确预测隐藏在战争迷雾中的对手的状态。根据经验,本文作者发现,GAN 比变分自编码器(Variational Autoencoder,VAE)生成的图像更逼真。为了生成去除战争迷雾的游戏状态,本文作者将原始的 GAN 生成器修改为编码器-解码器网络。

从原理上讲,DefogGAN 是条件 GAN 的变体。通过使用跳跃连接,DefogGAN 生成器利用根据编码器-解码器结构学习到的残差进行训练。除了 GAN 的对抗损失,本文作者还设置了有雾和去雾游戏状态间的重建损失,来强调单位位置和数量的回归。本文的贡献如下:

  • 开发了 DefogGAN,可以解析有战争迷雾的游戏状态,得到有用的获胜信息。DefogGAN 是最早的基于 GAN 处理星际争霸中的战争迷雾问题的方法;

  • 利用跳跃连接进行残差学习,在不引入任何循环结构的情况下,DefogGAN 以前馈的方式包含过去的信息(序列),更适用于实时使用的情况;

  • 本文作者在模型简化实验和其它设置(如针对提取出的游戏片段和当前最先进的去雾策略进行测试)中,对 DefogGAN 进行了实证验证。

本文涉及的数据集、源代码和预训练网络对公众开放,可以在线访问。

在 t 时刻,DefogGAN 根据部分可观察(有雾)状态,生成了完全的观察(去雾)状态。在星际争霸中,完全观察状态包括在给定时间下,所有友方和敌方单元的确切位置。图 2 展示了 DefogGAN 的架构。本文作者对当前的部分可观察状态的输入计算得到的特征图进行求和池化。在过去的观测结果的特征图进入生成器前,要和当前状态累积并拼接。本文作者用预测的可观察状态和实际的完全观察状态间的重建损失和判别器的对抗损失训练生成器。

图 2:DefogGAN 的架构概览。

DefogGAN 的生成器采用了 VGG 网络的风格。卷积核的大小固定为 3*3。当特征图大小减少一半时,卷积核的数量增加一倍。DefogGAN 没有使用任何空间池化层或全连接层,而是用了卷积层来保留从输入到输出的空间信息。

DefogGAN 的生成器包括编码器、解码器和通道组合层。编码器采用 32*32*82 的输入,利用卷积神经网络(Convolutional Neural Networks,CNN)提取出隐藏在战争迷雾中的语义特征。每个卷积层都用了批量归一化和修正线性单元(ReLU)来实现非线性转换。

解码器利用从语义上提取出的编码器特征生成预测数据。解码过程将数据重构为高维数据,再利用转置卷积运算完成推断。解码器产生的输出尺寸与输入相同。考虑到因初始通道尺寸大导致的学习速度大,我们没有使用像 ResNet 那么多的卷积层。

表 1:x¯_t 和 x˜_t 的混淆矩阵。使用到的测试数据超过 10,000 帧,表中为平均值。

表 1 总结了 DefogGAN 输入-输出的统计信息,包括部分可观察状态 x¯_t、累积的部分可观察状态 x˜_t,和真实值 y_t。平均而言,在部分可观察状态中可以看到 54% 的单位,在累积的部分可观察状态中可以看到 83% 的单位。注意,累积的部分可观察状态造成了第一类型错误(假阳性),因为累积状态包含此刻已经不再符合实际情况的、移动的单元之前的位置。在给定这样的输出空间时,去雾问题需要在可能的 67,584(32*32*66)个空间中平均选出 141 个空间。

图 4:预测结果的可视化。最左侧是累积的部分可观察状态(x˜_t)。第二列是部分可观察状态 x¯_t。第三列是 CED(当前最佳去雾器)的预测结果。4-7 列分别是 DCGAN、BEGAN、WGAN-GP 和 cWGAN 的生成结果。DefogGAN 的结果呈现在第八列,最后一列是真实值。行表示用于评估的录像。

表 4:DefogGAN 和其它模型的准确率比较结果。

图 4 中的可视化结果可以有效地解释 DefogGAN 的预测性能。随机选择四组录像,给出每个模型预测的、去雾后的完全观察状态。例如,在录像 4 中,在部分可观察状态 x¯_t 的右下角看不到红色的敌方单位。同时,在累积的部分可观察状态 x˜_t 中只能看到敌方单位的子集。同时使用观察结果和累积观察结果,DefogGAN 可以生成的完全可观察状态 y_t 看起来和真实值非常相似。CED 也生成相当可信的完整状态,但 DefogGAN 生成了更准确的结果。WGAN-GP 在没有重建损失的情况下也生成了可信的完整状态,但有生成假阳性(低精度)结果的倾向。cWGAN(一种使用了重建损失的 WGAN-GP 变体)似乎降低了假阳性率,但 DefogGAN 的预测结果仍然更好。


公众号近期荐读:

GAN整整6年了!是时候要来捋捋了! 

新手指南综述 | GAN模型太多,不知道选哪儿个?

数百篇GAN论文已下载好!搭配一份生成对抗网络最新综述!

CVPR2020之MSG-GAN:简单有效的SOTA

CVPR2020之姿势变换GAN:图像里谁都会劈叉?

CVPR2020之多码先验GAN:预训练模型如何使用?

有点夸张、有点扭曲!速览这些GAN如何夸张漫画化人脸!

见微知细之超分辨率GAN!附70多篇论文下载!

天降斯雨,于我却无!GAN用于去雨如何?

脸部转正!GAN能否让侧颜杀手、小猪佩奇真容无处遁形?

容颜渐失!GAN来预测?

强数据所难!SSL(半监督学习)结合GAN如何?

弱水三千,只取你标!AL(主动学习)结合GAN如何?

异常检测,GAN如何gan ?

虚拟换衣!速览这几篇最新论文咋做的!

脸部妆容迁移!速览几篇用GAN来做的论文

【1】GAN在医学图像上的生成,今如何?

01-GAN公式简明原理之铁甲小宝篇


GAN&CV交流群,无论小白还是大佬,诚挚邀您加入!

一起讨论交流!长按备注【进群】加入:

更多分享、长按关注本公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1621545.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

局域网联机_七日杀v17.2(B27)版/支持局域网联机/多项修改器/初始存档/局域网联机教程...

点击蓝字关注我们,每日提供优质游戏 游戏介绍 那时地球表面已经变成废墟,更糟的是,没有人知道到底是因为辐射、生化武器还是天灾,导致地面上出现了一群僵尸。玩家将扮演在美国亚历桑纳地区的一名幸存者,那里是地球最后…

魔兽争霸 / 星际争霸 无法使用 CTRL + 1 进行编队

打游戏时发现不好编队, 应该是快捷键冲突导致。 查了一下,是输入法的问题。 目前用的QQ五笔输入法里用到了 CTRL 1,所以在游戏里就用不了了。 如下面所示,把最后的 CTRL 1 的复选框勾掉就可以了。

DeepMind《星际争霸2》AI碾压人类遭Gary Marcus猛怼:通用智能就是空谈

来源:新智元 本文 3635 字 ,建议阅读 10分钟 。 本文介绍了Marcus对AI碾压人类以及未来通用智能研究意义的质疑。 针对DeepMind前几日发布的《星际争霸2》智能体AlphaStar进化版,他在Twitter再次提出了自己的质疑。不过这次,Marcu…

星际2数据编辑器

转自:https://blog.csdn.net/xoyojank/article/details/8122886 只列了技能的划分,其余的参考链接 对象类型 星际2就对象有很多类型, 这里只说一下比较常见的. 这些类型还有子类型, 对象的实例之间是可以进行数据拷贝和派生的. Units(单位) 大多数人应…

nodejs里面的event loop

1. event loop 1.1 什么是event-loop js的标准文档定义如下 https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#event_loop https://javascript.info/event-loop html的标准定义 https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-proc…

chatgpt赋能python:如何用Python编写炒股软件

如何用Python编写炒股软件 随着股票投资的普及和互联网技术的发展,越来越多的人开始尝试使用计算机辅助炒股,以获取更好的投资回报。Python作为一种简单易学、高效实用的编程语言,受到了众多股票投资者的青睐。本文将介绍如何用Python编写炒…

单例模式:保证一个类仅有一个实例

单例模式:保证一个类仅有一个实例 欢迎来到设计模式系列的第二篇文章!在上一篇中,我们已经对设计模式有了初步的了解,今天让我们深入研究第一个模式——单例模式。 什么是单例模式? 在软件开发中,我们经…

RabbitMQ从原理到实战—基于Golang【万字详解】

文章目录 前言一、MQ是什么?优势劣势 二、MQ的用途1、应用解耦2、异步加速3、削峰填谷4、消息分发 三、RabbitMQ是什么1、AMQP 协议2、RabbitMQ 包含的要素3、RabbitMQ 基础架构 四、实战1、Simple模式(即最简单的收发模式)2、Work Queues 模型3、Publish/Subscribe…

lnmp架构-mysql

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…

Tornado服务器连接数据库

环境 python3.6.1 vscode mysql navicat 安装需要的包 pip install torndb_for_python3 pip install pymysql0.8.0 #请安装pymysql的0.8.0版本,否则可能出现一个FLAG不存在的bug。亲测0.8.0可用。 tornadb不适用于python3,torndb_for_python3 是修改过的…

Tornado框架入门教程

Tornado框架入门教程 Tornado在知乎广为使用,当你用Chrome打开网页版本的知乎,使用开发者工具仔细观察Network里面的请求,就会发现有一个特别的状态码为101的请求,它是用浏览器的websocket技术和后端服务器建立了长连接用来接收服…

Tornado自定义路由

默认路由规则 代码 由下述代码可知,路由规则都在放在 tornado.web.Application 中,强迫症的我看着不舒服不说,而且如果有多级路由的话就很难搞了,比如说用户模块、不同视图模块等等,前一级路由是固定的,后…

Tornado重定向(三)

为什么需要重定向呢?比较常见的就是当网站内部结构变动,如栏目、网址等等的变动就需要进行301重定向,还有内部一些错误的页面也可以做301重定向,提高用户体验。当因网站内部结构变动,需要删除网站中的某些目录时&#…

Tornado介绍

文章目录 特点结构Tornado实现异步原理模块Tornado服务器的三个底层核心模块设计模型 Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的 Tornado是使用Python编写的Web服务器兼Web应用框架与主流Web服务器框架不同…

Tornado初见(一)

在之前的其他博客中介绍了Django,这里介绍一下Tornado。两者的区别可以总结为: django大而全,适合小型的压力不大的项目,一旦压力上来其是扛不住的,毕竟一是太重,而是非异步。 但是好处就是什么都有&#…

Tornado框架学习

目录 底层原理 select epoll 运行机制 Tornado中的Ioloop模块的作用 获取请求方式 文件上传与展示 通过请求头信息的判断来进行反爬验证 注册功能demo 重定向 用户登录 以及自己设置的错误界面跳转 Cookie Tornado 异步服务器端方式 客户端异步请求 Tornado基于epoll…

tornado入门必备知识总结——异步事件循环与协程

文章目录 前言同步、异步、阻塞和非阻塞socket的非阻塞io请求htmlselect、poll和epoll协程异步http请求tornado实现高并发的爬虫 前言 要想走得远,基础就得牢,路漫漫其修远兮,吾将上下而求索。 tornado简介 python web编程三剑客Django&…

【Tornado】Tornado入门教程

目录 Tornado特点结构三个底层核心模块 安装1. 安装python32. 安装tornado3. 编写简单server4. 运行流程 核心组件1. ioloop实例2. app实例3. urls路由表4. handler类 异步协程async 和 await如何工作的怎样调用 协程模式结合 callbacks调用阻塞函数交叉存取技术循环在后台运行…

【数据结构与算法篇】手撕八大排序算法之交换排序

​👻内容专栏: 《数据结构与算法篇》 🐨本文概括:常见交换排序包括冒泡排序与快速排序,本篇讲述冒泡排序与快速排序的思想及实现、复杂度分析。 🐼本文作者: 花 蝶 🐸发布时间&#…

ie ajax十分卡,解决jquery .ajax 在IE下卡死问题的解决方法

解决jquery .ajax 在IE下卡死问题的解决方法 解决IE编码问题第一步: dataType:($.browser.msie) ? "text" : "xml" 先这样做让IE 识别返回的是text 还是xml 第二步: 复制代码 代码如下: function parseXml(xml) { //XML IE编码问题…