自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK 原創(chuàng)

發(fā)布于 2024-9-5 08:20
瀏覽
0收藏

本文將使用五篇新發(fā)表的強(qiáng)化學(xué)習(xí)論文中介紹的五種算法(DDPG、SAC、PPO、I2A和決策轉(zhuǎn)換器)來(lái)訓(xùn)練模擬人形機(jī)器人互相打斗并對(duì)訓(xùn)練結(jié)果進(jìn)行排名。

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

簡(jiǎn)介

我想起了最近的一個(gè)老電視節(jié)目《Battlebots》,并想對(duì)這個(gè)節(jié)目進(jìn)行進(jìn)一步的改造。因此,我將使用最新發(fā)表的五篇有關(guān)強(qiáng)化學(xué)習(xí)的論文中提到的技術(shù)來(lái)分別訓(xùn)練模擬人形機(jī)器人并讓它們展開(kāi)決斗,以便比較這些算法的不同排名。

通過(guò)閱讀本文中介紹的內(nèi)容,你將學(xué)習(xí)到關(guān)于這五種強(qiáng)化學(xué)習(xí)算法的工作原理和數(shù)學(xué)原理,并了解我是如何實(shí)現(xiàn)這些不同算法的。同時(shí),您還可以領(lǐng)略一下這些機(jī)器人是如何面對(duì)面地展開(kāi)決斗,并最終確定哪一種算法是最后的冠軍!

  • 深度確定性策略梯度(DDPG)算法
  • 決策轉(zhuǎn)換器算法
  • 柔性演員-評(píng)論家(Soft Actor-Critic:SAC)算法
  • 基于近鄰策略優(yōu)化(PPO)的想象增強(qiáng)智能體(I2A)算法

設(shè)置模擬環(huán)境

在本文實(shí)驗(yàn)中,我將使用Unity機(jī)器人學(xué)習(xí)智能體模擬器,針對(duì)每個(gè)機(jī)器人身體在9個(gè)關(guān)節(jié)上構(gòu)建21個(gè)執(zhí)行器,通過(guò)他們頭上的虛擬相機(jī)實(shí)現(xiàn)了10乘10的RGB視覺(jué),還有一把劍和一個(gè)盾牌。然后,我使用C#代碼來(lái)定義它們的獎(jiǎng)勵(lì)和物理交互。智能體可以通過(guò)三種主要方式來(lái)獲得獎(jiǎng)勵(lì):

  • 用劍攻擊對(duì)手(“擊敗”對(duì)手)
  • 將頭部的y位置保持在身體上方(以激勵(lì)他們站起來(lái))
  • 比以前更接近對(duì)手(以鼓勵(lì)智能體會(huì)聚在一起并展開(kāi)決斗)

智能體將在1000個(gè)時(shí)間步后重置,我盡量大規(guī)模并行化執(zhí)行環(huán)境,以加快訓(xùn)練速度。

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

大規(guī)模并行化訓(xùn)練環(huán)境(我個(gè)人的截圖)

然后,就是編寫算法了。為了理解我使用的算法,您首先需要理解Q學(xué)習(xí),這是至關(guān)重要的。

Q學(xué)習(xí)(如果已熟悉,請(qǐng)?zhí)^(guò)本節(jié))

在強(qiáng)化學(xué)習(xí)中,我們讓智能體采取行動(dòng)來(lái)探索其環(huán)境,并根據(jù)其與目標(biāo)的接近程度對(duì)其進(jìn)行積極或消極的獎(jiǎng)勵(lì)。那么,智能體如何調(diào)整其決策標(biāo)準(zhǔn)以獲得更好的獎(jiǎng)勵(lì)呢?

Q學(xué)習(xí)(Q Learning)算法提供了一種解決方案。在Q學(xué)習(xí)中,我們跟蹤Q函數(shù)Q(s,a);這個(gè)函數(shù)能夠跟蹤從狀態(tài)s_t到動(dòng)作a_t后的預(yù)期返回結(jié)果。

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

在上面公式中,R(s,a)表示當(dāng)前狀態(tài)和動(dòng)作的獎(jiǎng)勵(lì),γ表示折扣因子(超參數(shù)),E[]表示期望值。

如果我們正確地學(xué)習(xí)了這個(gè)Q函數(shù),那么我們可以簡(jiǎn)單地選擇返回最高Q值的那個(gè)動(dòng)作。

