Skip to content

필사 모드: ロボットが見て聞いて動く — VLAモデル RT-2とOpenVLAのレビュー

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

はじめに: 認識と行動をつなぐ橋

長い間、ロボット学習とは三つの分離したパイプラインをつなぎ合わせる作業でした。カメラが見たものを解釈する認識(perception)モジュール、何をすべきかを決める計画(planning)モジュール、そして関節を実際に動かす制御(control)モジュールが、それぞれ別々に設計され別々に学習されていました。各段階の境界で情報が失われ、新しい物体や新しい指示が入ると、パイプライン全体が崩れがちでした。

ビジョン・言語・行動(Vision-Language-Action, VLA)モデルは、この三段階を一つのニューラルネットワークに統合しようとする試みです。カメラ画像と「赤いコップを取って皿の上に置いて」のような自然言語の指示を入力として受け取り、ロボットが次に取るべき行動を直接出力します。核心的な洞察は単純です。ウェブ規模の画像とテキストのデータで事前学習されたビジョン・言語モデル(VLM)は、すでに世界に関する豊かな常識と汎化能力を持っているので、そこに「行動」という出力様式を一つ追加して教えればよい、という考え方です。

本稿では、VLAパラダイムを切り開いたRT-2、データ面の土台を築いたOpen X-Embodiment / RT-X、そしてこれをオープンソースで再現し拡張したOpenVLAを順に見ていきます。正確な事実に基づきつつ、バージョンや細かな数値は出典によって異なる場合があるため、確実なものだけを扱います。

VLAパラダイムの概念

行動をトークンとして見る

言語モデルはテキストをトークンの列として見て、次のトークンを予測します。VLAの核心的な考え方は、ロボットの行動も同じようにトークンの列として表現できる、というものです。ロボットアームの行動は通常、次のような連続値ベクトルで表されます。

action = [Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper]

└─── エンドエフェクタの位置・姿勢変化 ───┘ └ グリッパ ┘

この7次元の連続ベクトルの各次元を一定の区間(bin)に分け、整数トークンに変換すると、行動は整数トークンの列になります。すると「画像と指示を見て次の行動トークンを予測せよ」という問題は、言語モデルが解いてきた「次トークン予測」問題とまったく同じ形になります。

┌─────────────────────────────────────────────────────────┐

│ VLA推論の基本的な流れ │

└─────────────────────────────────────────────────────────┘

カメラ画像 自然言語の指示

(観測 o_t) 「赤いコップを取って」

│ │

▼ ▼

┌──────────┐ ┌──────────┐

│ ビジョン │ │ テキスト │

│ エンコーダ│ │ トークナイザ│

└────┬─────┘ └────┬─────┘

│ ビジョントークン │ 言語トークン

└─────────┬──────────┘

┌──────────────────┐

│ 大規模Transformer│

│ (VLMバックボーン)│

└────────┬─────────┘

┌──────────────────┐

│ 行動トークン │ ──▶ [126, 14, 200, ...]

└────────┬─────────┘

┌──────────────────┐

│ 逆トークン化 │ ──▶ 連続行動ベクトル

└────────┬─────────┘

ロボットが a_t を実行

なぜVLMから出発するのか

VLMから出発する理由は「転移(transfer)」です。ウェブの画像とテキストのペアで学習したモデルは、「コップ」「左」「積む」「赤」といった概念をすでに知っています。ロボットのデータだけでは、このような幅広い意味的知識を得るのは難しいです。ロボットの実演データは収集コストが非常に高く、量が限られているからです。VLMの事前知識の上にロボットの行動を載せると、学習中に一度も見たことのない物体や指示に対しても、ある程度の汎化が可能になります。

RT-2: VLMをロボットの方策へファインチューニング

RT-2(Robotic Transformer 2, Google DeepMind, arXiv 2307.15818)は、このパラダイムを本格的に提示した研究です。核心的な考え方は次のとおりです。

1. 大規模なビジョン・言語モデル(PaLI-X, PaLM-E系列)をバックボーンとして用います。

2. ロボットの行動を離散トークンで表現します。7次元の行動の各次元を256個の区間に量子化してトークンにします。

3. ウェブデータ(VQA、キャプションなど)とロボットの実演データを一緒に学習する共同ファインチューニング(co-fine-tuning)を行います。

行動をテキストのように出力する

RT-2の印象的な点は、行動トークンをモデルの語彙(vocabulary)の中に統合することです。モデルは文を生成するように行動を生成します。出力文字列は概念的にはこのような形です。

入力: [画像]「テーブルから落ちかけているカバンを取って」

