賴 俊,饒 瑞
陸軍工程大學(xué) 指揮控制工程學(xué)院,南京 210007
隨著飛行控制和新型材料等技術(shù)的突飛猛進(jìn),無人機(jī)得到越來越廣泛的發(fā)展和應(yīng)用。無人機(jī)已成功應(yīng)用到不同領(lǐng)域,如環(huán)境監(jiān)測、災(zāi)后救援、道路交通安全、制造浪漫等[1-2]。無人機(jī)體積小,在室內(nèi)封閉環(huán)境下執(zhí)行目標(biāo)搜索等任務(wù)時更方便,但室內(nèi)環(huán)境、空間結(jié)構(gòu)和障礙物的復(fù)雜性和未知性等,要求無人機(jī)對環(huán)境有較高的感知能力和響應(yīng)能力[3-4]。強(qiáng)化學(xué)習(xí)具有自學(xué)習(xí)和在線學(xué)習(xí)的特點(diǎn),能很好地適應(yīng)未知復(fù)雜環(huán)境,研究以其為基礎(chǔ)的室內(nèi)無人機(jī)目標(biāo)搜索具有重要的理論意義和實際應(yīng)用價值[5-6]。
文獻(xiàn)[7]提出了一種基于改進(jìn)遺傳算法的無人機(jī)航路規(guī)劃方法,文中通過改進(jìn)交叉和變異算子,更快更穩(wěn)更準(zhǔn)地搜索到每一次的最優(yōu)航線。在該文中起始地到目標(biāo)間的威脅和障礙事先知道,搜索區(qū)域的信息已知。文獻(xiàn)[8]結(jié)合動態(tài)搜索模式和固定搜索模式,先劃分搜索區(qū)域,再對重點(diǎn)子區(qū)域進(jìn)行固定模式搜索覆蓋,并動態(tài)搜索其余區(qū)域。兩種模式的結(jié)合,加快了無人機(jī)對任務(wù)區(qū)域的搜索,并在短時間內(nèi)能發(fā)現(xiàn)更多目標(biāo)。文獻(xiàn)[9]提出了一種未知環(huán)境下基于Q 學(xué)習(xí)的無人機(jī)目標(biāo)搜索算法,并與基于D-S 證據(jù)理論的方法進(jìn)行對比,仿真結(jié)果表明基于Q學(xué)習(xí)的搜索算法能適應(yīng)未知環(huán)境,較快速率地發(fā)現(xiàn)目標(biāo)。文獻(xiàn)[10]提出基于內(nèi)在好奇心的目標(biāo)搜索算法,先利用神經(jīng)網(wǎng)絡(luò)從原始輸入空間中生成特征空間,再在該空間中采樣進(jìn)行目標(biāo)搜索,并模擬了機(jī)器人手臂與物體相互作用的實驗,結(jié)果表明該搜索方法可應(yīng)用到工程。
目前,傳統(tǒng)用于目標(biāo)搜索的方法,搜索效率不高,且隨機(jī)搜索需對環(huán)境有一定的先驗知識[7]。因此引入強(qiáng)化學(xué)習(xí)來訓(xùn)練無人機(jī)進(jìn)行目標(biāo)搜索。強(qiáng)化學(xué)習(xí)模型由環(huán)境(Environment)和智能體(Agent)兩部分組成[11]。Agent憑借“試錯”的方法在與環(huán)境的不斷交互中進(jìn)行學(xué)習(xí)[12-14]。Agent在當(dāng)前時刻的狀態(tài)下,采取某動作后,轉(zhuǎn)移到下一時刻狀態(tài);環(huán)境接收到該動作后,不會告訴Agent 正確選擇(這點(diǎn)不同于監(jiān)督式學(xué)習(xí)),只會給Agent 提供反饋,Agent 根據(jù)反饋信息改變自身動作以適應(yīng)環(huán)境。當(dāng)收到正反饋信息時,Agent 就強(qiáng)化該行為策略,反之,該行為策略執(zhí)行的概率會降低。在強(qiáng)化學(xué)習(xí)中,Agent 利用與環(huán)境交互得到的獎賞來指導(dǎo)行為,以獲得最大獎勵。但當(dāng)無人機(jī)在室內(nèi)進(jìn)行隨機(jī)目標(biāo)搜索時,存在獎勵函數(shù)設(shè)計難,訓(xùn)練周期長,并容易陷入局部區(qū)域等問題。文中針對強(qiáng)化學(xué)習(xí)在室內(nèi)無人機(jī)目標(biāo)搜索中存在的問題,依據(jù)好奇心驅(qū)動思想,提出了基于空間位置標(biāo)注的好奇心驅(qū)動方法,以此提升無人機(jī)學(xué)習(xí)過程中的內(nèi)部獎勵,縮小訓(xùn)練周期,從而盡快完成訓(xùn)練。并使用Unity 3D 中 的 ML-Agents(Unity Machine Learning Agents)學(xué)習(xí)插件進(jìn)行仿真,實驗結(jié)果表明了該方法的有效性和可用性。
基于Unity 3D平臺對一個太空密閉方艙進(jìn)行三維仿真,并使用其中的開源插件ML-Agents在模擬環(huán)境中訓(xùn)練無人機(jī)[15-16]。ML-Agents包含三個高級組件(如圖1):(1)Learning Environment,包含Unity 場景和所有游戲角色;(2)Python API,包含用于訓(xùn)練的所有機(jī)器學(xué)習(xí)算法;(3)External Communicator,將 Unity 環(huán)境與 Python API連接起來,位于Unity環(huán)境中。
圖1 ML-Agent結(jié)構(gòu)圖
圖1 中的Brain 保存了每個Agent 的策略,并返回Agent在每個狀態(tài)下應(yīng)采取的動作。Agent有4個邏輯模塊:(1)CollectObservations(如圖2 和圖3),收集Agents的觀察輸入數(shù)據(jù)和自身velocity;(2)AgentAction,獲取VisualObservation的輸入值;(3)AgentReset,Agent重置;(4)對Agent進(jìn)行獎勵設(shè)置。
圖2 CollectObservations結(jié)構(gòu)圖
圖3 CollectObservations動作示意圖
太空艙三維仿真圖如圖4,二維平面圖如圖5。仿真環(huán)境中共包含12個艙室和3種類型的通道,分別為L型、T字型和十字型。
圖4 太空艙三維環(huán)境仿真示意圖
圖5 太空艙平面示意圖
12個艙室見圖中五角星和字母A到K的位置,每個艙室的內(nèi)部環(huán)境和裝飾基本一致,可提升無人機(jī)的泛化能力。在通道中設(shè)置了兩處高度不一樣的障礙物,分別位于太空艙底部和頂部(見圖5陰影長方形),障礙物可提高無人機(jī)的避障能力。
無人機(jī)(Agent)在該模擬環(huán)境下飛行時,每次從標(biāo)有五角星的位置開始進(jìn)行目標(biāo)搜索,搜索目標(biāo)每輪隨機(jī)出現(xiàn)在位置A到K上。在飛行過程中,當(dāng)撞到太空艙內(nèi)壁和設(shè)置的兩處障礙物,或長期停留在某塊區(qū)域內(nèi)時,此輪任務(wù)失敗,需重新開始新一輪訓(xùn)練;無人機(jī)憑借自身的雷達(dá)探測裝置,尋找目標(biāo)完成任務(wù),得到獎勵。
在模擬的太空艙環(huán)境下,單架無人機(jī)從固定位置開始搜索單目標(biāo),目標(biāo)每次在11 個位置隨機(jī)出現(xiàn)。艙內(nèi)狹長“胡同”較多,無人機(jī)易陷入該類局部區(qū)域,因此要求無人機(jī)在走到“胡同”底部時,接受最少的懲罰跳出該區(qū)域并繼續(xù)探索;設(shè)置的兩處高低障礙物,無人機(jī)很容易將它們誤認(rèn)為是“死胡同”,從而停止對前方的探索。無人機(jī)通過自身雷達(dá)感知收集觀察數(shù)據(jù),探測過程中應(yīng)盡量保持機(jī)身平穩(wěn),避免陡升陡降,減少數(shù)據(jù)誤差,傳感器的性能在一定程度上影響搜索效果。
深度強(qiáng)化學(xué)習(xí)算法很多,文中采用的是近端策略優(yōu)化(Proximal Policy Optimization,PPO)算法,該算法結(jié)合了Q-Learning 和深度學(xué)習(xí)的優(yōu)勢[9],是一種基于策略梯度(Policy Gradient)的異策略(off-policy)學(xué)習(xí)算法。與TRPO(Trust Region Policy Optimization)算法相比,TRPO算法新增了一個約束條件,讓新策略和舊策略的差異性(用KL 散度衡量)小于δ,但該帶約束的TRPO算法求解復(fù)雜。PPO 算法將約束作為目標(biāo)函數(shù)的正則化項,降低了算法求解難度。PPO 算法采用截斷(clip)機(jī)制,目標(biāo)函數(shù)如下[17]:
其中,rt(θ)= pθ(at|st)pθ_old(at|st),為新舊策略的概率比,上式說明新策略不會因遠(yuǎn)離舊策略而獲益[17]。當(dāng)?>0時,若rt(θ)>1+ε,則Lclip(θ)取到上限值 (1+ε)?;當(dāng)?<0 時,若rt(θ)<1-ε,則Lclip(θ)取到下限值 (1-ε)?。
由于無人機(jī)是在室內(nèi)封閉空間下進(jìn)行飛行訓(xùn)練,容易發(fā)生碰壁或長時間困在一個局部小區(qū)域內(nèi)無法飛出,從而不能完成任務(wù)。此時,引入好奇心,可以打破這種僵局,好奇心可以讓Agent勇敢進(jìn)入陌生環(huán)境去尋找目標(biāo)。因此,Agent 在搜索目標(biāo)的同時,還要對環(huán)境進(jìn)行探索。
好奇心激勵函數(shù),是在給定狀態(tài)st和動作at,Agent對狀態(tài)st+1的預(yù)測差,即:
函數(shù)φ是針對狀態(tài)的編碼函數(shù)。可由另一前向網(wǎng)絡(luò)產(chǎn)生,即:
和φ(st+1)相差越大,Agent的好奇心越強(qiáng)。
在一個復(fù)雜環(huán)境中,存在很多無關(guān)特征,Agent需要找到特征空間。自監(jiān)督預(yù)測包括前向編碼和逆動力學(xué)模型兩個模塊[18],前者將狀態(tài)st編碼成φ(st),后者用連續(xù)時刻的φ(st)和φ(st+1)來預(yù)測時刻t的動作at,而常規(guī)操作是用st和at預(yù)測st+1。該模型可有效提取有影響特征,過濾無用特征,因而能極大減少學(xué)習(xí)時間,提升學(xué)習(xí)效率。提取特征空間,表達(dá)為:
深度強(qiáng)化學(xué)習(xí)的目標(biāo)是找到使得獎勵期望達(dá)到最大化的策略[20-21],即:
綜合好奇心激勵函數(shù)和特征空間的選擇,得到最終的優(yōu)化目標(biāo):
為滿足好奇心,要最大化預(yù)測差Lp_s,即實現(xiàn)下一狀態(tài)的現(xiàn)實和預(yù)測脫節(jié),但對動作的預(yù)測要盡量和實際采取的動作一致,因此要最小化Lp_a,目標(biāo)函數(shù)中的后兩項也可看作是正則化項。
無人機(jī)在室內(nèi)飛行探索時,由好奇心激勵其進(jìn)入未知區(qū)域,但無人機(jī)不能區(qū)分某區(qū)域是否被探索過。此時,對周圍環(huán)境進(jìn)行標(biāo)注和存儲不失為一種好方法。
Savinov N 提出了基于情景記憶的好奇心模型[22]。在該模型中,Agent存儲對環(huán)境的觀察結(jié)果,并獎勵那些存儲記憶中不存在的觀察結(jié)果,使得Agent擁有進(jìn)入新環(huán)境的動力,有效防止其在原地停留或兜圈。
采用正六邊形對探索空間進(jìn)行劃分,下面描述基于空間位置標(biāo)注的好奇心驅(qū)動方法:
S(h)表示用正六邊形對高度為h的二維空間進(jìn)行區(qū)域劃分,S(h,k)表示第k塊區(qū)域,Ts(h,k)為無人機(jī)進(jìn)入第k塊區(qū)域的次數(shù),γ1、γ2和γ3分別表示無人機(jī)首次和非首次進(jìn)入某一區(qū)域的獎勵和懲罰因子以及找到目標(biāo)的獎勵因子。文中γ1=0.000 1,γ2=0.01,γ3=4,算法如下:
用無人機(jī)不同的位置坐標(biāo)描述其狀態(tài)空間,無人機(jī)的動機(jī)集合有9 個,分別為前進(jìn)、后退、左移、右移、左轉(zhuǎn)、右轉(zhuǎn)、上升、下降和無動作。動機(jī)和動作間映射關(guān)系見表1。
表1 無人機(jī)動機(jī)動作映射表
使用基于空間位置標(biāo)注的好奇心驅(qū)動方法,在二維平面環(huán)境下用正六邊形對空間進(jìn)行劃分,如圖6。
圖6 平面環(huán)境下的區(qū)域標(biāo)注示意圖
無人機(jī)在搜索過程中,獎勵規(guī)則如下:如果無人機(jī)進(jìn)入某一標(biāo)注區(qū)域,該標(biāo)注區(qū)域訪問次數(shù)加1,若該區(qū)域訪問次數(shù)等于1,則無人機(jī)獲得獎勵0.000 1 分,若該區(qū)域訪問次數(shù)大于1,則得到懲罰0.01分,無人機(jī)兩次在同一區(qū)域,視為無動作,該區(qū)域訪問次數(shù)依舊加1,并接受懲罰;無人機(jī)撞墻或是撞到障礙物,都接受懲罰;為了最快到達(dá)搜索目標(biāo),無人機(jī)每走一步也接受懲罰。無人機(jī)獎勵規(guī)則見表2。
表2 無人機(jī)獎勵規(guī)則
在訓(xùn)練Agen(t無人機(jī))時,ML-Agents 的參數(shù)設(shè)置見表3。
表3 ML-Agents訓(xùn)練參數(shù)表
基于TensorFlow 實現(xiàn)訓(xùn)練工作,訓(xùn)練完成后,得到的策略(policy)是一個TensorFlow 的模型文件。使用2層且每層隱單元個數(shù)為512的神經(jīng)網(wǎng)絡(luò)訓(xùn)練無人機(jī),優(yōu)化器使用PPO算法,算法中的截斷系數(shù)ε=0.2,memory_size為256,batch_size為128,learning_rate為0.000 3,存儲空間標(biāo)注信息的buffer_size為2 048,use_curiosity為True,max_steps為1 000 000,Agent 的獎勵由兩部分組成,一個是外部獎勵,完成目標(biāo)時環(huán)境給予4分,另一個是由好奇心決定的內(nèi)部獎勵,通過為每一個動作提供子獎勵來促使Agent快速完成任務(wù)。
調(diào)用TensorBoard,可看到Agent的訓(xùn)練結(jié)果,如圖7和圖8。
圖7 平均累積獎勵和內(nèi)在獎勵
圖8 回合內(nèi)探索次數(shù)和逆向模型損失
由圖7 可知,在訓(xùn)練期間,每一輪的平均累積獎勵逐漸增加,并最終無限接近于外在獎勵4 分,說明經(jīng)訓(xùn)練后,Agent能迅速找到目標(biāo),完成任務(wù),獲得外在獎勵;而內(nèi)在獎勵隨著訓(xùn)練的推進(jìn),呈逐漸下降的趨勢,并趨于零。因為在訓(xùn)練初期,Agent通過好奇心的內(nèi)在獎勵,不斷探索環(huán)境,內(nèi)在獎勵發(fā)揮較大的作用;Agent在訓(xùn)練后期已能快速搜索到目標(biāo),拿到外部獎勵,內(nèi)部獎勵的作用隨著訓(xùn)練次數(shù)的增加逐漸減弱并趨零。
由圖8可知,每個回合內(nèi)的探索次數(shù)隨著訓(xùn)練逐漸減少,說明Agent 逐步學(xué)習(xí)到了最優(yōu)的搜索策略,并學(xué)習(xí)到躲避障礙物,搜索次數(shù)越來越少,搜索效率不斷提升,訓(xùn)練效果好,訓(xùn)練后能較快較準(zhǔn)地找到隨機(jī)出現(xiàn)的目標(biāo)。逆向模型的損失呈逐漸下降的走勢,說明Agent在通過各種類型的通道時,能做出觀測和合理的動作,如在通過十字形通道時,能夠檢查兩側(cè)是否存在目標(biāo),避免了飛入無目標(biāo)艙室后進(jìn)行多余的檢查。
文中使用U3D這樣一個通用游戲引擎搭建了一個復(fù)雜的室內(nèi)無人機(jī)飛行環(huán)境,使用ML-Agents 實現(xiàn)了TensorFlow 與Agents 的對接,采用PPO+基于空間位置標(biāo)注好奇心探索的算法展現(xiàn)了一個3D環(huán)境下的一個小型無人機(jī)如何進(jìn)行深度強(qiáng)化學(xué)習(xí)。通過這種可視化的深度強(qiáng)化學(xué)習(xí),Agents 學(xué)會了在陌生地域搜索隨機(jī)目標(biāo)、避障和調(diào)整飛行高度等技能。仿真環(huán)境及實驗結(jié)果表明,U3D的ML-Agents是一個出色自由的深度強(qiáng)化學(xué)習(xí)開發(fā)平臺,通過學(xué)習(xí)訓(xùn)練,無人機(jī)在飛行時的平穩(wěn)保持性、對障礙物判斷的精準(zhǔn)性、探索的高效性、執(zhí)行動作的合理性等各項性能得到顯著提升;相較于傳統(tǒng)的搜索方式,基于空間位置標(biāo)注的好奇心驅(qū)動方法,克服了無人機(jī)陷入局部區(qū)域的缺陷,有效縮短訓(xùn)練周期,提升搜索到隨機(jī)目標(biāo)的準(zhǔn)確率,編碼量更少,智能水平更高。