接下來(lái),我們來(lái)看如何學(xué)習(xí)這個(gè)Q函數(shù)?

從訓(xùn)練回合結(jié)束時(shí)開(kāi)始,我們肯定知道真實(shí)的Q值(也就是我們當(dāng)前的獎(jiǎng)勵(lì))。我們可以使用以下更新方程并使用遞歸技術(shù)來(lái)填充之前的Q值:

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

在上面公式中,α表示學(xué)習(xí)率,r表示即時(shí)獎(jiǎng)勵(lì),γ表示折扣因子(權(quán)重參數(shù)),s'表示下一個(gè)狀態(tài),max_a'Q(s',a')表示所有可能動(dòng)作中下一個(gè)狀態(tài)的最大Q值。

從本質(zhì)上講,我們的新Q值變成了舊Q值+上當(dāng)前獎(jiǎng)勵(lì)+下一個(gè)最大Q值和舊Q值之間差值的一小部分?,F(xiàn)在,當(dāng)我們的智能體想要選擇一個(gè)動(dòng)作時(shí),他們可以選擇產(chǎn)生最大Q值(預(yù)期獎(jiǎng)勵(lì))的那個(gè)動(dòng)作。

不過(guò),您可能會(huì)注意到這樣一個(gè)潛在的問(wèn)題:我們正在每個(gè)時(shí)間步對(duì)每個(gè)可能的操作評(píng)估Q函數(shù)。如果我們?cè)陔x散空間中僅有有限數(shù)量的可能動(dòng)作,這倒是很好的;但是,這種情況在連續(xù)動(dòng)作空間中卻會(huì)崩潰——此時(shí)不再可能對(duì)無(wú)限數(shù)量可能動(dòng)作上的Q函數(shù)展開(kāi)有效的評(píng)估。于是,這就引出了我們的第一個(gè)競(jìng)爭(zhēng)算法——DDPG。

深度確定性策略梯度(DDPG)算法

DDPG(Deep Deterministic Policy Gradient)算法試圖以一種新穎的方式在連續(xù)動(dòng)作空間中使用Q網(wǎng)絡(luò)。

創(chuàng)新點(diǎn)1:演員與評(píng)論家

我們不能使用Q網(wǎng)絡(luò)直接做出決策,但我們可以用它來(lái)訓(xùn)練另一個(gè)單獨(dú)的決策函數(shù)。這就要使用所謂的演員-評(píng)論家(actor-critic)設(shè)置。其中,演員(actor)代表決定行動(dòng)的策略,評(píng)論家(critic)則根據(jù)這些行動(dòng)確定未來(lái)的預(yù)期獎(jiǎng)勵(lì)。

其中,目標(biāo)評(píng)論家的計(jì)算公式如下所示:

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

在上面公式中,r表示即時(shí)獎(jiǎng)勵(lì),γ表示折扣因子,s'表示下一個(gè)狀態(tài),μ'(s')表示目標(biāo)策略網(wǎng)絡(luò)對(duì)下一狀態(tài)的動(dòng)作,Q'表示目標(biāo)批評(píng)網(wǎng)絡(luò),目標(biāo)演員:預(yù)期返回值wrt策略的梯度約等于:

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

本質(zhì)上,在N個(gè)樣本上,策略(wrt-策略)選擇的操作的Q值的變化方式會(huì)改變wrt-策略參數(shù)。

為了更新這兩者,我們使用隨機(jī)梯度上升更新的辦法,在當(dāng)前Q和目標(biāo)Q的MSE損失上使用lr*梯度。請(qǐng)注意,演員和評(píng)論家都是作為神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的。

創(chuàng)新點(diǎn)2:確定性動(dòng)作策略

我們的策略可以是確定性的(每個(gè)狀態(tài)的保證動(dòng)作)或隨機(jī)性的(根據(jù)概率分布對(duì)每個(gè)狀態(tài)的采樣動(dòng)作)。用于高效評(píng)估Q函數(shù)的確定性動(dòng)作策略(由于每個(gè)狀態(tài)只有一個(gè)動(dòng)作,因此是奇異型的遞歸評(píng)估)。

然而,我們?nèi)绾问褂么_定性策略來(lái)進(jìn)行探索呢?我們不會(huì)一次又一次地重復(fù)同樣的動(dòng)作嗎?然而,確實(shí)如此,我們可以通過(guò)添加隨機(jī)生成的噪聲以鼓勵(lì)探索來(lái)增加智能體的探索(這看起來(lái)有點(diǎn)像通過(guò)研究基因突變所具有的獨(dú)特的遺傳可能性來(lái)探索它是如何促進(jìn)進(jìn)化的一樣)

