作者clothg34569 (提拉米蘇冰淇淋)
看板C_Chat
標題Re: [情報] 最新星海AI十比零血洗人類職業玩家
時間Fri Jan 25 17:19:02 2019
※ 引述《EvilSD (邪星暗(Usagi))》之銘言:
: 持續一直有再追蹤這件事,不過這次的比賽結果
: 確實讓我非常驚訝
: 先來簡單介紹一下DeepMid是如何訓練這個AlphaStar的
: https://www.youtube.com/watch?v=5iZlrBqDYPM
: 上面這段影片就是他們在讓AI學習的過程
: 一般常見的遊戲AI
: 都是直接讀取遊戲內部參數
: 然後透過寫好的腳本直接下去做執行
: 簡單來說就是讓AI根據不同種時間狀況作相對應的決定與抉擇
: 但DeepMid並不是如此,DeepMid使用的是深度學習的方式
: (如今我已經很難想像他們在這次AlphaStar是如何建構深度學習網路的)
: 我們在回到剛剛的影片
: 影片上的左邊有四個畫面
: 這就是所謂的特徵提取的動作
: 也就是AlphaStar在建立模型與學習的時候
: 是透過即時的影像進行,而不是透過讀取遊戲參數使用腳本的方式
: 困難點在哪呢?
: 普遍現在不論是學界與工業界
: 大家成熟的深度學習架構(也可以說現在最常見的AI)
: 大多數都是讀取一個畫面內的特徵參數進行學習
: 如果要簡單解釋就是,今天給你一張照片上面有隻狗
: 那AI辨識後就說這是狗,這是所謂的Classification
: 照片上有隻狗還能標記出在哪裡
: 那就是Classification + Localization
: 照片上有很多種物體並且都能標記出位子
: 就是 Object Detection(也就是目前智慧車常用的方式)
: 還有另一種叫做Semantic Segmentation
: 是將畫面上的每一個pixel去做標記
: 那AlpahStar做了些什麼呢
: 首先在早期的API裡
: 裡面可以同時學習20個Semantic Segmentation
: 而且是即時的,所以我甚至懷疑其實是Instance Segmentation
: 那單純只是學習這些畫面困難點在哪呢?
: 時間與未知(戰爭迷霧)
: 因為以前的AlphaGO
: 圍棋的大小是一個既定19X19的範圍
: 所以我下完一子後,我可以全局重新判斷
: 但星海完全不是如此
: 第一 星海的地圖資訊很多是未知的,所以我們才要防空投探圖等
: 第二 星海的遊戲是時間連續的,也就是我上一秒鐘做的事情會影響到下一秒鐘
: 跟圍棋完全不一樣,不是下完一子後重新掃描全局
: 所以困難點非常的多,在特徵提取上大概能夠理解
: 但多特徵合併後進行學習,又要保持時間上學習不會誤差放大(如傳統RNN)
: (傳統RNN在學習連續性資料後,往往一開始學習的資訊會遺忘或是誤差放大
: 因此後來才有了深度學習版本的LSTM與biLSTM)
: 上述的內容可能還是有點艱深難懂,但我已經盡可能講得比較簡單一些
: 總而言之大家現在討論的是APM 操作上的問題
: 但我看見的是,能透過視覺的方式
: 讓AI學習玩星海爭霸二
: 還能夠將遊戲時間拉長並且與職業選手對戰
: 我是覺得很不可思議
: 還是那種....完全無法想像他們訓練出這個模型的狀態
: 真的真的 非常的吃驚(原本以為這至少也要五年才能夠突破的瓶頸)
想說看到ML相關的,試著來講看看,順便看看自己的理解有沒有甚麼盲點
不過先講一下,我不是主要研究NLP這方面的,NLP我只懂一點皮毛而已XD
希望能夠拋磚引玉
我等等的內文主要根據
https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/
[1]
這一篇,應該是官方的東西。
還有,前面這篇所說的使用Segmentation應該是錯誤的,詳情後述
首先先簡單把整個任務分成三個部分
Input--->Model--->Output(prediction)
前面那篇所說使用Segmentation是在Input的部份
但是根據文章所說,"AlphaStar’s behaviour is generated by a deep neural network that receives
input data from the raw game interface (a list of units and their
properties), and outputs a sequence of instructions that constitute an action
within the game."
他們的Input是來自遊戲Interface的資料,我猜應該也有地圖的資訊啦
Output是一個要做甚麼行動的sequence
所以他們的任務其實比較像是NLP的工作,而非CV
例如像:
Input(FGO抽了沒)--->Model--->Output(暴死了QQ)
根據Input決定要做甚麼回答(在遊戲中為操作)
然後,知道他們Input和Output的大致內容後,稍微來講一下Model的部份
他們主要架構應該是根據2017一篇Google團隊發的論文Attention Is All You Need[2]
然後融合了深度LSTM[3]、auto-regressive policy head with a pointer network[4][5]
centrealised valuebaseline[6]所搭建出的Model
Model的工作類似過去的NLP類型Work的工作,所以可以自行使用過去對NLP的理解來解讀
這幾篇我只看過Attention那篇XD,所以2~4的描述可能會有誤
[1]為主架構,主要為Attention的概念,從官方那張可視化的Gif可以看出
Model會把注意力放在應該注意的地點(例如會戰區,有一些閒置工人的區域等等)
官方號稱AlphaStar切換注意力的頻率大約是一分鐘30次,和職業選手差不多
[3]應該為Model中的一些實作的細微部分
[4][5][6]應該是描述他們最後評分的機制,看起來是屬於RL範圍的。
詳細Model的Layout應該是要看Google今年或明年會發的關於AlphaStar論文
經過大概沒人看得懂的Model部分之後,來講一下他Train的部分
整個模型一開始是使用監督式學習的方法,資料為人類比賽的RP
這個階段是為了要"模仿"高端玩家的策略與微操
官方號稱這時候的AlphaStar已經可以以95%的勝率擊敗菁英電腦
這也節省了不少時間在前面的摸索期
經過監督式學習的部份之後,再來就是強化式學習的階段
DeepMind的人認為說,不同於AlphaGo,圍棋有一個"最好"的版本,SC2則非
一個戰略A擊敗另外一個B可能並不是因為A比B好,而是A克制B
用AOE來講,就像是黑快、封快、馬爆、塔攻都各有優缺,甚至除了彼此之間克制之外
還要看地形,像是在黑森林的話黑快就不適合,然而在一些開闊地形可能就能展現優勢
因此他們的做法是訓練一整個League,讓不同的AI彼此對戰,來藉此保留不同的戰略
每一輪訓練都會在結果比較好的基礎版本上進行分支,舊版本也會保留下來
讓新版本的AI在擊倒更新更強的AI的同時也不會忘記如何擊敗舊版本的AI
他們表示,結果也證明這個做法是好的,在訓練前期
快攻有著很高的勝率(艾莉卡你又偷環境了!),然而經過大量訓練之後,
一些中速慢速的策略開始勝率提高。除此之外,訓練的第一天電腦只會偏好使用少數
幾種兵種,而隨著天數增加,電腦會使用的兵種種類也更多。
最後一部分,是他們訓練時的$$$$$$。
在League中,我不是很確定使用幾個Agent,看起來應該超過8個
Agent們是架構在 Google's v3 TPUs上面運行
而每個Agent使用了16個TPU,整個League運算了14天
以官方計價一小時4.5鎂/TPU看,如果不是他們自己的人的話,訓練大概要花超過19萬鎂
大約60萬台幣,更別說前面試行錯誤的階段。
他們最後結果可以運行在單一消費級的GPU上面來運行,先假設為2080TI好了
這也是我認為前面說使用Segmentation製作Input不太可能的原因
如果要在2080TI上運行,要同時放那麼多大型Model是不太可能的。
Reference:
[1]
https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/
[2]Attention Is All You Need, NIPS,2017
[3]Long short-term memory,Neural computation, 1997
[4]StarCraft II: A New Challenge for Reinforcement Learning,arxiv,2017
[5]Pointer Networks,NIPS,2015
[6]Counterfactual Multi-Agent Policy Gradients, AAAI,2018
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.73.144
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1548407944.A.268.html
推 Jotarun: 我還在翻blog 不過有你這篇應該可以擋住很多的幻想XD 01/25 17:21
推 kuoyipong: 現在偷環境的不是艾莉卡了 XD 01/25 17:22
推 kl722545: 所以現在還是有用到人類經驗做訓練 跟當時的alphaG很像 01/25 17:28
→ kl722545: 何時能出Zero版本的呢? 01/25 17:29
推 Jotarun: 蠻難的吧 圍棋/Atari遊戲目標明確 環境簡單 01/25 17:30
→ Jotarun: 星海沒有Replay起始蠻難想像要多久才能學到可用 01/25 17:31
→ clothg34569: 主要是時間問題吧 01/25 17:32
→ clothg34569: 使用人類經驗要14天,那不使用至少3倍吧 01/25 17:33
→ clothg34569: 訓練一輪要200萬以上,還要三個月 01/25 17:33
推 Jotarun: 而且也不知道會訓練出什麼鬼XD 01/25 17:36
→ Jotarun: 今天AlphaStar踏出一大步 但後面要解決的問題其實還多著 01/25 17:37
→ Jotarun: 想到就蠻令人興奮的 01/25 17:37
推 lturtsamuel: 所以現在是拿人類資料來pretrain嗎 還是有做更多處理 01/25 17:43
→ kira925: 人類資料PreTrain然後做基因演算法強化 01/25 17:43
推 Jotarun: 我很好奇到底哪裡有說是genetic Algorithm 01/25 17:45
→ Jotarun: AlphaStar league並不是基因演算法啊 01/25 17:46
推 lturtsamuel: 我想像中它應該還是nn base+決策樹 跟阿發狗一樣 01/25 17:47
→ clothg34569: RL不是使用GA吧 01/25 17:47
→ kira925: 那我可能搞錯了吧 我以為這樣淘選跟再強化有些基因演算法 01/25 17:47
→ kira925: 的東西進去 但如果沒有雜交過程只是競爭那確實不能說是GA 01/25 17:48
→ clothg34569: 我認為做法比較像是GAN的形式 01/25 17:48
→ kl722545: 每一輪訓練都會在結果...43 這段吧 可是沒有擾動參數 01/25 17:49
→ clothg34569: 有點像是多MODEL彼此競爭,以對方做為自己的Loss 01/25 17:49
→ kl722545: 這應該不算基因演算法 01/25 17:50
→ clothg34569: 再透過這個Loss改善自身Model 01/25 17:50
推 kira925: 感謝指正 01/25 17:50
推 Jotarun: 細節只能等paper出來吧 01/25 17:50
推 lturtsamuel: 確實沒有雜交 對抗應該是用來生成訓練資料 01/25 17:53
推 vnon: r/MachineLearning上有舉辦AMA的活動 有興趣的人可以去看看 01/25 18:33
推 cwjchris: 19萬美金的話是600萬台幣喔 01/25 23:18