出力(概念):

"terminate Δpos_x Δpos_y Δpos_z Δrot_x Δrot_y Δrot_z gripper"

→ "1 135 149 125 124 135 134 141"

└ 各数字が量子化された行動トークン ┘

ここで各整数はあらかじめ定めた区間インデックスであり、逆トークン化によって実際の連続行動値に復元されます。

共同ファインチューニングと汎化

RT-2が示した最も重要な結果は、新規物体と新規指示に対する汎化でした。ウェブデータを一緒に学習したため、学習時にロボットで一度も扱ったことのない物体(「絶滅危惧種のぬいぐるみを取って」)や、象徴的な推論を必要とする指示に対しても、意味を理解して合理的に行動する傾向を示しました。つまり、インターネット規模の知識がロボット制御へ「滲み出す(創発的な)」現象が観察されました。

ただしRT-2はモデルの重みが公開されておらず、巨大な独自(proprietary)VLMに依存し、推論が重いという限界がありました。ここから二つの後続の流れが生まれます。一つはデータ面の統合(Open X-Embodiment)、もう一つはオープンソースの再現(OpenVLA)です。

Open X-Embodiment / RT-X: 異種ロボットのデータセット

RT-2がモデルのアーキテクチャを提示したとすれば、Open X-Embodiment(arXiv 2310.08864)はデータの土台を築きました。問題意識はこうです。各研究室は自分のロボットで自分のデータだけを集め、そのデータで学習した方策は別のロボットでは使えませんでした。データがロボットの機種(embodiment)ごとに断片化されていたのです。

Open X-Embodimentは、複数の機関の多様なロボットから集めた実演データを一つの標準フォーマットに統合した大規模なコレクションです。単腕マニピュレータから両腕ロボット、移動ロボットまで多様な形態が含まれます。

┌──────────────────────────────────────────────────────────┐

│ Open X-Embodiment: 異種ロボットのデータ統合 │

└──────────────────────────────────────────────────────────┘

機関A ロボット 機関B ロボット 機関C ロボット ... 機関N ロボット

(7自由度 腕) (両腕) (移動ベース) (別のグリッパ)

│ │ │ │

└─────────────┴──────┬──────┴───────────────────┘

┌───────────────────────┐

│ 標準化されたフォーマット│

│ (観測・行動・指示) │

└───────────┬───────────┘

┌───────────────────────┐

│ RT-X 方策の学習 │

│ (複数機種の共同学習) │

└───────────┬───────────┘

一つの方策が複数の機種で動作

(正の転移が観察された)

このデータで学習したRT-X系の方策は、複数の機種を一度に学習すると、単一機種だけで学習した場合より性能が向上する正の転移(positive transfer)を示しました。つまり、あるロボットで学んだことが別のロボットの性能を押し上げたのです。これは、自然言語処理でより多く多様なデータがより良い汎化につながるのと同じ直観です。Open X-Embodimentはその後、ほぼすべてのオープンなVLA研究の事実上の標準学習データになりました。

OpenVLA: オープンソースの7B VLA

OpenVLA(arXiv 2406.09246)は、RT-2が示したビジョンをオープンソースで再現し、誰もが使えるようにしたモデルです。約70億(7B)パラメータの規模で、重みと学習コードが公開されています。学習にはOpen X-Embodimentから選んだ約97万件の実ロボット実演が使われました。

デュアルビジョンエンコーダ + Llama 2

OpenVLAのアーキテクチャで目を引く選択は、二つのビジョンエンコーダを一緒に使う点です。

┌────────────────────────────────────────────────────────────┐

│ OpenVLA アーキテクチャ(概略) │

└────────────────────────────────────────────────────────────┘

入力画像

┌────────┴─────────┐

▼ ▼

┌────────┐ ┌────────┐

│ DINOv2 │ │ SigLIP │

│(空間・ │ │(意味・ │

│ 幾何) │ │ 言語整合)│

└───┬────┘ └───┬────┘

│ 特徴の結合(concat)│

└────────┬─────────┘

┌─────────────┐ 「赤いコップを取って」

│ プロジェクタ│ │

│ (MLP) │ ▼

└──────┬──────┘ ┌─────────────┐

│ │ テキストトークン│

└─────┬──────┘ │

▼ │

┌──────────────────────────────┐

│ Llama 2 (7B) バックボーン │

│ (自己回帰Transformerデコーダ)│

└──────────────┬───────────────┘

行動トークンの予測

[126, 14, 200, 51, ...]

逆トークン化 → 連続行動

- **DINOv2**: 自己教師あり学習で得た空間的・幾何学的な特徴に強いです。物体の位置、境界、構造をよく捉えます。