創(chuàng)新點(diǎn)3:交互式環(huán)境中的批處理學(xué)習(xí)

我們還希望通過(guò)觀察到的每個(gè)時(shí)間步(由“狀態(tài)-動(dòng)作-獎(jiǎng)勵(lì)-下一個(gè)狀態(tài)”組成)獲得更大的回報(bào):這樣我們就可以存儲(chǔ)之前的時(shí)間步數(shù)據(jù)元組,并將其用于未來(lái)的訓(xùn)練。

這允許我們離線使用批處理學(xué)習(xí)(這意味著使用之前收集的數(shù)據(jù),而不是通過(guò)環(huán)境進(jìn)行交互),此外還允許我們并行化以提高GPU的訓(xùn)練速度。我們現(xiàn)在也有了獨(dú)立的同分布數(shù)據(jù),而不是我們經(jīng)常得到的有偏差的順序數(shù)據(jù)(其中數(shù)據(jù)點(diǎn)的值取決于之前的數(shù)據(jù)點(diǎn))。

創(chuàng)新點(diǎn)4:目標(biāo)網(wǎng)絡(luò)

通常,使用神經(jīng)網(wǎng)絡(luò)的Q學(xué)習(xí)太不穩(wěn)定,也不容易收斂到最優(yōu)解,因?yàn)楦绿舾?太強(qiáng)大了。

因此,我們使用目標(biāo)演員和評(píng)論家網(wǎng)絡(luò),它們與環(huán)境相互作用,在訓(xùn)練過(guò)程中部分但不完全接近真實(shí)的演員和評(píng)論家((大因子)目標(biāo)+(小因子)新目標(biāo))。

算法運(yùn)行和代碼

  • 初始化評(píng)論家、演員、目標(biāo)評(píng)論家和目標(biāo)演員、重放緩沖區(qū)。
  • 對(duì)于視覺(jué),我在任何其他層之前都使用卷積神經(jīng)網(wǎng)絡(luò)(因此算法使用了視覺(jué)的最重要特征)。
  • 然后,針對(duì)每一個(gè)回合(episode),執(zhí)行如下操作:
  • 觀察狀態(tài),選擇并執(zhí)行動(dòng)作mu+噪聲。
  •  獲得獎(jiǎng)勵(lì),轉(zhuǎn)到下一個(gè)狀態(tài)。
  • 將(s_t,a_t,r_t, s_(t+1))存儲(chǔ)在重放緩沖區(qū)中。
  • 從緩沖區(qū)中提取小批量樣品。
  • 更新y_i = reward_i + gamma Q(s表示給定θ)。
  • 遞歸計(jì)算。
  • 更新critic以最小化L = y_i - Q(s,a|theta)。
  • 使用策略梯度J更新演員,期望遞歸型的Q給定策略。
  • 將目標(biāo)更新為:大因子*目標(biāo)+(1-大因子)*實(shí)際值。

【參考】github.com源碼倉(cāng)庫(kù)地址:AlmondGod/Knights-of-Papers/src/DDPG/DDPG.py文件。

柔性演員-評(píng)論家(SAC)算法

DDPG算法確實(shí)存在一些問(wèn)題。也就是說(shuō),盡管評(píng)論家更新算法中包括貝爾曼方程:

Q(s,a)=r+max Q(s'a')

但是,神經(jīng)網(wǎng)絡(luò)作為Q網(wǎng)絡(luò)近似器會(huì)產(chǎn)生大量噪聲,噪聲的最大值意味著我們高估了,也就是說(shuō)我們對(duì)我們的策略過(guò)于樂(lè)觀,并獎(jiǎng)勵(lì)了平庸的行為。眾所周知,DPPG算法還需要大量的超參數(shù)調(diào)整(包括添加噪聲),并且除非其超參數(shù)在窄范圍內(nèi);否則,不能保證收斂到最優(yōu)解。

