當前位置:
首頁 > 最新 > RoboMaster AI 挑戰賽科研思路淺談

RoboMaster AI 挑戰賽科研思路淺談

1

RoboMaster AI挑戰賽的報名工作就要截止了,到1月18日為止比賽已經吸引了9個國家和地區的60多支隊伍報名參賽。隊伍報名之後首先要提交技術報告介紹自己隊伍的基本情況和參賽的基本思路,優秀技術報告就可以得到組委會的物資贊助。大部分隊伍的技術報告都寫的很不錯,可是因為比賽資金和場地承載能力有限,我們不得不選出25支隊伍發放了比賽物資贊助。不管隊伍是否獲得了贊助,我們都希望大家能夠繼續研究下去,一起在RoboMaster的平台上探索新的AI技術。

報名工作截止之後,就可以分享一些個人想法給參賽的隊伍了。由於我並不是AI方面的專家,這項比賽也暫時沒有吸引世界一流的AI研究人員關注(希望我們的參賽選手可以變成世界一流的AI研究人員),所以本文中的討論都比較粗淺,權當給隊伍進行拋磚引玉。

在RoboMaster AI挑戰賽中,一台機器人需要執行以下幾種智能行為:

很多隊伍都提到了想要用DRL來進行機器人的決策,這確實是近年來的研究熱點,也是機器人學非常有希望的方向。但是,在RoboMaster AI挑戰賽中應該如何去應用DRL,是一個值得探討的問題。一蹴而就實現端對端決策能力不僅需要強大的計算能力和蒙特卡洛方法克服局部最優的問題,也需要面對因為放棄傳統方法的積累而引發的質疑。

2

由於近年來的人工智慧熱潮,RoboMaster參賽者們一般會關注深度學習視覺識別、目標追蹤這些話題,所以大家都會關注如何能把深度學習技術用到比賽中去。由於深度學習在機器人上的應用基本集中在端對端的控制,所以大家都能想到的研究問題是用端對端控制解決上述1,2和3問題,也就是訓練一個神經網路,輸入相機看到的圖像,直接輸出對機器人移動、發彈的控制指令。為了提高演算法的穩定性和預測能力,可能我們需要輸入不止一幀圖像,而是若干幀歷史圖像,內部的網路結構也選用LSTM這樣能夠記憶一些中間狀態的網路,而輸出量則是控制底盤的電機(4個連續量),控制機器人云台移動的電機(2個連續量)和是否發射的指令(1個離散量),就像下圖這樣:

然後中間神經網路的訓練採用Reinforcement Learning里的policy gradient方式。讓機器人在場地中跑動,自主識別、打擊對方機器人,如果機器人成功打中對方機器人,那麼對方機器人的裁判系統就會記錄到擊打的數據,這樣根據根據裁判系統給出的是否擊打成功的數據,機器人就可以獲得一個reward。直接把reward當做當時的value function,那麼很容易得到一個policy gradient用來調整神經網路的權值,這個演算法叫做REINFORCE(Williams 1996)。

RoboMaster相比其他實際環境中的機器人應用的好處是因為我們已經用了好幾年的時間來研究機器人裁判系統,所以能夠比較便捷地提供訓練的數據。雖然如此,大家還是可以想像,這樣的訓練方法還是很低效的,可能在訓練初期,機器人跑一個上午也就成功打中一兩次目標。而要訓練好這樣具有成千上萬個參數的大型的神經網路,機器人要積累上百萬次打擊的數據,先不說積累這麼多數據需要多少時間,可能機器人本體都堅持不了運行這麼久就會壞掉。

和上述這個演算法的思路比較類似的是CMU教授Abhinav Gupta最近的paper 「Learning to Fly by Crashing」,目的是用端對端深度神經網路實現多旋翼飛行器的自動避障,為了收集訓練數據,他們的飛機炸了11500次。但這還不是全部,因為實際上神經網路的權值是首先用ImageNet的數據集和結果預先初始化過的,所以重頭訓練的話需要的數據量肯定更大:

3

花了這麼多篇幅介紹端對端的演算法,也談了端對端演算法訓練的難度,另外我覺得,原理上來說,端對端控制並非是機器人的最優決策和控制方式。雖然Berkeley的Sergey Levine和Peter Abbeel等教授用DRL實現了相當出色的機器人控制程序,但是純靠視覺信息輸入的深度神經網路控制器肯定是不符合人類的決策和控制方式的。人抓取一個桌上的杯子,可以靠手眼協調實現,也可以閉上眼睛僅憑指尖的觸覺實現,而且兩種方式的切換並不存在學習過程。另外神經科學的研究也告訴我們,人類的神經系統中腦和脊髓都能夠控制整個身體的運動,許多動作的執行和決策並不經過大腦,這種層級關係說明了端對端控制的非自然性,因此,可能也是被自然淘汰的決策和控制方式。