- **SigLIP**: 言語と整合した意味的な特徴に強いです。「赤」「コップ」といった意味とピクセルを結びつけます。

二つのエンコーダの特徴を結合すると「何が(意味)どこに(空間)あるか」を一緒に表現でき、マニピュレーションのように精密な空間理解が必要な作業に有利です。結合された視覚特徴はプロジェクタ(MLP)を経て言語モデルのトークン空間へ写像され、テキストトークンとともにLlama 2デコーダに入力されます。

行動トークン化の詳細

OpenVLAもRT-2と同様に、連続行動を離散トークンに変換します。7次元の行動の各次元を256個の区間に量子化する方式が一般的です。このとき、言語モデルの既存の語彙のうちほとんど使われないトークンを行動トークンに再割り当てする手法がよく使われます。

連続行動次元 d のトークン化

値の範囲: [v_min, v_max] を256個の区間に分割

v_min ├─┬─┬─┬─ ... ─┬─┤ v_max

0 1 2 3 255 ← 区間インデックス = 行動トークン

分位点(quantile)ベースの境界を使うと、データ分布に

合わせて区間を分けられ、量子化誤差を減らせる

推論: モデルがインデックスを予測 ──▶ 区間の中央値へ逆変換

離散化は言語モデルの構造をそのまま再利用できるという大きな利点がありますが、量子化誤差が生じ、行動次元間の相関を自己回帰で一次元ずつ解く必要があるという欠点もあります。この限界が、後で扱う連続行動モデル(Diffusion Policy, π0)の動機になります。

効率的な適応: LoRAと量子化

7Bモデル全体を新しいロボット・新しい作業ごとにフルファインチューニングするのは高コストです。OpenVLAはLoRA(低ランク適応)のようなパラメータ効率的なファインチューニングで、少ないリソースでも新しい環境に適応できることを示しました。LoRAの概念は次のようにまとめられます。

概念的な擬似コード: 既存の重みは凍結し、低ランク行列だけ学習

(実際の実装はPEFTなどのライブラリを使う)

class LoRALinear:

def __init__(self, base_linear, rank=16, alpha=32):

self.base = base_linear # 凍結された元の重み W

d_in = base_linear.in_features

d_out = base_linear.out_features

self.A = zeros(rank, d_in) # 学習対象

self.B = zeros(d_out, rank) # 学習対象

self.scale = alpha / rank

def forward(self, x):

W x + (B A) x * scale

return self.base(x) + (x @ self.A.T @ self.B.T) * self.scale

元の重み行列はそのまま残し、二つの小さな行列AとBの積で表される補正項だけを学習するため、学習パラメータ数とメモリが大きく減ります。さらに4ビット・8ビットの量子化を併用すると、単一のGPUでも推論やファインチューニングが可能になります(正確なメモリ要件は設定によって異なる場合があります)。

三つのモデルの比較

| 項目 | RT-2 | RT-X (Open X-Embodiment) | OpenVLA |

| --- | --- | --- | --- |

| 主体 | Google DeepMind | 複数機関の協業 | 複数機関(オープン) |

| 主な貢献 | VLMファインチューニングでVLAを確立 | 異種ロボット統合データセット | オープン7B VLAの再現 |

| バックボーン | 大規模な独自VLM (PaLI-X/PaLM-E系) | 多様 | DINOv2+SigLIP+Llama 2 |

| 行動表現 | 離散行動トークン | 標準化行動フォーマット | 離散行動トークン |

| 重み公開 | 非公開 | データ公開 | 重み・コード公開 |

| 長所 | 強い意味的汎化 | データ多様性・正の転移 | アクセス性・LoRA適応 |

表の詳細な仕様は出典やバージョンによって異なる場合があります。重要な区別は、RT-2がアーキテクチャのパラダイムを、Open X-Embodimentがデータの土台を、OpenVLAがオープンな再現と効率的な適応をそれぞれ代表する点です。

データ収集と学習パイプライン

VLAの性能は、モデル構造と同じくらいデータに左右されます。ここでは、ロボットの実演データがどのように収集され学習へ流れていくのか、全体の流れを整理します。

実演データはどう集めるのか

最も一般的な方式は、人が直接ロボットを操作して作業を実演する遠隔操作(teleoperation)です。操作者はスペースマウス、VRコントローラ、または別のマスターアームを通じてロボットを動かし、その過程の観測(画像)と行動(エンドエフェクタ指令)を時系列で記録します。

┌──────────────────────────────────────────────────────────┐

