据AI透露,8月16日,由创新工场主办的2019 DeeCamp人工智能训练营正式收官。
今年,来自国内外的600多名学生参加了训练营,学员完成了22家公司发起的50个AI相关项目。其中“挑战Aauto Quicker Games”项目获得最佳团队奖,其队长为北京大学博士生张天豪。

在这么短的时间内,团队是如何打造出一款从0到1成熟度很高的楼主AI产品的?最近雷锋。com与张天豪进行了交流,探讨了本次训练营的心得和体会。
随机组队,三周完成项目。
问:你参加训练营的初衷是什么?
第一,去年室友参加了DeeCamp,是在北大举办的,所以我上了很多专业课,尤其是开复老师的课,让我从行业的角度思考人工智能的发展。后来一路关注室友的项目,是关于机器人抓取的。让我觉得学生真的可以从项目中学到很多东西,于是关注了今年的招生,发现了一个关于游戏AI的项目,和我们群体机器人智能控制的研究方向比较接近,而且都是关于环境中智能体做决策的,所以想了解一下。
其次,目前游戏AI的研究尤其火热,比如王者荣耀的《绝武》,Dota的《OpenAI Five》。越来越多的AI开始解决信息不完全的多人游戏问题,这和大多数情况下机器人的情况类似,也是机器人未来进入人类生活必须解决的问题。DeeCamp提供了一个与行业导师交流的平台。我学习态度很好,想多了解一下工业游戏AI是怎么工作的。希望能换个思路,为以后的研究找到一些交集。
问:在项目中,你们是如何进行团队合作和分工的?
我们随便组队,组队前都不认识。队长是他自己选的。
我们这群人很幸运,每个人都有自己的技术领域,都是抱着学习的态度来的,都想在这次夏令营中有所收获。通过对论文的学习和讨论,我们在三周内找到了每个学生更适合突破的研究方向,并从一开始就进行了高效的讨论和尝试。特别感谢团队成员对我项目策划的信任。
举几个有趣的例子,有同学没打过斗地主,但是其中一个算法模型很考验程序员斗地主的能力,所以我们买了一本《斗地主高手的制胜策略》,传阅了一下,同时在Aauto里更快的打斗地主,积累自己的经验,提高自己判断算法好坏的能力。
我们只有三个星期的时间,所以我们必须从零开始做一个满意的项目,从时间上来说,这是非常紧张的。除了算法,这个项目还有很多工程上的东西需要解决,比如游戏引擎、游戏服务器、数据库、游戏前端、游戏界面、音乐等等。
那段时间,我们平均每天睡五个小时左右。甚至可能会有一些转变。一个同学做完一个通宵的工作后,休息五个小时。另一个同学起床后,对自己的进度做一些调整,然后两个人有一些讨论。除了创新工场提供的开放日,大家基本都没出去玩。
从产品的角度来说,这个过程非常耗时,需要不断的对接。一切都是并行的,不同算法之间有各种接口,最后融合在一起。为此,我们制定了四个“五天”计划。前五天完成算法的初步模型,后五天完成游戏开发,后五天完成算法与游戏的对接,后五天完成整体整合。
问:项目面临的问题是什么?
主要有两类问题,一类是算法,很烧脑,相当于做研究;另一个是游戏开发,工作量大,用户体验大,比较累。
首先是第一类问题。与其他大多数项目不同,我们的项目并不是简单的应用深度学习,对楼主AI的研究难度比较大,所以相关论文很少,基本没有开源代码。此外,由于公司依靠其自研算法盈利,对楼主AI的研究也是保密的。
因为这个问题确实比较难,不确定三周能不能做出来,所以和行业导师沟通。刚开始的时候,老师只期望我们做一两个简单的有一定胜率的模型。
我们设计过很多模型,每个模型都遇到过问题。其中一个问题基本上是每个型号都会遇到的,就是在设计之初,我们不知道他们能不能做到。当我们试图使用监督学习来模仿人类的打牌行为时,这个问题更加明显。我们前期搜索楼主AI的解决方案的时候,有一篇比较流行的论文是用深度学习来解决这个问题的。这两年也有很多博主关注,所以我们转载了这篇论文,但是效果并不好。我们做的模型疯狂地做出了“不要”的动作。
由于本文没有更多的细节,我们不知道是我们的方法有问题,还是因为整个斗地主游戏的游戏树的大小大约是10的85次方,我们的35W块游戏数据太少。好在DeeCamp有行业导师体系。我们与我们项目的Aauto faster公司的刘吉先生进行了交流,他为我们提供了几个想法。我们按照这些思路进行了测试,发现在真实玩家样本中,最多的样本是“不要”。于是我们根据老师提供的卷子,尝试用新的思路来解决这个问题。所以工业导师真的很重要。我们导师在整个项目中给了我们很多方向,可以去尝试,去思考,去探索。
我们整个算法最难的地方就是把很多人的不完美信息的博弈结合起来了。大家也在关注今年7月德州扑克AI在多人游戏上的重大突破。我们只是简单的用了它的核心CFR算法思想来解决斗地主的问题,却没有找到相应的论文。我们从最简单的库恩扑克开始了解,看了大概一百篇论文,把相应的算法移植到斗地主的问题上,效果非常显著。
问:你能给我们详细解释一下你的模特实践吗?
我们创新性地提出了一个面向房东的多模型融合AI框架。首先,我们设计了几个斗地主AI模型,通过线下学习使其具备一定的斗地主能力。最后,通过强化学习对模型进行融合,最终选择其中一个模型的决策结果。
算法框架如下:
具体来说,使用了五种类型的模型。
首先是规则模型。规则是通过人的经验人为设计每种出牌方式的好坏,选择一种最大化剩余手牌得分的出牌策略。我们根据经验加入基于情境的惩罚和奖励,这样AI之间就有了合作。这种类模型的优点是可以利用人的经验,难度低,缺点是缺乏灵活性。
其次,我们还设计了蒙特卡罗树搜索模型,这是AlphaGo算法的核心。通过模拟获得最佳播放动作。在王永刚老师的建议下,我们使用正则模型在扩展时修剪蒙特卡罗树的宽度,在模拟时修剪深度。
如何利用暗卡的信息做到这一点?我们花了将近两周的时间研究德州扑克的论文,并基于其核心思想成功构建了斗地主的CFR模型。CFR算法的结构与蒙特卡罗类似,但其核心思想是通过加入信息集的概念来解决黑卡问题。在黑牌的情况下,通过输入当前手牌信息、算牌者信息和每个玩家的手牌数,就可以输出理论上获得胜率时的行动概率。采用静态存储的方法,可以减少计算量,减少存储量,具有很强的扩展性。
除了CFR,我们尝试使用监督学习,通过模仿人类玩家的出牌行为来实现斗地主。

