
Amazon DeepRacer 是一款專門為幫助開發人員進行強化學習(Reinforcement learning)實踐而開發的1/18 比例的完全自動駕駛賽車。Amazon DeepRacer 為開發人員提供了一種學習強化學習的簡單方法,用新的強化學習算法和模拟到真實域傳輸方法進行實驗,并在現實世界中體驗強化學習。開發人員可以在線上模拟器中訓練、評估和調整強化學習模型,将他們的模型部署到Amazon DeepRacer 上,進而獲得現實世界的自動駕駛經驗,并參加Amazon DeepRacer League 的比賽。
在開啟Amazon DeepRacer之旅之前,我們首先在Amazon DeepRacer 線上模拟器中進行模型訓練。一般而言,在訓練完成後,我們需要追溯訓練過程中agent的運動情況,并進行針對性分析,才能優化強化學習核心reward function設計。在本文中,我們将會闡述針對訓練過程運動日志分析的操作步驟,并針對分析結果進行reward function的調優與調優後對比。
打開Amazon DeepRacer控制台,點選Reinforcement learning—Your models,選擇對應模型。
在Training下,點選Download logs。
解壓模型檔案後,我們會看到如下層級:
其中logs下為訓練過程日志,metrics下為訓練過程名額,sim-trace下為每個iteration下的trace以及對應award的記錄。我們有多種方式對于過程資料進行分析,這裡主要分析不同reward function對于sim-trace的影響。
為了統一進行分析,首先需要将所有training-simtrace下的csv進行concat,腳本如下圖所示:
運作後,在$OutFileName路徑下生成新的.csv檔案。之後,我們将訓練日志按episode來進行劃分,依次檢視在訓練不同階段的reward以及對應的action變化:
Waypoint限制reward function下train log 可視化。
上圖所示是一個進行了局部waypoint限制的reward function下的0-10% episode與90%-100% episode的reward記錄,可以看到,在該reward下,模型快速收斂,并且迅速擷取到較高reward記錄。
all_wheels_on_track,速度與轉向限定reward function下train log 可視化。
不同的reward function下reward分布不同,上圖所示對于all_wheels_on_track,速度與轉向進行了限定的訓練log展示,該圖中reward峰值連續且均勻,但是在連續過彎時候因為沒有waypoint限制容易出界,即上圖中的黃色區域。
Steer
throttle
Waypoint限制的reward function下的reward分布整體均勻,但是如果我們将feature換為steer或者throttle, 如上圖所示,可以看到,由于reward并沒有對于連續action的獎勵,action特别是throttle在訓練過程中呈不連續狀态。Throttle的不連續性不會影響completion_percentage,但是會影響速度,在競速比賽中難以拿到優秀成績。
針對這一問題,我們在reward function中額外增加了對于連續action的reward, 之後新的log如下圖所示:
Steer
可以看到,在限制了轉向與速度後,雖然動作變得更連續,但是原有waypoint的限制被弱化,整體線路不再順暢,特别是在左下角部分,出現了異常的彎道,這在實體賽會存在出圈的風險。同時,分析log不難看出,算法收斂也顯著變慢。可見,Reward設定需要綜合考慮多方面的因素,并留給算法足夠的優化空間,并不一定限制越多,效果越好。
強化學習的reward function設計需要持續進行優化。特别是在實體賽中,遇到的sim2real gap會帶來額外的調整。持續可視化訓練過程log的過程,也是我們逐漸了解不同reward function對模型結果影響的過程。
本篇作者
趙安蓓
亞馬遜雲科技解決方案架構師
負責基于亞馬遜雲科技雲平台的解決方案咨詢和設計,尤其在大資料分析與模組化領域有着豐富的實踐經驗。
聽說,點完下面4個按鈕
就不會碰到bug了!