大模型真能解決一切嗎?關(guān)于知識(shí)驅(qū)動(dòng)自動(dòng)駕駛的一些思考
本文經(jīng)自動(dòng)駕駛之心公眾號(hào)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
上個(gè)星期受邀在外面做了一次關(guān)于「知識(shí)驅(qū)動(dòng)自動(dòng)駕駛」的講座,剛好借這個(gè)機(jī)會(huì)把之前我和團(tuán)隊(duì)的一些學(xué)術(shù)上的思考整理凝練了一下。感覺里面一些內(nèi)容還是挺值得拿出來分享&討論的,所以開這么個(gè)帖子把其中一些關(guān)鍵的內(nèi)容分享出來。其一是年底作為一個(gè)階段性整理回顧一下我們團(tuán)隊(duì)的一些工作;其二則是能夠以此出發(fā)闡述一下我對(duì)自動(dòng)駕駛未來發(fā)展的一些看法;其三則是希望能從這些內(nèi)容出發(fā),引起一些回歸學(xué)術(shù)本源的討論。那么話不多說,進(jìn)入正題。
注1:因?yàn)檫@個(gè)是用Slides改的Post,所以可能內(nèi)容會(huì)有些零碎和割裂,大家多多包涵。如果后續(xù)大家感興趣的話我再專門寫一些邏輯鏈更完善的純文章。
今年是自動(dòng)駕駛非常卷的一年。無論是工業(yè)界還是學(xué)術(shù)界,都不斷有新技術(shù)新發(fā)現(xiàn)新思想「涌現(xiàn)」出來。一方面,關(guān)于自動(dòng)駕駛的研究正逐漸趨同——無論是之前做感知、決策、規(guī)控的同事,都想拿大模型來試一試;但另一方面,任何新技術(shù)的出現(xiàn)都將意味著格局的重新洗牌,大家又回到了同一起跑線上開始。如果從趨勢(shì)上來說,我認(rèn)為2023年自動(dòng)駕駛包括但不限于以下的一下演進(jìn):
首先,傳統(tǒng)的感知正在向認(rèn)知轉(zhuǎn)變:如同深度學(xué)習(xí)時(shí)代的CV領(lǐng)域早期,以圖像分類、目標(biāo)檢測(cè)、語義分割等任務(wù)為主。其本質(zhì)是通過下游任務(wù)來(我最近很認(rèn)同的一句話:評(píng)價(jià)方式引導(dǎo)發(fā)展方向。)來讓整個(gè)系統(tǒng)具備「智能」的表現(xiàn)。然而,能夠很好完成這些視覺任務(wù)的模型,真的是「智能」的模型嗎?從行為主義上來說,大量工作確實(shí)能夠很好地完成這些任務(wù),甚至其性能可以達(dá)到甚至超過人類水平,體現(xiàn)出了智能的行為。但諸如一些對(duì)抗攻擊在內(nèi)的工作讓我們發(fā)現(xiàn):原來這些SOTA在對(duì)抗樣本面前是如此的不堪一擊,這里真正意義上的「人工智能」還很遙遠(yuǎn)。于是在2010年前后,CV界逐漸有一波熱潮開始探索「認(rèn)知」,包括一些更加神奇的任務(wù)、以及引入了文本等其他模態(tài)的數(shù)據(jù),來完成Image Captioning,Grounding,VQA甚至是Scene Graph這種復(fù)雜結(jié)構(gòu)支持下的復(fù)雜任務(wù)。還記得好像是16年左右,有些好事者分析過當(dāng)時(shí)的頂會(huì)標(biāo)題,如果帶著「semantic」這個(gè)詞,中稿幾率大大提升。可見學(xué)術(shù)界對(duì)于「認(rèn)知」、「語義」、「理解」、「知識(shí)」等等這些概念的追捧。而現(xiàn)在,我深刻感覺到自動(dòng)駕駛也在經(jīng)歷這個(gè)類似的時(shí)刻。前兩年自動(dòng)駕駛感知方向,大家關(guān)注的還都是檢測(cè)、分割之類的經(jīng)典任務(wù)。而近期大家的關(guān)注點(diǎn)開始向更加「Fancy」的方向傾斜,例如大家開始注意到自動(dòng)駕駛場(chǎng)景的描述(Captioning)、問答(VQA)等與「理解」密不可分的任務(wù)。
第二,大家期待的端到端自動(dòng)駕駛,正在以一種知識(shí)驅(qū)動(dòng)的方式到來:我個(gè)人認(rèn)為,端到端自動(dòng)駕駛還是可以再細(xì)分為兩種。一種是如2023年CVPR Best Paper之一的UniAD一樣,由多個(gè)模塊的級(jí)聯(lián)實(shí)現(xiàn)。其整體構(gòu)型屬于一種能夠損失傳導(dǎo)的Multi-Task Learning:通過將多個(gè)模塊級(jí)聯(lián)+每個(gè)模塊的損失作為約束,使得各個(gè)模塊在訓(xùn)練過程中朝著「整體最優(yōu)」的方向進(jìn)行,有更大的可能在整體優(yōu)化過程中找到端到端的流形空間。另一類則是完全端到端,從訓(xùn)練端即實(shí)現(xiàn)data-in、policy(control)-out。這個(gè)過程和人類駕駛行為相似:以眼睛作為視覺輸入信號(hào),直接作用在方向盤和剎車油們踏板上。但這種端到端最大的挑戰(zhàn)在于如何實(shí)現(xiàn)持續(xù)學(xué)習(xí)?這種直接端到端變相地?cái)U(kuò)大了模型的搜索空間,需要用更多的數(shù)據(jù)、更大的模型、更強(qiáng)的算力才能防止系統(tǒng)過擬合在特定的場(chǎng)景中。
第三,大模型的出現(xiàn)為自動(dòng)駕駛打開了更多的研究機(jī)會(huì)。尤其是大模型在海量開放領(lǐng)域數(shù)據(jù)訓(xùn)練所獲得的通用感知能力具備很強(qiáng)的泛化性,甚至具有解決自動(dòng)駕駛場(chǎng)景各種Corner Case的能力。現(xiàn)在逐漸有一種聲音(以工業(yè)界為主),就是很多人認(rèn)為大模型將會(huì)是實(shí)現(xiàn)端到端的一種可能。但我感覺不能簡(jiǎn)單地將大模型與端到端劃等號(hào),甚至大模型到底能否被用來進(jìn)行自動(dòng)駕駛,也是一個(gè)需要考慮的問題。但大模型真的能解決一切問題嗎?有朝一日我們能否見到由大模型控制的自動(dòng)駕駛系統(tǒng)?我其實(shí)是比較悲觀的,因?yàn)榇竽P痛嬖谔嗵鄦栴}了。與其期待教會(huì)大模型直接開車,還不如多關(guān)注一下大模型在AI Agent和具身智能方面的進(jìn)展。
我和我的團(tuán)隊(duì)目前所研究的方向我們管他叫「知識(shí)驅(qū)動(dòng)自動(dòng)駕駛」,這也是這篇文章主要的話題:重新思考自動(dòng)駕駛——從知識(shí)驅(qū)動(dòng)到數(shù)據(jù)驅(qū)動(dòng)。
首先介紹一下背景,現(xiàn)在的自動(dòng)駕駛系統(tǒng)仍然存在諸多挑戰(zhàn)。
比如長(zhǎng)尾難例問題一直困擾著高階自動(dòng)駕駛在開放場(chǎng)景的應(yīng)用。
例如,如左圖所示,當(dāng)我們從零構(gòu)建一個(gè)自動(dòng)駕駛系統(tǒng)的感知模塊。冷啟動(dòng)的算法期初無法分辨工程車輛。但識(shí)別到樁桶,可能會(huì)讓自動(dòng)駕駛系統(tǒng)誤以為在修路。最終,錯(cuò)誤的感知做出錯(cuò)誤的決策。
為了解決長(zhǎng)尾難例,我們可以增加數(shù)據(jù)采集的覆蓋性。例如通過采集更多的工程車輛并標(biāo)注成車來提高車輛樣本的數(shù)量。隨著數(shù)據(jù)的增加,我們可能確實(shí)能夠handle這種裝滿交通錐的工程車輛的識(shí)別問題。但如果樣本是右邊這張圖呢?總會(huì)有無窮無盡的corner case的出現(xiàn),甚至很多corner case在直到發(fā)生之前,我們都難以想象的。
這張圖來源于ISO 21448 SOTIF關(guān)于自動(dòng)駕駛預(yù)期功能安全的標(biāo)準(zhǔn)。橫軸分為安全、不安全;縱軸分為已知、未知。
對(duì)于Safe-known的綠色區(qū)域,是算法能夠解決的問題。而Unsafe是指我們算法仍然無法解決的問題。我們希望調(diào)整算法,通過更好的學(xué)習(xí),來讓很多Unsafe的場(chǎng)景變得Safe。另一方面,為了壓縮Unknown的區(qū)域,我們可以通過進(jìn)行更多的路測(cè)來提高數(shù)據(jù)覆蓋度。但「提高覆蓋度」這件事是有邊際效應(yīng)的,在沒有外部知識(shí)參與的情況下,我們總會(huì)有無窮無盡的Out-of-distribution的場(chǎng)景,也就是一些偶發(fā)的Corner Case,導(dǎo)致整個(gè)系統(tǒng)的失效。
而自動(dòng)駕駛不同于其他很多領(lǐng)域,是存在木桶效應(yīng)的。所以如何解決這些甚至在設(shè)計(jì)算法時(shí)都未曾考慮到的場(chǎng)景將會(huì)是至關(guān)重要的。例如如果一個(gè)目標(biāo)檢測(cè)系統(tǒng)從設(shè)計(jì)上只考慮了人、車、非機(jī)動(dòng)車。那他可能就無法區(qū)分地上的樁桶和塑料袋。所以后來出現(xiàn)的一些針對(duì)開放詞表目標(biāo)檢測(cè)的研究,或者像Tesla針對(duì)Occupancy的研究,都試圖想從感知問題的定義上,讓他有足夠大的解空間,才能覆蓋盡可能多的解。
我們可以說,現(xiàn)在絕大多數(shù)自動(dòng)駕駛系統(tǒng),都是基于這樣數(shù)據(jù)驅(qū)動(dòng)的模式構(gòu)建的。與此也伴生出了像數(shù)據(jù)閉環(huán)等重量級(jí)的中間件:就是通過反復(fù)的路測(cè)、數(shù)據(jù)采集、數(shù)據(jù)標(biāo)注、模型訓(xùn)練,再進(jìn)行路測(cè),重新采集數(shù)據(jù)訓(xùn)練模型,循環(huán)往復(fù)不斷進(jìn)行。通過將這些流程制度化來降低成本。但從本質(zhì)上仍然未解決問題。
為什么?因?yàn)槌藷o窮無盡的corner case以外,還有很關(guān)鍵的一個(gè)因素:現(xiàn)有的很多系統(tǒng)都是基于優(yōu)化的方法。而優(yōu)化就存在一個(gè)問題,遺忘災(zāi)難。所有優(yōu)化的本質(zhì)就是當(dāng)我們找不到一個(gè)全局最優(yōu)解的情況下,只能妥協(xié)地達(dá)成一個(gè)局部最優(yōu)解。這就意味著那些經(jīng)常出現(xiàn)的common case才會(huì)主導(dǎo)因素,而偶爾發(fā)生的corner case甚至要被當(dāng)做是異常的離群點(diǎn)忽略掉,從而才能使整個(gè)系統(tǒng)處于一個(gè)低熵的穩(wěn)定狀態(tài)。反過頭來,如果太關(guān)注corner case,當(dāng)模型capacity不夠大的時(shí)候,有可能反而讓common case變得更差。按下葫蘆起了瓢的效果。而這與自動(dòng)駕駛系統(tǒng)追求安全的事實(shí)是相反的。
所以我們能夠總結(jié)出數(shù)據(jù)驅(qū)動(dòng)自動(dòng)駕駛系統(tǒng)的不可能三角:想要一個(gè)又安全又便宜的自動(dòng)駕駛系統(tǒng),那一定效率不高(例如掃地機(jī)器人?);想要便宜高效,那一定很不安全(橫沖直撞那效率可杠杠的);又安全又高效那一定非常貴。
盡管數(shù)據(jù)驅(qū)動(dòng)不可以三者兼得,但人類卻能在這三者之間找到平衡。
所以我們需要分析為什么人類這么厲害?
2022年LeCun在他的一項(xiàng)關(guān)于通用人工智能的工作中開篇即提了這樣兩個(gè)問題:1. 為什么一個(gè)人類青少年能夠在大約20分鐘的練習(xí)里就可以學(xué)會(huì)基本的車輛駕駛技能?2. 而為什么人類能夠在遇到一些之前從來沒見過的場(chǎng)景時(shí)仍然能做出正確的反應(yīng)和決策?
其實(shí)這里面的關(guān)鍵因素就在于知識(shí)和推理的運(yùn)用。例如上圖里那5張圖很多人都見過:數(shù)據(jù)通過打標(biāo)簽成為信息,而后融會(huì)貫通從知識(shí)逐漸變成智慧。
如果將自動(dòng)駕駛系統(tǒng)與之相對(duì)應(yīng),我大概認(rèn)為。之前的數(shù)據(jù)驅(qū)動(dòng)自動(dòng)駕駛僅僅能運(yùn)用數(shù)據(jù)和信息,難以挖掘信息之間的關(guān)聯(lián)性。因?yàn)殛P(guān)聯(lián)性才決定了是否具備舉一反三的能力。所以我們覺得,現(xiàn)在正是一個(gè)好的時(shí)機(jī),從知識(shí)驅(qū)動(dòng)自動(dòng)駕駛的視角出發(fā),探索AD2.0。(當(dāng)然,AD2.0這個(gè)概念不是我們提的,是Wayve等一些公司題的)。
總的來說,現(xiàn)階段我認(rèn)為,自動(dòng)駕駛的第一性原理是知識(shí)。
如何直接和間接地利用好人類的知識(shí),跨域的知識(shí),通用的知識(shí),來處理好各種各樣的問題,來讓自動(dòng)駕駛系統(tǒng)有更高的泛化性、Robust,是我們團(tuán)隊(duì)一直以來的研究方向,也是這篇文章的主題。
那接下來就介紹一下我認(rèn)為什么是知識(shí)驅(qū)動(dòng)的自動(dòng)駕駛。
我們宏觀上可以把自動(dòng)駕駛系統(tǒng)分成三個(gè)大類。
規(guī)則驅(qū)動(dòng)的方法是由人類通過觀察真實(shí)場(chǎng)景,融入自己的思考之后將其抽象成一些可解釋可執(zhí)行的規(guī)則。這種方法能夠很好地反應(yīng)駕駛場(chǎng)景的本質(zhì)。但由于規(guī)則編寫本身是一件復(fù)雜,互相牽制的事情。完全由人工來進(jìn)行則難以規(guī)模化。
而數(shù)據(jù)驅(qū)動(dòng)的方法則是試圖建立從輸入到輸出的映射關(guān)系。在這個(gè)過程中,通過將駕駛場(chǎng)景轉(zhuǎn)換到壓縮的表征空間來盡可能提取。因?yàn)橛幸粋€(gè)說法是壓縮即智能。但這個(gè)空間很有可能因?yàn)橄掠稳蝿?wù)的限制,overfit到了任務(wù)空間而不是真正的理解了交通場(chǎng)景。Data-driven更像是一種行為主義(behaviorism),只是體現(xiàn)了智能行為,但并不是真的理解了場(chǎng)景,所以性能存在邊界。
而知識(shí)驅(qū)動(dòng)的自動(dòng)駕駛首先需要具備場(chǎng)景理解的能力,歸納出通用的一般性規(guī)律,再進(jìn)而推演到真實(shí)的理解空間中。但由于「知識(shí)」這個(gè)概念就像「智能」一樣很難定義,所以我們只能從行為主義的角度來觀察如何才能實(shí)現(xiàn)知識(shí)驅(qū)動(dòng)自動(dòng)駕駛。
我們認(rèn)為,知識(shí)驅(qū)動(dòng)自動(dòng)駕駛的三個(gè)關(guān)鍵特征是:泛化性、可解釋性和終身學(xué)習(xí)的能力。
想要實(shí)現(xiàn)知識(shí)驅(qū)動(dòng)自動(dòng)駕駛并落地,可能需要滿足這三個(gè)特征。
首先來說說泛化性
如前面所述,由于數(shù)據(jù)驅(qū)動(dòng)的方法在面對(duì)out-of-domain問題時(shí)難以解決。例如我們很難在任務(wù)設(shè)計(jì)時(shí)就考慮路上有飛機(jī)迫降這種極端的cornercase。
而知識(shí)驅(qū)動(dòng)的方法通過大量在Open Domain數(shù)據(jù)上預(yù)訓(xùn)練所獲得的通用知識(shí),使得我們有可能對(duì)out-of-distribution的數(shù)據(jù)進(jìn)行理解。
泛化性是解決Unknown的關(guān)鍵,能把工程師從處理Corner Case的重復(fù)性勞動(dòng)中解放的希望。我們用這張圖來解釋一下。上面一排指場(chǎng)景空間,下面一排是駕駛能力的空間。
對(duì)于Single Domain的數(shù)據(jù)驅(qū)動(dòng)方法來說,我們從場(chǎng)景空間中采集數(shù)據(jù)并訓(xùn)練模型,學(xué)會(huì)其到駕駛能力空間的映射,同時(shí)對(duì)該domain產(chǎn)生一些泛化性的外溢,舉個(gè)不嚴(yán)謹(jǐn)?shù)睦樱褐挥酶咚俟窋?shù)據(jù)訓(xùn)練的模型,在高架上可能同樣適用。但對(duì)于domain外的泛化性還是較弱。例如只用高速數(shù)據(jù)訓(xùn)練的模型,在梧桐區(qū)(上海某個(gè)開車停車都很費(fèi)勁的開放街道)就不能用了。
于是大家從數(shù)據(jù)采集的角度入手,增加數(shù)據(jù)覆蓋率,并將各種數(shù)據(jù)混合到一起,形成了Multiple Domain的數(shù)據(jù)。然后得到的模型不但能夠處理各自domain的能力,還具備了一些初步的泛化性。例如收集了晴天、雨天數(shù)據(jù)訓(xùn)練的模型,在陰天可能仍然能用。然而這種數(shù)據(jù)采集也只是解鎖了一些不同的場(chǎng)景,對(duì)于非常偶然出現(xiàn)的corner case,仍然不能像人一樣從場(chǎng)景理解的角度出發(fā)來給出正確的分析和解釋。
而第三列表示的是知識(shí)驅(qū)動(dòng)的方法。如果我們有一種方法能夠挖掘到海量不同domain的數(shù)據(jù)內(nèi)在的關(guān)聯(lián),具備一些初步的通用理解能力,那就有可能對(duì)偶爾出現(xiàn)的場(chǎng)景如同人類一樣實(shí)現(xiàn)舉一反三。實(shí)現(xiàn)最終的泛化能力。
所以說,泛化性不但是自動(dòng)駕駛領(lǐng)域研究關(guān)注的重點(diǎn),也會(huì)是知識(shí)驅(qū)動(dòng)的一個(gè)特性和體現(xiàn)。
再來說說第二點(diǎn),可解釋性。為什么可解釋性重要?
- 首先,它可以作為「理解」和「知識(shí)」的佐證:可解釋是智能的充分不必要條件。可以聯(lián)想到圖靈測(cè)試。
- 第二,一個(gè)完全的黑盒只能通過數(shù)據(jù)驅(qū)動(dòng)來訓(xùn)練,又走回了老路。所以完全端到端,我個(gè)人反而是不太相信的。
- 第三,對(duì)解釋的反思能夠更直接地修正模型:非梯度方法。例如當(dāng)我們讓模型自己反思哪里做錯(cuò)了,如果能解釋出個(gè)所以然來,說明模型具備了很強(qiáng)的能力。
- 第四,我們認(rèn)為可解釋性是實(shí)現(xiàn)Life-long Learning的一種顯式的方式和先決條件。
例如我們嘗試?yán)么竽P蛠砻枋鲆幌轮暗膱?chǎng)景,我們發(fā)現(xiàn)一旦操作變得可解釋,那這些決策就會(huì)變得可信且合理起來。(這個(gè)是比較早的嘗試,當(dāng)時(shí)用的LLaMA-Adapter實(shí)現(xiàn)圖片描述,用GPT3.5試試做決策和判斷)
第三點(diǎn),Life-long Learning。
為什么Life-long Learning非常重要?因?yàn)閺臋C(jī)器人或者具身智能的角度出發(fā),一個(gè)Agent的腦中其實(shí)蘊(yùn)含了對(duì)真實(shí)環(huán)境的建模。而Life-long Learning的能力決定了這個(gè)腦中世界和真實(shí)世界的差異程度。
像是現(xiàn)在的數(shù)據(jù)驅(qū)動(dòng)方法,由于人工框定的任務(wù)限制了它施展能力的范圍,導(dǎo)致其只能用「管中窺豹」的方式來建模世界,最終只能成為一個(gè)井底之蛙,認(rèn)為的世界就和別人讓他看到的世界一樣。
而參考人類的思維方式,經(jīng)驗(yàn)只會(huì)隨著年齡不斷積累。新司機(jī)可以通過積累經(jīng)驗(yàn)成為老司機(jī)。并且很多駕駛經(jīng)驗(yàn)并不來源于駕駛本身,而是從很多其他領(lǐng)域持續(xù)學(xué)習(xí)得來經(jīng)驗(yàn)。
而Life-long Learning也是將整個(gè)系統(tǒng)落地上車的決定性因素。在這里插一句,我感覺像之前特斯拉展示的End-to-end的一些方法看起來很fancy,但實(shí)操起來會(huì)有很多挑戰(zhàn)。最大的挑戰(zhàn)是,在缺乏對(duì)中間過程的supervise的情況下,如何對(duì)規(guī)模龐大的模型實(shí)現(xiàn)持續(xù)學(xué)習(xí)/終身學(xué)習(xí)?所以可能UniAD這種中間可以插入supervise的方法舉例落地會(huì)更現(xiàn)實(shí)一些。(除非World Model真的實(shí)現(xiàn),后面再細(xì)聊)
在介紹完知識(shí)驅(qū)動(dòng)自動(dòng)駕駛基本定義之后,再來聊一下最近出現(xiàn)的LLM是否對(duì)知識(shí)驅(qū)動(dòng)自動(dòng)駕駛能有所幫助。
其實(shí)一直以來我的一個(gè)思想是:知識(shí)驅(qū)動(dòng)是第一性原理,但LLM不是。LLM只是在現(xiàn)階段能夠?qū)崿F(xiàn)體現(xiàn)出知識(shí)運(yùn)用能力的一種工具,它雖然具備基礎(chǔ)的通用理解能力,但不見得所有事情都要靠LLM。讓LLM開車并不是一個(gè)長(zhǎng)久的方向。
首先來統(tǒng)一一下術(shù)語。
我們發(fā)現(xiàn)工業(yè)界引入「大模型」這個(gè)概念的時(shí)候發(fā)生了大量的術(shù)語混淆。難道「大號(hào)的模型」就是大模型嗎?比如像SAM算大模型嗎?BEV算法屬于大模型嗎?甚至一些人在到處講,Transformer就是大模型。
但從學(xué)術(shù)上,LLM其實(shí)是有著明確的指向的。
(下面這段關(guān)于LLM的整理不是很嚴(yán)謹(jǐn),請(qǐng)批判性閱讀)
并不是用了transformer或者數(shù)據(jù)量大就是LLM,應(yīng)該是采用LLM或者VLM架構(gòu)且在大規(guī)模數(shù)據(jù)上進(jìn)行訓(xùn)練,并且跟隨scaling law出現(xiàn)了涌現(xiàn)的現(xiàn)象,才是我們討論的LLM。
想要解釋清楚LLM發(fā)展的來龍去脈需要比較長(zhǎng)的篇幅,也不是本文要講的重點(diǎn)。所以這里就簡(jiǎn)要概述一下。
早期的大模型,是在Transformer之后出現(xiàn)的如BERT、ELMo、GPT等在內(nèi)的語言模型。其本質(zhì)就是一個(gè)語言模型,用來建模一句話的發(fā)生概率。其訓(xùn)練方式是輸入第1到t-1個(gè)token,預(yù)測(cè)第t個(gè)token應(yīng)該是什么。并且在那個(gè)時(shí)候利用海量純文本數(shù)據(jù),通過隨機(jī)對(duì)一些詞進(jìn)行mask,或者對(duì)兩句話交換順序等各種各樣的下游任務(wù),迫使模型能夠更好地理解一句話內(nèi)包含的語義。那個(gè)時(shí)候是NLP的黃金時(shí)代,因?yàn)榇竽P屯ㄟ^海量的數(shù)據(jù)獲得了基本的語言理解能力,使得很多任務(wù)都利用大模型實(shí)現(xiàn)了突破。
而后大模型也面臨一個(gè)life-long learning的問題。之前很多大模型還是以研究為主,直到后來出現(xiàn)了一些工作,發(fā)現(xiàn)大模型是可以隨著堆料性能不斷增加的。這就刺激到了工業(yè)界。工業(yè)界就喜歡這種力大磚飛的模式,因?yàn)槊恳环皱X的投入都有可以計(jì)算的預(yù)期收益。然后就掀起了現(xiàn)在大模型研究的熱潮。隨后又出現(xiàn)了In-Cotext Learning, Chain-of-Thought等等各種技術(shù),甚至催生了提示詞工程這個(gè)行業(yè)。
時(shí)至今日,大模型的范式基本是統(tǒng)一的,首先就一個(gè)參數(shù)量巨大的Foundation Model,再利用部分和任務(wù)相關(guān)的數(shù)據(jù)進(jìn)行Instruct-tuning。像ChatGPT就是在GPT這個(gè)Foundation Model中用少量高質(zhì)量的對(duì)話數(shù)據(jù)對(duì)齊的能夠?qū)υ挼哪P汀:竺孢@個(gè)過程通常不被稱為是訓(xùn)練而是對(duì)齊,我個(gè)人感覺可能是因?yàn)椋現(xiàn)oundation Model已經(jīng)具備了很強(qiáng)的能力,而少量的Instruction-tuning只是為了向大模型展示任務(wù)需要,讓大模型的表現(xiàn)對(duì)齊到人類預(yù)期的行為之上。
解釋一下大模型的一個(gè)有趣的現(xiàn)象,就是可以通過In-context-learning實(shí)現(xiàn)few-shot來完成一些任務(wù)。而我們也可以通過SFT來將這些能力內(nèi)化到大模型內(nèi)部。
近期出現(xiàn)了大量的LLM+AD的工作,這里快速介紹一下,不是本文的重點(diǎn)。
LanguageMPC利用LLM進(jìn)行了細(xì)粒度的決策,通過將場(chǎng)景結(jié)構(gòu)化成文本送入大模型,來和環(huán)境進(jìn)行交互。通過接了一個(gè)具體的行為控制模塊實(shí)現(xiàn)具體的駕駛行為的輸出。其主要是利用了大模型對(duì)場(chǎng)景進(jìn)行編碼的能力。
DriveGPT4則是試圖引入一個(gè)帶有視覺的VLM,實(shí)現(xiàn)對(duì)輸入視頻的理解,并且能夠根據(jù)prompt完成一些QA任務(wù)。包括生成控制信號(hào)等等。
↑這篇工作則同樣是利用大模型來處理控制的工作。通過將場(chǎng)景向量化表征,并且通過一些數(shù)據(jù)對(duì)大模型進(jìn)行了SFT使其變成了能夠輸出控制信號(hào)的大模型。
和上面這些LLM+AD的工作區(qū)分開,下面這頁(yè)Slides才是我想表達(dá)的重點(diǎn):
這些LLM+AD的工作真的能解決一切問題嗎?我不認(rèn)為。
我覺得大模型盡管能展現(xiàn)出generalization和interpretability。但仍然存在諸多問題:
- 幻覺:因?yàn)長(zhǎng)LM的訓(xùn)練方式導(dǎo)致其必然會(huì)輸出一些文本。直接影響安全性和正確性。
- 響應(yīng)速率低下:影響實(shí)時(shí)性,最終導(dǎo)致安全和效率都會(huì)受損。
- 對(duì)齊稅:朝著自動(dòng)駕駛?cè)蝿?wù)SFT,反而會(huì)喪失一部分通用性和泛化性。
- 并且SFT成本高,難以通過SFT的方式實(shí)現(xiàn)Life-long Learning。
其實(shí)一直以來我的一個(gè)思考是:知識(shí)驅(qū)動(dòng)是第一性原理,但LLM不是。LLM只是在現(xiàn)階段能夠?qū)崿F(xiàn)體現(xiàn)出知識(shí)運(yùn)用能力的一種工具,它雖然具備基礎(chǔ)的通用理解能力,但不見得所有事情都要靠LLM。讓LLM開車并不是一個(gè)好主意。所以我們需要的是借助LLM的能力,而不是all in在LLM上,讓LLM成為一個(gè)萬能的工具。
受到最近一些Multi-agent和Embodied AI研究的啟發(fā),我們認(rèn)為,LLM可以作為一個(gè)CPU,利用好它的generalization和interpretability,配合memory實(shí)現(xiàn)life-long learning,結(jié)合外部的專家系統(tǒng)、Retrieval Augmented Generation技術(shù)來解決幻覺問題,共同構(gòu)建成一個(gè)Driver Agent。
所以接下來介紹一個(gè)我心目中的知識(shí)驅(qū)動(dòng)自動(dòng)駕駛的架構(gòu)
讓我們先跳出LLM的制約,從認(rèn)知的角度先來討論一個(gè)通用的知識(shí)驅(qū)動(dòng)的框架。它更像是一種Embodied AI的架構(gòu)在AD的應(yīng)用。
上圖展示了一種利用Agent來操作工具、進(jìn)行規(guī)劃,并結(jié)合Memory機(jī)制最終產(chǎn)生Action的架構(gòu)。這個(gè)架構(gòu)和人類認(rèn)識(shí)世界和做決策的框架是類似的。
更進(jìn)一步,我們認(rèn)為其實(shí)知識(shí)驅(qū)動(dòng)的自動(dòng)駕駛也可以利用這樣的框架進(jìn)行(如上圖下部分)。其核心是Driver Agent,通過對(duì)環(huán)境進(jìn)行Observe,并從Memory中Query一些過往的經(jīng)驗(yàn),最終綜合做出決策,并利用決策的執(zhí)行情況作為修正信號(hào)來修正Memory。
我們?cè)龠M(jìn)一步將其對(duì)應(yīng)到自動(dòng)駕駛場(chǎng)景中。首先我們利用場(chǎng)景理解系統(tǒng)來進(jìn)行場(chǎng)景表征。并且基于這些表征進(jìn)行決策。在決策過程中將會(huì)有過去的經(jīng)驗(yàn)參與。如果決策是正確的,則會(huì)將其作為經(jīng)驗(yàn)的一部分積累到記憶模塊中。如果決策發(fā)生了錯(cuò)誤,則也會(huì)要求系統(tǒng)能夠反思錯(cuò)誤,并將糾正好的正確經(jīng)驗(yàn)重新加回到記憶系統(tǒng)中。整個(gè)系統(tǒng)不斷迭代。最終記憶就成為了知識(shí)的一種表現(xiàn)。
在整個(gè)系統(tǒng)中,我們可以讓LLM參與到部分工作,但是并不是僅僅依賴LLM,于是我們構(gòu)建了這樣的系統(tǒng)。這篇叫做DiLu: A Knowledge-driven Approach to Autonomous Driving with Large Language Models。(To the best of our knowledge, 這篇應(yīng)該算是非常早期探索LLM+Agent+AD的工作了,還有我們另一篇工作Drive Like A Human可能是第一篇探索大模型是否能和自動(dòng)駕駛相結(jié)合的工作。)
整個(gè)系統(tǒng)包括了Reasoning、Reflection、Memory三個(gè)模塊。首先在Memory模塊中保存了一些駕駛經(jīng)驗(yàn)行為。本質(zhì)上是一個(gè)向量數(shù)據(jù)庫(kù)。其中Key是場(chǎng)景的語義向量化表征(相似場(chǎng)景vector相似,不同場(chǎng)景vector不相似)。而Value則保存了這個(gè)場(chǎng)景曾經(jīng)做出的決策,以自然語言文本來描述的。
在推理模塊中,我們首先對(duì)環(huán)境進(jìn)行編碼,利用這個(gè)編碼從記憶模塊中query相似場(chǎng)景。并將這個(gè)信息作為prompt,和當(dāng)前場(chǎng)景一起輸入到大模型中。也就是說,此時(shí)大模型既輸入了當(dāng)前場(chǎng)景的描述,又輸入了記憶中相似場(chǎng)景和當(dāng)時(shí)所作出的決策作為共同信息,并且最終給出一個(gè)決策意見。我們將這個(gè)決策轉(zhuǎn)換成Environment的控制信號(hào),控制一個(gè)在虛擬環(huán)境中的車輛進(jìn)行駕駛。
在駕駛過程中,我們可以知道這個(gè)決策是否正確。如果決策正確,我們會(huì)將這里的場(chǎng)景表征向量作為key,決策說明作為value來更新記憶模塊中的經(jīng)驗(yàn)。另一方面,如果決策出錯(cuò),例如發(fā)生了碰撞或者其他危險(xiǎn)行為,我們會(huì)借助大模型進(jìn)行自我反思,并將整個(gè)反思過程一起加入到記憶模塊中。
從這里就能看出之前我們提到的三個(gè)特性:generalization、interpretability、life-long learning的重要性。首先,泛化能力保證了對(duì)各種out-of-domain的場(chǎng)景的通用理解能力。而我們利用可解釋的信息作為記憶系統(tǒng),一方面能夠追溯所有做出的決策,另一方面也能夠用人類能夠理解的方式來完成反思等復(fù)雜的內(nèi)容。另外,也正是因?yàn)榻?jīng)驗(yàn)是以自然語言定義的可解釋的文本,而這些文本常常是放之四海皆準(zhǔn)的信息,不隨domain變化而產(chǎn)生太大的漂移的。而整個(gè)經(jīng)驗(yàn)庫(kù)是在不斷積累的,從而實(shí)現(xiàn)一個(gè)Life-long Learning。
還有就是這篇文章的Reasoning模塊和Reflection模塊,具體細(xì)節(jié)我就不介紹了,可以看看論文。
這里有一個(gè)縮時(shí)演示的視頻。我們采用了Highway Env作為仿真環(huán)境,每一步都是由大模型參與進(jìn)行決策并交給仿真器來執(zhí)行的。
這只是張圖片動(dòng)不了的,視頻請(qǐng)點(diǎn)下面的鏈接
視頻請(qǐng)點(diǎn)擊鏈接:DiLu: A Knowledge-Driven Approach to Autonomous Driving with Large Language Mode_嗶哩嗶哩_bilibili
Slides后面有一些實(shí)驗(yàn)分析,這里我就不具體展開了不然文章篇幅太長(zhǎng)了。(寫到現(xiàn)在已經(jīng)快1w字了)。一句話總結(jié)就是我們有這樣幾個(gè)發(fā)現(xiàn):
- Memory機(jī)制真有用,這種類似于RAG(Retrieval Augmented Generation)的方法能夠在不SFT模型的情況下,實(shí)現(xiàn)Continuous Learning的功能(但Life-long Learning還沒試過,主要是Highway Env太toy了)。
- 真有泛化性:我們用Domain A的場(chǎng)景得到的Memory,直接在Domain B中用,發(fā)現(xiàn)
- 真有可解釋性:Memory中的key是場(chǎng)景表征向量,value可就是純文本啊。無論決策做對(duì)了還是做錯(cuò)了都是一目了然的,甚至可以reflect來修正記憶。
這里我們展示了反思模塊的一些能力。例如這里進(jìn)行了一個(gè)錯(cuò)誤的決策。
此時(shí)我們讓大模型分別針對(duì)碰撞原因、其中的經(jīng)驗(yàn)教訓(xùn)進(jìn)行解釋,并產(chǎn)生一份revised decision。我們會(huì)將整個(gè)這些文本都作為經(jīng)驗(yàn)保存到記憶模塊中。
這篇工作作為一個(gè)非常初步的工作,其所選擇的環(huán)境、能進(jìn)行的決策空間等等非常有限,屬于一個(gè)早期的toy性質(zhì)的研究。所以也留下了很多Open Problems:
- 場(chǎng)景理解:Key該如何構(gòu)建?
- 記憶該如何表征:顯式地用自然文本?圖像?還是隱式的representation?
- 是記答案?還是記「決策過程」?
- 進(jìn)一步從人類思考的視角出發(fā),如何與System I(快系統(tǒng))和System II(慢系統(tǒng))相結(jié)合?
另外再提一個(gè)我覺得很有意思的工作Agent-Driver([2311.10813] A Language Agent for Autonomous Driving (arxiv.org)),也是采用了Agent而非教大模型開車的模式。不過當(dāng)時(shí)做Slides的時(shí)候忘記介紹了,后面有機(jī)會(huì)再補(bǔ)上。
除了DiLu以外,再介紹一些我們認(rèn)為和Knowledge-driven相關(guān)的工作。其中部分工作也是我們團(tuán)隊(duì)正在進(jìn)行的。
首先,暢想一下未來,我們認(rèn)為未來的自動(dòng)駕駛系統(tǒng)有可能發(fā)展成這個(gè)樣子。這張圖來自于我們最近的一篇Survey(說是Survey,但其實(shí)也包含了我們很多思考):Towards Knowledge-driven Autonomous Driving。
一方面從真實(shí)世界中提取信息積累常識(shí)知識(shí)。另一方面利用真實(shí)世界的數(shù)據(jù),構(gòu)建高質(zhì)量的虛擬的仿真引擎。并通過在仿真引擎中積累交互知識(shí)。反復(fù)重復(fù)這個(gè)過程實(shí)現(xiàn)life-long learning。
所以這就引發(fā)了三個(gè)探索的方向,我們認(rèn)為是目前學(xué)術(shù)界比較火熱的方向(換句話說:很卷的方向):自動(dòng)駕駛的Foundation Model(完成場(chǎng)景理解、輔助決策)、知識(shí)驅(qū)動(dòng)的Autonomous Driver Agent(Memory機(jī)制、RAG)、高一致性的仿真引擎。
首先是我們?cè)撊绾卫肍oundation Model?這可能依賴于通用大模型的理解能力,也需要一些利用大模型針對(duì)自動(dòng)駕駛追至領(lǐng)域SFT的探索。
但我覺得大模型在這個(gè)環(huán)節(jié)的參與可能體現(xiàn)在場(chǎng)景理解和Decision Making上。因?yàn)檫@些功能充分體現(xiàn)了大模型處理out-of-distribution問題的能力,以及宏觀決策能力。并且由于不是直接將方向盤交給大模型,所以能夠從一定程度上緩解幻覺的問題。
另一塊我覺得非常有趣且有潛力的方向就是世界模型。
世界模型早在2018年甚至更早就被已提出,其架構(gòu)的本質(zhì)是利用下一幀預(yù)測(cè)來讓模型理解整個(gè)世界。我覺得世界模型的一個(gè)應(yīng)用點(diǎn)在于場(chǎng)景理解:因?yàn)槟苷_預(yù)測(cè)出下一幀的樣子,說明中間的vector包含了對(duì)整個(gè)場(chǎng)景的編碼表征。
基于世界模型的思路,Wayve提出了GAIA-1,可能是第一個(gè)自動(dòng)駕駛領(lǐng)域的世界模型。
還有國(guó)內(nèi)一家叫做極佳科技和清華大學(xué)合作推出的DriveDreamer。我們跟他們交流比較多,不過目前看來不得不屈服于市場(chǎng):用World Model來生成數(shù)據(jù)賣。
DriveDreamer主要是支持多種prompt輸入,包括文本、參考圖像、HDMap和3D Box與對(duì)應(yīng)的action。而后由模型在這些信號(hào)進(jìn)行控制的情況下輸出未來幀的視頻。
還有上個(gè)月剛公開的ADriver-I則是利用VLM進(jìn)行圖像生成的工作。有種把世界模型和LLM相結(jié)合的感覺。
第二個(gè)值得重點(diǎn)關(guān)注的方向就是仿真。
自動(dòng)駕駛的仿真引擎并不算一個(gè)很新的topic。其實(shí)目前也有很多仿真引擎被廣泛應(yīng)用,例如Carla、VTD等等。但這些仿真引擎仍然存在諸多問題。比如傳感器仿真不夠逼真、交通流很多也是基于規(guī)則或者機(jī)理模型,導(dǎo)致難以進(jìn)行端到端的閉環(huán)仿真測(cè)試。
所以其實(shí)我們團(tuán)隊(duì)過去兩年中花了大量的精力在構(gòu)建一個(gè)高質(zhì)量的端到端閉環(huán)仿真引擎。
為了獲得高一致性的仿真?zhèn)鞲衅鲾?shù)據(jù),我們采用了神經(jīng)渲染的思路。這種方法能夠用自動(dòng)化的方法高質(zhì)量地對(duì)場(chǎng)景和物體進(jìn)行三維重建。
我們構(gòu)建了名為OASim的基于神經(jīng)渲染的自動(dòng)駕駛仿真器(將會(huì)在近期開源)。
它能夠進(jìn)行相機(jī)、激光雷達(dá)等在內(nèi)的傳感器仿真。并且由于我們的技術(shù)路線不同于NeRF的體渲染,而是采用了SDF-based的表面渲染,使得我們能夠同時(shí)重建好形狀和外觀,甚至可以用來進(jìn)行數(shù)據(jù)生成并幫助感知模型訓(xùn)練。
本來是段Demo的錄屏的,后面有機(jī)會(huì)開源的時(shí)候再release
所以我們打通了從重建,到泛化,再到生成的整個(gè)鏈路。甚至我們可以仿真生成激光雷達(dá)的數(shù)據(jù):
第三點(diǎn),就是將Agent與自動(dòng)駕駛相結(jié)合,也是我們DiLu的后續(xù)研究方向。并不是簡(jiǎn)單地教大模型開車,而是利用大模型的通用理解能力,通過各種外部工具,務(wù)實(shí)地實(shí)現(xiàn)自動(dòng)駕駛。不能為了用LLM而用。
目前我們?cè)谔剿鏖]環(huán)評(píng)測(cè),因?yàn)槲矣X得只在開環(huán)數(shù)據(jù)集上進(jìn)行訓(xùn)練和評(píng)測(cè)已經(jīng)略顯疲態(tài)。盡管有一些基于仿真引擎做閉環(huán)訓(xùn)練的工作已經(jīng)出現(xiàn),但評(píng)測(cè)終究是開環(huán)的。我們目前正在嘗試構(gòu)建一套基于全功能Agent的pipeline,實(shí)現(xiàn)自動(dòng)駕駛的incremental learning甚至是life-long learning。
最后再介紹一些我覺得和Knowledge-driven AD相關(guān),但可能還需要一些時(shí)間才能看到的工作和方向。
首先:小大模型的上車,比如一些1B的模型可能已經(jīng)具備了在邊端推理(甚至訓(xùn)練)的能力。以及一些線性Transformer的工作,如果真有一天能夠上車就有趣了。因?yàn)楝F(xiàn)在大模型動(dòng)輒規(guī)模這么大還是因?yàn)槠浔举|(zhì)是個(gè)通用模型。但如果我們只需要通用模型在某個(gè)子領(lǐng)域的一小部分能力,是不是不需要這么大也可以了?
第二,最近的一個(gè)概念:Superalignment。就是我們是否有空了能用小尺寸的大模型來supervise大尺寸的大模型。因?yàn)橄啾扔眯∧P蜕珊线m的語料喂給大模型來訓(xùn)練,可能用小模型來為大模型的訓(xùn)練提供supervise可能是個(gè)更容易的任務(wù)。OpenAI可能會(huì)用它來取代RLHF等簡(jiǎn)單任務(wù)中的人力,但仔細(xì)想想,這是不是下一代的「影子模式」?
第三,直接在世界模型中訓(xùn)練AD算法:其實(shí)這才是我覺得World Model的本質(zhì)啊。一個(gè)能夠建模整個(gè)世界的模型,一定能夠完美地理解世界,也能夠用來將自己對(duì)世界的理解拿來supervise自動(dòng)駕駛算法本身?
第四,重建即感知:這也是最開始入坑多模態(tài)傳感器融合感知時(shí)候的思考。即:其實(shí)無論多模態(tài)傳感器融合、環(huán)視相機(jī)融合還是什么融合算法,其實(shí)本質(zhì)就是在做「對(duì)齊」。這些算法的目標(biāo)就是把各種不同位置不同模態(tài)的數(shù)據(jù)對(duì)齊到一個(gè)Unified Space。然后后面的算法再?gòu)倪@個(gè)Unified Space出發(fā)。其實(shí)仔細(xì)想想,無論是Pillar、Voxel,還是后來的BEV,和Occupancy,其本質(zhì)都是一個(gè)一個(gè)用來對(duì)其的Unified Space。既然space這么多,究竟哪個(gè)Space最好?通常意義上來說,我們期待學(xué)習(xí)一種從輸入空間到流形空間(關(guān)于流形空間很多年前我有過一個(gè)回答大家可以看看:求簡(jiǎn)要介紹一下流形學(xué)習(xí)的基本思想?)的映射。那么什么空間是最標(biāo)準(zhǔn)的對(duì)齊空間呢?我覺得就是3D空間啊。不同模態(tài)的傳感器,都對(duì)齊到同一的3D空間。其實(shí)這件事本質(zhì)就是做三維重建了。。。所以我覺得冥冥之中,「三維重建」和「場(chǎng)景理解」這兩件事情總有一天會(huì)合二為一。重建即感知。
寫到這里,這篇文章基本就結(jié)束了。可能廢話有些多,主要都是我最近一段時(shí)間的思考,和我們團(tuán)隊(duì)的一些努力。最后回顧一下主旨
- LLM+AD的出現(xiàn),意味著大家意識(shí)到了這是一個(gè)從數(shù)據(jù)驅(qū)動(dòng)到知識(shí)驅(qū)動(dòng)的時(shí)機(jī)
- 知識(shí)驅(qū)動(dòng)可能有三個(gè)特性和目標(biāo):泛化性、可解釋性、持續(xù)學(xué)習(xí)
- 我個(gè)人認(rèn)為,沒必要非要追求用LLM實(shí)現(xiàn)端到端的自動(dòng)駕駛。因?yàn)榇竽P痛嬖诨糜X、推理速度慢等非常多的問題。我們應(yīng)該利用的是LLM的知識(shí)運(yùn)用能力、推理能力,并從Agent的角度出發(fā),探索出一種能夠利用LLM但不依賴LLM的架構(gòu),漸進(jìn)式地構(gòu)建新一代的自動(dòng)駕駛系統(tǒng)。