│ 実演データ収集パイプライン(概略) │

└──────────────────────────────────────────────────────────┘

人の操作者

│ (スペースマウス/VR/マスターアーム)

┌──────────┐ 指令 ┌──────────┐

│ テレオプ │ ─────────▶ │ ロボット │

│ インタフェース│ │ (実行) │

└──────────┘ └────┬─────┘

│ 観測(カメラ)・状態(関節)

┌──────────────────┐

│ タイムスタンプ同期 │

│ (観測 ↔ 行動 整列)│

└────────┬─────────┘

┌──────────────────┐

│ エピソード保存 │ ──▶ 学習データセット

│ (成功/失敗ラベル) │

└──────────────────┘

一つのエピソードは通常「観測、行動、次の観測」の列からなり、言語の指示(例:「タオルをたたんで」)が一緒に付きます。こうして集めた数万~数十万のエピソードがモデルの学習材料になります。

観測と行動の表現

学習に入る前に、観測と行動を一貫した形式に整える必要があります。観測はカメラ画像(時に複数視点)とロボットの状態(関節角度、グリッパの開閉)からなり、行動は先ほど見た7次元のエンドエフェクタ指令で表されることが多いです。

一タイムステップのデータ構造(概念)

観測 o_t:

- 画像: 前面カメラ、手首カメラ ...

- 状態: 関節角度、グリッパの開閉度

指示 g:

- 自然言語の文(「赤いコップを取って」)

行動 a_t:

- [Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper]

→ (o_t, g, a_t) の三つ組の列が一つのエピソード

機種ごとにカメラ配置、関節数、グリッパの種類が異なるため、Open X-Embodimentのような統合データセットはこうした差を標準フォーマットで吸収します。これが異種ロボット学習を可能にした土台です。

共同ファインチューニングの手順

RT-2とOpenVLAが共通して強調した共同ファインチューニング(co-fine-tuning)は、ウェブのビジョン・言語データとロボットのデータを混ぜて学習する手法です。核心は、学習中に二種類のデータを適切な比率で一緒に見せ、意味的汎化能力を失わずに行動を学ばせることです。

┌──────────────────────────────────────────────────────────┐

│ 共同ファインチューニングのデータの流れ │

└──────────────────────────────────────────────────────────┘

ウェブVLデータ ロボット実演データ

(VQA・キャプション) (観測・指示・行動)

│ │

└────────────┬─────────────┘

┌──────────────────┐

│ 混合バッチ抽出 │ 比率調整(例: 一部はウェブ、一部はロボット)

└────────┬─────────┘

┌──────────────────┐

│ VLM ファインチューニング│ 同じ損失でテキスト・行動トークンを学習

└────────┬─────────┘

VLA 方策の完成

ロボットのデータだけでファインチューニングすると、モデルがウェブで学んだ幅広い知識を忘れてしまう傾向(破滅的忘却)があります。ウェブのデータを混ぜるとこの忘却を緩和し、「一度も見たことのない物体」への汎化を保てます。

評価と実世界への展開

VLAをどう評価するか

VLAの評価は本質的に難しいです。言語モデルは固定したベンチマークで採点しますが、ロボットの方策は実際の物理環境で作業を遂行しなければならないからです。一般的な評価項目は次のとおりです。

- **成功率(success rate)**: 与えられた作業を最後まで完遂した割合。最も直接的な指標です。

- **汎化の評価**: 学習時に見ていない物体・背景・指示に対する成功率。VLAの核心的価値を測ります。

- **頑健性(robustness)**: 照明の変化、物体位置の擾乱、妨害要素があるときの性能。

- **言語理解**: 同じ場面で指示だけを変えたとき、正しい作業へ分岐するか。

評価シナリオの分類(概念)

┌─────────────────────────────────────────────┐

│ 分布内(学習分布の中) │

│ - 見た物体、見た配置 → 基本成功率 │

├─────────────────────────────────────────────┤

│ 分布外(学習分布の外) │

│ - 新しい物体 → 意味的汎化の検証 │

│ - 新しい背景 → 視覚的頑健性の検証 │

│ - 新しい指示 → 言語理解の検証 │

└─────────────────────────────────────────────┘

実ロボットの評価は、環境セットアップ、ハードウェアの摩耗、操作者の差などで再現が難しいです。そこでシミュレーションのベンチマークを補助に使いますが、シムと実際の隔たり(sim-to-real gap)を常に念頭に置く必要があります。

実世界への展開での考慮事項

研究環境を越えて実際にVLAを展開するには、追加の考慮が必要です。