創(chuàng)新點(diǎn)1:最大熵強(qiáng)化學(xué)習(xí)

現(xiàn)在,演員不再試圖純粹地最大化獎(jiǎng)勵(lì),而是最大化獎(jiǎng)勵(lì)+熵。

那么,為什么要使用熵呢?

熵本質(zhì)上是我們對(duì)某個(gè)結(jié)果的不確定性(例如,最大熵偏置的硬幣總是有0熵顯示形式)。

通過(guò)將熵作為最大化因子,我們鼓勵(lì)了廣泛的探索,從而提高了對(duì)局部最優(yōu)解的敏感性,允許對(duì)高維空間進(jìn)行更一致和穩(wěn)定的探索(這正是比隨機(jī)噪聲更好的原因)。對(duì)熵的優(yōu)先級(jí)進(jìn)行加權(quán)的alpha參數(shù),進(jìn)行了自動(dòng)調(diào)整(如何調(diào)整呢?)。

創(chuàng)新點(diǎn)2:使用兩個(gè)Q函數(shù)

這一變化旨在通過(guò)獨(dú)立訓(xùn)練兩個(gè)Q網(wǎng)絡(luò)并在策略改進(jìn)步驟中使用兩者中的最小值來(lái)解決Q函數(shù)的貝爾曼高估偏差。

算法運(yùn)行和代碼

  • 初始化演員、2個(gè)Q函數(shù)、2個(gè)目標(biāo)Q函數(shù)、回放緩沖區(qū)、alpha
  • 重復(fù)執(zhí)行下面操作直到收斂:
  • 對(duì)于每個(gè)環(huán)境步驟執(zhí)行:
  • 從策略中取樣行動(dòng),觀察下一個(gè)狀態(tài)并獎(jiǎng)勵(lì)
  • 將(s_t,a_t,r_t,s_t+1)存儲(chǔ)在重放緩沖區(qū)中
  • 在每個(gè)更新步驟中,執(zhí)行:
  • 抽樣批次
  • 更新Qs:
  • 計(jì)算目標(biāo)y=獎(jiǎng)勵(lì)+策略的最小Q+阿爾法熵
  • 最小化Q預(yù)測(cè)-y
  • 更新策略以最大化策略Q+阿爾法獎(jiǎng)勵(lì)
  • 更新alpha以滿足目標(biāo)熵
  • 更新目標(biāo)Q網(wǎng)絡(luò)(柔性更新目標(biāo)為:大因子*目標(biāo)+(1-大因子)*實(shí)際值)

【參考】github.com源碼倉(cāng)庫(kù)地址:AlmondGod/Knights-of-Papers/src/SAC/SAC.py文件。

I2A算法與PPO算法

其實(shí),這里有兩種算法(額外的alg層可以在任何算法之上工作)。

近端策略優(yōu)化(PPO)算法

使用與DDPG和SAC不同的方法,我們的目標(biāo)是一種可擴(kuò)展、數(shù)據(jù)高效、魯棒性強(qiáng)的收斂算法(對(duì)超參數(shù)的定義不敏感)。

創(chuàng)新點(diǎn)1:代理目標(biāo)函數(shù)

代理目標(biāo)允許進(jìn)行非策略性訓(xùn)練,因此我們可以使用更廣泛的數(shù)據(jù)(特別有利于存在大量預(yù)先存在的數(shù)據(jù)集的現(xiàn)實(shí)世界場(chǎng)景)。

在我們討論代理目標(biāo)之前,理解優(yōu)勢(shì)(Advantage)的概念至關(guān)重要。優(yōu)勢(shì)的定義是:采取s策略后s的預(yù)期回報(bào)與s的預(yù)期回報(bào)之間的差異。本質(zhì)上,它量化了一個(gè)行動(dòng)在多大程度上比“平均”行動(dòng)更好或更差。

我們估計(jì)它的表達(dá)式是:A=Q(A,s)-V(A)。其中,Q是動(dòng)作值(動(dòng)作A后的預(yù)期回報(bào)),V是狀態(tài)值(當(dāng)前狀態(tài)的預(yù)期回報(bào));兩者都可以學(xué)習(xí)。

現(xiàn)在,代理目標(biāo)的計(jì)算公式是:

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

其中:

J(θ)表示代理目標(biāo);