當然,人類的學習能力必須被機器人所實現,這毋庸置疑,只是需要妥善地平衡機器學習技術和傳統方法在一台機器人中的使用範圍,使得機器學習技術不需要處理過於高維的輸入數據,這樣能夠避免維數災難、減少訓練所需要的數據量;而傳統控制方法也能夠減少對模型的依賴和雜訊的干擾。兩者結合一定是更加高效和穩健的演算法。

在MIT教授Russell Tedrake的博士論文(Tedrake 2004b)里,他提供了一種結合增強學習技術和傳統控制技術的演算法思路,並用來提高Marc Raibert教授的Hopper機器人控制器:

直接把一個傳統控制器和一個基於神經網路的控制器的輸出相加作為最後給到執行器的指令。他的實驗也證明了神經網路控制器能讓機器人在一些傳統控制器不能起作用的狀態下恢復平衡。

這種結合方法有一個顯而易見的問題就是兩者相加為什麼不是加權平均而是等權重的平均。根據兩種控制器在不同環境中的適用情況和穩定性給他們不同的權值,應該能夠獲得更穩定、更連續的表現。

對於傳統控制器來說,權值較好確定,如果是簡單的PID控制,不管是I項誤差過大還是D項誤差變化過大,都側面表現了控制器可能無法收斂或者發生了劇烈的振蕩,說明我們應該降低控制器的權值;如果是基於模型的控制方法,那麼卡爾曼濾波或者其他的狀態觀測器都能夠通過協方差矩陣或者觀測矩陣的性質給出控制器表現的評估,從而給出權值。

但是對於一個神經網路的控制器,我們怎麼衡量它當前的控制表現呢?換句話說,一個神經網路輸入圖片然後可以輸出一個結果,但是並不能同時告訴我們它對這個結果的置信度是多少。因此神經網路給出的控制指令,我們並不知道該給這個控制指令多大的權值。我前陣子和CMU的Maxim Likhachev教授討論過這個問題,一個方法是神經網路前向傳播後,看最後一層的連接權值的信息熵,因為層間權值代表了概率,概率越分散說明網路對某一個輸出越沒有信心;另一個方法也類似,觀察某一些特定層之間連接權值的分布。不過這些都只是猜想,並沒有合理的實驗做驗證。

4

相信RoboMaster是一個非常合適研究這個問題的平台。回到RoboMaster機器人的例子,還是為了解決移動、識別目標和打擊目標的問題,還是要通過學習的方法,但是平衡機器學習技術和傳統方法的使用範圍。我們可以設計一個類似Tedrake教授方法的混合控制器,其中傳統控制的部分里,演算法對相機的圖像做特徵點提取、模板匹配、幾何結構搜索等方法找到目標,然後用卡爾曼濾波等方法估算目標位置做tracking,然後通過PID控制雲台的位置然後進行目標擊打;機器學習的部分則繼續用之前端對端的方式設計一個神經網路控制器,並且採用policy gradient reinforcement learning來學習。兩個控制器加權平均作為最後的混合控制器的輸出,這個輸出的表現由裁判系統給出的是否擊打成功的信息評估,併產生reward用於policy gradient的計算。

熟悉policy gradient的朋友可能要問,如果通過policy gradient來學習這樣一個混合的控制器,該如何求這個混合控制器的log gradient。幸好,在這個混合控制器的情況下,log gradient中只包含神經網路自己的參數,那麼通用的深度學習工具比如Tensorflow和PyTorch都提供了現成的工具計算神經網路的log gradient。

從policy gradient整體的框架上來看,兩種控制器加權平均的方法還能讓我們通過調整權值來加快神經網路收斂的速度、降低variance。第3節所說想法中,讓權值代表控制器的控制表現,這是當控制器實際投入使用時的狀態。而在控制器的訓練階段,我們可以讓權值代表訓練的進度,在剛開始訓練的時候,傳統控制器權值高,而神經網路控制器的權值低,這樣policy gradient的貢獻更多地來自傳統控制器的結果,收斂速度低,但是variance也會較低,而訓練一段時間以後,調低傳統控制器的權值,調高神經網路控制器的權值,這樣收斂速度會提高,而且網路已經接近收斂,variance還是能保持在較低的水平。

