难得的元旦小假期,没有什么比得上在慵懒的冬日艳阳下放松自己,拿起手机,叫上了许久未一起作战的小伙伴,到王者荣耀中激战了一番,仿佛又回到了当年那个年轻的自己。

厉害不,毕竟当年DD也是王者五十星的水平,哈哈。

不过哪怕是我这样的王者,在去年也被腾讯上线的超强电脑AI绝悟虐的不轻。记得当时有朋友来找我,说是腾讯上线了一个绝悟挑战模式,里面的电脑AI和以往被我们拿来练熟练度的电脑相比,简直就是云泥之别,一关比一关难,据说连一些职业选手组成的车队都翻车了。

听的那么玄乎,头硬的我自然不会轻信,然后随后的几天中,果不其然被绝悟虐的生活不可自理,最后还是灰溜溜的靠着网上流传的“大乔-米莱蒂”传送偷家套路才勉强过关。

一边回忆着被绝悟惨虐的经历一边浏览着最近的新闻,突然眼中爆射出一道惊芒,中国足球世界杯夺冠了!

你没有看错,的确是中国足球世界杯夺冠了,但是夺冠的并非传统意义上的男足女足,而是由我们曾经熟悉的绝悟进化之后重生的足球AI-WeKick

WeKick夺冠的是首届谷歌足球Kaggle竞赛,参赛队伍多达1138支,可以说是代表了目前地球上最顶尖的足球AI比赛,称之为足球AI世界杯也不为过。

而在所有参赛队伍中,WeKick的得分高达1785.8分,占据绝对优势地位,就像96年的公牛、02年的巴西一样,势不可挡!

不可置信?再给你看下精彩集锦!

快、准、直!一记完美的长传后,直射球门!

连续突破重围,轻松传球 4 次。

有些人可能不以为然,觉得之前绝悟在王者荣耀的表现,用去踢足球,也是很简单的。

其实不然,首先王者荣耀是一个5V5的游戏,而足球是一个11v11的运动,就是说AI需要控制的智能体(球员)个数多了一倍以上,其次足球赛虽也属于即时策略型游戏,但也需要AI具备长线思考、快速决策、处理复杂环境的能力。AI需要考虑到每个球员的速度、加速度、射门、头球、传球、防守等各种指数,同时还需要操控球员之间进行频繁的相互配合,也需要时刻观察对手球员的行为,防范于未然,做出最好的选择!

针对这些不同的情况,WeKick团队发挥想象,主要运用了以下三个创新进行针对性的模型训练。

Self-Play强化学习框架

WeKick团队采用Self-Play(自博弈)强化学习来从零开始训练模型,并以此部署到异步分布式的强化学习框架中。异步架构牺牲了一部分训练的实时性能,但是相应的,得到了更高的灵活性,同时可以支持在训练过程中按实际需要调整整个计算资源,使其能快速完美的适应智能体人数更多的足球游戏训练环境。

GAIL生成对抗模拟学习

王者荣耀是一款对抗类的MOBA游戏,其最终目的和足球游戏迥然不同,WeKick团队采用了GAIL(生成对抗模拟学习)与人工设计的奖励结合的方式,在特征与奖励设计上进行了扩展和创新。

运用这个方案,WeKick可以从其它球队学习,拟合专家行为的状态和动作分布,再将GAIL训练的模型作为固定对手进行进一步Self-Play训练,进一步提升策略的稳健性。

League多风格强化学习

上述的Self-Play强化学习方案,有一个尚未解决的缺憾,就是通过这个方案得到的模型很容易形成单一的风格。用足球比赛的说法就是打法一成不变,很容易被针对或遇上天生克制的阵型就不知所措。为了解决这个问题,WeKick团队采用了针对多智能体学习任务的 League(若干策略池)多风格强化学习训练方案,提升策略的多样性。

这种League多风格强化学习训练方案的主要流程,用一句话解释就是 由简入繁

  • 首先训练某一方面的基础模型,例如过人、盘带、传球、射门等。
  • 根据基础模型训练出多个风格化模型,每个模型专注一种风格打法,训练过程中加入主模型作为训练对手,避免训练效果死板不变通。
  • 再基于多个基础模型训练一个主模型,主模型可以将自己的历史版本作为训练对手,还可以加入所有风格化的模型作为不同的训练对商铺,使主模型遇上任何对手都有解决方案。

根据其内部能力评分系统显示,这种算法下的主模型,可以在基础模型的基础上提高200分,比最强的风格化打法高80分!

最后介绍下谷歌足球Kaggle竞赛

Kaggle创立于2010年,是全球最大的数据科学社区和数据科学竞赛平台。本届比赛是Kaggle首次针对足球AI领域发布的赛题。

由于足球运动团队策略要求在瞬息万变的赛场上,做出最正确的团队协作、实时决策和竞争策略,其中的难点,一直是困扰世界顶尖AI研究团队的难题。就像前文提到的,从绝悟进化到WeKick,控制的智能体各数从5v5提高到11v11,这中间强化学习的难度将随着智能体个数的增长呈现指数级的爆炸增长。

