丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給WBLUE
發(fā)送

0

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

本文作者: WBLUE 編輯:楊曉凡 2018-09-27 13:59
導(dǎo)語:嵌入只能用于自然語言處理?不!它還可以用來教OpenAI的機器人打Dota2,真正的人機大戰(zhàn)從嵌入開始。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

雷鋒網(wǎng) AI 科技評論按:OpenAI 的 DOTA2 5v5 AI 「OpenAI Five」是人工智能界今年的一大亮點。作為「有挑戰(zhàn)性的多智能體連續(xù)控制任務(wù)」、DOTA2 玩家們的課外娛樂活動,以及 OpenAI 自己的重要技術(shù)展示和宣傳機會,OpenAI 不僅有數(shù)人的團隊專門負(fù)責(zé)這個 AI 的研發(fā)調(diào)試,投入了 256 個 V100 GPU、128000 個 CPU、長達幾個月的訓(xùn)練時間(高昂的成本),也前前后后請了許多 DOTA 愛好者及(前)職業(yè)選手參與測試和調(diào)試。

成果自然是可圈可點的。從比賽結(jié)果來看,OpenAI Five 不僅多次戰(zhàn)勝了業(yè)余人類玩家和前職業(yè)選手團隊,即便對戰(zhàn)現(xiàn)役職業(yè)選手以及中國老職業(yè)選手們的比賽輸了,也仍有積極主動、有一些還十分亮眼的表現(xiàn);技術(shù)方面,OpenAI 不僅發(fā)現(xiàn)用相對簡單的網(wǎng)絡(luò)結(jié)構(gòu)配合大規(guī)模分布式的先進算法就已經(jīng)可以有不錯的表現(xiàn),也在訓(xùn)練過程設(shè)計、超參數(shù)選擇、人類目標(biāo)如何量化等方面有了許多心得。(參見往期文章 DOTA 5v5 AI 的亮點不是如何「學(xué)」的,而是如何「教」的)甚至后來 OpenAI 的 CTO Greg Brockman 都發(fā)推表示,他們根據(jù)比賽中的表現(xiàn)對模型又做一些更新,AI 的表現(xiàn)也來到了新的高峰。

如果深入探究的話,雖然 OpenAI 自己沒有給出詳細(xì)的模型設(shè)計解釋,但是也有熱心研究人員在查找資料,試圖找到更多解釋這個 AI 能有如此表現(xiàn)的原因。比如塔爾圖大學(xué)計算機學(xué)院計算神經(jīng)科學(xué)實驗室的 Tambet Matiisen,他找到的其中一個重要原因,就是模型對嵌入的妙用。雷鋒網(wǎng) AI 科技評論把他的解析文章全文翻譯如下。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

雖然關(guān)于 OpenAI 的 AI 的舉止以及關(guān)于這些比賽對于整個 AI 界的意義的討論已經(jīng)不少了,但關(guān)于這些 AI 的訓(xùn)練方法和網(wǎng)絡(luò)架構(gòu)的技術(shù)分析異常地少。到目前為止,技術(shù)分析主要都源于最初 OpenAI Five  的博客文章。在某種程度上他們確實說得挺合理,他們使用標(biāo)準(zhǔn) PPO 算法(幾年前他們自己發(fā)明的)和經(jīng)過驗證確實有效的自我訓(xùn)練方案(也在他們的一篇論文中記錄)是合理的。但博客文章中有一個容易錯過的細(xì)節(jié),那就是指向他們的網(wǎng)絡(luò)架構(gòu)圖的一個超鏈接。

在這篇博文中,我想集中討論他們網(wǎng)絡(luò)架構(gòu)的一個方面,即他們創(chuàng)造性地使用嵌入來處理數(shù)量巨大并且可變的策略輸入和輸出。雖然嵌入以及注意力機制的點乘積的應(yīng)用是自然語言處理中的標(biāo)準(zhǔn)技術(shù),但它們并未廣泛用于強化學(xué)習(xí)中。

更新:在撰寫此博客文章后,我了解到后來的一篇 OpenAI 博客文章中有一個較新版本的網(wǎng)絡(luò)架構(gòu)圖。由于嵌入的使用沒有太多差異,我決定不重新更新這篇文章的圖像了,新網(wǎng)絡(luò)的分析可以作為大家的作業(yè)。

