作者dongogo (別再後悔)
看板StarCraft
標題[新聞] 星海爭霸 AI 大賽冠軍出爐!沒用機器學
時間Thu Nov 22 12:34:48 2018
星海爭霸 AI 大賽冠軍出爐!沒用機器學習的三星,打爆臉書在內的二十幾個 AI 選手
---
【為什麼我們要選這篇文章】今年的星際 AI 大賽結果出爐,冠軍 選手居然沒有「學習技能」還是第一次參賽!這個由三星出品的人工智能令所有團隊驚豔,而其他參賽者還有 Facebook 的 AI 團隊,以及中國知名影音平台 Bilibili 等多家科技公司參與,至於他們戰況如何,就來看看以下文章吧!(責任編輯:鄭惟馨)
本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處
作者:量子位/夏乙 問耕
剛剛,星海爭霸 AI 大賽新王誕生!
二十多個掌握了機器學習技能的 AI,全都在一個不會學習、只會基於規則機械行動的 bot 面前,俯首稱臣。包括三巨頭之一 Yann LeCun 底下的 Facebook AI 團隊。他們的 AI 獲得亞軍,但在與新王的 100 回合大戰中,戰績是 83 負 17 勝,劣勢明顯。
其他 AI 更不是對手。新霸主與全部對手的 2600 場廝殺中,勝率達到了 95.91%。而往屆比賽中,冠軍勝率最高的一次,也不過 89%。
到底是誰?哪個團隊的人工規則,能如此碾壓人工智慧?
答案是: 賽達(SAIDA)。
三星出品的 AI 沒有學習能力,勇奪冠軍靠得是人類經驗!
來自三星,首次參賽的 賽達 ,完全基於規則,在這個機器學習大爆炸的時代,一個如此「復古」的系統,俾睨一眾 AI。賽達之所以如此厲害,一個重要原因是,背後有韓國職業星際選手助力。要知道,星際一度被稱為韓國的國技。
這次星海爭霸 AI 大賽的組織者戴夫.邱吉爾(Dave Churchill)總結說,今年的比賽成了兩家巨頭之間的爭奪。第一名三星賽達,代表頂級人類玩家的經驗總結;第二名 Facebook 的 CherryPi,有頂級工程師坐鎮,3 位頂尖 bot 作者都在麾下。(TO 編按:bot 為軟體代理的口語)
目前,三星職業選手組更勝一籌,但這還不是賽達的全部成就。在另一個星海賽事——星際 AI 錦標賽(SSCAIT)上,它的 ELO 等級分也排在第一名。(TO 編按:ELO 等級分制度是基於統計學的一種評估棋手水準的方法。一些線上遊戲的競技對戰系統也採用此評分)
總體來看,它已經是地表最強星際 AI 了。讓我們來認識一下這匹黑馬。
基於規則的演算法+選手經驗,成就賽達的冠軍之路
這次大賽還是基於星海爭霸:母巢之戰(Starcraft Broodwar)。
賽達使用人族(Terran),以穩定的防守優先戰略開局,到中期過後,它會尋找最佳 rush 時機,一波強攻擊敗對手拿下比賽。
和現在主流方法不一樣的是,賽達沒有用機器學習方法。
三星的工程師們嘗試了用卷積神經網路(Convolutional Neural Network, CNN)和編碼器—解碼器從游戲視頻中學習戰鬥時機,也嘗試了用多智能體強化學習演算法來控制單位……然後決定,在參賽演算法裡不用這些東西了。
這些研究當然也沒有白費,他們把研究結果寫進論文,投稿到了 AAAI 2019。哪位朋友見到這篇論文的預印本,歡迎通知我們,和更多讀者分享。
我們說回參賽版本的賽達,它都是手工編寫基於規則的演算法,一共 49702 行。不過,這並不是說它的打法就是一成不變的。它所用的策略不是一開始就預設好的,而是會根據偵查和掃描收集的訊息來建構。除了選擇策略的程式,賽達還包含用來控制單位和建築物的有限狀態機,用來尋找建基地位置或者敵人基地的幾種搜索演算法。
那麼,人類工程師是如何給這個演算法制定規則的呢?
背後有韓國職業星際選手的幫助。戴夫說,把大賽官方提供的樣本程式 UAlbertaBot 和專業軟體開發者、韓國職業星際選手放到一起,就有了賽達。
賽達目前只能應付業餘玩家,距擊敗頂尖職業選手還要一兩年
賽達的源頭,可以追溯到 2017 年三星 SDS 舉辦的演算法大賽。
當時的主題剛好是星際。比賽中成績不錯的工程師們惺惺相惜,向公司提出要聯手打造一個超級厲害的星海 AI。
於是,2018 年 1 月,賽達誕生了。現在,這個誕生還不到一年的新秀不僅是兩大星際 AI 賽事的第一名,還已經和人類業餘玩家、職業選手都交過手。人類業餘玩家已經不是它的對手。
雖然賽達目前,暫時,還打不過職業選手,但開發團隊認為「已經不遠了」,內心充滿了希望。他們說,現在的星海 AI 已經達到了高端業餘玩家的水平,戰網天梯 1800 分左右的那種。再有一兩年,就能擊敗戰網 3000 多分的最強 7 位職業選手之一。
籌辦者戴夫對這個展望似乎半信半疑,他說,“I’ll believe that when I see it :)”,「眼見為實」吧。
他們的目標是:成為第一個擊敗人類星海職業選手的 AI。
賽達團隊
上面,就是賽達的 8 名創造者:Iljoo Yoon、Daehun Jun、Junseung Lee、Hyunjin Choi、Changhyeon Bae、Hyunjae Lee、Yonghyun Jeong、Uk Jo。其中,Changhyeon Bae 是這支隊伍的 leader。
Facebook 團隊 CherryPi 進步明顯,影片平台 bilibili 也有參賽
下面,說說今年的其他選手。先看看最終的排名。
今年的星際 AI 大賽成績單
第二名是 CherryPi。如果你關注過這項賽事,一定不會對這個名字陌生。櫻桃派這個選手,家世顯赫,出自著名的 Facebook AI Research 團隊,領軍人物是大名鼎鼎的 Yann LeCun。戰隊成員包括:Jonas Gehring, Vegard Mella, Daniel Gant, Zeming Lin, Da Ju, Danielle Rothermel, Nicolas Carion, Nicolas Usunier, Gabriel Synnaeve
去年,CherryPi 參賽獲得第六名。今年,經過一番車輪鏖戰,CherryPi 最終奪得亞軍,僅次於三星 SAIDA 戰隊。要知道去年的冠軍 ZZZKBot,今年只獲得第 10 名的成績。
CherryPi 會有 8-13 個候選策略。每場比賽開始時,它會根據與對手之間的歷史表現,基於具有時間衰減權重的強盜模型,選擇一個策略(通俗的說,也就是越是最近的比賽,權重越高)。隨著比賽進行,CherryPi 會根據當前情況,使用預訓練的模型,使用每種策略估計獲勝的可能性,滿足一些條件的情況下,會切換到勝率最高的策略。
所以,這也是一種來回切換的「混合」策略。
策略選擇上有幾個基本的要素。一是多樣性,能夠考慮到盡可能多的情況。二是穩健性,以及追求 100% 的勝率。三是更好的揚長避短。
CherryPi 使用了非常多的 AI 技術,包括:
基於搜索的 AI。CherryPi 使用了區域級尋路來指揮單位繞過地圖上的障礙,使用威脅感知尋路來風箏或者引導單位脫離戰鬥。CherryPi 也會基於人類數據學習建築擺放的位置,還用了離線強化學習,以及在線學習,也使用了 BWEM 進行自定義的地圖分析。
與去年相比,現在的 CherryPi 使用了 LSTM 模型進行高級策略的選擇,使用部分觀察的游戲狀態作為輸入;在巨集觀管理方面進行了優化,微觀管理也進行了改進。
CherryPi 使用了 Torch 框架,全部的代碼是大約 5 萬行的 C++。
第三名到第八名的共同特點:全是神族!
第三名 CSE。這是一個中國戰隊。成員包括:Junge Zhang、Wei Guo、Qiyue Yin、Dong Zhan、Qiwei Wang、Yihui Hu、Shengqi Shen、Kaiqi Huang。
其中第一位應該是中科院自動化所的張俊格,去年他也帶領團隊參加了星際 AI 大賽,只不過去年他們的 AI 是 CPAC,今年改了名字。這支戰隊算是「改裝」派打法,他們的 AI 去年基於 Steamhammer bot,而今年則基於 Locutus。他們在 Locutus 的基礎上,做了一些策略和微觀層面的優化。
第四名 BlueBlueSky,也基於 Locutus,作者是科羅拉多大學的博士生 Pengfei Hou。
第五名是正牌的 Locutus。在八月的 CIG 星際 AI 大賽上,丹麥獨立游戲 AI 開發者編寫的 Locutus 一舉奪魁。(當時 ZZZKBot 也參賽了,最終排名第七。)
可能正是由於 Locutus 的成功,今年 3-8 名的戰隊,全都是使用神族的 AI。全部戰隊中,有 11 支使用了神族,蟲族的熱度有所下降。
其實 Locutus 是基於 Steamhammer 改進的,不同之處在於,Steamhammer 玩蟲族,而 Locutus 玩神族。
Steamhammer 本尊這次排名第十一。
除了 CSE 和 BlueBlueSky,這屆 AIIDE 星際 AI 大賽還有其他的中國團隊參賽。
排名第六的 ISAMind,作者 Fang Gao,來自中國電子科技集團公司認知與智能實驗室。
排名第七的 DaQin,作者 Lion Gis,看 GitHub 的畫風應該也是來自中國:
https://github.com/liongis。
而排名第 13 位的 LastOrder,來自 B 站(Bilibili AI Research)。LastOrder 使用了 TensorFlow 機器學習框架。
B 站這個 bot,據說用了 1000 台機器進行分佈訓練,也被對手認為很有潛力。
從勝率中發現的小細節:賽達輕微下降、CherryPi 卻緩緩上升
雖然「不會學習」的賽達擊敗了各路 AI,但有個細節很有意思。
我們注意到,如上圖所示,隨著比賽時間的推移,三星賽達的勝率雖然一直很高,但總體上在輕微但持續的下降。與此同時,獲得第二名的 CherryPi 的勝率,在輕微而持續的上升。
儘管星海很難,但對於 AI 來說,也許未來有一天也能跟圍棋一樣,不用依靠人類的知識,自己成長為一代高手。
最後,給幾個開源地址。
賽達的源代碼目前還沒有放出,不過,GitHub 頁面已經有了,誰知道官方什麼時候會補一些除了 readme 之外的東西呢:
https://github.com/TeamSAIDA/SAIDA
CherryPi 的 GitHub 頁面傳送門:
https://github.com/TorchCraft/TorchCraft
Locutus 的 GitHub 頁面傳送門:
https://github.com/bmnielsen/Locutus/
(本文經原作者 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈2018 星際 AI 大賽冠軍誕生!一個個機器學習演算法,都輸給不會學習的韓國 bot〉。)
原文連結:
https://buzzorange.com/techorange/2018/11/21/aiide-starcraft-ai-competition/?fbclid=IwAR2PzhsYSCY6nRz4YXHjWnAFHz3Q7yol6VV2Ua7Ji67GYKTjeAuJnJ70z3M
---
心得:
他們的 AI 獲得亞軍,但在與新王的 100 回合大戰中,戰績是 83 負 17 勝,劣勢明顯。
內建Flash經驗的AI? AI領域連韓T也要主宰世界了嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.215.246.127
※ 文章網址: https://webptt.com/m.aspx?n=bbs/StarCraft/M.1542861297.A.110.html
1F:推 henry1915: 竟然不learning 11/22 13:06
2F:推 Ashiev: 推 一早看到新聞也嚇到,心臟頗大顆 11/22 13:12
3F:推 larailing: 直接龜一波然後RUSH? 11/22 13:51
4F:→ TheDragonBug: 他們能用的數據庫跟對戰資料太豐富 直接硬寫就好 11/22 14:01
5F:推 greg7575: 打T高手 11/22 14:22
6F:推 kuoll: 它自己就是T 然後3~8名都是P 11/22 14:42
7F:推 kira925: 其實是反了 他們的資料庫與對戰資料還是不夠練出夠強的AI 11/22 14:44
8F:推 perfects1988: 幸好P不是冠軍~甚感欣慰...不好意思我是P黑!! 11/22 15:06
9F:推 aa1477888: AI領域也是韓T霸權 不玩了不玩了 11/22 16:20
10F:→ JellyKing: 不太懂耶 用星海練AI的用意不就是讓AI自行摸索學習嗎? 11/22 16:29
11F:→ capssan: 看起來是靠選手經驗寫出來的程式擊敗純靠邏輯寫的程式 11/22 16:30
12F:→ capssan: 有點像偷吃步吧我覺得.. 11/22 16:30
13F:→ JellyKing: 感覺很像是直接吃人類rp 再轉成腳本當牌出..? 11/22 16:33
14F:推 kira925: 這沒有偷吃步阿 就是內建了一個很巨大的巨集 11/22 16:40
15F:→ kira925: 偵測到某些東西就做出預先設定好的動作 11/22 16:40
16F:→ kira925: 所以他還是算AI 但是這傢伙就不是現在流行的自我學習AI 11/22 16:41
17F:→ JellyKing: 人家要有什麼反應都自己學 他靠工程師先寫好 這不... 11/22 16:54
19F:→ lovinlover: 簡單來說天花板已經訂好 只能手動提升 11/22 17:01
20F:→ positMIT: T____ 11/22 18:07
21F:推 jack900727: 咦deepmind沒有參戰喔? 11/22 19:47
22F:→ dongogo: deepmind主攻的是sc2 11/22 20:57
23F:推 papertim: deepmind主攻SC2 11/22 21:00
24F:推 TheDragonBug: 完全沒有反 94我上面推文講那樣 只要少量估值就能做 11/22 22:53
25F:→ TheDragonBug: 到強大的timing攻擊 因為事先龐大資料人類已選擇過 11/22 22:53
26F:→ TheDragonBug: 你講的煉蠱法或自我複製對戰才是反了 11/22 22:55
27F:推 kowtheone: 就是個自嗨產物啊,沒學習力的,嚴格來說連AI都稱不上 11/22 23:39
28F:→ kowtheone: ,就只是個巨集 11/22 23:39
29F:→ eyesg: 蛤?沒有學習機能就是個垃圾啊 11/22 23:57
30F:推 et00211: 沒學習技能不行吧 11/23 00:49
31F:→ SSSONIC: 這是專對星海用的電腦程式啊 11/23 06:40
32F:推 miha80425: 航空母艦級電腦 現在的AI打不贏正常阿... 11/23 07:27
33F:推 Butcherdon: 無聊 一定打不贏內建bot 11/23 10:27
34F:→ hotofsheep: 中國用語看了就討厭 11/23 12:52
35F:→ Carloslin: 韓國應該是主機裡面躲一個人參賽吧 11/23 17:14
36F:推 qoo60606: 結果證明記流程還是最穩 要ai自己找流程還是太累了 11/23 17:54
37F:推 RIFF: SAIDA像教主 而一場輸給P是輸給強大的擴張策略 11/23 19:32
38F:→ RIFF: 2.SAIDA可以拿來策試低階玩家VS AI 也蠻重要的 11/23 19:33
39F:推 ken32293355: 沒學習得很渣欸,只有一些branch 11/23 20:41
40F:推 TheDragonBug: 也不是沒用 這說明不是所有問題都需要萬用型的學習 11/23 21:39
41F:→ TheDragonBug: AI 就像人類的自主神經 在特定問題或短期要做出效果 11/23 21:42
42F:→ TheDragonBug: 的用這種最適合 或者是雞尾酒式的混合AI 到未知領域 11/23 21:43
43F:→ TheDragonBug: 時才使用學習型AI 11/23 21:43
44F:推 ohmylove347: 沒用是因為目前的ai在SC2還不是最佳方案,所以才有比 11/24 09:47
45F:→ ohmylove347: 賽的必要,不過三星的做法也明顯體現目前人類對AI的 11/24 09:47
46F:→ ohmylove347: 設計真的還不夠 11/24 09:47