讓AI來一場「簡單」的黃金點遊戲

让AI来一场“简单”的黄金点游戏

編者按:前不久,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主題的初衷。

让AI来一场“简单”的黄金点游戏

微軟亞洲研究院首席研發經理鄒欣

微軟亞洲研究院資深研究員秦濤在Hackathon前給同學們介紹博弈論時表示,“博弈論在生活中無處不在,每個人的決策以及決策的效果都將取決於對方的決策,雖然博弈論是數學研究的一個分支,但它同時要兼顧考慮人們的心理、大趨勢與個人決策之間的關係等諸多社會學因素。例如共享出行是否會降低交通擁堵?大多數人的直覺是,共享使用汽車是一種節能減排的有效模式;然而對於那些原本不開車的人來說,共享出行可能會吸引更多的人加入到開車的行列中來。如此一來,共享出行是否會降低交通擁堵,其實是個未知數。這就讓博弈論的研究充滿不確定性,而這也正是博弈論的樂趣所在。“

让AI来一场“简单”的黄金点游戏

微軟亞洲研究院資深研究員秦濤

那麼,在社會化活動中,是否存在一種大家都認可的最終平衡狀態呢?針對該問題,數學家、諾貝爾經濟學獎獲得者約翰·納什提出了納什均衡(Nash Equilibrium),又稱為非合作博弈均衡,這是博弈論的一個重要策略組合。納什均衡指的是對於非合作博弈,存在一種策略組合,對於任何一位參與者來說,單方面更改自己的策略不會帶來任何好處。納什證明了在每個參與者都只有有限種策略選擇、並允許混合策略的前提下,納什均衡一定存在。

在納什均衡的經典案例(例如囚徒困境)中,參與人數都較少(兩個囚犯),而且策略簡單(只有兩三個策略)。在黃金點遊戲中,如果每個人提交的為整數,那麼結果會非常簡單,均衡也很快能夠達到,但在實際遊戲中我們要求提交的是有理數,這樣變化空間就會相當大。在這種情況下,是否仍然存在符合納什均衡的黃金點?

我們知道,經過多輪比賽,黃金點會收斂於某個區間,然而真實的比賽遠比理論複雜,也許需要上百輪比賽這個“黃金點”才趨於穩定。對於人類來說,多次提交數字會比較麻煩,收斂過程會非常漫長,但對於AI來講,收斂過程會是如何?另外,如果一個AI能同時提交兩個數字,那麼,我們是否可以用一個數字來“擾動市場”,然後用另一個數字精準地匹配下一個黃金點呢?

為了增加比賽的趣味性,我們進一步改進了黃金點遊戲的規則:

在場的23組同學提交一個人工智能程序,程序每次可以提交兩個0-100之間的有理數(不包含0或100),系統最後判出所有數據的平均值,然後乘以0.618(黃金分割常數),得到本次比賽的黃金點。提交的數字最靠近黃金點的小組得20分,離黃金點最遠的扣2分,其他玩家不得分。

比賽由系統自動投票數百次,將這數百次的得分相加,得到每組在這一輪的得分。

在傳統的黃金點遊戲中,一個選手只提交一個數字,如果想讓這個數字出乎意料(例如變得超級大),儘管能擾動市場,但自己卻無法贏得這一次比賽。有了兩個數字,情況則完全不一樣,如何讓兩個數字去發揮不同的作用,一個擾動,一個精準匹配,很體現同學們的思維深度和功力,也成為左右比賽勝負的關鍵。

強化學習處理動態數據

人工智能中有“監督學習”、“無監督學習”等不同的機器學習方法,這兩種方法都只適合處理大量相對比較靜止的數據。但是黃金點遊戲中的數據都是動態變化的,要想訓練人工智能來處理這些動態數據,需要藉助於強化學習(reinforcement learning),強化學習和環境之間的交互學習過程如下圖所示。

让AI来一场“简单”的黄金点游戏

由上圖可以看出,AI程序向環境中提交兩個數字(動作),然後獲得一個環境的狀態(所有人的數字)和獎勵(自己的得分)。程序分析了這些數據,再決定下一輪的數字,從此不斷迭代,爭取讓自己的獎勵越來越多。

但是部分同學並沒有在AI程序中利用強化學習來實時地優化算法——在幾十輪的比賽中,自己提交的黃金點都高於獲勝的值,算法並沒有實時調整的機制。

在賽後的策略分享環節中,最終獲勝的小組(成員為南開大學的徐禮承、電子科技大學的王志偉和山東大學的王靜)表示,他們研究了上半場比賽的幾百場結果,發現了兩個規律,①如果提交的擾動數不變,那麼這個擾動並沒有起到隨機的作用,也失去了擾動的意義。因此,他們設置了一個擾動概率,這麼一來,只有自己知道擾動什麼時候發生, 而其他選手都不知道。②黃金點在一段時間內是逐漸向下變化的,這個變化的趨勢比較固定,於是他們把這個趨勢加入到計算“精準匹配”數字的算法中。這兩個策略在下半場幾百輪的比賽中,讓他們贏得了高分。

让AI来一场“简单”的黄金点游戏

冠軍隊伍與導師們合影

下圖是在400輪比賽中,黃金點的實際走向,可以看到,黃金點大部分時間都在0.5~3的範圍內波動,但是經常出現跳躍,這通常是由於出現了擾動市場的數字。這一定程序上也可以投射到金融市場上的價值波動。同學們得以管中窺豹,從遊戲中獲得一定的思考。

让AI来一场“简单”的黄金点游戏

比賽過程中也出現了部分小組的程序不能正常運行的情況,同學們的想法很宏大,但是卻無法正常落地。在實際生產環境中,不能光有想法,沒有過硬的工程技術,想法或算法也只是空話。事實上,即便是微軟亞洲研究院的研究員,也經常會遇到理論和實踐環境之間的差異,這時候就需要由研究員和工程師組合搭配共同去攻克難關。

一個小小的黃金點遊戲,不僅讓同學們體驗了組隊編程的樂趣,更掌握了新的知識和策略,有了一些對研究工作的實際體驗。儘管比賽中仍有些小小的遺憾,例如時間不夠充足、同學們對於AI策略以及強化學習的把握不夠深入等,但同學們還是“玩”得很開心。短短的幾天夏令營可能無法給他們提供系統的學習和訓練,卻可以在同學們心裡種下一顆種子,一顆對AI大數據、對研究工作充滿好奇的種子,或許在未來的某一天就會發芽盛開。

每年的微軟學生夏令營都可以讓同學們與微軟工程師、研究員們親密接觸。今年夏令營的主題是“創動天地,綠動WE來“,同學們通過技術沙龍、Hackathon比賽、團隊遊戲等充分了解了人工智能、雲計算領域最前沿的研究,通過團隊合作提前感受職場中的協作與配合,感知最高效的工作方式。

掃描下方二維碼,試試黃金點遊戲吧!

你也許還想看

让AI来一场“简单”的黄金点游戏

感謝你關注“微軟研究院AI頭條”,我們期待你的留言和投稿,共建交流平臺。來稿請寄:[email protected]


分享到:


相關文章: