代碼即策略:具身控制的語言模型程序
23年5月來自谷歌的論文“Code as Policies: Language Model Programs for Embodied Control”。
經(jīng)過代碼補全訓(xùn)練的大語言模型 (LLM) ,已被證明能夠從文檔字符串合成簡單的 Python 程序 [1]。這些編寫代碼的 LLM 可以重新用于編寫機器人策略代碼,只需提供自然語言命令即可。具體來說,策略代碼可以表達處理感知輸出(例如來自目標檢測器 [2]、[3])和參數(shù)化控制原語 API 的函數(shù)或反饋循環(huán)。當提供幾個示例語言命令(格式化為注釋)作為輸入時,然后提供相應(yīng)的策略代碼(通過少量提示),LLM 可以接收新命令并自主重新編寫 API 調(diào)用,分別生成新策略代碼。通過鏈接經(jīng)典邏輯結(jié)構(gòu)并引用第三方庫(例如 NumPy、Shapely)來執(zhí)行算術(shù),以這種方式使用的 LLM 可以編寫機器人策略,這些策略 (i) 展示空間幾何推理,(ii) 推廣到新指令,以及 (iii) 根據(jù)上下文(即行為常識)為模糊描述(“更快”)指定精確值(例如速度)。
本文介紹代碼即策略(CaP):一種以機器人為中心的語言模型生成程序 (LMP) 公式,可以表示反應(yīng)策略(例如阻抗控制器)以及基于路徑點的策略(基于視覺的拾取-和-放置、基于軌跡的控制),已在多個真實機器人平臺上進行演示。核心是提示分層代碼生成(遞歸定義未定義的函數(shù)),它可以編寫更復(fù)雜的代碼,還可以提高現(xiàn)有技術(shù)水平,以解決 HumanEval [1] 基準上 39.8% 的問題。
如圖所示:通過給定示例(通過少量提示),機器人可以使用編寫代碼的大語言模型 (LLM) 將自然語言命令轉(zhuǎn)換為機器人策略代碼,該代碼處理感知輸出、參數(shù)化控制原語、遞歸生成未定義函數(shù)的代碼并推廣到新任務(wù)。
術(shù)語“語言模型程序(LMP)”指代由語言模型生成并在系統(tǒng)上執(zhí)行的任何程序。這項工作研究代碼即策略,這是一類 LMP,它將語言指令映射到代碼片段,這些代碼片段 (i) 對感知輸入做出反應(yīng)(即來自傳感器或傳感器之上的模塊),(ii) 參數(shù)化控制原語 API,以及 (iii) 直接在機器人上編譯和執(zhí)行,例如:
輸入指令被格式化為注釋(綠色),可以由人類提供或由另一個 LMP 編寫。LLM 的預(yù)測輸出(突出顯示)應(yīng)為有效的 Python 代碼,由自回歸生成 [11],[12]。LMP 是使用示例提示的少量樣本,用于生成不同的子程序,這些子程序可能處理目標檢測結(jié)果、構(gòu)建軌跡或序列控制原語。可以通過組合已知函數(shù)(例如,使用感知模塊的 get_obj_names())或調(diào)用其他 LMP 定義未定義的函數(shù)來分層生成 LMP:
對于新的具身,這些活動函數(shù)調(diào)用,可以用表示智體動作空間(例如 set_velocity)的可用控制 API 替換。具有詳細變量名的分層代碼生成,可以看作是通過函數(shù)式編程進行思維鏈提示 [47] 的變型。LMP 定義的函數(shù)可以隨時間的推移逐漸積累,其中新的 LMP 可以引用以前構(gòu)建的函數(shù)來擴展策略邏輯。
要執(zhí)行 LMP,首先檢查它是否可以安全運行,確保沒有 import 語句、以 __ 開頭的特殊變量或?qū)?exec 和 eval 的調(diào)用。然后,調(diào)用 Python 的 exec 函數(shù),使用代碼作為輸入字符串和兩個字典構(gòu)成該代碼執(zhí)行的范圍:(i) global 變量,包含生成的代碼可能調(diào)用的所有 API,以及 (ii) local 變量,一個空字典,它將填充在 exec 期間定義的變量和新函數(shù)。如果預(yù)計 LMP 將返回一個值,會在 exec 完成后從 local 變量中獲取它。
如圖所示代碼即策略可以遵循不同領(lǐng)域和機器人的自然語言指令:桌面操作 (a)-(b)、2D 形狀繪制 (c) 以及在廚房中使用 Everyday Robots 機器人進行移動操作 (d)。該方法使機器人能夠使用現(xiàn)成的模型和少量提示進行空間幾何推理、解析目標關(guān)系并形成多步行為,而無需額外訓(xùn)練。
在機器人策略的背景下,LMP 可以根據(jù)自然語言指令編寫感知到控制的反饋邏輯,其中感知模型(狀態(tài))的高級輸出可以通過編程方式進行操作,并用于通知低級控制 API(操作)的參數(shù)。有關(guān)可用感知和控制 API 的先前信息可以通過示例和提示進行引導(dǎo)。這些 API 將 LMP “接地”到現(xiàn)實世界的機器人系統(tǒng),感知和控制算法的改進可以直接提高基于 LMP 的策略的能力。例如,真實世界實驗中,用最近開發(fā)的、現(xiàn)成的、開放詞匯目標檢測模型(如 ViLD [3] 和 MDETR [2])來獲取目標位置和邊框。
基于 LMP 的策略有三方面的好處:(i) 可以將策略代碼和參數(shù)調(diào)整為,由未見過自然語言指令指定的新任務(wù)和行為;(ii) 可以通過引導(dǎo)開放詞匯感知系統(tǒng)和/或顯著性(saliency)模型推廣到新目標和環(huán)境;(iii) 不需要任何額外的數(shù)據(jù)收集或模型訓(xùn)練。生成的規(guī)劃和策略也是可解釋的,因為它們以代碼表示,因此可以輕松修改和重用。使用 LMP 進行高級用戶交互繼承了 LLM 的優(yōu)勢,包括使用常識知識解析富有表現(xiàn)力的自然語言、考慮先前的上下文、多語言功能以及參與對話。
在真實世界桌面操控實驗,UR5e 機器人的任務(wù)是根據(jù)自然語言指令操控桌面上的目標。該機器人配備了吸盤夾持器,只能執(zhí)行由 2D 自上而下的拾取-和-放置位置參數(shù)化的拾取-和-放置動作。機器人還需要使用提供的感知 API 回答有關(guān)場景的問題(例如,有多少個塊?)。在演示中,用 Google Cloud 的語音-轉(zhuǎn)-文本和文本-轉(zhuǎn)-語音 API,讓用戶通過語音命令與系統(tǒng)交互,并聽到機器人對命令和問題的回答。目前,提示僅支持擁有一組唯一目標。這不是 CaP 的限制,而是感知系統(tǒng)的限制——沒有很好的方法來在 VLM 檢測中保留重復(fù)目標的身份。一個更復(fù)雜的跟蹤感知世界狀態(tài)的系統(tǒng)可以解決這個問題。
移動操控實驗由 Everyday Robots 的機器人在現(xiàn)實世界的辦公室廚房中導(dǎo)航和與目標交互而設(shè)置。該機器人有一個移動底座和一個 7DoF 臂。為了實現(xiàn)感知 API,主要使用機器人上的 RGBD 相機傳感器。其中的機器人如圖所示。
與現(xiàn)實世界的桌面領(lǐng)域類似,構(gòu)建了一個模擬桌面環(huán)境,其中配備了 Robotiq 2F85 夾爪的 UR5e 機器人會收到自然語言指令來完成重新排列任務(wù)。這些物體包括 10 個不同顏色的積木和 10 個不同顏色的碗。擬議的 CaP 提供了 API,用于通過腳本化目標檢測器訪問當前目標及其位置的列表,以及通過坐標或目標名稱參數(shù)化的拾取-和-放置運動原語。