雖然這樣做會讓神經網路控制器逐步收斂到傳統控制器附近的局部最優,很可能這個局部最優比全局最優差不少,但是因為傳統控制器已經提供了一個表現不錯的擊打策略,所以神經網路控制器的收斂速度可以大大加快。我們可以嘗試設計不同的傳統控制器,用類似Berkeley教授Sergey Levine的Guided Policy Search的辦法,來用不同的傳統控制器引導神經網路收斂到不同的局部最優,然後比較選擇出相對更好的那一個,也就更接近全局最優。

雖然這是一個顯而易見的明確研究方向,但是設計一個混合控制器的科研價值遠遠大於應用價值。它能幫助我們研究如何在實際環境中提高增強學習收斂性,但是我估計混合控制器的表現不會讓機器人變得神擋殺神佛擋殺佛戰鬥力爆表,因為這個混合控制器在整個RoboMaster賽場的層面上看只是一個小小的戰術優化:讓機器人打得更准,但是整個比賽還涉及到進攻和防禦的陣型、方案的決策、機器人之間的協作等等戰略問題,單獨優化一個射擊時的控制器很難直接影響到整個比賽的輸贏。

5

如果從整個RoboMaster比賽的角度來說,我們更應該研究如何通過AI演算法讓機器人具備戰略思維。對於這個研究方向我們要設計合適的比賽場景作為研究基礎,RoboMaster每年7月的對抗賽並不是最合適的研究平台,因為對抗賽中一支隊伍要出場7個機器人,角色和定位各有千秋,比賽場地里也有很多具有戰略意義的道具和元素,這項賽事設計的方向是讓學生把機器人的性能推到極限,然後通過人和機器人的協作來制定策略取勝,我們很難讓RoboMaster對抗賽里的機器人一下變成全自動、自己設計比賽的策略。我們需要有一個更加簡單的場景、更少的機器人,這樣問題的難度和維數不至於太大。因此RoboMaster組委會設計了RoboMaster AI挑戰賽,在一個簡單的比賽場地中思考機器人2對2的策略和協作。

在之前的文章里我就提到過:

在過去一年中,我們看到了很多應用深度強化學習(Deep Reinforcement Learning,DRL)解決遊戲問題的例子,比如Doom這款著名的第一人稱射擊遊戲就被改造成了一個DRL研究的平台。著名AI科學家田淵棟在專欄里多次提到自己在這個平台上的工作ICLR總結。另外DeepMind和暴雪聯合發布了在即時戰略遊戲《星際爭霸2》上的機器學習平台。

從我的角度看來,星際爭霸2是非常複雜的遊戲,現有的機器學習技術和工具,恐怕短期內難以解決這個問題。而且就算解決星際爭霸2,從中訓練出來的AI可能依然不能應用到實際的機器人系統上。

而RoboMaster比賽中的機器人,則是一個更好的深度強化學習的研究平台。

即使是2對2的簡單的場景,而且雙方機器人的性能類似,策略也會非常難制定:兩台機器人應該一同進攻一台敵方機器人,還是各自進攻一台?滿血滿子彈情況下策略和已經殘血的情況下策略有什麼不同?我們由簡單到複雜做一些討論。

如果我們用傳統的方法來架構機器人的程序,最自然的方法是通過if-else或者switch-case語句,當血量處於某個範圍的時候執行一種邏輯,根據血量變化或者其他狀態的變化切換到其他的邏輯。這種程序的邏輯非常便於程序員編寫,因為我們可以清晰地把機器人的邏輯組織成狀態機,某一種狀態中有一套邏輯,也就可以分配給一個人來寫。比如下圖這樣的邏輯,我們把機器人任何時刻的狀態歸納到三個模式里,巡邏模式中機器人就是在場地中生成隨機的目標點走過去;定點模式就是在發現敵人之後走到敵人的附近;射擊模式就是機器人靜止,在相機的視野里識別目標然後攻擊:

這三個模式,各自都是通過ROS和一些成熟的開源演算法能夠實現的功能。射擊模式中的邏輯就是我們在第4節講「傳統控制」的時候提到的,一些計算機視覺和控制演算法的組合。三個模式的邏輯都很容易實現,稍微優秀點的EE、CS、自動化等專業的學生都應該可以在RoboMaster、Robocon這樣的機器人比賽里掌握實現邏輯和演算法的能力。

