分享

MIT如何培养顶尖AI开发者?答案是让他们相互厮杀

 造就Talk 2020-07-21

欢迎来到Battlecode

距离2012年Battlecode总决赛还有一小时,科里·李(Cory Li)似乎已难逃失败的命运。

在当年的比赛中,李所在团队研发的AI(人工智能)是表现最好的AI之一,但它经常敌不过另一位参赛者汤姆·摩根(Tom Morgan)开发的算法。

幸运的是,李的团队发现了对手的一个弱点。“他的AI难以抵御一波非常猛烈的进攻。”李说。

为了赢得胜利,李像黑客一样,侵入麻省理工学院历史最悠久的编程比赛,从系统中获取对手的情报,并监听对手的通信。

在离提交代码的最后期限还剩1小时时,他们已没有时间对自己的黑客战术进行测试。

于是,李和队友匆匆编写并提交了一份35行的代码,祈祷它能发挥作用。

Battlecode的某些要素一直延续至今:比赛一直由学生运营;“老鸟”会慷慨地向新手分享比赛的技巧;每局比赛都由两个自主型AI算法在2D地图上展开模拟对战。

这两个算法各自指挥由多种软件机器人组成的虚拟军队,看上去有点像简版《星际争霸》。

AI的每一步动作都取决于一种名为“字节码”的数量分配受限的计算货币,像神经网络这种复杂的AI在比赛中难有用武之地。

正是如此,Battlecode比赛中的代码并不整洁,也不大漂亮。

但是,Battlecode的机器人类型、游戏场景和任务目标每年都会变。

去年,比赛设置的背景是僵尸横行的末日。随着僵尸不断从地图中的据点涌现,参赛队伍需要消灭对手,或者让自己的存活时间长于对手。

16年来,参加Battlecode的年轻程序员一直都是这样相互缠斗。

每年1月,他们开发的AI都会在麻省理工学院搭建的引擎中对战,尽力在模拟战斗中战胜对手。

在一个月的时间里,这些来自世界各地、主要由学生组成的队伍会不断测试和调整算法,以求击败对手。

他们也会通过精明的黑客战术,以期将Battlecode的开发者挑落下马。

决赛在2月的第一周举行,脱颖而出的顶尖队伍登上麻省理工学院最大礼堂的舞台,在观众面前一决雌雄。

对参赛者而言,他们争夺的,不仅是分享5万美元奖金的机会,还有进入Battlecode“名人堂”的荣耀。

潜在雇主都在关注比赛

而Battlecode关乎的不仅仅是荣誉和奖金。像谷歌和彭博社这样的潜在雇主也在关注比赛。

虽然这里所使用的JAVA程序不一定能应用到现实世界中,但一些参赛者在场外依然取得了了不起的成绩,一些优胜者更是跻身世界最成功的创业者之列。

德鲁·豪斯顿(Drew Houston)

“那些把你打造成Battlecode高手的技能,可以让你做好任何事情。”Dropbox创始人德鲁·豪斯顿(Drew Houston)在2012年Battlecode决赛的主题演讲中说。

他本人曾入围2005年的决赛。这不仅仅是口头吹捧而已,豪斯顿也拿出了实实在在的行动,他向比赛提供了赞助,并从中网罗人才。

Dropbox工程团队有一半成员是麻省理工学院的毕业生,而其中很多人都是历年Battlecode的优胜者。

克里斯托弗·佩克特(Christopher Peikert)

Battlecode的竞技并不总是打打杀杀。在2001年举办的首届Battlecode比赛中,克里斯托弗·佩克特(Christopher Peikert)编写了一款能够玩转夏威夷跳棋的算法,最终赢得了比赛。

自那以后,Battlecode就成为了发掘优秀程序员的选拔赛。

今年比赛的主题是“复原”,Battlecode设定的世界正从废墟中恢复原貌,一千多支参赛队伍需通过植树积累分数。

他们要么需要对这项事业做出最大的贡献,要么就得在时间耗尽之前消灭做出更大贡献的对手。

AI在比赛中能够支配园丁、伐木工和坦克等角色,它们拥有各自的统计指标和能力。

子弹既是弹药也是种子,它们可以射向敌人,也可以用来植树。