ê_t[…]表示有限批樣品的經(jīng)驗(yàn)平均值;

r_t(θ)=π_θ(a_t|s_t)/π_θ_old(a_t| s_t),即:新策略中行動(dòng)的可能性/舊策略中的可能性;

?_t代表時(shí)間步長(zhǎng)t的估計(jì)優(yōu)勢(shì)。

這相當(dāng)于量化新策略在多大程度上提高了更高回報(bào)行動(dòng)的可能性,并降低了更低回報(bào)行動(dòng)的可能。

創(chuàng)新點(diǎn)2:剪切目標(biāo)函數(shù)

這是解決超大策略更新問(wèn)題以實(shí)現(xiàn)更穩(wěn)定學(xué)習(xí)的另一種方法。

L_CLIP(θ)=E[min(r(θ)*A,CLIP(r(σ),1-ε,1+ε)*A)]

在此,剪切目標(biāo)是真實(shí)代理和代理的最小值,其中比率被截?cái)嘣?-epsilon和1+epsilon之間(基本上是未修改比率的信任區(qū)域)。Epsilon通常為~0.1/0.2。

它本質(zhì)上選擇了更保守的剪切比和正態(tài)比。

PPO的實(shí)際目標(biāo)函數(shù)是:

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

其中,

1. L^{VF}(θ)=(V_θ(s_t)-V^{target}_t)2

2. Sπ_θ代表狀態(tài)S_t的策略π_θ的熵

從本質(zhì)上講,我們優(yōu)先考慮更高的熵、更低的值函數(shù)和更高的削波優(yōu)勢(shì)。

此外,PPO算法還使用小批量和交替數(shù)據(jù)訓(xùn)練。

算法運(yùn)行和代碼

  • 針對(duì)每次迭代,執(zhí)行如下操作:
  • 對(duì)于N個(gè)演員中的每一個(gè)演員執(zhí)行如下操作:
  • 運(yùn)行T時(shí)間步策略
  • 計(jì)算優(yōu)勢(shì)
  • 針對(duì)K個(gè)迭代周期和最小批處理大小M<NT的策略優(yōu)化代理函數(shù)
  • 更新策略

【參考】github.com源碼倉(cāng)庫(kù)地址:AlmondGod/Knights-of-Papers/src/I2A-PPO/gpuI2APPO.py文件。

增強(qiáng)想象智能體算法

我們的目標(biāo)是為任何其他算法創(chuàng)建一個(gè)額外的嵌入向量輸入,以提供關(guān)鍵的有價(jià)值信息,并作為環(huán)境的“思維模型”。

創(chuàng)新點(diǎn):想象向量

想象向量允許我們?cè)谥悄荏w的觀察中添加一個(gè)額外的嵌入向量,以便對(duì)多個(gè)“想象的未來(lái)運(yùn)行”的動(dòng)作和對(duì)其獎(jiǎng)勵(lì)的評(píng)估進(jìn)行編碼(目標(biāo)是“看到未來(lái)”和“行動(dòng)前思考”)。

那么,我們是如何計(jì)算想象向量的呢?我們的方法是使用一個(gè)學(xué)習(xí)環(huán)境近似函數(shù),它試圖對(duì)環(huán)境進(jìn)行模擬(這被稱為基于模型的學(xué)習(xí),因?yàn)槲覀冊(cè)噲D學(xué)習(xí)一個(gè)環(huán)境的模型)。我們將其與推出策略(rollout policy)相結(jié)合,這是一種非常簡(jiǎn)單且快速執(zhí)行的策略(通常是隨機(jī)的),用于決定“探索未來(lái)”的行動(dòng)。通過(guò)在推出策略上運(yùn)行環(huán)境近似器,我們可以探索未來(lái)的行動(dòng)及其回報(bào),然后找到一種方法將所有這些想象中的未來(lái)行動(dòng)和回報(bào)通過(guò)一個(gè)向量來(lái)描述。但是,這里也存在一個(gè)值得注意的缺點(diǎn):正如你所料,它增加了大量的訓(xùn)練,因此這樣的訓(xùn)練就更依賴于必要的大量數(shù)據(jù)。

