本文著重介紹增強學習在無人駕駛中的應用。增強學習的目的是通過和環(huán)境交互,學習如何在相應觀測中采取最優(yōu)行為。相比傳統(tǒng)的機器學習,它有以下優(yōu)勢:首先,由于不需要標注的過程,可以更有效地解決環(huán)境中存在的特殊情況。其次,可以把整個系統(tǒng)作為一個整體,從而對其中的一些模塊更加魯棒。最后,增強學習可以比較容易地學習到一系列行為。這些特性十分適用于自動駕駛決策過程,我們在本文深入探討增強學習如何在無人駕駛決策過程中發(fā)揮作用。
增強學習簡介
增強學習是最近幾年中機器學習領(lǐng)域的最新進展。增強學習的目的是通過和環(huán)境交互學習到如何在相應的觀測中采取最優(yōu)行為。行為的好壞可以通過環(huán)境給的獎勵來確定。不同的環(huán)境有不同的觀測和獎勵。例如,駕駛中環(huán)境觀測是攝像頭和激光雷達采集到的周圍環(huán)境的圖像和點云,以及其他的傳感器的輸出,例如行駛速度、GPS定位、行駛方向。駕駛中的環(huán)境的獎勵根據(jù)任務的不同,可以通過到達終點的速度、舒適度和安全性等指標確定。
增強學習和傳統(tǒng)機器學習的最大區(qū)別是增強學習是一個閉環(huán)學習的系統(tǒng),增強學習算法選取的行為會直接影響到環(huán)境,進而影響到該算法之后從環(huán)境中得到的觀測。傳統(tǒng)的機器學習通過把收集訓練數(shù)據(jù)和模型學習作為兩個獨立的過程。例如,如果我們需要學習一個人臉分類的模型。傳統(tǒng)機器學習方法首先需要雇傭標注者標注一批人臉圖像數(shù)據(jù),然后在這些數(shù)據(jù)中學習模型,最后我們可以把訓練出來的人臉識別模型在現(xiàn)實的應用中進行測試。 如果發(fā)現(xiàn)測試結(jié)果不理想,那么我們需要分析模型中存在問題,并且試著從數(shù)據(jù)收集或者模型訓練中尋找原因,然后從這些步驟中解決這些問題。對于同樣的問題,增強學習采用的方法是通過在人臉識別的系統(tǒng)中嘗試進行預測,并且通過用戶反饋的滿意程度來調(diào)整自己的預測,從而統(tǒng)一收集訓練數(shù)據(jù)和模型學習的過程。增強學習和環(huán)境交互過程的框圖如圖1所示。
圖1 增強學習和環(huán)境交互的框圖
增強學習存在著很多傳統(tǒng)機器學習所不具備的挑戰(zhàn)。首先,因為在增強學習中沒有確定在每一時刻應該采取哪個行為的信息,增強學習算法必須通過探索各種可能的行為才能判斷出最優(yōu)的行為。如何有效地在可能行為數(shù)量較多的情況下有效探索,是增強學習中最重要的問題之一。其次,在增強學習中一個行為不僅可能會影響當前時刻的獎勵,而且還可能會影響之后所有時刻的獎勵。在最壞的情況下,一個好行為不會在當前時刻獲得獎勵,而會在很多步都執(zhí)行正確后才能得到獎勵。在這種情況下,增強學習需要判斷出獎勵和很多步之前的行為有關(guān)非常有難度。
雖然增強學習存在很多挑戰(zhàn),它也能夠解決很多傳統(tǒng)的機器學習不能解決的問題。首先,由于不需要標注的過程, 增強學習可以更有效地解決環(huán)境中所存在著的特殊情況。比如,無人車環(huán)境中可能會出現(xiàn)行人和動物亂穿馬路的特殊情況。只要我們的模擬器能夠模擬出這些特殊情況,增強學習就可以學習到怎么在這些特殊情況中做出正確的行為。其次,增強學習可以把整個系統(tǒng)作為一個整體的系統(tǒng),從而對其中的一些模塊更加魯棒。例如,自動駕駛中的感知模塊不可能做到完全可靠。前一段時間,Tesla無人駕駛的事故就是因為在強光環(huán)境中感知模塊失效導致的。增強學習可以做到,即使在某些模塊失效的情況下也能做出穩(wěn)妥的行為。最后,增強學習可以比較容易學習到一系列行為。自動駕駛中需要執(zhí)行一系列正確的行為才能成功的駕駛。如果只有標注數(shù)據(jù),學習到的模型如果每個時刻偏移了一點,到最后可能就會偏移非常多,產(chǎn)生毀滅性的后果。而增強學習能夠?qū)W會自動修正偏移。
綜上所述,增強學習在自動駕駛中有廣闊的前景。本文會介紹增強學習的常用算法以及其在自動駕駛中的應用。希望能夠激發(fā)這個領(lǐng)域的探索性工作。
增強學習算法
增強學習中的每個時刻t∈{0,1,2,…}中,我們的算法和環(huán)境通過執(zhí)行行為at進行交互,可以得到觀測st和獎勵rt。一般情況中,我們假設環(huán)境是存在馬爾科夫性質(zhì)的,即環(huán)境的變化完全可以通過狀態(tài)轉(zhuǎn)移概率Pass′=Pr{st+1=s′|st=s,at=a}刻畫出來。也就是說,環(huán)境的下一時刻觀測只和當前時刻的觀測和行為有關(guān),和之前所有時刻的觀測和行為都沒有關(guān)系。而環(huán)境在t+1時刻返回的獎勵在當前狀態(tài)和行為確定下的期望可以表示為:Ras=E{rt+1|st=s,at=a}. 增強學習算法在每一個時刻執(zhí)行行為的策略可以通過概率π(s,a,θ)=Pr{at=a|st=s;θ}來表示。其中θ是需要學習的策略參數(shù)。我們需要學習到最優(yōu)的增強學習策略,也就是學習到能夠取得最高獎勵的策略。
ρ(π)=E{∑t=1∞γt?1rt|s0,π (1)
其中γ是增強學習中的折扣系數(shù),用來表示在之后時刻得到的獎勵折扣。同樣的獎勵,獲得的時刻越早,增強學習系統(tǒng)所感受到的獎勵越高。
同時,我們可以按照如下方式定義Q函數(shù)。Q函數(shù)Qpi(s,a)表示的是在狀態(tài)為s,執(zhí)行行為a之后的時刻都使用策略π選擇行為能夠得到的獎勵。我們能夠?qū)W習到準確的Q函數(shù),那么使Q函數(shù)最高的行為就是最優(yōu)行為。
Qπ(s,a)=E{∑k=1∞γk?1rr+k|st=s,at=a,π}=Es′[r+γQpi(s′,a′)|s,a,π] (2)
增強學習的目的,就是在給定的任意環(huán)境,通過對環(huán)境進行探索學習到最佳的策略函數(shù)π最大化rho(π)。下面的章節(jié)中我們會簡單介紹常用的增強學習算法。包括REINFORCE算法和Deep Q-learning算法。
REINFORCE算法
REINFORCE是最簡單的reinforcement learning算法。其基本思想是通過在環(huán)境里面執(zhí)行當前的策略直到一個回合結(jié)束(比如游戲結(jié)束),根據(jù)得到的獎勵可以計算出當前策略的梯度。我們可以用這個梯度更新當前的策略得到新策略。在下面的回合,我們再用新的策略重復這個過程,一直到計算出的梯度足夠小為止。最后得到的策略就是最優(yōu)策略。
假設我們當前的策略概率是πθ(x)=Pr{at=a|st=s;θ} (θ是策略參數(shù))。每個回合,算法實際執(zhí)行的行為at是按照概率π(x)采樣所得到的。算法在當前回合時刻t獲得的獎勵用rt表示。那么,策略梯度可以通過以下的公式計算。
?θρ(π)=∑t=1T▽θlogπ(at|st;θ)Rt (3)
其中π(at|st;θ)是策略在觀測到st時選擇at的概率。Rt=∑Tt′=tγt′-trt′是算法在采取了當前策略之后所獲得的總的折扣后的獎勵。為了減少預測出梯度的方差。我們一般會使用(Rt-bt)來代替Rt。bt一般等于Eπ[Rt],也就是當前t時刻的環(huán)境下使用策略π之后能獲得的折扣后獎勵的期望。
計算出方差之后,我們可以使用θ=θ+▽θρ(π)更新參數(shù)得到新的策略。
REINFORCE的核心思想是通過從環(huán)境中獲得的獎勵判斷執(zhí)行行為的好壞。如果一個行為執(zhí)行之后獲得的獎勵比較高,那么算出的梯度也會比較高,這樣在更新后的策略中該行為被采樣到的概率也會比較高。反之,對于執(zhí)行之后獲得獎勵比較低的行為,因為計算出的梯度低,更新后的策略中該行為被采樣到的概率也會比較低。通過在這個環(huán)境中反復執(zhí)行各種行為,REIFORCE可以大致準確地估計出各個行為的正確梯度,從而對策略中各個行為的采樣概率做出相應調(diào)整。
作為最簡單的采樣算法,REINFORCE得到了廣泛應用,例如學習視覺的注意力機制和學習序列模型的預測策略都用到了REINFORCE算法。事實證明,在模型相對簡單,環(huán)境隨機性不強的環(huán)境下,REINFORCE算法可以達到很好的效果。
但是,REINFORCE算法也存在著它的問題。首先,REINFORCE算法中,執(zhí)行了一個行為之后的所有獎勵都被認為是因為這個行為產(chǎn)生的,這顯然不合理。雖然在執(zhí)行了策略足夠多的次數(shù)然后對計算出的梯度進行平均之后,REINFORCE以很大概率計算出正確的梯度。但是在實際實現(xiàn)中,處于效率考慮,同一個策略在更新之前不可能在環(huán)境中執(zhí)行太多次。在這種情況下,REINFORCE計算出的梯度有可能會有比較大的誤差。其次,REINFROCE算法有可能會收斂到一個局部最優(yōu)點。如果我們已經(jīng)學到了一個策略,這個策略中大部分的行為都以近似1的概率采樣到。那么,即使這個策略不是最優(yōu)的,REINFORCE算法也很難學習到如何改進這個策略。因為我們完全沒有執(zhí)行其他采樣概率為0的行為,無法知道這些行為的好壞。最后,REINFORCE算法之后在環(huán)境存在回合的概念的時候才能夠使用。如果不存在環(huán)境的概念,REINFORCE算法也無法使用。
最近,DeepMind提出了使用Deep Q-learning算法學習策略,克服了REINFORCE算法的缺點,在Atari游戲?qū)W習這樣的復雜的任務中取得了令人驚喜的效果。
Deep Q-learning
Deep Q-learning是一種基于Q函數(shù)的增強學習算法。該算法對于復雜的每步行為之間存在較強的相關(guān)性環(huán)境有很好的效果。Deep Q-learning學習算法的基礎(chǔ)是Bellman公式。我們在前面的章節(jié)已經(jīng)介紹了Q函數(shù)的定義,如下所示。
Qpi(s,a)=E{∑k=1∞γk-1rr+k|st=s,at=a,π}=Es’[r+γQpi(s’,a’)|s,a,π] (4)
如果我們學習到了最優(yōu)行為對應的Q函數(shù)Q*(s,a),那么這個函數(shù)應該滿足下面的Bellman公式。
Q*(s,a)=Es’[r+γmaxa’Q*(s,a)|s,a] (5)
另外,如果學習到了最優(yōu)行為對應的Q函數(shù)Q*(s,a),那么我們在每一時刻得到了觀察st之后,選擇使得Q*(s,a)最高的行為做為執(zhí)行的行為at。
我們可以用一個神經(jīng)網(wǎng)絡來計算Q函數(shù),用Q(s,a;w)來表示。其中w是神經(jīng)網(wǎng)絡的參數(shù)。我們希望學習出來的Q函數(shù)滿足Bellman公式。因此可以定義下面的損失函數(shù)。這個函數(shù)的Bellman公式的L2誤差如下。
L(w)=E[(r+γmaxa’Q*(s’,a’;w)-Q(s,a;w))2](6)
其中r是在s的觀測執(zhí)行行為a后得到的獎勵,s′是執(zhí)行行為a之后下一個時刻的觀測。這個公式的前半部分r+γmaxa′Q*(s′,a′,w)也被稱為目標函數(shù)。我們希望預測出的Q函數(shù)能夠和通過這個時刻得到的獎勵及下個時刻狀態(tài)得到的目標函數(shù)盡可能接近。通過這個損失函數(shù),我們可以計算出如下梯度。
?L(w)?w=E[(r+γmaxa’Q*(s’,a’;w)-Q(s,a;w))?Q(s,a;w?w) (7)
可以通過計算出的梯度,使用梯度下降算法更新參數(shù)w。
使用深度神經(jīng)網(wǎng)絡來逼近Q函數(shù)存在很多問題。首先,在一個回合內(nèi)采集到的各個時刻的數(shù)據(jù)是存在著相關(guān)性的。因此,如果我們使用了一個回合內(nèi)的全部數(shù)據(jù),那么我們計算出的梯度是有偏的。其次,由于取出使Q函數(shù)最大的行為這個操作是離散的,即使Q函數(shù)變化很小,我們所得到的行為也可能差別很大。這個問題會導致訓練時策略出現(xiàn)震蕩。最后,Q函數(shù)的動態(tài)范圍有可能會很大,并且我們很難預先知道Q函數(shù)的動態(tài)范圍。因為,我們對一個環(huán)境沒有足夠的了解的時候,很難計算出這個環(huán)境中可能得到的最大獎勵。這個問題會使Q-learning工程梯度可能會很大,導致訓練不穩(wěn)定。
首先,Deep Q-learning算法使用了經(jīng)驗回放算法。其基本思想是記住算法在這個環(huán)境中執(zhí)行的歷史信息。這個過程和人類的學習過程類似。人類在學習執(zhí)行行為的策略時,不會只通過當前執(zhí)行的策略結(jié)果進行學習,而還會利用之前的歷史執(zhí)行策略經(jīng)驗進行學習。因此,經(jīng)驗回放算法將之前算法在一個環(huán)境中的所有經(jīng)驗都存放起來。在學習的時候,可以從經(jīng)驗中采樣出一定數(shù)量的跳轉(zhuǎn)信息(st,at,rt+1,st+1),也就是當處于環(huán)境,然后利用這些信息計算出梯度學習模型。因為不同的跳轉(zhuǎn)信息是從不同回合中采樣出來的,所以它們之間不存在強相關(guān)性。這個采樣過程還可以解決同一個回合中的各個時刻的數(shù)據(jù)相關(guān)性問題。
而且,Deep Q-learning算法使用了目標Q網(wǎng)絡來解決學習過程中的震蕩問題。我們可以定義一個目標Q網(wǎng)絡Q(s,a;w-)。這個網(wǎng)絡的結(jié)構(gòu)和用來執(zhí)行的Q網(wǎng)絡結(jié)構(gòu)完全相同,唯一不同就是使用的參數(shù)w-。我們的目標函數(shù)可以通過目標Q網(wǎng)絡計算。
r+γmaxa’Q*(s’,a’;w-) (8)
目標Q網(wǎng)絡參數(shù)在很長時間內(nèi)保持不變,每當在Q網(wǎng)絡學習了一定時間之后,可以Q網(wǎng)絡的參數(shù)w替換目標Q網(wǎng)絡的參數(shù)w-。這樣目標函數(shù)在很長的時間里保持穩(wěn)定??梢越鉀Q學習過程中的震蕩問題。
最后,為了防止Q函數(shù)的值太大導致梯度不穩(wěn)定。Deep Q-learning的算法對獎勵設置了最大和最小值(一般設置為[-1, +1])。我們會把所有獎勵縮放到這個范圍。這樣算法計算出的梯度更加穩(wěn)定。
Q-learning算法的框圖如圖2所示。
圖2 Q-learning算法框圖
因為使用了深度神經(jīng)網(wǎng)絡來學習Q函數(shù),Deep Q-learning算可以直接以圖像作為輸入學習復雜的策略。其中一個例子是學習Atari游戲。這是計算機游戲的早期形式,一般圖像比較粗糙,但要玩好需要對圖像進行理解,并且執(zhí)行復雜的策略,例如躲避,發(fā)射子彈,走迷宮等。一些Atari游戲的例子如圖3所示,其中包含了一個簡單的賽車游戲。
Deep Q-learning算法在沒有任何額外知識的情況下,完全以圖像和獲得的獎勵進行輸入。在大部分Atari游戲中都大大超過了人類性能。這是深度學習或者增強學習出現(xiàn)前完全不可能完成的任務。Atari游戲是第一個Deep Q-learning解決了用其他算法都無法解決的問題,充分顯示了將深度學習和增強學習結(jié)合的優(yōu)越性和前景。
使用增強學習幫助決策
現(xiàn)有的深度增強學習解決的問題中,我們執(zhí)行的行為一般只對環(huán)境有短期影響。例如,在Atari賽車游戲中,我們只需要控制賽車的方向和速度讓賽車沿著跑道行駛,并且躲避其他賽車就可以獲得最優(yōu)的策略。但是對于更復雜決策的情景,我們無法只通過短期獎勵得到最優(yōu)策略。一個典型的例子是走迷宮。在走迷宮這個任務中,判斷一個行為是否是最優(yōu)無法從短期的獎勵來得到。只有當走到終點時,才能得到獎勵。在這種情況下,直接學習出正確的Q函數(shù)非常困難。我們只有把基于搜索的和基于增強學習的算法結(jié)合,才能有效解決這類問題。
基于搜索算法一般是通過搜索樹來實現(xiàn)的。搜索樹既可以解決一個玩家在環(huán)境中探索的問題(例如走迷宮),也可以解決多個玩家競爭的問題(例如圍棋)。我們以圍棋為例,講解搜索樹的基本概念。圍棋游戲有兩個玩家,分別由白子和黑子代表。圍棋棋盤中線的交叉點是可以下子的地方。兩個玩家分別在棋盤下白子和黑子。一旦一片白子或黑子被相反顏色的子包圍,那么這片子就會被提掉,重新成為空白的區(qū)域。游戲的最后,所有的空白區(qū)域都被占領(lǐng)或是包圍。占領(lǐng)和包圍區(qū)域比較大的一方獲勝。
在圍棋這個游戲中,我們從環(huán)境中得到的觀測st是棋盤的狀態(tài),也就是白子和黑子的分布。我們執(zhí)行的行為是所下白子或者黑子的位置。而我們最后得到的獎勵可以根據(jù)游戲是否取勝得到。取勝的一方+1,失敗的一方-1。游戲進程可以通過如下搜索樹來表示:搜索樹中的每個節(jié)點對應著一種棋盤狀態(tài),每一條邊對應著一個可能的行為。在如圖4所示的搜索樹中,黑棋先行,樹的根節(jié)點對應著棋盤的初始狀態(tài)s0。a1和a2對應著黑棋兩種可能的下子位置(實際的圍棋中,可能的行為遠比兩種多)。每個行為ai對應著一個新的棋盤的狀態(tài)si1。接下來該白棋走,白棋同樣有兩種走法b1和b2,對于每個棋盤的狀態(tài)si1,兩種不同的走法又會生成兩種不同狀態(tài)。如此往復,一直到游戲結(jié)束,我們就可以在葉子節(jié)點中獲得游戲結(jié)束時黑棋獲得的獎勵。我們可以通過這些獎勵獲得最佳的狀態(tài)。
圖4 搜索樹的例子
通過這個搜索樹,如果給定黑棋和白棋的策略π=[π1,π2],我們可以定義黑棋的值函數(shù)為黑棋在雙方分別執(zhí)行策略π1和π2時,最后黑棋能獲得獎勵的期望。
vπ(s)=Eπ[Gt|St=s] (9)
黑棋需要尋找的最優(yōu)策略需要最優(yōu)化最壞的情況下,黑棋所能得到的獎勵。我們定義這個值函數(shù)為最小最大值函數(shù)。黑棋的最優(yōu)策略就是能夠達到這個值函數(shù)的策略π1。
v*(s)=maxπ1minπ2vπ(s) (10)
如果我們能夠窮舉搜索樹的每個節(jié)點,那么我們可以很容易地用遞歸方式計算出最小最大值函數(shù)和黑棋的最優(yōu)策略。但在實際的圍棋中,每一步黑棋和白棋可以采用的行為個數(shù)非常多,而搜索樹的節(jié)點數(shù)目隨著樹的深度指數(shù)增長。因此,我們無法枚舉所有節(jié)點計算出準確的最小最大值函數(shù),而只能通過學習v(s;w)~v*(s)作為近似最小最大值函數(shù)。我們可以通過兩種方法使用這個近似函數(shù)。首先,我們可以使用這個近似函數(shù)確定搜索的優(yōu)先級。對于一個節(jié)點,白棋或者黑棋可能有多種走法,我們應該優(yōu)先搜索產(chǎn)生最小最大值函數(shù)比較高節(jié)點的行為,因為在實際游戲中,真實玩家一般會選擇這些相對比較好的行為。其次,我們可以使用這個近似函數(shù)來估計非葉子節(jié)點的最小最大值。如果這些節(jié)點的最小最大值非常低,那么這些節(jié)點幾乎不可能對應著最優(yōu)策略。我們再搜索的時候也不用考慮這些節(jié)點。
因此主要問題是如何學習到近似最小最大值函數(shù)v(s;w)。我們可以使用兩個學習到的圍棋算法自己和自己玩圍棋游戲。然后通過增強學習算法更新近似最小最大值函數(shù)的參數(shù)w。在玩完了一局游戲之后,我們可以使用類似REINFORCE算法的更新方式:
▽w=α(Gt-v(st;w))▽wv(st;w) (11)
在這個式子中Gt表示的是在t時刻之后獲得的獎勵。因為在圍棋這個游戲中,我們只在最后時刻獲得獎勵。所以Gt對應的是最后獲得的獎勵。我們也可以使用類似Q-learning的方式用TD誤差來更新參數(shù)。
▽w=α(v(st+1;w)-v(st;w))▽wv(st;w)(12)
因為圍棋這個游戲中,我們只在最后時刻獲得獎勵。一般使用REINFORCE算法的更新方式效果比較好。在學習出一個好的近似最小最大值函數(shù)之后,可以大大加快搜索效率。這和人學習圍棋的過程類似,人在學習圍棋的過程中,會對特定的棋行形成感覺,能一眼就判斷出棋行的好壞,而不用對棋的發(fā)展進行推理。這就是通過學習近似最小最大值函數(shù)加速搜索的過程。
通過學習近似最小最大值函數(shù),Google DeepMind在圍棋領(lǐng)域取得了突飛猛進。在今年三月進行的比賽中,AlphaGo以四比一戰(zhàn)勝了圍棋世界冠軍李世石。AlphaGo的核心算法就是通過歷史棋局和自己對弈學習近似最小最大值函數(shù)。AlphaGo的成功充分的顯示了增強學習和搜索結(jié)合在需要長期規(guī)劃問題上的潛力。不過,需要注意的是,現(xiàn)有將增強學習和搜索結(jié)合的算法只能用于確定性的環(huán)境中。確定性的環(huán)境中給定一個觀測和一個行為,下一個觀測是確定的,并且這個轉(zhuǎn)移函數(shù)是已知的。在環(huán)境非確定,并且轉(zhuǎn)移函數(shù)未知的情況下,如何把增強學習和搜索結(jié)合還是增強學習領(lǐng)域中沒有解決的問題。
自動駕駛的決策介紹
自動駕駛的人工智能包含了感知、決策和控制三個方面。感知指的是如何通過攝像頭和其他傳感器輸入解析出周圍環(huán)境的信息,例如有哪些障礙物,障礙物的速度和距離,道路的寬度和曲率等。這個部分是自動駕駛的基礎(chǔ),是當前自動駕駛研究的重要方向,在前文我們已經(jīng)有講解。控制是指當我們有了一個目標,例如右轉(zhuǎn)30度,如何通過調(diào)整汽車的機械參數(shù)達到這個目標。這個部分已經(jīng)有相對比較成熟的算法能夠解決,不在本文的討論范圍之內(nèi)。本節(jié),我們著重講解自動駕駛的決策部分。
自動駕駛的決策是指給定感知模塊解析出的環(huán)境信息如何控制汽車的行為來達到駕駛目標。例如,汽車加速、減速、左轉(zhuǎn)、右轉(zhuǎn)、換道、超車都是決策模塊的輸出。決策模塊不僅需要考慮到汽車的安全和舒適性,保證盡快到達目標地點,還需要在旁邊車輛惡意駕駛的情況下保證乘客安全。因此,決策模塊一方面需要對行車計劃進行長期規(guī)劃,另一方面還需要對周圍車輛和行人的行為進行預測。而且,自動駕駛中的決策模塊對安全和可靠性有著嚴格要求?,F(xiàn)有自動駕駛的決策模塊一般根據(jù)規(guī)則構(gòu)建,雖然可以應付大部分駕駛情況,對于駕駛中可能出現(xiàn)的各種突發(fā)情況,基于規(guī)則的決策系統(tǒng)不可能枚舉到所有突發(fā)情況。我們需要一種自適應系統(tǒng)來應對駕駛環(huán)境中出現(xiàn)的各種突發(fā)情況。
現(xiàn)有自動駕駛的決策系統(tǒng)大部分基于規(guī)則,該系統(tǒng)大部分可以用有限狀態(tài)機表示。例如,自動駕駛的高層行為可以分為向左換道、向右換道、跟隨、緊急停車。決策系統(tǒng)根據(jù)目標可以決定執(zhí)行高層行為。根據(jù)需要執(zhí)行的高層行為,決策系統(tǒng)可以用相應的規(guī)則生成出底層行為。基于規(guī)則決策系統(tǒng)的主要缺點是缺乏靈活性。對于所有的突發(fā)情況,都需要寫一個決策。這種方式很難對所有的突發(fā)系統(tǒng)面面俱到。
自動駕駛模擬器
自動駕駛的決策過程中,模擬器起著非常重要的作用。決策模擬器負責對環(huán)境中常見的場景進行模擬,例如車道情況、路面情況、障礙物分布和行為、天氣等。同時還可以將真實場景中采集到的數(shù)據(jù)進行回放。決策模擬器的接口和真車的接口保持一致,這樣可以保證在真車上使用的決策算法可以直接在模擬器上運行。除了決策模擬器之外,自動駕駛的模擬器還包含了感知模擬器和控制模擬器,用來驗證感知和控制模塊。
自動駕駛模擬器的第一個重要功能是驗證。在迭代決策算法的過程中,我們需要比較容易地衡量算法性能。比如,需要確保新決策算法在之前能夠正確運行和常見的場景都能夠安全運行。我們還需要根據(jù)新決策算法對常見場景的安全性、快捷性、舒適性打分。我們不可能每次在更新算法時都在實際場景中測試,這時有一個能可靠反映真實場景的無人駕駛模擬器是非常重要的。
模擬器的另一個重要的功能是進行增強學習??梢阅M出各種突發(fā)情況,然后增強學習算法利用其在這些突發(fā)情況中獲得的獎勵,學習如何應對。這樣,只要能夠模擬出足夠的突發(fā)情況,增強學習算法就可以學習到對應的處理方法,而不用每種突發(fā)情況都單獨寫規(guī)則處理。而且,模擬器也可以根據(jù)之前增強學習對于突發(fā)情況的處理結(jié)果,盡量產(chǎn)生出當前的增強學習算法無法解決的突發(fā),從而增強學習效率。
綜上所述,自動駕駛模擬器對決策模塊的驗證和學習都有著至關(guān)重要的作用,是無人駕駛領(lǐng)域的核心技術(shù)。如何創(chuàng)建出能夠模擬出真實場景、覆蓋大部分突發(fā)情況、并且和真實的汽車接口兼容的模擬器,是自動駕駛研發(fā)的難點之一。
增強學習在自動駕駛中的應用和展望
增強學習在自動駕駛中很有前景。我們在TORCS模擬器中使用增強學習進行了探索性的工作。TORCS是一個賽車模擬器。玩家的任務是超過其他AI車,以最快速度達到終點。雖然TORCS中的任務和真實的自動駕駛?cè)蝿者€有很大區(qū)別。但其中算法的性能非常容易評估。TORCS模擬器如圖5所示。增強學習算法一般可以以前方和后方看到的圖像作為輸入,也可以環(huán)境狀態(tài)作為輸入(例如速度,離賽道邊緣的距離和跟其他車的距離)。
圖5 TORCS模擬器截圖
我們這里使用了環(huán)境狀態(tài)作為輸入。使用Deep Q-learning做為學習算法學習。環(huán)境獎勵定義為在單位時刻車輛沿跑道的前進距離。另外,如果車出了跑道或者和其他的車輛相撞,會得到額外懲罰。環(huán)境狀態(tài)包括車輛的速度、加速度、離跑道的左右邊緣的距離,以及跑道的切線夾角,在各個方向上最近的車的距離等等。車的行為包括向上換擋、向下?lián)Q擋、加速、減速、向左打方向盤、向右打方向盤等等。
與普通的Deep Q-learning相比,我們做了以下的改進。首先,使用了多步TD算法進行更新。多步TD算法能比單步算法每次學習時看到更多的執(zhí)行部數(shù),因此也能更快地收斂。其次,我們使用了Actor-Critic的架構(gòu)。它把算法的策略函數(shù)和值函數(shù)分別使用兩個網(wǎng)絡表示。這樣的表示有兩個優(yōu)點:1. 策略函數(shù)可以使用監(jiān)督學習的方式進行初始化學習。2. 在環(huán)境比較復雜的時候,學習值函數(shù)非常的困難。把策略函數(shù)和值函數(shù)分開學習可以降低策略函數(shù)學習的難度。
使用了改進后的Deep Q-learning算法,我們學習到的策略在TORCS中可以實現(xiàn)沿跑到行走,換道,超車等行為?;具_到了TORCS環(huán)境中的基本駕駛的需要。Google DeepMind直接使用圖像作為輸入,也獲得了很好的效果,但訓練的過程要慢很多。
現(xiàn)有的增強學習算法在自動駕駛模擬環(huán)境中獲得了很有希望的結(jié)果。但是可以看到,如果需要增強學習真正能夠在自動駕駛的場景下應用,還需要有很多改進。第一個改進方向是增強學習的自適應能力?,F(xiàn)有的增強學習算法在環(huán)境性質(zhì)發(fā)生改變時,需要試錯很多次才能學習到正確的行為。而人在環(huán)境發(fā)生改變的情況下,只需要很少次試錯就可以學習到正確的行為。如何只用非常少量樣本學習到正確的行為是增強學習能夠?qū)嵱玫闹匾獥l件。
第二個重要的改進方向是模型的可解釋性?,F(xiàn)在增強學習中的策略函數(shù)和值函數(shù)都是由深度神經(jīng)網(wǎng)絡表示的,其可解釋性比較差,在實際的使用中出了問題,很難找到原因,也比較難以排查。在自動駕駛這種人命關(guān)天的任務中,無法找到原因是完全無法接受的。
第三個重要的改進方向是推理和想象能力。人在學習的過程中很多時候需要有一定的推理和想象能力。比如,在駕駛時,不用親身嘗試,也知道危險的行為會帶來毀滅性的后果。 這是因為人類對這個世界有一個足夠好的模型來推理和想象做出相應行為可能會發(fā)生的后果。這種能力不僅對于存在危險行為的環(huán)境下下非常重要,在安全的環(huán)境中也可以大大加快收斂速度。
只有在這些方向做出了實質(zhì)突破,增強學習才能真正使用到自動駕駛或是機器人這種重要的任務場景中。希望更多有志之士能投身這項研究,為人工智能的發(fā)展貢獻出自己的力量。
-
無人駕駛
+關(guān)注
關(guān)注
98文章
4075瀏覽量
120625 -
自動駕駛
+關(guān)注
關(guān)注
784文章
13864瀏覽量
166593
原文標題:增強學習在無人駕駛中的應用
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論