0
本文作者: skura | 2019-08-22 22:19 |
AI 開發(fā)者按,8 月 16 日,由創(chuàng)新工場主辦的 2019 DeeCamp 人工智能訓練營正式結營。
今年,來自海內外的 600 多名學生參加了訓練營,學員們完成了由 22 家企業(yè)發(fā)起的 50 個 AI 相關課題。其中,「挑戰(zhàn)快手小游戲」項目獲得了最佳團隊獎,隊長是北京大學在讀博士生張?zhí)礻弧?/p>
如此短的時間之內,團隊是如何從 0 到 1,打造出一款成熟度較高的斗地主 AI 產品?近日,雷鋒網與張?zhí)礻煌瑢W進行了一次交流,討論了關于本次訓練營的經歷和心得。
隨機組隊,三周完成項目
問:你參加訓練營的初衷是什么?
其一,去年我舍友參加了 DeeCamp,當時是在北大舉辦的,近水樓臺,我就蹭了不少專業(yè)的課程,尤其是開復老師的課程讓我印象特別深刻,讓我從產業(yè)的角度思考人工智能的發(fā)展。后來全程關注舍友的課題項目,是關于機械臂抓取,讓我感覺到學員確實可以從項目中學習到很多東西,于是我關注了今年的報名情況,發(fā)現有關于游戲 AI 的項目,這與我群體機器人智能控制的科研方向比較貼近,都是關于智能體在環(huán)境中做決策的,于是想來學習一下。
其二,目前關于游戲 AI 的研究特別火熱,比如王者榮耀的「絕悟」以及 Dota 的「OpenAI Five」, 越來越多的 AI 都開始去解決不完美信息下的多人博弈問題,這與機器人大部分情況下面對的情況是相似的,也是將來機器人走進人類生活必須要去解決的問題。DeeCamp 提供了與產業(yè)導師交流的平臺,我抱著一種很大的學習心態(tài),想要多了解產業(yè)端游戲 AI 到底是如何工作的,希望能為今后的科研換一種思路,找一些交叉點。
問:項目中你們是如何組隊和分工的?
我們是隨機組隊的,組隊之前我們彼此都不認識。隊長是后面自己去推選的。
我們組很幸運,大家都有自己擅長的技術領域,并且都是抱著學習的心態(tài)來的,都想要在這個夏令營中有所收獲。我們通過對論文的研讀與討論,找到了每個同學在三周內比較適合去突破的研究方向,并從一開始就高效地進行討論與嘗試,我特別感謝組員對于我項目規(guī)劃的信任。
舉幾個比較有趣的例子,有的同學從沒打過斗地主,但是其中一個算法模型 (規(guī)則模型) 比較考驗編程人員的斗地主能力,于是我們購置了一本《斗地主高手必勝攻略》,傳閱著看,同時在快手斗地主上對局,積累自己的經驗,提高判別算法好壞的能力。
我們只有三周的時間,要從零開始做出一個大家還比較滿意的項目,在時間上來說是非常緊張的。因為這個項目除去算法方面外,還有很多工程上的東西要去解決,比如游戲的引擎,游戲的服務器、數據庫,游戲前端,游戲界面、音樂等等。
在那段時間里,我們大概平均每天的睡眠時間就五個小時。甚至還有可能存在一些輪崗,一個同學干完一個通宵之后,他去休息五個小時,另外一個同學起來之后接著他的進度去做一些調整,然后兩個人再做一些討論。除了創(chuàng)新工場提供的開放日之外,大家基本上都沒有出去玩。
從產品上來講,這個過程是很花時間的,要不停的去做對接。所有東西都是并行的,不同算法之間有各種各樣的接口,最后再把它們整合起來。為此,我們制定了四個「五天」計劃,在第一個五天要完成算法的初步模型,第二個五天完成游戲開發(fā),第三個五天完成算法與游戲對接,第四個五天完成整體融合。
問:項目面臨的問題有哪些?
面臨的問題主要有兩類,一類是算法,這類問題比較燒腦,相當于是在做研究;另外一類是游戲開發(fā),這一類由于工程量比較大,又涉及到用戶體驗,細節(jié)比較多,比較累人。
首先是第一類問題,和其他大部分的項目不同,我們的項目不是簡單地拿深度學習做一些應用,并且關于斗地主 AI 的研究難度比較大,所以相關論文特別少,基本上沒有什么開源代碼。除此之外,公司端由于要依靠其自主開發(fā)的算法獲取利潤,故而關于斗地主 AI 的研究也都是保密的。
由于這個問題確實比較棘手,我們也不確定三周是否能做出來,于是就和產業(yè)導師們進行交流,在最初開始時,老師們對我們的期望也只是能做出來一兩個簡單的模型,并且模型有一定的勝率即可。
我們設計了很多模型,在每個模型中都遇到了問題,其中有一個問題基本上是每個模型都會遇到的,就是在設計最初的時候,我們也不知道他們到底能不能行,這個問題在我們嘗試使用監(jiān)督學習模仿人類打牌行為時體現的比較明顯。我們在前期搜索關于斗地主 AI 的解決方案時,有一篇使用深度學習解決這一問題的論文比較熱門,這兩年很多博主也關注過它,于是我們對這篇論文做了復現,但是效果并不好,我們做出的模型瘋狂做出「不要」這一動作。
由于這篇論文沒有更多地細節(jié),我們也不知道到底是不是我們的方法出了問題,還是說因為整個斗地主游戲的游戲樹大小大概是 10 的 85 次方,我們的 35W 條游戲數據太少導致的問題。不過幸好 DeeCamp 有產業(yè)導師制度,我們和我們項目的快手公司的劉霽老師做了溝通,他給我們提供了幾個思路,我們根據這些思路去做了檢驗,發(fā)現在真實的玩家樣本中,最多的樣本就是「不要」。于是我們根據老師提供的論文嘗試使用新的思路解決了這個問題。所以說產業(yè)導師真的特別重要,我們導師在整個項目中給了我們很多方向上的指導,由我們去做嘗試、思考與探索。
而我們整個算法當中最難的一個部分在于,它融合了多人不完美信息下的博弈。大家也都有關注今年 7 月份德州撲克 AI 在多人游戲中取得了重大突破,單純使用其核心的 CFR 算法思想來解決斗地主問題的研究,我們沒有找到一篇相應的論文。我們從最簡單的庫恩撲克開始理解,看了大概有百多業(yè)的論文,才將相應的算法移植到斗地主問題中,效果非常顯著。
問:能否向我們詳細解讀你們的模型實踐?
我們創(chuàng)新性地提出了一個多模型融合的斗地主 AI 框架,首先設計了多個斗地主 AI 模型,并通過離線學習的形式使它們各自都有一定的斗地主能力,最后再通過強化學習來做多模型融合,最終選擇其中一種模型的決策結果。
算法框架如下:
具體來說,使用了 5 類模型。
首先是規(guī)則模型。規(guī)則模型是通過人類經驗的方式,人為設計每一種打牌方式的好壞,并選擇一種使剩下手牌評分最大的打牌策略。我們通過經驗性地加入基于局面的懲罰與獎勵,使 AI 之間存在配合。該類模型的優(yōu)點在于可以利用人類經驗,難度低,缺點是缺少靈活性。
其次,我們還設計了蒙特卡洛樹搜索模型,該模型是 AlphaGo 算法的核心。通過模擬仿真的方式來獲得最佳出牌動作。我們在王詠剛老師的建議下,使用規(guī)則模型對蒙特卡洛樹進行擴展時的寬度剪枝,以及模擬時的深度剪枝。
我們如何在暗牌的信息下去做這件事情呢?我們花費了將近兩周的時間去研究德州撲克論文,并成功地基于其核心思想構建出斗地主 CFR 模型。CFR 的算法的結構與蒙特卡洛相似,但其核心思想是通過加入信息集的概念解決暗牌問題。在暗牌的情況下,通過輸入當前手牌信息以及記牌器信息和每位玩家的手牌數量,即可輸出理論上獲得勝率時的動作概率。我們通過將「信息集」采用靜態(tài)存儲的方式實現了計算量減少,存儲量減少以及可擴展性強。
除了 CFR,我們嘗試使用監(jiān)督學習,通過模仿人類玩家的打牌行為來實現斗地主。
除此之外,我們還對 Value-based 的強化算法進行嘗試。選用 Double DQN 作為框架,創(chuàng)新性地通過將狀態(tài)與動作配對,生成 batch 個合法的輸入,batch 的每個樣本代表了當前情況下的一種合法動作,從而使網絡輸出 batch 個 Q 值,通過選擇最大 Q 值的方式解決了輸出動作不確定的問題。
問:你們的模型效果如何?
我們的每個模型都取得了一定的斗地主能力,其中我們提出的強化學習模型在于相同 baseline 對抗的情況下,取得了比現有論文還要高的勝率。其次是監(jiān)督學習模仿人類玩家出牌行為的模型,在測試集上也達到了 76.5% 的預測準確率,這還只是通過黃金分段的 35W 條數據訓練的模型,如果拿到的數據更多,效果是否會更好,我們不得而知。但是可以明顯地感覺到這個 AI 確實存在一定模仿行為。
其實我們只是提供了一種解決不完美信息博弈問題的方式??赡芪覀兊姆桨肝幢鼐褪亲罾硐氲姆桨福强梢愿嬖V大家,這種方式是可解的,我覺得這是我們的嘗試比較重要的意義之一,這與單純使用深度學習去做回歸或分類是不同的。
不僅僅是算法,團隊配合很重要
問:這一次你最大的收獲和感受是什么?
我的收獲超出了預期。
最開始,我的預期是算法,怎么去解決決策問題。
但是,DeeCamp 不僅僅只是涉及到算法,它讓我們知道大家應該如何一起分工去完成一個項目,完成一個真正的產品。
我很慶幸我們團隊中有各種各樣的人才。我們需要每天進行討論交流,巧合的是,我們的隊員正好都在一個寢室。于是,每兩天晚上我們會開一次小會,五天一次總結,看進度,找結合,然后安排隊員做一些交叉和技術上的對接。這個可能更像是在團隊在做一些事情。項目開始之后,我們需要明白其他人在做什么。我覺得這些東西對于將來進入企業(yè)工作非常重要,你要知道怎么去和人配合,他們想要什么,你能提供什么,你想要什么,你需要他們提供什么,這也是很重要的。
除此之外,我認為還有一個比較好的點是,前期的課程確實準備得很不錯。雖然北大是一個比較高水準的平臺,我可以接觸各種各樣的知識。但是這些知識不集中,導致我們有時候會偷懶。打個比方,我不了解 NLP,我就不去聽 NLP 的東西。但是在 DeeCamp 里面你會轟炸式的接觸到各種各樣的東西,包括圖像處理,包括 NLP,包括模型與壓縮,包括無人駕駛等等等等,這種情況下可能會產生很多交叉式的靈感。
產業(yè)合作的方式也是 DeeCamp 一大亮點,老師們給我們提供了很多幫助,不管有什么問題去找老師,都能得到很好的解答。我在答辯前,老師幫我反復校對和修改 PPT,這些指導也特別重要,它確實是一種全方面的能力提升,不僅僅是算法算法部分。同時,我認識了很多志同道合的朋友,我們整個組還開玩笑說之后要不要一起打 kaggle。
問:你是怎么平衡學業(yè)和參賽時間的,導師支持嗎?
這件事情挺難的,因為博士生的科研任務是比較重的,老師也會擔心我去參加 DeeCamp 的收獲不如在實驗室科研。
這一個月時間耽誤了實驗室一個項目和兩篇論文的進度,除此之外,由于北大本科生暑期的時候會在實驗室科研,我只能遠程和跟著我做科研的本科生進行項目討論。
我們現在的研究算是一個交叉的方向,數學、物理學、自動化、機械和計算機我們都會一些,老師希望我不要走到純粹的計算機方向去,他認為這會喪失我的優(yōu)勢,我也比較認可老師的觀點。所以說,我特別感謝我導師謝廣明教授對我的支持,并且感謝實驗室同門來幫助我分擔原來實驗室的工作。
最后,我參加了 DeeCamp,并學到了很多。結果方面比較意外,我們也沒有想到會拿到冠軍。在此,特別特別感謝我的隊友們,王澎,于俊,任震,劉永強,張博林,孫致波,劉文景,余冠一和孫海耀,希望大家前程似錦!
問:接下來你的研究計劃是什么?
我做的是多水下機器人群體控制,這里面涉及到水面和水底的感知與控制,與 AI 結合的有水面物體識別,水下圖像增強,機器人傳感器數據處理,機器人魯棒性控制等。現在陸域資源開發(fā)得差不多了,海洋還沒有大開發(fā),除此之外,國家還提出了「海洋強國」的口號,所以說水下機器人的研究關乎到了生活與國家多個方面。我們實驗室研發(fā)了很多水下機器人,這些機器人也協(xié)助過國家科考人員去南北極做一些勘探,還可以在漁業(yè)、水質監(jiān)測、救援等方面有特別多應用。
抱著學習的心態(tài),準備充分才能收獲更多
問:對于未來想參賽的同學,你推薦他們參加嗎?
我覺得挺好的,但是在參賽之前一定要想清楚自己的目的。有的人是真的是僅僅是為了一個結業(yè)證,證明自己是從 1 萬個 AI 人才里面選出來 600 人,幫助將來找工作。這反而浪費了另外一個真正想去學系統(tǒng)學習的同學的機會。在 DeeCamp 能學到很多東西,入營的前期一定要做好準備。
DeeCamp 是一個大寶藏,它包含很多西。你不僅是在做自己項目,你也可以去了解其他項目。它里面還有很多沙龍,可以聽到很多人的科研和工作經驗,能學很多東西,對本科生來說尤其如此。
我認為在結營之前,你要形成自己的體系,這樣才會獲得最大的收益。我推薦同學們參加 DeeCamp,但是在參加前一定要想好怎樣盡可能地在這里多學一點知識。
問:你認為在參加之前應該如何準備,才能收獲更多?
我覺得在去之前的時候要做好兩件事情。
第一件事情是你要對 AI 有一個基本的了解。我們不一定要很深入的了解,但是要大概知道圖像是什么,自然語言處理是什么。入營之后,老師會從基礎的知識點一直講到最新的研究。如果沒有準備好,很可能就會在課堂上睡覺了。
第二件事是,你要對自己的項目負責。在去之前的時候,要看一些文章,為項目做準備。我比較擅長強化學習,在去之前,我把強化學習相關的一些教程和資料都共享在群里了,大家一起學習和討論。
每個同學都要知道自己的特點和特色是什么。比如我們組有個同學前端很強,前端這個事情就交給他了。另外一個同學數據方面比較厲害,他負責做引擎。游戲引擎是一個很復雜的東西,它包含了特別多的可能性,脫離游戲引擎去研究想法是完全沒有意義的。如果大家都去做算法,這個項目不可能成功。
抱著學習的心態(tài),在去之前好好想清楚自己的目的。如果是單純的就為了一個結業(yè)證,我覺得意義不大。
雷鋒網雷鋒網雷鋒網
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。