「2019-10」【每周分享】围棋之后,人工智能要完爆「星际2...
![火星探索](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/avatar/pre/v1/000017620_avatar_big.jpg)
小时候,大人告诉我们,玩游戏的是坏孩子,想当科学家的是好孩子。你有没有想过,有一天,科技公司竟然和游戏公司合作,让机器人去打游戏?
事情真的发生了……去年,DeepMind 和暴雪娱乐宣布合作,让人工智能(简称 AI)学会玩「星际争霸2」游戏。
DeepMind 是 Alphabet 旗下的子公司,这个公司你可能没听过,但是你一定知道他们做的 AlphaGO,曾经打败了围棋九段李世石。
之后,他们立下 Flag 要挑战实时战略的视频游戏,比如「星际争霸2」这种。
Whaaaat?我们不仅能看到 AI 下棋,还能看到 AI 打星际争霸?难不成科技公司经营不下去,要接游戏广告了?
其实不是,这次合作可以说是轰动了整个 AI 界。事情是这样的……
围棋是一种“完全信息博弈”游戏,双方玩家都能看到棋盘,而且有时间慢慢思考和制定策略。
而星际争霸就很有趣了,如果你没有兵力在附近,就看不见对方的行动,而且还要快速做出高级战略决策。这就是“非完全信息博弈”。
AlphaGo 在围棋这种思维复杂的游戏中压制人类,说明机器学习已经掌握了这种信息推理的棋牌游戏了。
那机器学习能不能在“非完全信息博弈”上打败人类?
这个问题极有学术价值,星际争霸就是一个很好的测试平台,也被视为 AI 进阶的跳板。
机器学习是什么呢?在之前我们有介绍过,这里带大家简单复习一下。
也可以直接看往期机器学习科普,穿梭门:《机器人如何在复杂的环境下进行视觉识别?》
机器学习就是让机器自己学习知识,通过自己攒经验和学别人的经验,并且总结和优化来提高技能。
机器学习有几种常用的方法,我们用科科和他的计算机来比喻。
科科有一台计算机,他想教它分辨小猫小狗的图片,于是找到了几种机器学习常用的方法:
第一种,直接告诉计算机图中哪些是猫哪些是狗。
计算机记住了这些被贴了标签的图片后,升级到能够认出图片以外的猫狗,这就是监督学习。
第二种,丢一大堆未命名的图给计算机,让它自己去总结猫和狗的不同。
聪明的计算机会发现猫狗背后的规律——比如摇着尾巴求抱抱的是狗,瞧不起人的是猫,这就是是非监督学习。
第三种,只指出图中两三只猫狗。
计算机通过这几张照片总结规律,再自己探索其他猫狗,这就是半监督学习。
除了上面几种,科科还喜欢一种“残暴”的强化学习法(也叫增强学习)。
就是把计算机丢到一个对它来说完全陌生的环境,或者让它完成一个没接触过的任务,让它试各种手段,跌得满身是伤,最后自己适应环境或者完成这个任务。
这就是 AlphaGo 的学习手段,阿尔法狗也是历经折磨和艰辛才达到今天的水平啊。
强化学习通过淘汰机制去选择最优的设计或模型,和优胜劣汰的自然法则很像。
比如发现某一个决策做错了,以后就摒弃它。
DeepMind 就是要用机器学习的方式,让 AI 挑战游戏。
除了“非完全信息博弈”看不到对方的决策,让 AI 玩「星际争霸2」还有其他头疼的问题。
「星际争霸2」不像回合制游戏可以一人一招轮流打,而是要制定长、短线战术,比如选择正面进攻还是偷袭骚扰。
还要根据最新信息调整计划,比如本来打算偷袭骚扰,结果发现对方正在挂机,于是果断正面进攻。
要让软件同时具备这两种能力是非常难的。所以,大家看到 AI 打「星际争霸」打得很菜的 时候,也不要嘲笑它是人工智障好嘛。
可以看出,「星际争霸2」更能模拟真实世界的混乱状况,所以如果开发出了一套机器学习系统掌握游戏技巧,那真实世界的复杂任务就可以让 AI 去做了!
也就是说,这个研究不是为了让 AI 打游戏,而是教机器人做战略分析。
等到这条路的终点,机器人不再是“机器”,而将是有完整的认知、能够分析决策,甚至可能欺骗的会思考的智能体。
但是,距离这个终点还有很久。因为有人试过,让表现优异的AI和最简单的内置AI对打时,前者以全败告终,连最简单的“人机”都打不过……
不过,AI 打游戏也不是一无是处,它也有操作优势。
之前有一个热门视频,AI 控制虫族的 100 条小狗咬爆了人族的 20 辆坦克,而人类玩家绝对不可能有这种骚操作。
它需要一只小狗受到坦克攻击的时候,边上的小狗全部跳开,免得被炮弹范围内的溅射杀死,这个操作给你十只手都不一定能实现。
然而,即使 AI 有微操优势,也还是打不过人类玩家。
人类有各种花招能对付他,可以早期突袭、可以派兵骚扰杀农民、可以空投对方基地捣乱、可以派隐形兵力让对方挨打了还不知道发生了什么……
即使人们训练 AI,让它的表现有些提高,但想要达到竞技的目标,还是需要在深度增强学习和相关领域有更多突破。
机器学习那么难,有小伙伴要问,实现人机大战一定要用机器学习吗?普通的编程行不行?
不行!对战非常需要侦察和随机应变,显性地写代码几乎不可能做到。
据估计,「星际争霸2」每场对决有 101685 种可能的配置,鲜明的对比是:阿尔法狗的配置层是 10170。
人类可以趁电脑没有防空,就派空军,可以趁电脑没有防隐形,就派隐形兵种。如果要用一个一个代码去表达所有可能发生的情况,会涉及海量数据,开发难度巨大。
丰富的策略与随机应变正是「星际争霸2」的游戏精髓,用编程的办法很难有出路,还是得让机器自我学习发展出随机应变的能力。
在 ICRA 2018 DJI RoboMaster 人工智能挑战赛中,也面临同样的问题,比赛需要 4 台全自动机器人 2 V 2 对抗。
虽然参赛的角色少,对抗的环境也没那么复杂,但实体的对抗让比赛更加充满不确定性。
参赛选手可以给机器人设定射击和躲避的程序,但使用机器学习的机器人明显更有优势。
希望了解更多对抗比赛中机器学习技术应用的小伙伴,可以穿梭至:《机器人比赛中,关于机器学习对竞技规则和未来研究的几点思考》
棋手柯洁曾说:“人类已经研究围棋研究了几千年了,然而 AI 却告诉我们,我们甚至连其表皮都没揭开。”如果突破了这项技术,那人类将迎来强 AI 的时代!
扩展阅读:
1、DeepMind 相关博文 :
https://deepmind.com/blog/deepmind-and-blizzard-open-starcraft-ii-ai-research-environment/
2、DeepMind 封装的环境 PySC2 :
https://github.com/deepmind/pysc2
3、暴雪推出的「星际争霸2」机器学习 API:
https://github.com/Blizzard/s2client-proto
请问这篇文章对你有用吗?
「2019-10」【每周分享】围棋之后,人工智能要完爆「星际2...