今天,《麻省理工科技评论》新兴科技峰会EmTech China在北京召开,DeepMind公司的研究科学家Oriol Vinyals出席峰会并做了演讲。出生于西班牙巴塞罗那的 Oriol Vinyals颇富传奇色彩。他从 15 岁时开始玩《星际争霸》,一度成为西班牙第一、全欧第十六的电竞高手,但他并没有像多数高手一样走向职业电竞选手之路,反而投身科学领域。
在西班牙加泰罗尼亚理工大学获得电信工程及数学双学位之后,他又前往美国学习工程学与计算机科学。在谷歌, Gmail、Google 图像识别服务等产品都离不开他的贡献。2016年初,他加入DeepMind团队,着手研究比下围棋还难的人工智能技术——教电脑打电玩,而用来训练机器的游戏环境正是 Oriol Vinyals 最擅长的《星际争霸》。
在EmTech China大会上,Oriol Vinyals在演讲中提到,他和同事已经完成了《星际争霸II》比较重要的7个操作,和人类玩家操作的效果基本一样。但有一些任务,比如建造建筑、收集资源等,仍然比较困难。首先,我想介绍一下,科学家在研究机器学习和人工智能的时候,究竟在做些什么?我想和大家分享的不是算法,而是数据。
数据和任务是非常重要的,我们一定要确认我们的技术前沿是什么,任务是什么,然后你才能够找到合理的矩阵来处理这些问题。有一个很有趣的现象,在技术方面取得重大突破的时间并不长,因为只要找到一个合适的算法就可以取得这样的突破。我们在语音识别和图像分类上都取得了很多里程碑式的进展,我们还利用机器翻译技术在人类与机器之间架起了一座桥梁。
在生成式网络方面我们也有很多应用,比如根据照片生成名人的脸,根据普通马生成斑马,根据夏天的图景来生成冬天的图景等等。这些方面对图片的解读可以说已经非常成功了。接下来我想与大家探讨一下深度强化学习。这是多去几年中我们基于AlphaGo所做的一些突破性的研究。深度强化学习与监督学习和人类的学习方式相比,还是有一定区别的。
比如对于观察本身,算法的观察是需要环境的,没有充分的观察,早期的人形机器人在遇到障碍物的时候往往无法顺利应对而摔倒。我们就会想,能不能建立一个仿真环境来训练这些机器人呢?如果我们有一个很好的环境,我们就可以先去训练它。也就是说我们一定要有一个很完美的环境才能实现我们的目标。为此,我们建立了虚拟场景,并尽可能地提高它的仿真度。也只有在这样的强化环境下,我们才能取得进一步的进展。
比如提到应用场景,我们常常会想到游戏。人们在设计游戏的时候总是小心翼翼,以确保玩家可以获得一定的智能化体验。比如AlphaGo参与的围棋有3000年的历史,这是一个非常有挑战性的环境,因为没有一个单一的解决方案能确保带来最好的结果。当然,我们也可以整合不同的能力让它们玩不同的游戏,比如通过训练让机器人学会下国际象棋。我们也有专门下围棋的算法,这时目标变得更加复杂,玩法也变得更加复杂。
目前没有一台机器可以通过搜索策略的方法来玩好这个游戏。那AlphaGo是通过什么方法来玩这个游戏的呢?正是强化学习。我们的神经网络可以自动地从数据中学习一些特征。这样我们就可以让它看着棋盘,看人类怎么走,棋盘上也会显示出输赢。也就是说我们不需要展开整个展示走法与输赢的网络,只要展开一部分网络就可以做出很好的模拟。这是一个很好的突破。但这样也不是特别好。
因为我们在以人的角度去学习,都要使用数据集来训练。后来我们随机地运行游戏,下过一局之后AlphaGo就可以了解一下比赛是如何进行的,就可以调整整个网络,最终学会下棋。这些网络是在玩游戏的过程中不断训练提升的。AlphaZero随机下棋。经过几天的训练之后,就学会专业棋手的走法了。所以,我们第一版的AlphaGo击败了樊麾,后来下一个版本在韩国和李世石进行了对弈并取得了胜利。
再后来我们进一步地训练网络,整个网络比之前强了三倍,赢了柯洁和其他专业棋手。我们是从零开始,一点点积累积数据训练,最后战胜了专业棋手。除此之外,我们比较感兴趣的是游戏《星际争霸II》。这也是是非常有趣和复杂的游戏,这个游戏基本上是建造一些建筑物以及单位,在同一个地图里不同的组织会相互竞争。在这个游戏中,哪怕只是建造建筑物,也需要做出许多决策。
而除此之外,我们还要不断收集和利用资源、建造不同的建筑物、不断扩张,因此整个游戏非常具有挑战性。我们在这个游戏中使用的方法依旧是强化学习。我们要模仿人类玩这个游戏的方式,但即使是模仿人类点击鼠标和敲击键盘的行为也非常困难。为此,我们引入了一个游戏引擎。和围棋任务最大的不同在于,围棋可以看到整个棋盘,但是在《星际争霸II》中我们通常无法看到整个地图,需要派小兵出去侦查。而且游戏是不间断进行的。
整个游戏甚至会有超过5000步的操作。而且对于增强学习,除了上下左右这些普通的移动,我们发现用鼠标点击界面控制不同物体的移动以及不同的行为,也是非常难的。我们发布了这个环境,所有人都可以参与其中。我们也发布了相关的报道,这基本上是一个开源的平台,大家可以测试自己的算法。我们还没有完成过整局游戏,但是完成了操作《星际争霸II》比较重要的7个操作,比如选择一个单位并让它移动过去。
我们所使用的算法能做到这一步,而且和人类玩家操作的效果基本一样。而另一些任务,比如建造建筑、收集资源等,仍然是比较难的。我们测试的算法,表现会比随机的环境要好,但和专业玩家还是有一段距离的。我们的第一版是在Linux平台发布的。我可能是第一个用Linux玩《星际争霸》游戏的人。我们的增强学习还是做得非常好的,所以我们可以直接通过人的视角来观察这个游戏。
如刚才所说的,我们可以将地图看成一个40×60的像素。从像素来开始进行判断的话,其实能够帮助我们更好地去了解机器是怎么样玩游戏的,虽然说机器还没有办法完全像人类一样。