什么是嵌入?

在數(shù)學(xué)中,嵌入指的是從空間 X 到 Y 的映射,同時保留對象的一些結(jié)構(gòu)(例如它們的距離)。然而,在神經(jīng)網(wǎng)絡(luò)的上下文中使用嵌入通常意味著將分類(離散)變量(例如,單詞索引)轉(zhuǎn)換為連續(xù)向量。直接將單詞索引作為輸入傳遞給網(wǎng)絡(luò)將使其工作變得非常困難,因為它需要為每個索引值都提供一個二進制特征(假設(shè)它們是不相關(guān)的)。于是,我們通過一個網(wǎng)絡(luò)將分類值轉(zhuǎn)換為 one-hot (獨熱)矢量。如果將獨熱矢量與權(quán)重矩陣相乘,這就相當(dāng)于從權(quán)重矩陣中選擇一個給定的行。在各類神經(jīng)網(wǎng)絡(luò)開發(fā)庫中,通常會跳過轉(zhuǎn)換為獨熱矢量并乘以權(quán)重矩陣的步驟,而是直接使用索引從權(quán)重矩陣中選擇一行,并將其視為查找表。其中最重要的方面是,嵌入向量是通過學(xué)習(xí)得到的,就像使用獨熱向量學(xué)習(xí)權(quán)重矩陣一樣。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

自然語言處理是嵌入應(yīng)用最有名的領(lǐng)域,其中單詞索引被轉(zhuǎn)換為詞向量(或嵌入)。已經(jīng)有充足的例子表明,當(dāng)訓(xùn)練網(wǎng)絡(luò)從字向量預(yù)測其周圍單詞的向量時,詞向量就能學(xué)習(xí)到一些語義信息,并且它們之間可以進行算術(shù)運算。例如「woman - man + king」產(chǎn)生接近「queen」的矢量。你可以看作是「woman - man」產(chǎn)生性別轉(zhuǎn)移向量,添加「king」將其轉(zhuǎn)換為女性統(tǒng)治者。另一種理解方式是,你構(gòu)造了「king - man + woman」,那么「king - man」產(chǎn)生「ruler」(統(tǒng)治者)的矢量,并添加「woman」產(chǎn)生「queen」。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

圖片來自 https://www.aclweb.org/anthology/N13-1090 

OpenAI Five 網(wǎng)絡(luò)

在我們深入研究具體細(xì)節(jié)之前,先簡單介紹一下 OpenAI Five 的總體網(wǎng)絡(luò)架構(gòu)。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

OpenAI Five 的五個 AI 玩家每一個都有自己單獨網(wǎng)絡(luò),有自己的輸入和動作。(不確定五個網(wǎng)絡(luò)的參數(shù)是否共享。)五個 AI 之間唯一的聯(lián)系是通過游戲,我個人開始想象他們會不會采用類似于「蜜蜂舞」的行為將敵人的位置傳達給彼此,但我不認(rèn)為他們真的會這樣做,甚至不需要這樣做。更新:在較新版本的網(wǎng)絡(luò)中,AI 之間有一個共享的最大池化層,可以將其視為單向廣播通信信道。

圖中網(wǎng)絡(luò)的上半部分處理觀察結(jié)果。它將來自各種來源的數(shù)據(jù)連接起來,并將所有內(nèi)容傳遞到一個 LSTM單元格中。該 LSTM 單元的輸出由網(wǎng)絡(luò)的下半部分用于產(chǎn)生動作。簡而言之,就是觀察過程,將它們提供給 LSTM 并產(chǎn)生動作的一個簡單過程。當(dāng)然,細(xì)節(jié)決定一切,這將是我們在下一節(jié)中討論的內(nèi)容。

觀察的嵌入

OpenAI Five 的 AI 使用 Dota 2 的 API 來「看到」周圍的單位和建筑物。這會產(chǎn)生可變長度的單位列表(英雄,小兵,塔等)及其屬性。OpenAI 在他們的博客文章中對觀測空間和動作空間可視化做的很好,我建議大家去原博客里感受一下 https://blog.openai.com/openai-five/#dota-diagram  。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

下圖總結(jié)了對于列表中的某一個單位的處理過程。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