此外,我们还尝试了基于值的强化算法。选择双DQN作为框架,通过状态与行为的匹配,创新性地生成批量法律输入。batch的每个样本代表当前情况下的一个合法动作,使网络输出batch的q值,通过选择最大的q值解决输出动作不确定的问题。
问:你的模型效果如何?
我们的每个模型都取得了一定程度的斗地主能力,我们的强化学习模型在相同基线对抗下取得了比现有论文更高的胜率。其次是监督学习模仿人类玩家游戏行为的模型,在测试集上也达到了76.5%的预测准确率。这只是黄金分割35W条数据训练出来的模型。如果我们得到更多的数据,我们不知道效果是否会更好。但是可以明显感觉到这个AI确实有一定的模仿行为。
其实我们只是提供了一种解决不完全信息博弈的方法。我们可能的方案可能不是理想的方案,但是可以告诉你,这个方法是可解的。我觉得这是我们尝试更重要的意义之一,不同于单纯用深度学习做回归或者分类。
不仅是算法,团队合作也很重要。
问:这次你最大的收获和感受是什么?
我得到的比我预想的要多。
一开始我的期望是算法,如何解决决策问题。
然而,DeeCamp不仅仅是关于算法,它让我们知道我们应该如何合作来完成一个项目和一个真正的产品。
我很高兴我们的团队里有各种各样的人才。我们需要每天讨论和交流。巧合的是,我们所有的队员恰好都在同一个宿舍。所以我们会每两个晚上开一个小会议,每五天总结一次,看进度,找组合,然后安排团队成员做一些交叉和技术对接。这可能更像是一个团队在做一件事。开始项目后,我们需要了解别人在做什么。我觉得这些东西对你以后去企业工作很重要。知道如何与人合作,他们想要什么,你能提供什么,你想要什么,你需要他们提供什么,对你来说也很重要。
另外我觉得还有更好的一点,就是前期的课程真的准备的很充分。虽然北大是一个比较高层次的平台,但是我可以接触到各种知识。但是这些知识不集中,导致我们有时候会偷懒。比如我不懂NLP,就不听NLP。但是在DeeCamp,你会被各种各样的东西轰炸,包括图像处理,包括NLP,包括建模和压缩,包括无人驾驶等等。这种情况下,可能会有很多交叉启发。
产业合作的方式也是DeeCamp的一大亮点。老师们给我们提供了很多帮助,无论我们遇到什么问题,都能得到很好的解答。在我答辩之前,老师帮我反复校对修改PPT。这些说明也特别重要。确实是全方位的能力提升,不仅仅是算法部分。同时也认识了很多志同道合的朋友,我们全组甚至开玩笑说以后要不要一起玩kaggle。
问:你是如何平衡学业和参与时间的?导师支持吗?
这个很难,因为博士生的研究任务比较重,老师会担心我参加DeeCamp的时候拿不到实验室里的研究那么多。
这个月耽误了实验室一个项目和两篇论文的进度。而且因为北大的本科生暑假会在实验室做科研,所以我只能和跟着我做科研的本科生远程讨论项目。
现在我们的研究是交叉方向,擅长数学、物理、自动化、力学、计算机。老师希望我不要往纯计算机方向走,他认为这样会失去我的优势。我也同意老师的观点。因此,我要感谢我的导师谢光明教授的支持,感谢我的实验室同学们帮我分担原实验室的工作。
最后参加了DeeCamp,学到了很多东西。结果挺意外的,我们也没想到会拿冠军。在此,我要感谢我的队友,王鹏、、、、孙志波、刘文静、于、孙海瑶。希望你们都有一个美好的未来!
问:你下一步的研究计划是什么?
我做的是多水下机器人群控,涉及到水面和水底的感知和控制。与AI结合,还有水面物体识别、水下图像增强、机器人传感器数据处理、机器人鲁棒性控制等等。目前陆地资源已经开发的差不多了,海洋还没有大的开发。此外,国家提出了“海洋强国”的口号。因此,水下机器人的研究关系到生活和国家的许多方面。我们实验室研发了很多水下机器人,也协助国家科研人员在南北极做了一些探索,在渔业、水质监测、救援等方面有很多应用。
有了学习的态度,做好充分准备才能收获更多。
问:有没有推荐以后想参加比赛的同学?
我觉得不错,但是参赛前一定要想好自己的目的。有些人真的只是为了一张结业证书,证明自己从一万个AI人才中选出了600人,帮助他们以后找工作。反而浪费了另一个真正想学习系统学习的学生的机会。在DeeCamp你可以学到很多东西。入营前期你一定要做好准备。
DeeCamp是一个大宝藏,它包含了很多西。你不仅在做自己的项目,还可以了解其他项目。里面也有很多沙龙,可以听到很多人的研究和工作经验,学到很多东西,尤其是本科生。
我觉得你应该先形成自己的体系,再建立营地,这样才能获得最大的收益。我推荐学生参加DeeCamp,但是在参加之前,你必须思考如何在这里学到尽可能多的知识。
问:你认为在参加之前应该如何准备才能收获更多?
我觉得走之前应该做好两件事。

首先是你要对AI有一个基本的了解。我们不必深入了解,但要大致知道什么是图像,什么是自然语言处理。入营后,老师会从基础知识点讲最新的研究。如果你没有准备好,你很可能会在课堂上睡觉。
第二件事是你要对自己的项目负责。去之前先看一些文章,为项目做准备。我擅长强化学习。我去之前在群里分享了一些和强化学习相关的教程和资料,大家可以一起学习讨论。
每个学生都应该知道自己的特点和特质是什么。比如我们组有个同学前端很强,我就把前端的工作给他。另一个同学擅长数据。他负责发动机。游戏引擎是一个很复杂的东西,包含了很多可能性。没有游戏引擎,研究创意是完全没有意义的。如果每个人都做算法,这个项目就不可能成功。
抱着学习的态度,想清楚自己的目的再去。如果只是为了一个结业证书,我觉得意义不大。
雷锋。com雷锋网。com


