當前位置:
首頁 > 科技 > 深度 | 嵌入技術在Dota2人工智慧戰隊OpenAI Five中的應用

深度 | 嵌入技術在Dota2人工智慧戰隊OpenAI Five中的應用


選自

COMPUTATIONAL NEUROSCIENCE


作者

:Tambet Matiisen 


機器之心編譯


參與:Geek AI、張倩





本文重點討論了 OpenAI 在處理大量不斷變化的策略輸入和輸出時對嵌入技術的創造性運用。作者從嵌入技術的概念入手,先後介紹了 OpenAI Five 的網路架構、在觀測狀態中使用的嵌入以及動作中的嵌入。在分析之後,作者得出結論:OpenAI Five 的大多數網路都聚焦於感知任務(對觀測狀態進行預處理)和運動控制(對動作進行解碼)。所有的策略和戰術都依賴於一個包含 1024 個神經元的 LSTM。

 






儘管人工智慧社區中關於 Dota2 機器人 OpenAI Five 性能表現及其通用意義的討論層出不窮,但對其訓練方法和網路架構技術的分析卻少得驚人。到目前為止,這些分析主要的信息來源主要都是 OpenAI Five 的博客(https://blog.openai.com/openai-five/)。從某種程度上來說,這是說得通的,它們使用了標準的近端策略優化(PPO)演算法(OpenAI 於幾年前在其內部發布)和經過驗證的自我博弈的訓練方案。但是,在他們的博文中,我們往往容易忽視一個很重要的技術細節(嵌入技術)。下面我們給出他們網路架構示意圖的鏈接:https://d4mucfpksywv.cloudfront.net/research-covers/openai-five/network-architecture.pdf。




在這篇博客文章中,我想重點討論他們的網路架構的一個方面——在處理大量數量不斷變化的策略輸入和輸出時對嵌入技術的創造性運用。儘管將嵌入及其內積用於注意力機制在自然語言處理任務中已經是一種標準做法,但在強化學習中這種方法還沒有得到廣泛應用。




最新消息:在寫完這篇博文後,我發現 OpenAI 的博客中更新了一個新的網路架構示意圖(https://s3-us-west-2.amazonaws.com/openai-assets/dota_benchmark_results/network_diagram_08_06_2018.pdf)。由於新的架構對嵌入技術的使用沒有太多的變化,我決定並不重新對新的示意圖進行分析,將其留給讀者自行進行思考。




什麼是嵌入技術?




從數學意義上來說,嵌入是指從空間 X 到 Y 的映射,同時保留對象的某些結構(如它們之間的距離)。然而,在神經網路中使用嵌入通常意味著將分類(離散的)變數(如單詞索引)轉化為連續向量。將單詞索引直接作為輸入傳給神經網路將使處理工作變得非常困難,因為它需要為索引的每個值構建一個二分特徵(假設索引之間是不相關的)。因此,我們會事先幫網路將分類值轉化到 one-hot 編碼向量中。如果你將 one-hot 向量與權值矩陣相乘,那麼它就會從權值矩陣中選擇出一行。在深度學習工具包中,通常會跳過這個將分類變數轉化為 one-hot 向量並與權值矩陣相乘的步驟,直接使用索引從權值矩陣中選出一行,利用類似於查表法的方法進行處理。最重要的是學習了嵌入向量,方式與學習帶 one-hot 向量的權值矩陣的方法相同。






嵌入技術最廣為人知的應用場景是自然語言處理。在自然語言處理任務中,單詞索引會被轉化成詞向量(或嵌入)。人們已經證明,當一個網路被訓練利用給定的詞向量預測與其相近的詞向量,詞向量就會獲得語義,你可以對他們進行算術運算。例如:「女人」-「男人」+「國王」將得到與「女王」相近的詞向量。你可以想像得到,「女人」-「男人」會產生一個性別遷移向量,將其與「國王」相加會將其轉化成女性統治者。或者,如果你進行「國王」-「男人」+「女人」的計算,「國王」-「男人」將產生一個「統治者」的向量,將其與「女人」相加也會得到「女王」。





圖片來源:Mikolov 等人於 2013 年發表的《Linguistic Regularities in Continuous Space Word Representations》(https://www.aclweb.org/anthology/N13-1090)。




OpenAI Five 的網路架構




在深入分析技術細節前,我們將簡要介紹網路的通用架構。






圖片來源:OpenAI。




五個 OpenAI 機器人都有具有特定輸入和動作的神經網路(目前還不清楚五個神經網路是否共享了參數。)。機器人與機器人之間僅僅通過遊戲進行通信。我們不妨想像一下,這些機器人「像蜜蜂一樣跳舞」,從而與其他機器人交流敵人的位置信息,但是我認為它們還沒有做到這一點,甚至我都不確定它們是否需要這麼做。根據最新消息,在該神經網路的新版本(https://s3-us-west-2.amazonaws.com/openai-assets/dota_benchmark_results/network_diagram_08_06_2018.pdf)中,在層與層之間進行了最大池化操作,這可以看作一種單向傳播通信信道。




示意圖中神經網路的上半部份會對觀測數據進行處理。它將來自多個數據源的數據連接起來,並將所有結果作為輸入傳給一個 LSTM 神經元。LSTM 神經元的輸出通過圖中神經網路的下半部分被使用,從而生成動作(action)。網路中具體的複雜細節當然是十分令人頭疼的,我們將在下面的章節對此進行討論。




在觀測狀態中使用的嵌入




OpenAI Five 機器人使用 Dota 2 提供的 API「觀察」周圍的單位和建築。這會生成與相關變數長度相同的單位的列表(英雄、小兵、防禦塔等)及其相關屬性。OpenAI 在它們的博客中對觀測狀態空間和動作空間進行了很好的可視化工作,我建議大家去仔細觀察這些可視化結果(https://blog.openai.com/openai-five/#dota-diagram)。





圖片來源:OpenAI。




下圖總結了對某個單位的屬性的處理過程。






圖像來源:OpenAI。




在圖的左上部分,我們可以看到每個單位被編碼成了一個嵌入。這樣做是完全說得通的,因為 116 個 Dota 2 英雄中的每一個英雄都可以按照以下標準進行分類:






  • 基本屬性:力量、敏捷、智力。



  • 攻擊類型:遠程或近戰。



  • 定位:核心、控制、對線型輔助、先手、打野、輔助、肉盾、爆發、推進、逃生。




以上屬性都可在嵌入向量中形成一個維度,網路會自動學習每個英雄在核心、輔助或打野等不同定位中的能力值。同樣的嵌入技術也適用於小兵和建築(例如,防禦塔也有遠程攻擊)。這種嵌入技術為網路提供了一種通用的表示不同單位的方法。嵌入向量與其它單位的屬性相連接,如生命值、與其他英雄的距離等。




但是這些嵌入不僅用於單位類型,它們也可以被用於施法效果、技能和道具物品。






圖片來源:OpenAI。




這種做法也完全是合乎情理的,儘管所有英雄的技能並不相同,它們仍然具有一些共同之處。例如,這些技能是主動技能還是被動技能,它們是否需要施法目標,施法目標是另一個單位還是一片區域... 有的物品能夠對你進行治療,有的能賦予你神奇的力量,有的會被立即消耗掉,有的會提升你的狀態。嵌入是一種自然的表示方式,表示具有很多不同但可能有所重疊的特性的事物,這些事物可能有相似的效果,但是程度不盡相同。




請注意,儘管有各種各樣的施法效果、技能和道具物品,網路在這些列表上仍然能進行最大池化操作。這意味著在所有的維度中只有最大的值才能被傳遞出來。這一開始看起來似乎說不通,它可能給人的印象是你有一種將所有存在的技能融合起來的能力,例如遠程被動治療。但是事實上這種操作對它們似乎是有效的。




我們會對附近的每個單位分別進行上述處理,通用屬性、英雄施法效果、技能和道具的嵌入結果會被連接在一起。後期的處理方法會根據該單位是否是敵人的非英雄單位、盟友非英雄單位、中立單位、盟友英雄或敵人英雄而定。





圖片來源:OpenAI




最後,所有這類單位的後期處理結果會經過最大池化處理。同樣地,乍一看這似乎有點問題,因為附近單位的不同屬性被組合到了一起。例如,如果其中一個維度代表一個單位的生命值,那麼網路只能看到這類單位的最大生命值。但是,在這種情況下它的效果仍然很好。





對每個單元類型的最大池化的結果會被連接起來,然後饋送給 LSTM。還有一些前半部分輸出的切片(slice),但是當我們談論動作目標時,我們會回過頭來討論這個問題。




動作中的嵌入




據估計,DOTA2 的動作空間中包含大約 17 萬個動作,包括移動和攻擊等基本動作,也包含使用技能、使用物品、提升狀態等動作。但並不是每一步都可以選擇所有的動作,這可能是因為你還沒學習某種特定技能,也可能是因為你的背包中還沒有某種物品。儘管如此,你仍可以選擇 1000 多種動作。除此之外,很多動作還包含參數,例如你想要移動到的區域或你想攻擊的敵人。同樣地,OpenAI 在他們的博客中也給出了動作空間的很棒的可視化結果(https://blog.openai.com/openai-five/#dota-diagram)。





圖片來源:OpenAI





如此廣闊的動作空間為強化學習帶來了巨大的探索問題,因為一開始智能體會隨機嘗試執行各種動作。一種直接的思路是,輸出所有 17 萬種動作的得分,並將 sotfmax 的輸出限制為 1000 種目前可能採取的動作。但是 OpenAI 通過嵌入技術以及具有可變長度的 softmax 輸出巧妙地解決了這個問題。






圖片來源:OpenAI




正如你在上圖的頂部所看到的,每種動作都有其相應的嵌入表示,例如,該動作究竟是一個遠程攻擊,還是用某種物品進行治療或傳送到某個特定目的地。動作嵌入的內積和 LSTM 的輸出被用來生成不同動作的得分。這些得分會傳遞給 softmax 層,得到的概率分布會被用於選擇一個可以採取的動作。





註:兩個向量的內積會將二者相同位置的元素對應相乘,然後將所有的乘式運算元求和得到最終的內積結果。內積又稱標量積,因為內積運算會得到一個單一的標量值。它與餘弦相似度有著緊密的關係,當兩個向量方向相同時內積結果會很大;方向相反時內積結果會很小。餘弦相似度經常被用於快速度量兩個向量的相似程度。事實上,卷積操作就是這樣做的,它會生成過濾結果和輸入之間相似度的特徵映射。





打開原文可拖動箭頭,看看內積(點乘)、餘弦相似度和餘弦距離如何變化。





我們認為,在實際的動作選擇過程中,LSTM 生成的結果在原則上可以被稱為「意圖向量」。例如,如果你陷入了困境、生命值超低,那麼你的意圖就可能是「離開這裡」。這樣的意圖將與可以進行的動作相匹配,如果意圖與其中一個動作的效果相一致,就會得到高分。舉例而言,動作「移動」和「傳送」可能與「離開這裡」的意圖相一致。而傳送可能稍微更好一些,因為在傳送過程中你不會被敵人追打,因此它會產生更高的得分,在 softmax 層的輸出中得到更高的概率。但是,如果目前無法進行傳送,那麼該嵌入就無法匹配,此時「移動」可能得到最高的得分和概率。




有的動作包含如目的地或操作對象等參數。所有這些參數都是以簡單明了的方式通過 softmax 建模的。例如,X 和 Y 坐標被離散成範圍,而不是使用連續的輸出和高斯分布。我認為 softmax 能對多模態分布進行更好的處理。在這裡,一個重要的觀測結果是,採取動作的輸出結果似乎並沒有對動作和目標之間的聯合分布進行建模。我認為這並不是一個大問題,因為所有動作的輸出都是以 LSTM 的輸出作為條件的。因此,LSTM 輸出已經對「意圖」進行了「編碼」,而這些全連接(FC)層只是對此「意圖」的不同因素(動作和目標)進行了解碼。




但是在整個框架中,我最欣賞 OpenAI Five 處理動作目標的方式。還記得那些單位觀測狀態輸出中奇怪的切片嗎?它們在圖中用藍色表示,意味著這是針對單個單位而言的。這樣的向量被稱為「單位注意力鍵」(unit attention key),它們與 LSTM 的「意圖」相匹配,以便為每個單位生成得分。這些得分會被傳遞給 softmax 並決定攻擊對象。在這裡我們用 softmax 的結果取代了觀測到的單位,正如決定動作的 softmax 取代了可用的動作一樣。




我認為它的工作流程是這樣的:網路會根據觀測狀態判定某個單位的生命值非常低,而且機器人有機會完成最後一擊。LSTM 會生成「嘗試最後一擊」的意圖,這與「攻擊」的動作相匹配。此外,這種「嘗試最後一擊」的意圖也與對觀測狀態處理中的每個單位的輸出相匹配,並與生命值最低的單位相匹配。「BANG!」,機器人會對該單位作出最後一擊,並且得到額外的獎勵。




更新:在網路的最新版本中(https://s3-us-west-2.amazonaws.com/openai-assets/dota_benchmark_results/network_diagram_08_06_2018.pdf),他們在使用帶單位注意力鍵的內積前使用動作嵌入對 LSTM 的輸出做變換。我想,如果不這樣做,不同的動作(例如,攻擊和治療)可能會試圖應用於類似的單位目標。




結語




在分析了 OpenAI Five 的網路後,我們可以清楚地看到,大多數網路都聚焦於感知任務(對觀測狀態進行預處理)和運動控制(對動作進行解碼)。所有的策略和戰術都依賴於一個包含 1024 個神經元的 LSTM。





圖片來源:OpenAI




我認為一個相對簡單的數學結構就能夠生成如此複雜的行為是十分令人驚訝的。或許這是一種對 Dota 2 的複雜性的解釋?結合快速反應時間的短期戰術是否優於長期戰略?




原文鏈接:https://neuro.cs.ut.ee/the-use-of-embeddings-in-openai-five/






本文為機器之心編譯,

轉載請聯繫本公眾號獲得授權



?------------------------------------------------


加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com


投稿或尋求報道:

content

@jiqizhixin.com


廣告 & 商務合作:bd@jiqizhixin.com

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

嵌入技術在Dota2人工智慧戰隊OpenAI Five中的應用
令人困惑的 TensorFlow!

TAG:機器之心 |