>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML
Jupyter

LIBERO:ロボットに昔のスキルを忘れないようにする教え方

1,987 スター

マニピュレータロボットに本棚に本を丁寧に置く方法を教えたとしましょう。素晴らしい!次にテーブルにカップを置くように頼むと...、本の扱い方を完全に忘れてしまいます。機械学習の世界ではおなじみの状況ですか?この「破滅的忘却(catastrophic forgetting)」と呼ばれる現象は、ロボティクス研究者にとって主要な頭痛の種です。一つのタスクしかできないロボットは、現実世界ではほぼ無用です。

まさにこれがLIBEROプロジェクト(Lifelong-Robot-Learning)の創設目的です。これは単なるコードではなく、「生涯学習」——つまり既存のスキルを失うことなく知識とスキルを蓄積できる——能力を持つロボットの開発とテストのための、フレームワークとベンチマーク全体です。このプロジェクトが何か、そしてなぜ注目すべきかを説明します。

LIBEROとは?誰が 필요한가?

簡単に言えば、LIBEROはロボットAIのための「ジム」と「試験場」です。複数のタスクを順番に実行し、、あるタスクから別のタスクへ知識を転移するAIエージェントを訓練するために必要なすべてを、研究者と開発者に提供します。

このプロジェクトは以下のユーザーに特に役立ちます:

  • AI/MLおよびロボティクスの研究者:LIBEROは、異なる生涯学習アプローチを比較するための標準化されたタスクセットと指標を提供します。
  • 学生および大学院生:高度なロボット学習の概念を学習し実験するための готовый サンドボックスです。
  • 実践的なエンジニア:ロボットが常に適応する必要がある現実的な条件で、自分のアルゴリズムをテストしたい人。

環境やタスクをゼロから作成するのではなく、学習アルゴリズムにとって最も重要なことに集中できる готовый ツールキットが手に入ります。

LIBERO workflow diagram

主な機能:中身は?

LIBEROは単なるスクリプト集ではなく、包括的なプラットフォームです。最も興味深いコンポーネントをいくつか紹介します。

1. 無限タスクジェネレーター

このプロジェクトの主なハイライトの一つは、手続き的タスク生成です。これは理論上、LIBEROが無限の数のユニークな操作シナリオを生成できることを意味します。これにより「データセット記憶」問題が解決されます:モデルは限られた例セットの正しいアクションを単に記憶することができません。一般化する必要があります。

2. готовый タスクスイート

便宜上、著者は130のタスクを4つのテーマ別セットにグループ化しています:

  • LIBERO-Spatial:空間的関係の理解を必要とするタスク(「キューブを箱の上に置く」、「オブジェクトをテーブルの下に押す」)。
  • LIBERO-Object:異なるオブジェクトとの対話を中心にしています。ここでは、ロボットはある種類のアイテムの操作から別の種類へのスキルの転移が必要です。
  • LIBERO-Goal:オブジェクトと環境はそのままで、最終的な目標が変わるタスク。
  • LIBERO-100:100の多様なタスクからなり、混合的な知識転移を必要とする最もchallengingなセット。エージェントの継続的学習能力をpre-training用にLIBERO-90、最終テスト用にLIBERO-10にさらに分割されています。

この分割により、モデルが特定の種類の知識——手続き的(どう動くか)または宣言的(どこにあるか)——を転移するかを対象的にテストできます。

3. 「バッテリー付き」:アルゴリズムとアーキテクチャ

実験を簡単に始めるために、LIBEROには基本的なアルゴリズムとニューラルネットワークアーキテクチャがすでに組み込まれています:

  • 3つのビジョンモータアーキテクチャ:bc_rnn_policybc_transformer_policybc_vilt_policy。これらはカメラの画像をマニピュレータのアクションに変換する готовый 「頭脳」です。
  • 5つの学習アルゴリズム:基本的なアプローチ(逐次微調整、マルチタスク学習)から、より高度な継続的学習法(erewcpacknet)まで。

つまり、ゼロから実装する時間を費やさずに、異なるアプローチの比較をすぐに開始できます。

実際にはどのように動作しますか?

LIBEROを始めるのはかなり簡単です。標準的なインストール(condapip経由)後、ツールキット全体にアクセスできます。

たとえば、人間のデモデータを含むデータセットをダウンロードするには(そう、このプロジェクトは模倣学習に焦点を当てています)、1つのスクリプトを実行するだけで済みます。ところで、最近HuggingFaceから直接ダウンロード機能が追加されました——とても便利です!

# Скачать все датасеты с HuggingFace
python benchmark_scripts/download_libero_datasets.py --use-huggingface

そして、タスクの読み込みと実行の最小例は次のようになります:

from libero.libero import benchmark
from libero.libero.envs import OffScreenRenderEnv

# Получаем список доступных наборов задач
benchmark_dict = benchmark.get_benchmark_dict()
task_suite_name = "libero_10"
task_suite = benchmark_dict[task_suite_name]()

# Выбираем конкретную задачу по её ID
task_id = 0
task = task_suite.get_task(task_id)
task_description = task.language

print(f"Загружена задача: {task_description}")

# Инициализируем окружение для симуляции
env_args = {
    "bddl_file_name": os.path.join(get_libero_path("bddl_files"), task.problem_folder, task.bddl_file),
    "camera_heights": 128,
    "camera_widths": 128
}
env = OffScreenRenderEnv(**env_args)
env.reset()

# Выполняем 10 шагов с пустым действием
for step in range(10):
    obs, reward, done, info = env.step([0.] * 7)
env.close()

ごらんのように、APIは非常にシンプルで直感的です。このパイプラインに独自のモデルとアルゴリズムを簡単に統合できます。

結論:試してみる価値はありますか?

あなたの仕事や研究がロボット学習に少しでも関連しているなら、絶対にそうです。LIBEROは、この分野の実際の問題を解決する、強力でよくドキュメント化されたツールです。ロボットを教えてくれるわけではありませんが、実験に優れた環境を提供します。

LIBEROは特にこんな方に向いています:

  • 研究者:再現可能で比較可能な結果を発表するために。
  • 愛好家:ロボティクスの最新アプローチに「手を動かす」ために。
  • 講師:機械学習とロボティクスのコースの実用的プラットフォームとして。

このプロジェクトは積極的に開発されており、著者はAIの最も複雑で興味深い分野の1つに統一された標準を作成するという巨大な仕事を完成了しました。だから、ロボットにカップを置くだけでなく、本のことを忘れないように教えたいなら、プロジェクトのGitHubをチェックしてください。素晴らしい出発点です。