每年,参赛队伍会在比赛的头几天确定战略,然后编写出一款能够运行的AI。

“通常情况下,你要做的头一件事就是编写一种能够在引擎上运行的算法。”科里·李说。

接下来的几周,参赛队伍将通过不计排名的训练赛和实时直播的比赛,对各自的AI进行测试和调整,直到进入决赛。

包括李在内的很多队伍都会借鉴历届比赛中优秀程序员留下的代码,试图获得优势。

“在决赛前一周,我们发现,原来每支队伍都会使用特别的交流方式。”李说,“我们可以利用这一点来掌握他们机器人的特征。”

受到一种Battlecode黑客战术的启发,李开发的AI可以监听对手的通讯,从而识别出对手,进而调整战略,对敌人的弱点加以利用。

然而,在三局两胜制比赛的前两局,这套黑客战术都没有被触发。

摩根拿下了第一局,李的团队在第二局勉强获胜, 且一直到这个时候,黑客战术都没有奏效。

随着第三局比赛打响,李心情忐忑地站在台上,跟队友讨论着赛况。

“真的希望这一次代码能够被触发。”他说,“这是未经测试的代码,而我们把一切都押在了它身上。”

像黑客那样,侵入比赛系统,李不是第一个,也不会是最后一个。李汲取灵感的那套黑客战术诞生于三年前。

当时,格雷格·利特尔(Greg Little)设计的AI得以监听对手的通讯,干扰信号网络,最终令一些机器人无法动弹。

去年,最令人印象深刻的黑客战术是一种AI把自己的军队转变为僵尸,对其他队伍发起暴风骤雨式的攻击。这套战术赢得了现场观众热烈的掌声。

 

Battlecode 2016年的获胜者格雷格·麦格林(Greg McGlynn)和靳路昶(音)没有使用什么黑客战术,而是编写出了一套碾压对手的强大算法。

作为三冠王,麦格林深谙Battlecode的制胜之道。

“在我看来,独特的战略并不能让你在比赛中占据优势。”他说,“重要的是,想想机器人在遇到每一种可能的情形时,应该做出什么样的合理反应,然后去一一实现。”

高频交易商对Battlecode提供赞助

“很多高频交易商对Battlecode提供了赞助。”李说,“他们觉得,在一场仅限内行参与的比赛中,对抗其他众多AI,这体现了高频交易的精神。”

包括Facebook、苹果和甲骨文在内的公司,也都赞助过Battlecode,它们借此接触到了世界各地的优秀程序员。

今年比赛的头号赞助商是Amplitude Analytics,该公司的创始人正是Battlecode的往届选手。

Amplitude首席执行官宾塞·斯盖茨(Spenser Skates)

“就实际内容而言,(Battlecode)跟创建一家网站或开发一款产品完全不同。”Amplitude首席执行官、Battlecode 2009-2010年度冠军斯宾塞·斯盖茨(Spenser Skates)说。

他认为,Battlecode的独到之处在于,面对一个开放式问题,你必须聚焦其中最重要的部分,搞清楚如何以此为切入点去解决问题。

与麦格林一样,斯盖茨在创办Amplitude之前,也是从一家交易公司开启了自己的职业生涯。

李也曾与一些在Battlecode结识的朋友共同创立过公司,公司经营得还不错。

后来,他又跟另外几个Battlecode的参赛者一道,组建了一家名为Sizig Studios的独立游戏工作室。

他说,参加Battlecode的经历让自己受益匪浅,这不仅仅是指编程技术,更是指一种竞争精神。

2012年李的最后一局比赛刚刚开场,情况看起来不太妙。他的军队站在那里一动也不动,而摩根的机器人开始进攻。

他当时想,代码肯定又出错了。就在这时,仿佛出现了一头看不见的领头羊,李的机器人突然向前冲了上去。

两军相接,李的机器人开始像苍蝇一样围攻摩根的军队,优势渐渐明显。

突然,所有机器人又停了下来,就好像刚才突然启动一样。“剧情真的是一再反转。”李坦言道。

所幸,比赛结束时,他的优势已足够让他将冠军收入囊中。

虽然算法一度出现差错,但最后关头,李的黑客战术还是起到了决定性的致胜作用。

翻译:何无鱼

来源:Motherboard

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多