在左上方我們可以看到每個單位被編碼成一個嵌入,這是完全可行的,因為 Dota2 中的 116 個英雄可以根據(jù)不同方式進行分類:

  • 主要屬性:力量,靈活性,智力。

  • 攻擊類型:遠程或近戰(zhàn)。

  • 作用:核心,控制,對線輔助,先手,打野,輔助,耐久,爆發(fā),推進,逃生。

其中的每一個特性都可能在嵌入向量中形成一個維度,并且網(wǎng)絡(luò)可以自動學(xué)習(xí)每個英雄中的核心、輔助或打野的成分是多少。 相同的嵌入也適用于小兵和建筑物,例如塔也有遠程攻擊。這樣就形成了一種通用的方式,在網(wǎng)絡(luò)內(nèi)表示各種不同的單位。嵌入向量與其他單位屬性(如血量,英雄距離等)聯(lián)系在一起。

嵌入不僅僅可以用于單位的類型,它們也用于天賦、技能和物品。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

同樣它也是有理可依的——雖然所有英雄的技能都不同,但它們肯定有一些共性,例如:他們的技能是主動施放還是被動,如果他們需要目標(biāo),那么這個目標(biāo)是另一個單位還是一個區(qū)域等。對于物品的話,有用于治療的血瓶,有增加魔法值的,有立即消耗的,還有用于升級的物品。嵌入是一種自然的方式,用來表示具有許多不同特性但可能有交叉特性的東西,以及表示那些在不同程度上可能具有相似效果的東西。

請注意,雖然天賦、技能和物品的數(shù)量是可變的,但最大池化層會覆蓋到每個列表。這意味著只有所有這些維度中的最高值才能被輸出。乍一看這樣似乎不太合理,因為以人的思路來考慮的話,你擁有的能力是所有現(xiàn)有能力的組合,例如:遠程+被動治療。但它似乎對 AI 來說很有用。

以上處理是針對每個相鄰的單位獨立完成的,一般屬性、英雄天賦、技能和物品的結(jié)果都會連接在一起。然后應(yīng)用不同的后處理,根據(jù)它是敵方非英雄(如敵方塔)、友方非英雄(己方塔)、中立(野怪)、友方英雄或者敵方英雄。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

最后,后處理的結(jié)果在該類型的所有單元上取最大值。同樣,乍一看這似乎是有問題的,因為鄰近單元的不同特性會被組合,例如,如果其中一個維度代表一個單位的健康狀況(血量),那么網(wǎng)絡(luò)只會看到相同類型單位的最大健康狀況。 但是,再一次,從模型的表現(xiàn)看來并不是不行。

最大池化將每種單元類型的最大結(jié)果連接起來,然后輸入給 LSTM。輸出的前半部分也有分片,不過下面我們講到動作目標(biāo)的時候再接著說這件事。

動作的嵌入

Dota 2 中大概有 170,000 個不同的動作,包括正常的動作,如移動和攻擊,還包括技能施放、物品使用、狀態(tài)升級等。在每個時間點上并非所有操作都可以使用——比如可能還沒有學(xué)這個技能,或者背包里沒有這個裝備。但你仍然可以使用大約 1000 種不同的操作。此外,許多動作都有參數(shù),例如你想要移動到什么區(qū)域或你想要攻擊哪個敵人。OpenAI在博文中也展示了很好的動作空間的可視化。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

這其實給強化學(xué)習(xí)帶來了一個巨大的探索問題,因為智能體最初是通過嘗試隨機動作開始學(xué)習(xí)的。最直白的方法是計算所有 170,000 個動作的分?jǐn)?shù),并將 softmax 限制為 1000 個當(dāng)前可以進行動作。但 OpenAI 通過嵌入和可變長度的 softmax 層巧妙地解決了這個難題。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

正如這張圖最上方顯示的,每個動作都有一個嵌入,例如,無論是遠程攻擊還是使用物品進行治療或傳送到某個目的地。動作嵌入和 LSTM 輸出結(jié)果的點乘積用于產(chǎn)生不同動作的分?jǐn)?shù)。這些分?jǐn)?shù)會經(jīng)過 softmax層,結(jié)果的概率分布用于選擇一個可用的動作。

