ChatGPT不止會動嘴,還能幫你操控無人機!雖然ChatGPT已經被調教為符合人類的偏好,但在各種反向操作下,還是能夠逼問出一些“不道德的內容”,比如ChatGPT可以給你列一份詳細的毀滅世界計劃列表,具體到每一步。
不過,現在的ChatGPT隻會動動嘴皮子,並沒有任何接觸現實物理世界的能力,頂多也就是當個科幻小說看看。
但要是ChatGPT真的可以操控機器人呢?
最近,微軟發表一篇論文,公佈他們正在把ChatGPT應用於機器人上的研究成果。
不過微軟的目標並非是“毀滅世界”,而是加快機器人的開發速度。
實際上在現代的生活和生產流程中,處處都離不開機器人,從工廠裡制造產品的機械臂,到傢庭裡用的吸塵器,都可以算作是機器人(robot)。
每次想開發一個新產品,或者讓現有的機器執行一個新功能,都需要一個高級工程師編寫代碼,同時盡可能編寫測試覆蓋所有場景。
微軟在論文中提出一套新的設計原則,通過ChatGPT這樣的大型語言模型來給機器人提供指令。
ChatGPT:機器人控制器
ChatGPT之所以爆火,其根本原因就在於:AI終於在一定程度上能“聽懂人話”,而非隻是按照語法胡亂生成內容;而且它的功能也很強大,問答、寫論文、寫詩、寫代碼,隻要prompt寫得夠好,ChatGPT的表現也會更驚人。
要是把這種能力遷移到機器人身上,假設幾十年以後,各傢各戶都有機器人,隻要說一聲“給我熱一下午餐”,它就能自己找到微波爐,再把菜端回來,人機交互直接邁入新時代。
雖然“自然語言”很簡潔,但現有的機器人開發還是依賴於“編程語言”。
ChatGPT 是一個基於大量文本和人類反饋訓練得到的語言模型,能夠針對各種各樣的提示和問題產生連貫且語法正確的回應。
這項研究的目的是觀察 ChatGPT 是否能夠在文本之外的領域進行思考,並推理出物理世界來幫助機器人完成任務。
研究人員預期ChatGPT能夠幫助用戶更容易地與機器人交互,而不需要學習復雜的編程語言或機器人系統的細節,其中的關鍵難題就是教 ChatGPT 如何使用物理定律、操作環境的背景以及解機器人的物理行為如何改變世界狀態,並以此來解決指定的任務。
實驗證明,ChatGPT 可以獨立完成很多工作,但是它仍然需要一些輔助,論文中描述一系列的設計原則,可以用來指導語言模型解決機器人任務,包括但不限於特殊的提示結構、高級 API 和基於文本的人類反饋等,一場機器人系統的開發革命即將到來。
全新的代碼設計流程
給大型語言模型寫prompt是一門高度經驗主義的科學,通過反復試驗,研究人員建立一套方法論和設計原則,專門用於為機器人任務撰寫提示:
1. 定義一組高級機器人 API 或函數庫。
這個庫可根據特定的機器人類型進行設計,並且應該從機器人的控制棧或感知庫映射到現有的低層次具體實現。
對高級 API 使用的描述性名稱非常重要,可以幫助 ChatGPT推斷函數的功能。
2. 為 ChatGPT 編寫一個文本提示,用來描述任務目標,同時顯式說明高級庫中的哪些函數是可用的。
提示中還可以包含有關任務約束的信息, 或者 ChatGPT 應該如何組織它的答案,包括使用特定的編程語言,使用輔助解析組件等 ;
3. 用戶在循環中評估 ChatGPT 的代碼輸出,可以直接執行代碼以檢查正確性,也可以使用模擬器。
如果有需要的話,用戶可以使用自然語言向 ChatGPT 提供有關答案質量和安全性的反饋。
當用戶對解決方案感到滿意時,就可以將最終的代碼部署到機器人上。
ChatGPT+機器人能做什麼?
下面是幾個例子,更完整的ChatGPT能力列表參見代碼倉庫。
代碼鏈接:https://github.com/microsoft/PromptCraft-Robotics
Zero-shot任務規劃
當ChatGPT遇上無人機,研究人員首先讓 ChatGPT 能夠控制一臺真正的無人機的全部功能,然後按照下面視頻中進行的對話,實驗結果證明,一個完全不懂技術的用戶,隻需要通過對話就能實現控制無人機,“自然語言”是一個非常直觀、高效的用戶接口。
03:04
當用戶的指令含糊不清時,ChatGPT 會要求用戶進一步說明問題,並為無人機編寫復雜的代碼結構,例如飛行之字(zig-zag)圖案,以便可視化地檢查貨架;甚至還能給用戶來一張自拍。
研究人員還在 MicrosoftAirSim 模擬器中對工業檢查場景中使用ChatGPT進行模擬,結果顯示該模型能夠有效地解析用戶的高級意圖和幾何線索,以準確地控制無人機。
03:43
復雜的任務需要用戶參與反饋
當把ChatGPT用於機械臂的操作場景時,研究人員使用“會話反饋”(conversational feedback)來教模型如何將最初提供的 API 組合成更復雜的高級函數,即ChatGPT自己內部編碼的函數。
使用以課程為基礎(curriculum-based)的策略,ChatGPT能夠將這些學到的技能有邏輯地鏈接在一起,以執行諸如堆疊塊之類的操作。
此外,還有一個例子能展現出ChatGPT的強大能力,研究人員要求模型用木塊構建微軟標志,即需要將文本域和物理域連接起來。
ChatGPT不僅能夠從內部知識庫中回憶出微軟的logo,還能夠用SVG的代碼“繪制”出這個標志 ,然後利用上面學到的技能來確定現有的機器人動作可以組成它的物理形式。
02:16
還有一個例子,研究人員讓 ChatGPT 編寫一個算法,讓無人機在不撞上障礙物的情況下,在空中達到目標。
隻需要告訴模型,它操控的這架無人機有一個前向距離傳感器,ChatGPT 立即能夠為算法編碼大部分關鍵構件,這個任務需要與人類進行一些對話,ChatGPT 僅通過自然語言反饋就能進行局部代碼修改。
01:12
在行動之前感知世界
在算法決定做某事(action)之前能夠感知世界(perception)是打造一個機器人系統的基礎。
為測試 ChatGPT 對指定概念的理解,研究人員設計一個框架,要求ChatGPT不斷探索環境,讓模型訪問諸如目標檢測和目標距離 API 之類的函數,直到找到用戶指定的對象,整個過程稱為感知-行動循環(Perception-action loops)。
在實驗環節,研究人員進行額外的實驗來評估 ChatGPT 是否能夠根據傳感器的實時反饋來決定機器人應該去哪裡,而不是讓 ChatGPT 生成一個代碼循環來做出這些決定。
實驗結果驗證用戶可以在聊天的每一步輸入一個相機圖像的文本描述,並且模型能夠找出如何控制機器人,並驅使機器人到達一個特定的對象。
01:42
開源PromptCraft:收集有價值的prompt
“良好的prompting工程”對於ChatGPT等大型語言模型成功執行機器人任務來說至關重要。
但prompting完全是一門經驗主義的科學、缺乏全面的總結,並且相關資源也很少,沒有數據集來幫助該領域的研究人員和愛好者判斷什麼是一個好的prompt
為彌補這一劣勢,研究人員開源一個平臺 PromptCraft,任何用戶都可以在其上分享不同機器人類別的提示策略示例。
這次研究項目的所有提示和對話都已經放在倉庫中,感興趣的讀者可以繼續參與貢獻!
除快速設計之外,研究人員還計劃未來開發多個機器人模擬器和接口,以允許用戶測試ChatGPT生成的算法性能,目前已經發佈一個集成ChatGPT的AirSim環境。
把機器人帶出實驗室,走向世界
微軟發佈這些技術的目的是將機器人技術推廣到更廣泛的受眾,研究人員認為,基於語言的機器人控制系統是把機器人從科學實驗室帶到日常用戶手中的基礎。
也就是說,ChatGPT 的輸出不應該在沒有仔細分析的情況下直接部署在機器人上。
通過在模擬環境中獲得實驗結果,能夠在未來現實部署之前對算法進行評估,並采取必要的安全預防措施。