其实早在参加这个比赛之前,绝悟的开发团队早已经从足球比赛中的单个智能体控制转向多智能体同时控制、协同作战深入的研究方向。在先前参加的5v5形式的谷歌天梯比赛 Google Research Football League 中,绝悟已经赢得过冠军,这次可以说是再度升级版的夺冠。

从最早的围棋AI绝艺,到王者荣耀的MOBA游戏AI绝悟,再到如今的足球AI-WeKick,腾讯在人工智能的深度强化学习程度正在步步进化,未来很有可能运用于其他更广泛的行业中,真正做到人工智能为人类服务。

而此刻的我,只想什么时候能有机会和这个WeKick踢上(被虐)几场比赛,你也想和他过过招吗?

欢迎关注我的公众号:程序猿DD,获得独家整理的免费学习资源助力你的Java学习之路!另每周赠书不停哦~

当会打王者荣耀的AI学会踢足球,一不小心拿下世界冠军!的更多相关文章

  1. 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍

    在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...

  2. 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了

    如今已经大获市场成功的<王者荣耀>一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期.也就是在2015年8月18号正式不删档测试版本推出之后, ...

  3. 【转】《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了

    如今已经大获市场成功的<王者荣耀>一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期.也就是在2015年8月18号正式不删档测试版本推出之后, ...

  4. python 爬取王者荣耀高清壁纸

    代码地址如下:http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  5. Unity制作王者荣耀商业级手游

    <王者荣耀>这种现象级手机游戏是如何制作出来的呢?本文以<王者荣耀>MOBO类型的多人在线战术竞技游戏为入口,覆盖Unity游戏制作开发前端与Node.js服务器端的开发必备知 ...

  6. CyclicBarrier的使用之王者荣耀打大龙

    最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆,如果有什么错误或者不当的地方,欢迎大家斧正. LOL和王者荣耀的玩家很多,许多人应该都有打大龙的经历,话说前期大家 ...

  7. Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果

    在 <王者荣耀> 登入界面 左右上下晃动手机(有些手机不支持)可以看到背景在变化 我使用的是iPhone SE 效果如下: 对比两张图片的左下角 可以看到差异 至于为什么要这么做: 1.使 ...

  8. CNN网络介绍与实践:王者荣耀英雄图片识别

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:高成才,腾讯Android开发工程师,2016.4月校招加入腾讯,主要负责企鹅电竞推流SDK.企鹅电竞APP的功能开发和技术优化工作 ...

  9. 浅谈canvas绘画王者荣耀--雷达图

    背景: 一日晚上下班的我静静的靠在角落上听着歌,这时"滴!滴!"手机上传来一阵qq消息.原来我人在问王者荣耀的雷达图在页面上如何做出来的,有人回答用canvas绘画.那么问题来了, ...

随机推荐

  1. Cypress系列(101)- intercept() 命令详解

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 使用该命令在网络层管理 HTTP ...

  2. c++如何按照map的value进行排序?

    static bool cmp(pair<char, int> a , pair<char,int> b) { return a.second>b.second; //按 ...

  3. 原生js之事件解绑

    #removeEventListener ##html <button id='btn'>click</button> ##js ###第一种方式(错误方式) var btn ...

  4. 微信小程序中使用text-indent实现首行缩进

    问题由来:在小程序中使用text标签包裹了一段话,要做一个首行缩进的效果,但是不起效果 . 解决方法:使用view标签代替text,使用text-indent:2em即可解决.

  5. 题解 洛谷 P5279 【[ZJOI2019]麻将】

    这题非常的神啊...蒟蒻来写一篇题解. Solution 首先考虑如何判定一副牌是否是 "胡" 的. 不要想着统计个几个值 \(O(1)\) 算,可以考虑复杂度大一点的. 首先先把 ...

  6. JavaScript:使用递归构建树型菜单

    使用递归函数将扁平数据转为树型结构,并渲染到页面 效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> ...

  7. ES6新增api随记

    求一个数组中的最大值 Math.max.apply(null,[1,2,3,4])=>Math.max(...[1,2,3]) 讲一个数组中的元素全部添加到另一个数组中 let arr=[1,2 ...

  8. oracle修改数据文件目录

    一.停库修改数据文件目录.文件名 1.当前数据文件目录 SQL> select file_name from dba_data_files; FILE_NAME ---------------- ...

  9. mysql 8.0忘记root密码

    1.修改参数文件添加以下内容 skip-grant-tables 2.关闭数据库 [root@node01 ~]# /etc/init.d/mysqld8 stop Shutting down MyS ...

  10. mybatis-plus快速入门并使用

    目录 mybatis-plus的初次使用总结 说明:官网自有黄金屋,深入学习看官网是必须的,废话不多说 环境:springboot.mysql 一.配置 pom yml配置数据库 二.代码生成器 生成 ...