旁注:兩個向量之間的點乘積會把向量中的元素分別相乘,并對相乘后的結(jié)果求和。有時它也被稱為標(biāo)量積,因為它產(chǎn)生單個標(biāo)量值。它與余弦相似性有著密切的關(guān)系——當(dāng)向量指向相同方向時,它傾向于產(chǎn)生高值,而當(dāng)指向相反方向時,它往往產(chǎn)生低值。它通常用作兩個向量相似性的快速評分方法。實際上,這正是卷積運算所做的——它產(chǎn)生了濾波器和輸入之間相似性的特征圖。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

我猜測,選擇一個行動的過程實際上是讓 LSTM 產(chǎn)生的一個原則上可以被稱為「意圖向量」的東西。例如,如果你處于困境并且血量非常低,那么意圖就是「離開這里」。將此意圖與可用操作匹配,如果與其中一個操作相一致,則會產(chǎn)生高分。例如,「移動」和「TP」兩個動作可能與「離開這里」的意圖很好地對齊。TP 可能稍微對齊的更好些,因為你不會被敵人追到,因此它在 softmax 之后產(chǎn)生更高的分?jǐn)?shù)和更高的概率。但是如果目前 TP 不可用,那么這種嵌入就不匹配了,「移動」可能是得分和概率最高的。

某些操作具有參數(shù),如目的地或目標(biāo)。所有這些都使用 softmax 層以簡單直接的方式建模。例如,X 和 Y 坐標(biāo)被離散化為范圍,而不是使用連續(xù)輸出和高斯分布。我猜測 softmax 可以更好地處理多模態(tài)分布。這里我們發(fā)現(xiàn)了一個重要的點是,動作輸出似乎并不能對動作以及動作目標(biāo)之間的聯(lián)合分布建模。我認(rèn)為這不是問題,因為所有動作輸出都以 LSTM 輸出為條件。因此,LSTM 輸出已經(jīng)編碼了「意圖」,而那些全連接層只是解碼了這個「意圖」的不同方面——動作及其目標(biāo)。

我最喜歡的部分是 OpenAI Five 如何處理目標(biāo)。還記得那些來自單位觀測輸出的奇怪切片嗎?這些在圖上用藍色表示,這意味著它們是對每個單位都有一個單獨的切片。這些向量稱為「單元注意鍵」,并與 LSTM「意圖」匹配,以產(chǎn)生對于每個單位的分?jǐn)?shù)。這些分?jǐn)?shù)通過 softmax 并確定攻擊單位。選取被觀察到的單位時再次使用了 softmax,從可用的動作的中選取動作的時候也是一樣。

我猜測模型是這樣工作的:根據(jù)觀察的結(jié)果,網(wǎng)絡(luò)確定某個單位的血量確實很低,AI 有機會去搶這個人頭。LSTM 產(chǎn)生意圖「嘗試最后一擊」,與「攻擊」行動很好地對齊。此次「嘗試最后一擊」意圖與觀察處理的每單位輸出相匹配,并與血量低的單位很好地對齊。Bang——你完成最后一擊并獲得額外的賞金。

更新:在更新版本的網(wǎng)絡(luò)中,他們先用動作嵌入來調(diào)制 LSTM 輸出,再使用單位注意鍵產(chǎn)生點乘積前,我猜如果不做這個更改的話,不同的動作(例如攻擊和治療)就會鎖定到一個單位上去。

總結(jié)

在分析 OpenAI Five 網(wǎng)絡(luò)之后,很明顯網(wǎng)絡(luò)的大多數(shù)部分都在處理感知(觀察預(yù)處理)和運動控制(解碼動作)任務(wù)。而所有戰(zhàn)略和策略必須由同一個地方產(chǎn)生——即1024個單位的LSTM。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

我認(rèn)為這樣一個相對簡單的數(shù)學(xué)結(jié)構(gòu)就可以產(chǎn)生如此復(fù)雜的行為是令人驚奇的。或者,我不是很確定,但是其實這表明 Dota 2游戲的復(fù)雜性也不過如此?短期策略與快速反應(yīng)時間的結(jié)合已經(jīng)可以擊敗長期策略了嗎?這還有待我們繼續(xù)研究和討論。

感謝 Jaan Aru,TanelP?rnamaa,Roman Ring 和 Daniel Majoral 的提出的精彩見解和討論。

via neuro.cs.ut.ee,雷鋒網(wǎng) AI 科技評論編譯

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

論嵌入在 OpenAI 的 5v5 DOTA2 AI 中的妙用

分享:
相關(guān)文章

知情人士

當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說