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