組合I2A算法和PPO算法的運(yùn)行與代碼

  • 每次我們收集PPO的觀察結(jié)果:
  • 初始化環(huán)境模型與推出策略。
  • 然后,對(duì)于多個(gè)“想象的跑動(dòng)”循環(huán)執(zhí)行如下操作:
  • 從當(dāng)前狀態(tài)開(kāi)始運(yùn)行環(huán)境模型,并決定推出策略,直到產(chǎn)生一個(gè)想象軌跡的地平線(s、a、r序列)。
  • 想象編碼器:將多個(gè)想象的軌跡轉(zhuǎn)化為實(shí)際決策網(wǎng)絡(luò)的單個(gè)輸入嵌入。

決策轉(zhuǎn)換器

我們的目標(biāo)是利用轉(zhuǎn)換器架構(gòu)的優(yōu)勢(shì)進(jìn)行強(qiáng)化學(xué)習(xí)。借助決策轉(zhuǎn)換器(Decision Transformer,簡(jiǎn)稱“DT”),我們可以在稀疏/分散的獎(jiǎng)勵(lì)中識(shí)別重要的獎(jiǎng)勵(lì),享受更廣泛的分布建模以實(shí)現(xiàn)更大的泛化和知識(shí)轉(zhuǎn)移,并從預(yù)先獲得的次優(yōu)的有限數(shù)據(jù)中學(xué)習(xí)(稱為離線學(xué)習(xí))。

對(duì)于決策轉(zhuǎn)換器,我們本質(zhì)上將強(qiáng)化學(xué)習(xí)視為序列建模問(wèn)題。

創(chuàng)新點(diǎn)1:轉(zhuǎn)換器

如果你想真正了解轉(zhuǎn)換器的話,我推薦您觀看李飛飛高徒、被譽(yù)為AI“網(wǎng)紅”的Karpathy發(fā)布的“從零開(kāi)始構(gòu)建GPT2”的有關(guān)視頻。以下是適用于DT的有關(guān)轉(zhuǎn)換器技術(shù)的一個(gè)快速回顧:

假設(shè)我們已經(jīng)有一些表示狀態(tài)、動(dòng)作、回報(bào)(預(yù)期收到的未來(lái)獎(jiǎng)勵(lì)的總和)和時(shí)間步長(zhǎng)的令牌序列。我們現(xiàn)在的目標(biāo)是接收一系列令牌并預(yù)測(cè)下一步行動(dòng):這將作為我們的策略。

這些令牌都有鍵、值和查詢,我們將使用復(fù)雜的網(wǎng)絡(luò)將它們組合在一起,以表達(dá)每個(gè)元素之間的關(guān)系。然后,我們將這些關(guān)系組合成一個(gè)“嵌入”向量,該向量對(duì)輸入之間的關(guān)系進(jìn)行編碼。這個(gè)過(guò)程被稱為注意力。

請(qǐng)注意,“因果自注意力掩碼”能夠確保嵌入只能與序列中出現(xiàn)在它們之前的嵌入相關(guān),因此我們不能使用未來(lái)來(lái)預(yù)測(cè)未來(lái),而是使用過(guò)去的信息來(lái)預(yù)測(cè)未來(lái)(因?yàn)槲覀兊哪繕?biāo)是預(yù)測(cè)下一個(gè)動(dòng)作)。

一旦我們有了這個(gè)嵌入向量,我們就可以把它傳遞到神經(jīng)網(wǎng)絡(luò)層(大牛Karpathy使用的類比是,在這種情況下,我們“推理”令牌之間的關(guān)系)。

這兩個(gè)組合(用注意力查找令牌之間的關(guān)系,用神經(jīng)網(wǎng)絡(luò)層推理關(guān)系)是轉(zhuǎn)換器的一個(gè)頭部,我們多次堆疊它。在這些頭部的最后,我們使用一個(gè)學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)層將輸出轉(zhuǎn)換為我們的動(dòng)作空間大小和要求。

順便說(shuō)一句,在推理時(shí),我們預(yù)先定義了回報(bào),作為我們最終想要的總獎(jiǎng)勵(lì)。

