言語が最も直感的な意思表示方法であるにもかかわらず、ロボットを制御するために手書きのコードに大きく依存している。マイクロソフトの自律システム・ロボティクスグループのチームは、OpenAIの新しいAI言語モデル「ChatGPT」を使って、この現実を変え、人間とロボットの自然な対話を可能にする方法を探ってきたという。
- Advertisement -
ChatGPTは、膨大なテキストと人間との対話のコーパスで訓練された言語モデルで、さまざまなプロンプトや質問に対して、首尾一貫した文法的に正しい応答を生成可能だ。この研究の目標は、ChatGPTがテキストを越えて思考し、物理的な世界について推論して、ロボットのタスクに役立てることができるかどうかを確認することだという。
複雑なプログラミング言語やロボットシステムの詳細を学ぶ必要がなく、人々がより簡単にロボットと対話できるようにしたいとしている。ここで重要なのは、物理法則や動作環境のコンテキスト、ロボットの物理的な動作がどのように世界の状態を変化させるかを考慮して問題を解く方法をChatGPTに教えることなのだという。
ChatGPTはそれ自体で多くのことができることが判明しているが、まだいくらか助けを必要としている。同チームのテクニカルペーパーでは、言語モデルをロボット工学の課題解決に導くために使用できる一連の設計原則を説明。これには、特別なプロンプトの構造、高レベルのAPI、テキストによる人間のフィードバックなどが含まるが、これらに限定されるものではないという。同チームの研究は、ロボットシステムの開発方法におけるシフトの始まりに過ぎないと考えており、他の研究者がこのエキサイティングな分野に飛び込むきっかけになるよう願っているという。
- Advertisement -
同チームの方法とアイデアに関する技術的な詳細は以下の通り。
ロボット工学の今日的課題、そしてChatGPTの可能性
現在のロボティクス・パイプラインは、エンジニアやテクニカルユーザーがタスクの要件をシステムのコードに変換するところから始まる。エンジニアは、ロボットの動作を修正するために新しいコードや仕様を書く必要があり、ループの中にいることになります。このプロセスは、時間がかかり(ユーザーは低レベルのコードを書く必要がある)、コストがかかり(ロボット工学の深い知識を持つ熟練したユーザーが必要)、非効率的(物事を正しく動作させるために複数のやり取りが必要)である。
ChatGPTを使ったロボティクス:設計の原則
LLMのプロンプティングは、非常に経験的な科学である。同チームは試行錯誤の末、ロボットタスクのプロンプトを書くための方法論と設計原則のセットを構築した。
まず、高レベルのロボットAPIまたは関数ライブラリのセットを定義する。このライブラリは特定のロボットに特化したもので、ロボットの制御スタックや知覚ライブラリから得られる既存の低レベル実装にマッピングする必要があるという。ChatGPTがその動作を推論できるように、高レベルのAPIに説明的な名前を使用することが非常に重要だという。
次に、ChatGPTのプロンプトを作成し、タスクのゴールを説明すると同時に、高レベルライブラリのどの関数が利用可能かを明示。プロンプトには、タスクの制約に関する情報、またはChatGPTがどのように回答を形成するか(特定のコーディング言語、補助的な構文解析要素の使用)も含めることができる。
- Advertisement -
ユーザーは、ChatGPTのコード出力を評価するために、直接検査するか、シミュレータを使用して、ループに留まる。必要に応じて、ユーザは自然言語を使って、答えの品質と安全性についてChatGPTにフィードバックを提供する。ユーザーが納得のいく解答が得られたら、最終的なコードをロボットに展開できる。
では、ChatGPTで何ができるのか?
マイクロソフトのチームが持つコードリポジトリからいくつかの例を紹介する。
ゼロショットタスク計画
ChatGPTに本物のドローンを制御する機能を持たせたところ、技術者でないユーザーとロボットの間の言語ベースのインターフェースとして非常に直感的であることがわかった。ChatGPTは、ユーザーからの指示があいまいな場合に説明を求めたり、棚を目視するためのジグザグパターンなど、複雑なコード構造をドローンに記述したりした。さらに、自撮りの方法まで考えてくれたという。
また、Microsoft AirSimシミュレーターを使った工業検査シナリオのシミュレーションでもChatGPTを使用。このモデルは、ユーザーのハイレベルな意図と幾何学的な手がかりを効果的に解析し、ドローンを正確に制御できたという。
ループ上のユーザー:複雑なタスクのために会話が必要な場合
次に、ロボットアームによる操作シナリオでChatGPTを使用した。会話によるフィードバックで、もともと提供されているAPIをChatGPTが自らコーディングした、より複雑な高レベルの関数に合成する方法をモデルに教えた。カリキュラムに基づいた戦略により、モデルはこれらの学習したスキルを論理的に連鎖させ、ブロックを積み上げるなどの操作を行うことができるようになった。
また、「マイクロソフトのロゴを積み木で作る」という課題では、文字と物理の領域を橋渡しする事例を示した。このモデルは、内部知識ベースからロゴを呼び出すことができただけでなく、ロゴを(SVGコードとして)「描く」ことができ、さらに、上記の学習スキルを使って、既存のロボットアクションがその物理的形状を構成できることを理解できたとしている。
次に、ChatGPTに、ドローンが障害物にぶつからないようにしながら、空間上のゴールに到達するためのアルゴリズムを書くように命じた。このドローンには前方に距離センサーがあることをモデルに伝えると、ChatGPTはすぐにアルゴリズムの主要な構成要素のほとんどをコーディングした。このタスクでは人間との会話が必要だったが、ChatGPTが言語フィードバックだけで局所的にコードを改善する能力を発揮した。
知覚と行動のループ:世界を感じてから行動するロボット
何かをする(アクション)前に世界を感じる(パーセプション)能力は、あらゆるロボティクスシステムにとって基本的なものだ。そこで、ChatGPTにこの概念を理解させ、ユーザが指定した物体を見つけるまで環境を探索させることにした。そして、物体検出や物体距離などのAPIにアクセスさせ、生成されたコードが知覚と行動のループをうまく実装していることを確認した。
実験的な特徴として、ChatGPTがセンサーのフィードバックに基づいてロボットが進むべき場所をリアルタイムで決定できるかどうかを評価するために、追加の実験を行ったという(ChatGPTがこれらの決定を行うコードループを生成するのとは対照的)。興味深いことに、各ステップでのカメラ画像のテキスト記述をチャットにフィードできることを検証し、モデルは、ロボットが特定のオブジェクトに到達するまで、どのように制御するかを把握できたとしている。
LLM+Robotics研究のための共同オープンソースツール「PromptCraft」
マイクロソフトによると、ロボットタスクのためのChatGPTのようなLLMの成功には、優れたプロンプト工学が不可欠だ。残念ながら、プロンプトは経験科学であり、この分野の研究者や愛好家の助けとなる良い例(と悪い例)を持つ包括的でアクセス可能なリソースが不足しているのが現状だという。このギャップに対処するために、同チームは、誰もが異なるロボティクスカテゴリのプロンプト戦略の例を共有することができる共同オープンソースプラットフォームであるPromptCraftを紹介している。同研究で使用したプロンプトと会話はすべて公開するとしている。
プロンプトのデザインだけでなく、ChatGPTで生成したアルゴリズムをユーザーがテストできるように、複数のロボットシミュレータやインターフェイスも用意する方針。その手始めとして、ChatGPTを統合したAirSim環境も公開しており、誰でもこれらのアイデアを始めることができるようになっている。新しいシミュレータやインターフェースの提供も歓迎するとしている。
ロボット工学を研究室から世界へ
同チームは、ロボット工学をより多くの人々の手に届けることを目的として、これらの技術をリリースすることに興奮しているという。言語ベースのロボット制御が、ロボット工学を科学研究所から日常のユーザーの手に届けるための基礎になると信じているとしている。
とはいえ、ChatGPTの出力は、注意深く分析することなくロボットに直接導入することを意図していないことを強調。実生活に導入する前に、シミュレーションの力を借りてこれらのアルゴリズムを評価し、常に必要な安全策を講じることを推奨している。同チームの研究は、ロボット工学の領域で動作する大規模な言語モデルの交差点で可能なことのほんの一部にすぎないとして、今後の研究の多くを刺激することを期待しているとした。