如何使用深度強化學習幫助自動駕駛汽車通過交叉路口?
交叉路口是自動駕駛系統(tǒng)所面臨的難點之一。今年五月,來自賓夕法尼亞大學、本田研究院和喬治亞理工學院的研究者提出了一種使用深度強化學習幫助自動駕駛汽車通過交叉路口的方法。機器之心技術分析師 Shixin Gu 對這項研究進行了解讀,論文原文可訪問:https://arxiv.org/abs/1705.01196
對無人汽車的研究已經不再僅僅局限于識別交通燈或交通標志的簡單過程,而已經擴展到了多個生活場景中。用于衡量自動汽車的一個關鍵標準是看自動汽車是否能夠通過沒有信號的交叉路口。在這篇論文中,作者為我們提供了一種使用深度強化學習的新策略。與當前基于規(guī)則的方法相比,該方法能以一種有用的方式存儲和操作知識并解讀其中的信息,從而在任務完成時間和目標成功率等指標上達到更好的表現(xiàn)。該論文還表明,通過這個新策略使用深度強化學習可以實現(xiàn)更好的結果,平均成功率可以達到 99.64%,進行一次嘗試的時間成功地縮短到了平均 5.5 秒。該論文也指出在提升穩(wěn)健性上還需要更多努力。
1. 引言
即使是人類司機,交通事故中也有高達 20% 發(fā)生在交叉路口 [1]。這就意味著無人駕駛汽車要想學好通過交叉路口不是件容易的事。要成功通過交叉路口,需要完成三件事:1) 理解汽車的動態(tài)行為,2) 解讀其他司機的意圖,3) 以可被預測的方式行動以便其他司機能夠合適地響應。這需要在大量有沖突的目標之間尋找平衡,其中包括安全性、效率和最小化對車流的破壞。
基于規(guī)則的處理交叉路口任務的方法主要分為兩大類:協(xié)同方法(cooperative methods)[2] 和啟發(fā)式方法(heuristic methods)[3]。由于需要車輛與車輛之間的通信,協(xié)同方法不能擴展用于通用的交叉路口處理。當前最佳的方法是一種基于碰撞時間(TTC/time-to-collision)[4] 的基于規(guī)則的方法。TTC 有很多優(yōu)勢,比如它很可靠,但也有一些局限性。首先,TTC,由于假設汽車速度恒定,所以 TTC 模型會忽略幾乎所有關于司機意圖的信息。其次,人類司機的不可預測的行為使得基于規(guī)則的算法用起來非常復雜。最后,有很多案例表明使用 TTC 可能過于小心謹慎,這會帶來不必要的延遲。
正如該論文提到的那樣,用于處理交叉路口任務的機器學習方法主要有三種:模仿學習(imitation learning)、在線規(guī)劃(online planning)和離線學習(offline learning)。該論文的作者選擇了離線學習方法,并且也解釋了模仿學習和在線規(guī)劃不合適的原因。對于模仿學習而言,當其智能體處于一個其從未學習過的狀態(tài)時,它就無法提供解決方案。在線規(guī)劃模型則依賴于已有的準確的生成模型。圖 1 給出了通過繁忙的交叉路口的過程。
圖 1:通過一個繁忙的交叉路口。紅色車是自動汽車,黃色車是當前交通狀況。目標是確定一路上的加速方式。
2. 方法
在這一節(jié),該論文的作者將交叉路口處理任務看作是強化學習問題。他們使用了一個深度 Q 網(wǎng)絡(DQN)來學習狀態(tài)-動作價值 Q 函數(shù)。該方法可以分為 5 個部分:
強化學習(RL):這部分是介紹強化學習,我將使用最簡單的方法來描述強化學習的過程。在強化學習模型中,處在狀態(tài) st 的智能體會根據(jù)在時間 t 的策略 p 采取動作 at,然后該智能體轉換到狀態(tài) st+1,并獲得獎勵 rt。這被形式化為了一個馬爾可夫決策過程(MDP),然后使用 Q 學習來執(zhí)行優(yōu)化。
Q 學習:這部分介紹了 Q 學習。我推薦讀者先學習一下 Q 學習,這樣讀這篇論文會更容易。Q 學習的本質是使用動作價值函數(shù) Qp(s,a) 的平均值來估計實際值,而且其會隨數(shù)據(jù)的增加而更新。
動態(tài)幀跳過(Dynamic Frame Skipping):動態(tài)幀跳過是選擇(options)[5] 的一種簡化版本,讓智能體可以在更長的時間范圍里選擇動作,這可以改善智能體的學習時間。
經驗回放優(yōu)先級排序(Prioritized Experience Replay):該論文使用了經驗回放來打破智能體連續(xù)步驟之間的關聯(lián)。經驗回放緩沖器(experience replay buffer)會保存之前的軌跡,這意味著發(fā)生頻率較低的重要序列也會被采樣。這將能避免排序列表的計算,平衡各種軌跡的獎勵的樣本可以替代這種計算。
狀態(tài)-動作表征:因為自動汽車使用了傳感器,所以允許大量的狀態(tài)和動作表征。這篇論文提出了兩種表征。第一是序列動作(sequential action),其中智能體會獲得一個期望路徑,然后決定選擇加速、減速或保持速度。第二是 Time-to-Go,其中智能體要確定等待或出發(fā)的時間。前者讓我們可以觀察是否更復雜的行為就更好,后者讓我們可以關注出發(fā)時間,從而讓我們可以了解出發(fā)時間變化會如何影響汽車的表現(xiàn)。
3. 實驗
在這一部分,論文作者基于各種交叉路口場景訓練了兩個 DQN(序列動作和 Time-to-Go)。然后他們將得到的表現(xiàn)與啟發(fā)式 Time-to-Collision(TTC)算法進行了比較。TTC 策略使用了單個閾值來決定何時通過路口,這也是本論文分析的基準。本論文使用了 Sumo 模擬器 [6] 來運行實驗。該模擬軟件包可以幫助用戶模擬不同場景下的各種交通情況。它可以幫助建模道路網(wǎng)絡、道路標志、交通燈、大量汽車,而且還可以促進在線的交互和車輛控制。如圖 2 所示,有 5 種不同的交叉路口場景。該論文作者給出了一系列參數(shù)來設置場景,并且還給出了 4 個評估該方法的指標:成功百分比、碰撞百分比、平均時間和平均制動時間。對于 TTC 和 Time-to-Go DQN,所有的狀態(tài)表征都忽略了遮擋,并假設所有的汽車都總是可見的。
序列動作網(wǎng)絡(sequential action network)是一個帶有 leaky ReLU 激活函數(shù)的全連接網(wǎng)絡。其中有 3 個隱藏層,每個隱藏層有 100 個節(jié)點;最后還有一個線性層,有 12 個輸出,分別對應于 4 個時間尺度(1、2、4、8 個時間步驟)的 3 個動作(加速、減速和保持速度)。Time-to-Go DQN 網(wǎng)絡使用了一個卷積神經網(wǎng)絡,其帶有兩個卷積層和一個全連接層。第一個卷積層有 32 個 6×6 的濾波器,步幅為 2;第二個卷積層有 64 個 3×3 的濾波器,步幅也為 2;全連接層有 100 個節(jié)點。所有層都使用了 leaky ReLU 激活函數(shù)。最后的線性輸出層有 5 個輸出:一個 go 動作和 4 個時間尺度(1、2、4、8 個時間步驟)的 wait 動作。在本實驗中,經驗回放緩沖器可存儲 100,000 個時間步驟,并且有兩個緩沖器,一個用于碰撞,另一個用于成功和超時。對于獎勵,該論文使用 +1 表示成功,-10 表示碰撞,-0.01 用于步驟成本。
圖 2:不同交叉路口場景的可視化
4. 結果
表 1:不同算法的比較
結果可見于表 1、圖 3、圖 4,我們可以看到以下結果:
(1)TTC 方法在任何場景下都沒有碰撞。在 DQN 方法中,DQN Time-to-Go 有比 DQN-sequential 遠遠更低的碰撞率。
(2)與 TTC 相比,DQN 方法在實現(xiàn)目標上要有效得多。平均而言,DQN Time-to-Go 在實現(xiàn)目標上比 TTC 快 28%,DQN Sequential 比 TTC 快 19%。這意味著 DQN 方法有減少交通堵塞的潛力。
(3)除了一個案例外,DQN Time-to-Go 有最高的幾率得到最好的結果,參見圖 3.
圖 3:所有方法和場景的結果比較
(4)盡管 DQN 方法顯著更高效,但它們并不如 TTC 一樣善于最小化碰撞次數(shù)。
(5)在圖 4 中,我們可以看到當論文作者在速度與安全性之間尋求權衡時,DQN 的表現(xiàn)超越了 TTC 的表現(xiàn)。這說明設計一個 0 碰撞率的算法是可能的。
圖 4:隨著 TTC 的閾值變化,通過時間與碰撞率的權衡
注意 DQN 的表現(xiàn)在每個案例中都最好。由于尺度原因,高難度場景沒有包括進來,但結果是類似的。
由于 DQN 沒有實現(xiàn) 0% 的碰撞率,所以該論文作者嘗試尋找解決這一問題的方法,因為 0 碰撞率是非常重要的。根據(jù)多任務學習 [7] 的核心原理,作者認為在多場景上訓練可以提升表現(xiàn)。圖 5 給出了遷移表現(xiàn),具體數(shù)據(jù)參見表 2 和表 3,這將有助于作者理解深度網(wǎng)絡系統(tǒng)的泛化方式。我們可以看到更有難度的場景可以遷移到更容易的場景,但車道數(shù)量的變化會帶來干擾。
圖 5:遷移表現(xiàn)。在一個場景中訓練的網(wǎng)絡在不同的場景中運行,以評估每種方法的泛化能力。
表 2:DQN Sequential 的遷移表現(xiàn);表 3:DQN Time-to-Go 的遷移表現(xiàn)
然后論文作者給出了一個定性分析。在該分析中,作者指出該 DQN 可以準確預測遠處車道在當前車輛通過該車道時的交通狀況。另外該 DQN 司機還能預測即將到來的車流是否有足夠的時間制動。作者還解釋了會有一些碰撞的原因。這種由離散化(discretization)導致的碰撞會在汽車幾乎錯過即將到來的車流時產生影響。論文還指出 TTC 往往會等到道路完全清空后才通過,如圖 6 所示,這種方法在實際情況下是不夠好的。
圖 6:DQN Time-to-Go 預測開闊空間出現(xiàn)的時機,然后開始按預期的明確路徑加速。TTC 會等到所有車都走過,但這會錯失機會。
5. 結論
對于這篇論文,作者提到了三個貢獻。第一個貢獻是將當前多種深度學習技術結合起來提升水平的全新思想。第二個貢獻是在 5 個不同的交叉路口模擬場景中將 DQN 與 TTC 的表現(xiàn)進行了比較分析。第三個貢獻是分析了訓練后的 DQN 策略遷移到不同場景的能力。
在我看來,未來還有兩個方面有待提升。一是卷積神經網(wǎng)絡的架構。有更多的復雜場景時,更深度的神經網(wǎng)絡可以得到更好的結果。我們可以在參考文獻 [8] 中找到同樣的結論,有一家自動駕駛公司將深度學習看作是打造可信賴的無人駕駛汽車的唯一可行方式,因為駕駛涉及到的情況太多了,而且很多事情都很艱難和微妙。另一個方面是關于碰撞率。我認為應該還有另一種讓碰撞率為 0 的方法,因為在人類選擇無人駕駛汽車時,安全性無疑是最重要的部分。這里只是通過這個模型或算法還不能實現(xiàn)這個目標,應該還有其它解決這個問題的方式。在奧迪汽車中,工程師應用了毫米波雷達、激光雷達、相機、超聲波探頭等等設備來互相補償和驗證,這可以幫助汽車做出正確的選擇
【本文是51CTO專欄機構“機器之心”的原創(chuàng)文章,微信公眾號“機器之心( id: almosthuman2014)”】