ホームページ > 記事 > テクノロジー周辺機器 > 冷蔵庫にゾウを設置するには何ステップかかりますか? NVIDIA が ProgPrompt をリリース、言語モデルでロボットの計画を立てることが可能に
ロボットにとって、タスク計画は避けられない問題です。
現実世界のタスクを完了したい場合は、まず冷蔵庫に象を設置するのに何ステップかかるかを知る必要があります。
比較的単純なリンゴを投げる タスクでも 複数のサブステップ が含まれており、ロボットは リンゴの位置を観察する必要があります。 apple、もし がリンゴ を見つけられない場合、我々は を探し続け、それから リンゴに近づいて 、リンゴをつかむ必要があります # #,ゴミ箱の近くのを見つけてください。 ゴミ箱
が閉じている 場合は、まず 開いてから ゴミ箱を捨ててください。アップルインとゴミ箱を閉じます。 しかし、各タスクの 具体的な実装の詳細は人間が設計することはできず、コマンドによって
アクション シーケンスを生成する方法で十分です。問題。 コマンドを使用してシーケンス を生成しますか?これはまさに
言語モデルの仕事ではないでしょうか? これまで、研究者は大規模言語モデル (LLM) を使用して、入力されたタスク指示に基づいて潜在的な次のアクション スペースをスコア化し、アクション シーケンスを生成してきました。 命令は自然言語 で記述されており、追加のドメイン情報は含まれません。
しかし、そのようなメソッドでは、スコアリングのために考えられる次のアクションをすべて列挙する必要があるか、生成されるテキストの形式に制限がなく、現在の環境内の特定のロボットが含まれる可能性がありますimpossibleaction。
最近、南カリフォルニア大学と NVIDIA が共同で新しいモデル ProgPrompt を立ち上げました。このモデルでは、言語モデルも使用して、入力命令に対するタスク計画を実行します。これには、以下が含まれます。
プログラムされたプロンプト構造により、生成された計画は、さまざまな環境、さまざまな能力を持つロボット、およびさまざまなタスクで機能することができます。
タスクの標準化を確実にするために、研究者らは生成された Python スタイル コード を使用して言語モデルにプロンプトを出しました。アクションが使用可能か、環境内にどのようなオブジェクトがあるか、およびどのプログラムが実行可能であるか。
たとえば、「リンゴを投げる」コマンドを入力すると、次のプログラムが生成されます。
ProgPrompt モデルは、
仮想ホーム タスクで優れたパフォーマンス を達成し、研究者はまた、## にもモデルをデプロイしました。 #デスクトップ タスク用の物理ロボット アーム
。魔法の言語モデル毎日の家事を完了するには、世界についての常識的な理解と現在の環境の状況知識の両方が必要です。
「夕食を作る」というタスクプランを作成するために、エージェントが知っておく必要がある最低限の知識は次のとおりです。オブジェクトの機能 (コンロやコンロなど)電子レンジは加熱して使用できます。アクションの論理的シーケンス
、食品を追加する前にオーブンを予熱する必要があります。およびオブジェクトとアクションのタスクの関連性 (加熱と材料の検索など) 「ディナー」アクションへ。 しかし、状態フィードバック (状態フィードバック) がなければ、この種の推論は実行できません。
エージェントは、冷蔵庫に魚があるかどうか、冷蔵庫に鶏肉があるかどうかなど、現在の環境で どこに食べ物があるか を知る必要があります。 。
大規模なコーパスでトレーニングされた自己回帰大規模言語モデルは、入力プロンプトの条件下でテキスト シーケンスを生成でき、重要なマルチタスク一般化機能を備えています。
たとえば、「夕食を作る」と入力すると、言語モデルは、冷蔵庫を開ける、鶏肉を取り出す、ソーダを取り出す、冷蔵庫を閉じるなどの後続のシーケンスを生成できます。 、照明のスイッチを入れるなど。
生成されたテキスト シーケンスは、エージェントのアクション スペースにマッピングする必要があります。たとえば、生成された指示が「手を伸ばしてピクルスの瓶を拾う」である場合、対応する実行可能なアクションが「瓶を拾う」である場合、モデルはアクションの確率スコアを計算します。
しかし、環境フィードバックがない場合、冷蔵庫に鶏肉がないにもかかわらず「鶏肉を取り出す」ことを選択した場合、「夕食を作る」というタスクは失敗します。世界情勢に関する情報は含まれません。
ProgPrompt モデルは、タスク計画においてプログラミング言語構造を巧みに利用しています。これは、 既存の大規模言語モデルは、通常、プログラミング チュートリアルとコード ドキュメントの事前トレーニングのコーパスで実施されるためです。
ProgPrompt は、プロンプトとして Python プログラム ヘッダーを備えた言語モデルを提供し、利用可能なアクション スペース、予期されるパラメーター、環境内の利用可能なオブジェクトをインポートします。
次に、make_dinner、throw_away_banana、その他の 関数 を定義します。その本体は次のとおりです。オブジェクトを操作するための アクション シーケンス は、計画された前提条件 をアサートする によって組み込まれます (冷蔵庫を開けようとする前に冷蔵庫に近づく、アサーションの失敗に回復アクションで応答するなど)。ステータスフィードバック。 最も重要なことは、ProgPrompt プログラムにはアクションの目標を説明するための自然言語で書かれた
コメントも含まれており、それによって生成された計画の実行が改善されることです。プログラムのミッション成功率。 ProgPrompt
、Python 関数の構築が含まれます。 , プログラミング言語プロンプトの構築 , タスク プランの生成と実行 。
#1. ロボット プランを Python 関数として表現しますプランニング関数には、 アクション プリミティブ
への API 呼び出し、アクションの要約とコメントの追加、実行を追跡するためのアサーションが含まれます。各アクション プリミティブにはパラメータとしてオブジェクトが必要です。たとえば、「サーモンを電子レンジに入れる」タスクには find(salmon) の呼び出しが含まれており、find はアクション プリミティブです。 。
コード内でコメントを使用して、後続のアクション シーケンスに自然言語による概要を提供します。コメントは、高レベルのタスクを適切なレベルに分割するのに役立ちます。論理的なサブタスクは次のとおりです。 「鮭を捕まえる」「鮭を電子レンジに入れる」。
アノテーションを使用すると、言語モデルが現在の目標を理解できるようになり、思考の連鎖と同様に、一貫性のない、一貫性のない、または繰り返しの出力の可能性を減らすことができます。結果。
アサーション (アサーション) 前提条件が真であることを確認し、前提条件が真でない場合 (クロール アクションの前など) にエラー回復を実装するための環境フィードバック メカニズムを提供します。この計画では、エージェントがサケの近くにいることを主張しており、そうでない場合、エージェントは最初に検索アクションを実行する必要があります。
2. プログラミング言語プロンプトの構築
プロンプトは環境に関する情報を提供する必要があります言語モデルと主要なアクション情報 (観察、アクション プリミティブ、例など) に関連付けられ、言語モデルを完了するための Python プロンプトが生成されます。
次に、言語モデルは
として予測します。タスクの場合、LLM が生成できる合理的な最初のステップはサケを取り除くことですが、計画の実行を担当するエージェントにはそのようなアクション プリミティブがない可能性があります。
言語モデルがエージェントのアクション プリミティブを理解できるようにするには、プロンプトのインポート ステートメントを介してアクション プリミティブをインポートします。これにより、出力が現在の環境で利用可能な関数に制限されます。
エージェントの動作空間を変更するには、インポート関数リストを更新するだけです。
変数オブジェクトは、環境内で使用可能なすべてのオブジェクトを文字列のリストとして提供します。
#プロンプトには、サンプルとして完全に実行可能なプログラム プランも多数含まれています。各サンプル タスクでは、特定の環境で利用可能なアクションと目標を使用して特定のタスクを完了する方法を示します。 throw_away_lime
3、タスクプランの生成と実行
指定されたタスク その後、プランは ProgPrompt プロンプトに基づいた言語モデルによって完全に推論され、生成されたプランは仮想エージェントまたは物理ロボット システム上で実行できます。環境に応じて各アクション コマンドを実行するにはインタプリタが必要です。
実行中、アサーション チェックが閉ループ方式で実行され、現在の環境状態に基づいてフィードバックが提供されます。
実験部分では、研究者は Virtual Home (VH) シミュレーション プラットフォーム で方法を評価しました。
VH のステータスには、電子レンジの中のサケ (in)、または近く (agent_close_to) など、一連のオブジェクトと対応する属性が含まれます。
アクション スペースには、つかむ、置く、戻す、歩く、見つける、開く、閉じる、閉じるなどの操作が含まれます。
最後に、3 つの VH 環境が実験され、各環境には 115 の異なるオブジェクトが含まれていました。研究者は、高度な抽象化とコマンドを備えた、70 の家事タスクを含むデータセットを作成しました。それはすべて「」に関するものです。マイクロ波サーモン」を作成し、そのためのグラウンドトゥルースのアクション シーケンスを作成しました。
生成されたプログラムを仮想ファミリ上で評価した後、評価指標には成功率 (SR)、目標条件付き再現率 (GCR)、実行可能性 (Exec) が含まれます。 ProgPrompt がベースラインや LangPrompt よりも大幅に優れていることがわかります。この表には、各機能がどのようにパフォーマンスを向上させるかも示されています。
研究者らは、平行爪を持つフランカ・エミカ・パンダ・ロボットを使用して、現実世界でも実験を実施しました。ピックアンドプレイス戦略が得られるということです。
この戦略は、ターゲット オブジェクトとターゲット コンテナの 2 つの点群を入力として受け取り、ピック アンド プレイス操作を実行してコンテナ上またはコンテナ内にオブジェクトを配置します。
システム実装では、オープンボキャブラリーオブジェクト検出モデル ViLD を導入して、シーン内のオブジェクトを識別してセグメント化し、プロンプト内で使用可能なオブジェクトのリストを作成します。
仮想環境とは異なり、ここでのオブジェクト リストは各計画関数のローカル変数であるため、新しいオブジェクトに柔軟に適応できます。
言語モデルによって出力されたプランには、grab と putin の形式の関数呼び出しが含まれています。
現実世界の不確実性のため、アサーション ベースの閉ループ オプション は実験設定では実装されませんでした。
分類タスクでは、ロボットがバナナとイチゴを果物として識別し、それらを配置するための計画ステップを生成できたことがわかります。プレートを中に入れ、ボトルを箱に入れます。
以上が冷蔵庫にゾウを設置するには何ステップかかりますか? NVIDIA が ProgPrompt をリリース、言語モデルでロボットの計画を立てることが可能にの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。