时间:2018-09-11 来源:互联网 浏览量:
编者按:前不久,2018微软学生夏令营圆满落幕,带着像夏日温度般的编程热情,23组同学组队开发了AI程序,并在黄金点游戏上展开PK。作为博弈论的经典案例之一,黄金点游戏中的心理博弈与人们在社会活动中面临大大小小决策时的场景非常相似,是一个结合了数学和社会学因素的复杂问题。那么,用不同的策略编写AI来玩黄金点游戏,谁会成为最后的赢家呢?
在2018微软学生夏令营上,来自32所高校的微软学生俱乐部的同学在微软亚洲研究院参加了一场Hackathon比赛,比赛的主题是——让AI来玩黄金点游戏。传统的黄金点游戏规则如下:
所有人写一个(0..100)之间的有理数,所有数字的平均值再乘以0.618就是黄金点(Golden Number, G值),最靠近黄金点的数字就获胜。
游戏看起来很简单,如果所有人随机写数字,那么数字的平均值就是50,50的0.618就是30.9,那我写30.9,不就能赢了么?且慢,在座的都是聪明人,他们都会提交30.9,那我就再先走一步,提交30.9*0.618=19.1好了!且慢,他们都是聪明人,我要再先一步…
…
那提交0.0001,会赢么?
这个游戏源于经济学家Richard Thaler于1997年在英国《金融时报》给读者出的一道题目。20年后,他获得了2017年诺贝尔经济学奖,得奖的理由是:他将心理学上的现实假设用于对经济决策进行分析,希望探索人类特性如何系统性地影响了个人决定以及市场结果。黄金点游戏就是这一探索的一个例子。
在实际的黄金点游戏中,大家发现,并不是每个人都是最理性、做了长远思考的,一两位同学还时不时提交一个99这样的不可能获胜的数字,受许多因素影响,黄金点并没有很快下降到低于1.0的数值。
体现博弈论的极简游戏
黄金点游戏对于博弈论的阐释非常经典,而博弈论又是人工智能的基础理论之一,如今异常火热的各类棋类AI大多是基于博弈论构建。
“之所以选黄金点这个游戏是为了让同学们对博弈论和人工智能能够有更深刻的理解,相比股市、广告拍卖等更复杂的场景,这个游戏更加简单抽象,只需要提交简单的数字即可参与游戏,既帮助快速理解基本概念,又能有足够的深度来体会博弈论的精髓。”微软亚洲研究院首席研发经理邹欣介绍了选择这个游戏作为Hackathon主题的初衷。
微软亚洲研究院首席研发经理邹欣
微软亚洲研究院资深研究员秦涛在Hackathon前给同学们介绍博弈论时表示,“博弈论在生活中无处不在,每个人的决策以及决策的效果都将取决于对方的决策,虽然博弈论是数学研究的一个分支,但它同时要兼顾考虑人们的心理、大趋势与个人决策之间的关系等诸多社会学因素。例如共享出行是否会降低交通拥堵?大多数人的直觉是,共享使用汽车是一种节能减排的有效模式;然而对于那些原本不开车的人来说,共享出行可能会吸引更多的人加入到开车的行列中来。如此一来,共享出行是否会降低交通拥堵,其实是个未知数。这就让博弈论的研究充满不确定性,而这也正是博弈论的乐趣所在。“
微软亚洲研究院资深研究员秦涛
那么,在社会化活动中,是否存在一种大家都认可的最终平衡状态呢?针对该问题,数学家、诺贝尔经济学奖获得者约翰·纳什提出了纳什均衡(Nash Equilibrium),又称为非合作博弈均衡,这是博弈论的一个重要策略组合。纳什均衡指的是对于非合作博弈,存在一种策略组合,对于任何一位参与者来说,单方面更改自己的策略不会带来任何好处。纳什证明了在每个参与者都只有有限种策略选择、并允许混合策略的前提下,纳什均衡一定存在。
在纳什均衡的经典案例(例如囚徒困境)中,参与人数都较少(两个囚犯),而且策略简单(只有两三个策略)。在黄金点游戏中,如果每个人提交的为整数,那么结果会非常简单,均衡也很快能够达到,但在实际游戏中我们要求提交的是有理数,这样变化空间就会相当大。在这种情况下,是否仍然存在符合纳什均衡的黄金点?
我们知道,经过多轮比赛,黄金点会收敛于某个区间,然而真实的比赛远比理论复杂,也许需要上百轮比赛这个“黄金点”才趋于稳定。对于人类来说,多次提交数字会比较麻烦,收敛过程会非常漫长,但对于AI来讲,收敛过程会是如何?另外,如果一个AI能同时提交两个数字,那么,我们是否可以用一个数字来“扰动市场”,然后用另一个数字精准地匹配下一个黄金点呢?
为了增加比赛的趣味性,我们进一步改进了黄金点游戏的规则:
在场的23组同学提交一个人工智能程序,程序每次可以提交两个0-100之间的有理数(不包含0或100),系统最后判出所有数据的平均值,然后乘以0.618(黄金分割常数),得到本次比赛的黄金点。提交的数字最靠近黄金点的小组得20分,离黄金点最远的扣2分,其他玩家不得分。
比赛由系统自动投票数百次,将这数百次的得分相加,得到每组在这一轮的得分。
在传统的黄金点游戏中,一个选手只提交一个数字,如果想让这个数字出乎意料(例如变得超级大),尽管能扰动市场,但自己却无法赢得这一次比赛。有了两个数字,情况则完全不一样,如何让两个数字去发挥不同的作用,一个扰动,一个精准匹配,很体现同学们的思维深度和功力,也成为左右比赛胜负的关键。
强化学习处理动态数据
人工智能中有“监督学习”、“无监督学习”等不同的机器学习方法,这两种方法都只适合处理大量相对比较静止的数据。但是黄金点游戏中的数据都是动态变化的,要想训练人工智能来处理这些动态数据,需要借助于强化学习(reinforcement learning),强化学习和环境之间的交互学习过程如下图所示。
由上图可以看出,AI程序向环境中提交两个数字(动作),然后获得一个环境的状态(所有人的数字)和奖励(自己的得分)。程序分析了这些数据,再决定下一轮的数字,从此不断迭代,争取让自己的奖励越来越多。
但是部分同学并没有在AI程序中利用强化学习来实时地优化算法——在几十轮的比赛中,自己提交的黄金点都高于获胜的值,算法并没有实时调整的机制。
在赛后的策略分享环节中,最终获胜的小组(成员为南开大学的徐礼承、电子科技大学的王志伟和山东大学的王静)表示,他们研究了上半场比赛的几百场结果,发现了两个规律,①如果提交的扰动数不变,那么这个扰动并没有起到随机的作用,也失去了扰动的意义。因此,他们设置了一个扰动概率,这么一来,只有自己知道扰动什么时候发生, 而其他选手都不知道。②黄金点在一段时间内是逐渐向下变化的,这个变化的趋势比较固定,于是他们把这个趋势加入到计算“精准匹配”数字的算法中。这两个策略在下半场几百轮的比赛中,让他们赢得了高分。
冠军队伍与导师们合影
下图是在400轮比赛中,黄金点的实际走向,可以看到,黄金点大部分时间都在0.5~3的范围内波动,但是经常出现跳跃,这通常是由于出现了扰动市场的数字。这一定程序上也可以投射到金融市场上的价值波动。同学们得以管中窥豹,从游戏中获得一定的思考。
比赛过程中也出现了部分小组的程序不能正常运行的情况,同学们的想法很宏大,但是却无法正常落地。在实际生产环境中,不能光有想法,没有过硬的工程技术,想法或算法也只是空话。事实上,即便是微软亚洲研究院的研究员,也经常会遇到理论和实践环境之间的差异,这时候就需要由研究员和工程师组合搭配共同去攻克难关。
一个小小的黄金点游戏,不仅让同学们体验了组队编程的乐趣,更掌握了新的知识和策略,有了一些对研究工作的实际体验。尽管比赛中仍有些小小的遗憾,例如时间不够充足、同学们对于AI策略以及强化学习的把握不够深入等,但同学们还是“玩”得很开心。短短的几天夏令营可能无法给他们提供系统的学习和训练,却可以在同学们心里种下一颗种子,一颗对AI大数据、对研究工作充满好奇的种子,或许在未来的某一天就会发芽盛开。
每年的微软学生夏令营都可以让同学们与微软工程师、研究员们亲密接触。今年夏令营的主题是“创动天地,绿动WE来“,同学们通过技术沙龙、Hackathon比赛、团队游戏等充分了解了人工智能、云计算领域最前沿的研究,通过团队合作提前感受职场中的协作与配合,感知最高效的工作方式。
扫描下方二维码,试试黄金点游戏吧!
你也许还想看:
,共建交流平台。来稿请寄:msraai@microsoft.com。