新baseline來了!"AI球球大作戰(zhàn): Go-Bigger多智能體挑戰(zhàn)賽" 等你來戰(zhàn)!

2021年11月,全球首屆“ AI 球球大作戰(zhàn):Go-Bigger多智能體決策智能挑戰(zhàn)賽”已正式開賽。作為面向全球技術(shù)開發(fā)者和在校學(xué)生的科技類競賽活動,本次比賽旨在推動決策智能相關(guān)領(lǐng)域的技術(shù)人才培養(yǎng),打造全球領(lǐng)先、原創(chuàng)、開放的決策AI開源技術(shù)生態(tài)。
本次比賽由OpenDILab(開源決策智能平臺)主辦,上海人工智能實驗室作為學(xué)術(shù)指導(dǎo),商湯科技、巨人網(wǎng)絡(luò)、上汽集團(tuán)人工智能實驗室聯(lián)合主辦,全球高校人工智能學(xué)術(shù)聯(lián)盟、浙江大學(xué)上海高等研究院、上海交通大學(xué)清源研究院聯(lián)合協(xié)辦,OSCHINA、深度強化學(xué)習(xí)實驗室作為支持,PaperWeekly、機器學(xué)習(xí)算法與自然語言處理作為合作媒體。
比賽共設(shè)冠軍、亞軍各1名,優(yōu)勝獎4名,共同瓜分15萬賽事獎金。預(yù)計明年3月封閉天梯測試, 并在4月發(fā)布及公示獲勝結(jié)果。

?? Go-Bigger比賽主頁鏈接:
https://www.datafountain.cn/competitions/549
?? Challenge Repo Github 鏈接:
https://github.com/opendilab/GoBigger-Challenge-2021
?? DI-engine Repo Github 鏈接:
https://github.com/opendilab/DI-engine
?? GoBigger Repo Github 鏈接:
https://github.com/opendilab/GoBigger

1.對全局信息進(jìn)行編碼
在Pygame中,默認(rèn)坐標(biāo)原點為左上角。如下圖所示,圖中紅色矩形為全局視野,綠色矩形為局部視野
全局信息由兩部分組成,一部分是時間信息,另一部分是邊緣信息
時間信息是對距離比賽結(jié)束的剩余時間進(jìn)行特征抽象
邊緣信息是對局部視野與整個地圖邊緣之間距離的特征抽象


2.對clone球ID信息預(yù)處理
對每個clone球team ID進(jìn)行預(yù)處理,clone球所屬team的ID始終為0,其他隊伍的 id依次為1、2、··· team_num-1
對每個clone球Player ID進(jìn)行預(yù)處理,clone球所屬Player的ID始終為0,同一個隊伍其他玩家的Player ID依次為1、2 ··· player_num_per_team - 1

3.對food信息進(jìn)行編碼
為方便計算,面積計算采用半徑的平方,省去常數(shù)項。同時,我們將food和spore都看作為食物球
food map將局部視野進(jìn)行切分為h*w個小格子,每個小格子的大小為16*16
food map[0,:,:]表示落在每個小格子中food的累積面積
food map[1,:,:]表示落在每個小格子中當(dāng)前id的clone ball的累積面積
food grid將局部視野進(jìn)行切分為h*w個小格子,每個小格子的大小為8*8
food grid表示每個小格子中food相對于所屬格子的左上角的偏移量以及food的半徑
food relation 的維度是[len(clone),7*7+1,3]。其中[:,7*7,3]表示每個clone ball的7*7網(wǎng)格鄰域中food的信息,包括偏移量以及網(wǎng)格中food面積平方和。
因為覆蓋率很低,在這里做了一個近似,food的位置信息以最后一個為準(zhǔn)。[len(clone):,1,3]表示每個clone ball自身的偏移量以及面積。

對clone ball進(jìn)行編碼,包括位置、半徑、玩家名稱的one-hot編碼以及clone ball的速度編碼

4.對關(guān)系進(jìn)行編碼
ball_1 與ball_2 的相對位置大小關(guān)系,(x1-x2,y1-y2)
ball_1 與ball_2 的距離,即o1與o2之間的距離dis
ball_1 與ball_2 的吞并是一個球的圓心出現(xiàn)在另一個球中,即發(fā)生吞并
ball_1 與ball_2 是否相互吞并,即一個球的圓形邊緣與另一個球圓心之間的距離
ball_1 與ball_2 分裂后相互吞并,即分裂后最遠(yuǎn)的分裂球的圓形邊緣與另一個球圓心之間的距離
ball_1 與ball_2 吃與被吃關(guān)系,即兩球之間的半徑大小關(guān)系
ball_1 與ball_2 分裂后吃與被吃關(guān)系,即分裂后兩球之間的半徑大小關(guān)系
ball_1 與ball_2 各自的半徑做映射, 分別為m*n個r1 和m*n個r2, m表示ball_1的數(shù)量,n表示ball_2的數(shù)量


5.模型設(shè)計
網(wǎng)絡(luò)結(jié)構(gòu)主要采用MLP以及Pooling層
mask的作用,記錄padding后的有效信息。需結(jié)合代碼理解更佳
Baseline中的model設(shè)計并不是最好的,選手可以盡情腦洞

6.RL策略
采用最經(jīng)典的DQN算法+離散動作空間(4*4笛卡爾積)
在OpenDILab中,已經(jīng)實現(xiàn)了一些必備的DQN組件,比如,經(jīng)驗回放隊列(replay buffer),為了平衡探索和利用所用的eps-greedy等等
7.標(biāo)準(zhǔn)對局怎么打
安裝必要的依賴庫
# Install DI-engine? ?git clone https://github.com/opendilab/DI-engine.git? ?cd YOUR_PATH/DI-engine/? ?pip install -e . --user? ?# Install Env Gobigger? ?git clone https://github.com/opendilab/GoBigger.git? ?cd YOUR_PATH/GoBigger/? ?pip install -e . --user
開始訓(xùn)練
# Download baseline? ?git clone https://github.com/opendilab/Gobigger-Explore.git? ?cd my_submission/entry/? ?python gobigger_vsbot_baseline_main.py
評估并保存視頻
cd my_submission/entry/python gobigger_vsbot_baseline_eval.py --ckpt YOUR_CKPT_PATH
8.Tips
采用連續(xù)動作空間或者混合動作空間使得智能體操作更加絲滑
設(shè)計新的Reward獎勵使得智能體變得攻守兼?zhèn)?br style="box-sizing: border-box;">
采用合適的策略使得智能體學(xué)會相互配合以及更高級的動作


