(图片来源:全景视觉)
经济观察网 记者 沈怡然
——编者按
在我还是伯克利大学学生的时候,就玩过《星际争霸》。我和很多伯克利分校的同事在2010年开始做这个研究,当时我们在想的是如何争霸、如何打败敌方。
《星际争霸》是我们应用AI技术的一个出发点。在这个过程中,我们看到了很多挑战,因此我们需要很多创新的算法。需要更多的研究人员参与进来,设计一些新的问题和任务,看能否完成。
我们会训练整个系统,收集整个星际争霸玩家的行为进行分析。比如哪些走法可能没有优势,哪些玩法过于简单。现在我们会为玩家提供一些打《星际争霸》最简单的走法。
游戏《星际争霸II》我们非常感兴趣,这是非常有趣和复杂的游戏,这个游戏基本上是建造一些建筑物以及单位,在同一个地图里不同的组织会相互竞争。在这个游戏中,哪怕只是建造建筑物,也需要做出许多决策。而除此之外,我们还要不断收集和利用资源、建造不同的建筑物、不断扩张,因此整个游戏非常具有挑战性。
与下围棋类似,在《星际争霸》游戏中,我们也在使用强化学习。要模仿人类玩这个游戏的方式,但即使是模仿人类点击鼠标和敲击键盘的行为也非常困难。为此,我们引入了一个游戏引擎。
和围棋任务最大的不同在于,围棋可以看到整个棋盘,但是在《星际争霸II》中我们通常无法看到整个地图,需要派小兵出去侦查。而且游戏是不间断进行的。整个游戏甚至会有超过5000步的操作。而且对于增强学习,除了上下左右这些普通的移动,我们发现用鼠标点击界面控制不同物体的移动以及不同的行为,也是非常难的。我们发布了这个环境,所有人都可以参与其中。我们也发布了相关的报道,这基本上是一个开源的平台,大家可以测试自己的算法。
我们还没有完成过整局游戏,但是完成了操作《星际争霸II》比较重要的7个操作,比如选择一个单位并让它移动过去。我们所使用的算法能做到这一步,而且和人类玩家操作的效果基本一样。而另一些任务,比如建造建筑、收集资源等,仍然是比较难的。我们测试的算法,表现会比随机的环境要好,但和专业玩家还是有一段距离的。
有学徒式的学习方式。比如说在玩围棋的时候,有自我的教学模式,从零级开始自学。但是玩《星际争霸》的时候,我们不是从零开始,已经是在一定的基础层上面来进行学习了。另外很多玩家他们还会考虑到一些网上的附加服务,大家会去观察别人玩游戏的方式,他们怎么样去移动鼠标等。我自己也是个玩家,我也会关注别的玩家动鼠标的方法、别人的游戏行为。这对加强学习是一个新的关注点。比如说我自己玩游戏的时候,可能我不能一直获胜。那么我还去观察很多,我输的时候会在游戏的末尾观察哪个人物角色会获胜,通过观察一些专业玩家的行为分析这些游戏过程中的关键点。这也能帮助我们进行模拟学习,以及数据监管式的学习。
对于《星际争霸》,我们做开源,一开始是设计到了围棋上。很多环境都有不同的组织模块,围棋是一个相对来说比较简单的逻辑。讲到星际争霸,首先我们必须要从机器学习的角度,去了解不同玩家对《星际争霸》的看法。通过收集玩家的意见就会有更多优势,比如说如何进行复盘,以及收集整个玩家的社群,怎么比较看待第一代和第二代《星际争霸》的版本,同时还有整个游戏对玩家的影响,都可以进行研究。去年11月份我们在洛杉矶开会,也邀请玩家、相关的代理和一些开发者来共同讨论。
顾过去几年,我们基于AlphaGo所做的一些突破性的研究,也主要在深度强化学习这个领域。
深度强化学习与监督学习和人类的学习方式相比,还是有一定区别的。比如对于观察本身,算法的观察是需要环境的,没有充分的观察,早期的人形机器人在遇到障碍物的时候往往无法顺利应对而摔倒。我们就会想,能不能建立一个仿真环境来训练这些机器人呢?如果我们有一个很好的环境,我们就可以先去训练它。也就是说我们一定要有一个很完美的环境才能实现我们的目标。为此,我们建立了虚拟场景,并尽可能地提高它的仿真度。
也只有在这样的强化环境下,我们才能取得进一步的进展。比如提到应用场景,我们常常会想到游戏。人们在设计游戏的时候总是小心翼翼,以确保玩家可以获得一定的智能化体验。比如AlphaGo参与的围棋有3000年的历史,这是一个非常有挑战性的环境,因为没有一个单一的解决方案能确保带来最好的结果。当然,我们也可以整合不同的能力让它们玩不同的游戏,比如通过训练让机器人学会下国际象棋。
我们也有专门下围棋的算法,这时目标变得更加复杂,玩法也变得更加复杂。目前没有一台机器可以通过搜索策略的方法来玩好这个游戏。
那AlphaGo是通过什么方法来玩这个游戏的呢?正是强化学习。我们的神经网络可以自动地从数据中学习一些特征。这样我们就可以让它看着棋盘,看人类怎么走,棋盘上也会显示出输赢。也就是说我们不需要展开整个展示走法与输赢的网络,只要展开一部分网络就可以做出很好的模拟。这是一个很好的突破。
但这样也不是特别好。因为我们在以人的角度去学习,都要使用数据集来训练。后来我们随机地运行游戏,下过一局之后AlphaGo就可以了解一下比赛是如何进行的,就可以调整整个网络,最终学会下棋。
这些网络是在玩游戏的过程中不断训练提升的。AlphaZero随机下棋。经过几天的训练之后,就学会专业棋手的走法了。
所以,我们第一版的AlphaGo击败了樊麾,后来下一个版本在韩国和李世石进行了对弈并取得了胜利。再后来我们进一步地训练网络,整个网络比之前强了三倍,赢了柯洁和其他专业棋手。我们是从零开始,一点点积累积数据训练,最后战胜了专业棋手。