算法運(yùn)行和代碼

  • 對(duì)于數(shù)據(jù)加載器中的(R,s,a,t)執(zhí)行如下操作:
  • 預(yù)測(cè)行動(dòng)
  • 模型將obs、vision(帶卷積神經(jīng)網(wǎng)絡(luò)的層)、rtg和timestep轉(zhuǎn)換為唯一的嵌入,并將timestep嵌入添加到其他嵌入中
  • 所有另外三個(gè)用作轉(zhuǎn)換器層的輸入?yún)?shù)最終使用動(dòng)作嵌入
  • 計(jì)算MSE損失(a_pred-a)**2
  • 使用具有該損耗的梯度參數(shù)wrt在決策轉(zhuǎn)換器模型上執(zhí)行SGD計(jì)算

【參考】github.com源碼倉(cāng)庫(kù)地址:Knights-of-Papers/src/Decision-Transformer/DecisionTransformer.py。

結(jié)果評(píng)析

為了訓(xùn)練所有上述這些模型,我選擇在NVIDIA RTX 4090 GPU計(jì)算機(jī)上運(yùn)行了這些算法,以便利用這些算法中新加入的在GPU加速方面的支持。在此,非常感謝GPU共享市場(chǎng)vast.ai!以下給出各算法對(duì)應(yīng)的損失曲線:

DDPG算法損失(2000回合)

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

使用Matplotlib表示的損失圖表(本人繪制)

I2APPO算法損失(3500回合)

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

使用Matplotlib表示的損失圖表(本人繪制)

SAC算法損失(5000集)

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

使用Matplotlib表示的損失圖表(本人繪制)

決策轉(zhuǎn)換器算法損失(1600回合,每40個(gè)回合記錄一次損失)

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

使用Matplotlib表示的損失圖表(本人繪制)

通過(guò)比較以上各種算法的運(yùn)行結(jié)果(我自主地按訓(xùn)練時(shí)間進(jìn)行了加權(quán)),我發(fā)現(xiàn)策略轉(zhuǎn)換器的表現(xiàn)最好!考慮到DT是專門為利用GPU而構(gòu)建的,這是有道理的。最后,有興趣的讀者可以觀看我制作的視頻(https://www.youtube.com/watch?v=kpDfXqX7h1U),它將有助于您更細(xì)致地了解這些算法的實(shí)際性能。最后的比賽結(jié)果是,這些機(jī)器人模型都在不同程度上學(xué)會(huì)了爬行和防止摔倒;但是,要想成為專業(yè)的拳擊手卻還有很長(zhǎng)的一段路要走。

有待改進(jìn)的方面

我了解到訓(xùn)練人形機(jī)器人是非常困難的。本實(shí)驗(yàn)中,我們是在高維輸入空間(視覺(jué)RGB和執(zhí)行器位置/速度)和令人難以置信的高維輸出空間(27維連續(xù)空間)中進(jìn)行的操作。

從一開(kāi)始,我所希望的最好的結(jié)果就是他們能夠彼此爬到一起,并相互決斗,盡管這也是一個(gè)挑戰(zhàn)。然而,大多數(shù)的訓(xùn)練結(jié)果甚至都沒(méi)有體驗(yàn)到將劍觸碰對(duì)手的高回報(bào),因?yàn)楠?dú)自行走太難了。

總結(jié)一下的話,需要改進(jìn)的主要方面也就是增加訓(xùn)練時(shí)間和使用的計(jì)算量。正如我們?cè)诂F(xiàn)代人工智能革命中所看到的那樣,這些增加的計(jì)算和數(shù)據(jù)趨勢(shì)似乎沒(méi)有上限!

最重要的是,我學(xué)到了很多!下一次,我會(huì)使用NVIDIA的技能嵌入或終身學(xué)習(xí),讓機(jī)器人在學(xué)會(huì)戰(zhàn)斗之前學(xué)會(huì)走路!

最后,如果您要觀看我制作的視頻,了解創(chuàng)建這個(gè)項(xiàng)目的完整過(guò)程,并觀看機(jī)器人的戰(zhàn)斗場(chǎng)景,請(qǐng)觀看下面的視頻(https://youtu.be/kpDfXqX7h1U):

訓(xùn)練模擬人形機(jī)器人的五種強(qiáng)化學(xué)習(xí)技術(shù)大PK-AI.x社區(qū)

我試著用新的強(qiáng)化學(xué)習(xí)論文中的算法讓模擬機(jī)器人進(jìn)行打斗(本人自制圖片)

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:??The Tournament of Reinforcement Learning: DDPG, SAC, PPO, I2A, Decision Transformer??,作者:Anand Majmudar


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
1
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