- **推論の遅延**: 7B規模のモデルは推論が重いです。量子化・キャッシュ・行動チャンクで遅延を減らすことが実用性の鍵です。

- **安全ガードレール**: モデルの出力が危険な行動(過度な力、衝突経路)を出し得るため、低レベル制御器に速度・トルク制限と衝突回避を置きます。

- **ヒューマン・イン・ザ・ループ**: 初期の展開では、人が監督し危険時に即座に停止できる必要があります。

- **分布のモニタリング**: 入力が学習分布から大きく外れると信頼度が下がるため、これを検知して保守的に行動するか、人に引き継ぐ仕組みが必要です。

展開スタックの安全層(概念)

VLA 方策の出力(行動の提案)

┌──────────────────┐

│ 安全フィルタ │ 速度・トルク制限、作業空間の境界、衝突回避

└────────┬─────────┘

┌──────────────────┐

│ 低レベル制御器 │ 実際の関節指令に変換

└────────┬─────────┘

ロボットが実行 ──▶ (人の監督・非常停止が可能)

これらの層は、モデルがどれほど賢くなっても物理世界での失敗のコストが大きい、という現実を反映したものです。VLAの発展は、モデル性能だけでなく、こうした運用インフラの成熟とともに進みます。

長所と限界

長所

- **意味的汎化**: ウェブの事前学習のおかげで、学習中に見ていない物体・指示にもある程度対応できます。

- **単一モデルへの統合**: 認識・計画・制御の境界での損失を減らし、自然言語の指示を直接受け取れます。

- **拡張性**: より多くのデータ(Open X-Embodiment)とより大きなバックボーンで性能が向上する傾向があります。

- **再現性**: OpenVLAのように重みとコードが公開されると、研究・応用の参入障壁が下がります。

限界

- **離散化誤差**: 行動トークン化は量子化誤差を伴い、滑らかで精密な連続制御には不利な場合があります。

- **制御周波数**: 自己回帰でトークンを一つずつ生成すると推論が遅く、高周波の制御(速い反応)が難しいです。

- **データコスト**: 実ロボットの実演データは依然として収集コストが非常に高いです。

- **安全性・信頼性**: 物理世界での失敗はコストが大きく、分布外の状況での行動を保証するのは難しいです。

- **評価の難しさ**: 実ロボットの評価は再現が難しく、環境の差に敏感です。

このうち離散化誤差と制御周波数の問題は、行動を連続値で生成するアプローチ(Diffusion Policy、flow-matchingベースのπ0)につながります。これは後続の記事で扱います。

おわりに

VLAモデルは「ウェブから学んだ意味的知識」と「ロボットの実演から学んだ運動スキル」を一つのニューラルネットワークで合わせようとする試みです。RT-2はVLMをロボットの方策にファインチューニングすると新規物体・指示への汎化が現れることを示し、Open X-Embodimentは異種ロボット間の正の転移を実証し、OpenVLAはこれをオープンソースで再現して誰もが実験できるようにしました。

もちろん、離散行動トークン化の限界、制御周波数、データコスト、安全性など、解くべき課題は多いです。しかし、認識と行動を単一のモデルでつなぐという方向性は明確に見えます。次の段階は、より滑らかで速い行動生成と、ヒューマノイドのような複雑な機種への拡張です。

参考資料

- RT-2: Vision-Language-Action Models, arXiv: [2307.15818](https://arxiv.org/abs/2307.15818)

- OpenVLA: An Open-Source Vision-Language-Action Model, arXiv: [2406.09246](https://arxiv.org/abs/2406.09246)

- Open X-Embodiment: Robotic Learning Datasets and RT-X Models, arXiv: [2310.08864](https://arxiv.org/abs/2310.08864)

- LoRA: Low-Rank Adaptation of Large Language Models, arXiv: [2106.09685](https://arxiv.org/abs/2106.09685)

- DINOv2, arXiv: [2304.07193](https://arxiv.org/abs/2304.07193)

- SigLIP: Sigmoid Loss for Language Image Pre-Training, arXiv: [2303.15343](https://arxiv.org/abs/2303.15343)

- Llama 2, arXiv: [2307.09288](https://arxiv.org/abs/2307.09288)

- Open X-Embodiment プロジェクトページ: [robotics-transformer-x.github.io](https://robotics-transformer-x.github.io/)

현재 단락 (1/247)

長い間、ロボット学習とは三つの分離したパイプラインをつなぎ合わせる作業でした。カメラが見たものを解釈する認識(perception)モジュール、何をすべきかを決める計画(planning)モジュール、...

작성 글자: 0원문 글자: 10,980작성 단락: 0/247