上面描述的是一個機器人的邏輯。如果是1對1,兩台機器人對抗,兩者程序邏輯都是相同的,那麼他們的程序應該會在碰面之後一同跳轉到攻擊模式,然後面對面射擊到最後剩下一個,這種情況下毫無策略可言。所以也許我們需要增加一些狀態,把射擊模式細分成定點射擊和一邊左右平移一邊射擊。當自己的血量有優勢的時候,定點射擊就好,而血量比對方低的時候,就左右平移加射擊。

那麼當己方隊伍有兩台機器人的時候,策略該怎麼設計?當然我們可以讓兩台機器人各自都按照上面所說的狀態機邏輯獨立運行互不干擾。但是我們還是希望機器人可以進行密切的配合,最na?ve的辦法就是把兩個機器人的狀態疊加起來,讓兩個機器人各自的3個狀態合併成9個狀態,就像下圖所示:

可想而知,狀態增加以後,狀態之間的跳轉關係將會平方倍地增加,設計越多的狀態,書寫狀態之間跳轉的邏輯將會越加繁雜困難。但是這依然是可解的,因為我們要處理的問題從機器學習的角度看並不複雜,如果我們設計一個「決策神經網路」,輸入是機器人現在和過去一段時間的狀態以及感測器的信息,輸出是即將要跳轉的狀態,那麼這個神經網路的參數還是比一個端對端的控制器少很多。神經網路最後輸出的是可能要跳轉的狀態的概率,我們再用隨機數的方法選擇一個概率最大的狀態跳轉過去。比如現在我們處於1號機器人射擊、2號機器人巡邏的狀態,調用神經網路來確定在當前狀態下應該跳轉到哪個狀態。神經網路會告訴我們0.9的confidence跳轉到1號機器人巡邏、2號機器人射擊的狀態,0.1的confidence跳轉到1號機器人射擊、2號機器人射擊的狀態。我們生成0-1之間的隨機數,如果隨機數小於0.1則按後一種方式跳轉,否則就按前者。

對這個神經網路的訓練還是可以用增強學習里的policy gradient方法。不過因為一個狀態會延續較長的時間段,機器人互相擊打的戰鬥情況很難直接給「狀態跳轉得是不是好」這件事情提供reward,我們需要在policy gradient裡面使用value function而不是直接的reward,這也符合policy gradient theorem最基本的形式(Sutton 1999)。當然Valuefunction的設計是個比較難的問題,我們需要借用Actor Critic的方法,增加一個對value function的approximation一同訓練。

因此,我們就可以把手工編寫的狀態跳轉邏輯用人工智慧取代,構成一種「底層控制由傳統控制技術實現,而上層決策由AI技術來實現」的雙層級控制和決策體系。編寫程序的程序員要關注的是一方面是每一個狀態內的邏輯用傳統的方法來實現,另一方面應用人工智慧來簡化狀態之間跳轉的邏輯書寫的問題。

上述問題可以為以後更加複雜的多機器人協同任務打下基礎。如果我們能用這種方式使得2台機器人在9個狀態中間跳轉,那也能訓練好3台機器人在27個狀態中的跳轉,甚至更多的機器人。

另外一個有趣的研究方向是,如果兩隊機器人都使用同一套神經網路訓練的方式一邊對抗一邊累計value function並且進行policy gradient調整,最後兩組機器人負責狀態跳轉的決策神經網路會不會收斂到相同的參數值,或者會不會收斂。這個實驗的結果肯定能夠讓我們對隨機系統中神經網路的訓練有更多的認識。

6

我感覺上面幾個研究的方向,發表2-3篇ICRA、IROS水平的文章應該沒有問題,平衡機器學習技術和傳統方法的使用範圍的研究也許能夠深挖一下發發NIPS。

RoboMaster AI挑戰賽組委會將在下周發布基於NvidiaJetson TX2開發的RoboRTS開源系統框架,為上面這些演算法的開發提供一個基本的平台,我們藉助ROS實現了基本的消息傳輸框架以及代碼組織的框架,由於這個工作主要是代碼框架的編寫,所以裡面的具體功能,包括自動導航和自動射擊都沒有優化到非常高的水平,不過平台能夠讓使用者較快地進行AI演算法的開發,希望關注RoboMaster比賽的朋友如果有想法的話可以一起在這個平台上努力努力。


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

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


請您繼續閱讀更多來自 YY時間 的精彩文章:

TAG:YY時間 |