はじめに
最近、ニュースなどでよく耳にする「フィジカルAI」について、その中身が気になったので記事にまとめてみました。
フィジカルAIというと、人型ロボットが歩いたり、工場で作業したりする映像を思い浮かべます。
ただ、個人的に気になったのは、どのようなAIモデルを使い、何を学習することでロボットが動けるようになっているのかという点です。
LLMであれば、大量のテキストによる事前学習や、特定の用途に合わせたファインチューニングが知られています。
では、ロボットの場合はどうなのでしょうか。
今回は、フィジカルAIの中でも特に注目されているVLA(Vision-Language-Action)を中心に、モデル構造と学習方法を論文から整理してみました。
具体的には、次の点を取り上げます。
- VLAは何を入力し、何を出力するモデルなのか
- VLMをどのようにファインチューニングしているのか
- 学習データはどこから集めるのか
- ロボットの動作をどのようにモデルに学習させるのか
- DiffusionやFlow Matchingを使うモデルとは何が違うのか
1. フィジカルAIとは?
フィジカルAI(Physical AI)は、AIが現実世界を認識・理解し、物理的な行動につなげる技術の総称です。
対象は人型ロボットだけではありません。ロボットアームや自律移動ロボット、自動運転なども含まれます。
従来のロボットもセンサーを使った認識や制御を行ってきましたが、最近の研究では、大規模な学習データから獲得した知識を使い、さまざまな指示や環境に対応できるモデルが注目されています。
その代表的なアプローチの一つが、VLA(Vision-Language-Action)モデルです。
1.1. VLAとは?
VLAは、画像や言語による指示を入力すると、ロボットが実行すべき動作を出力するモデルです。
例えば、机に赤いコップが置かれている状況を考えます。
人間が「赤いコップを取って」と指示すると、VLAはカメラ画像から対象物を認識し、ロボットアームを動かすための指令を生成します。
モデルによっては、画像や言語指示に加え、現在の関節角度やグリッパーの状態なども入力します。
出力される動作は、例えば次のようなものです。
| 動作 | 内容 |
|---|---|
| 位置 | アームの先端をどの方向へ動かすか |
| 姿勢 | どの方向へ回転させるか |
| 把持 | グリッパーを開くか、閉じるか |
つまり、画像を見て物体を認識するだけでなく、その状況でどう動くべきかまで予測するのがVLAの特徴です。
1.2. VLMからVLAへ
ここで疑問になるのが、VLAをどのように作るのかという点です。
代表的な方法の一つが、事前学習済みのVLM(Vision-Language Model)をロボットの操作データでファインチューニングする方法です。
VLMは画像と言語を理解できます。
例えば、画像を見て「赤いコップがあります」と回答することはできますが、そのままではロボットのアームを動かすための指令を生成できません。
そこで、画像や言語指示に加えて、実際にロボットが行った動作を学習させます。
図のように、学習データとして次の組を用意します。
- 画像:机の上に赤いコップが置かれている
- 言語指示:「赤いコップを取って」
- 正解の動作:アームを伸ばす、下げる、グリッパーを閉じる
これらを使ってFTすることで、画像と言語の理解能力を利用しながら、ロボットの動作も予測できるようにします。
このアプローチは、RT-2やOpenVLAなどの研究で採用されています。
ただし、すべてのVLAが同じ方法で作られるわけではありません。後ほど紹介するπ0では、VLMに専用の動作生成モデルを組み合わせています。
2. ロボットの学習データとは?
LLMでは大量のテキストを学習に使いますが、VLAでは観測情報と、その状況で実行された動作の対応関係が重要になります。
例えば、人間がロボットを操作してコップを持ち上げる場合を考えます。
時刻ごとに、次のようなデータを記録します。
| データ | 内容 |
|---|---|
| 観測画像 | ロボットのカメラ映像 |
| 言語指示 | 実行する作業の説明 |
| ロボット状態 | 関節角度、手先位置など |
| 動作 | 関節や手先への制御指令 |
| 時刻 | 観測と動作の時系列情報 |
こうして収集した操作記録をデモンストレーションデータと呼びます。
ロボットの学習では、こうしたデータを使った模倣学習(Imitation Learning)が広く利用されています。
2.1. 模倣学習とBehavior Cloning
模倣学習は、専門家や人間の操作をまねるようにモデルを学習させる方法です。
その基本的な手法の一つが、Behavior Cloning(BC)です。
例えば、時刻 $t$ における観測を $o_t$、言語指示を $l$、ロボットの動作を $a_t$ とすると、モデルは次の対応を学習します。
(o_t, l) \longrightarrow a_t
実際には、現在のロボット状態なども入力に含める場合があります。
学習では、モデルが予測した動作と、デモンストレーションに含まれる正解の動作との差を小さくします。
これは、一般的な教師あり学習と似た考え方です。
ただし、ロボットの動作は時系列データなので、単に1時刻の予測精度を高めればよいわけではありません。
一度誤った動作をすると、次の時刻には学習データと異なる状態になってしまう可能性があります。
この問題は、Behavior Cloningにおける分布シフトの課題として知られています。
2.2. 大規模データセット:Open X-Embodiment
近年のVLA研究で重要な役割を持つのが、複数のロボットの操作データを統合したデータセットです。
代表例として、Open X-Embodimentがあります。
このデータセットは、22種類のロボットから収集された100万件以上の操作エピソードを含みます。
これまでのロボット学習では、機体やタスクごとに専用モデルを学習することが一般的でした。
一方、Open X-Embodimentでは、異なるロボットのデータを組み合わせて学習することで、知識の転用を目指しています。
ただし、ロボットによって関節数や動作範囲、制御方法は異なります。
そのため、単純にデータを結合するだけでなく、動作表現の統一や、機体ごとの違いを考慮した学習が必要です。
このあたりは、異なるドメインのデータを統合してモデルを学習させる問題にも通じると感じました。
3. RT-2:VLMの出力を動作トークンへ拡張する
論文:RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control
RT-2は、Google DeepMindなどが2023年に発表したVLAモデルです。
私が特に興味を持ったのは、ロボットの動作を言語モデルと同じようにトークンとして出力するという方法です。
3.1. モデル構造
RT-2では、事前学習済みのVLMとしてPaLI-XやPaLM-Eを使用しています。
これらのモデルは、大規模な画像・言語データから事前学習されています。
通常、VLMは画像や質問を入力として、文章のトークンを生成します。
RT-2では、ロボットの動作を離散化し、トークン列として扱います。
例えば、ロボットアームの手先を動かすための指令には、次のような情報が含まれます。
- X・Y・Z方向への移動
- 3軸まわりの回転
- グリッパーの開閉
- 動作継続・終了の情報
これらを離散的な値に変換して、文章と同じようにモデルから生成できるようにしています。
3.2. どのように学習するのか?
RT-2の特徴は、Web由来の視覚言語データとロボットの操作データを混ぜて共同ファインチューニングすることです。
単にロボットの操作データだけを学習すると、事前学習で獲得した知識が失われる可能性があります。
そこでRT-2では、画像について質問に答えるタスクと、ロボットの動作を予測するタスクを組み合わせています。
動作をトークンとして表現するため、基本的には言語モデルの次トークン予測と同じ枠組みで学習できます。
例えば、動作トークン列を $a_1,\dots,a_T$ とすると、次のような負の対数尤度を最小化します。
\mathcal{L}_{\mathrm{token}}
= -\sum_{t=1}^{T}\log p_{\theta}(a_t \mid o,l,a_{<t})
ここで、$o$ は観測画像、$l$ は言語指示、$a_{<t}$ はそれまでの出力トークンを表します。
つまり、正解の動作トークンを高い確率で予測するように学習するということです。
個人的には、LLMの学習方法を大きく変更せず、出力表現を工夫することでロボット制御へ応用している点が面白いと感じました。
4. OpenVLA:Llama 2をベースにした公開VLAモデル
論文:OpenVLA: An Open-Source Vision-Language-Action Model
次に紹介するのが、OpenVLAです。
OpenVLAは約7BパラメータのオープンなVLAモデルで、事前学習済みVLMをロボットの操作データでファインチューニングして構築されています。
4.1. 具体的にどのモデルを使っている?
OpenVLAのベースは、Prismatic-7BというVLMです。
主な構成要素は次のとおりです。
| 役割 | モデル |
|---|---|
| 視覚特徴の抽出 | DINOv2 |
| 画像と言語の対応付け | SigLIP |
| 言語モデル | Llama 2 7B |
| 出力 | 離散化されたロボット動作トークン |
DINOv2とSigLIPで画像特徴を抽出し、プロジェクタを通して言語モデルの入力空間へ変換します。
その後、Llama 2を使用して動作トークンを予測します。
つまり、画像を理解するためのモデルと、トークンを予測する言語モデルを組み合わせています。
4.2. 約97万件の操作データで学習
OpenVLAは、Open X-Embodimentから構成した約97万件のロボット操作軌跡を利用して学習されています。
OpenVLAの公式プロジェクトページによると、学習には64基のA100 GPUを使用し、約15日間を要しています。
興味深いのは、RT-2との学習データの違いです。
RT-2はWeb由来の視覚言語データとロボットデータを共同FTしています。
一方、OpenVLAでは、事前学習済みのVLMを主にロボットの操作データでFTしています。
この違いは、Webから獲得した意味的な知識をどの程度保持できるかにも関係します。
実際、OpenVLAの研究では、Web由来の知識を使う難しい意味的汎化タスクではRT-2-Xの方が優れるケースも報告されています。
4.3. LoRAによるファインチューニング
個人的に最も気になったのが、この部分です。
OpenVLAでは、LoRA(Low-Rank Adaptation)を利用したファインチューニングも検証されています。
LoRAは、モデルの重み全体を更新する代わりに、低ランクの追加パラメータを学習する方法です。
LLMのファインチューニングでも広く利用されています。
OpenVLAの論文では、約1.4%のパラメータを調整するLoRAによって、検証した条件でフルファインチューニングに近い性能が得られたと報告されています。
大規模なモデルを一から学習するのは難しくても、事前学習済みVLAを特定のロボットやタスクへ適応させることは、比較的少ない計算資源でも試せる可能性があります。
ただし、画像エンコーダや動作生成部分も扱うため、テキストLLMのLoRAと同じGPUメモリで学習できるとは限りません。
5. 動作をトークンではなく連続値で生成する方法
ここまで紹介したRT-2とOpenVLAでは、ロボットの動作を離散的なトークンとして予測していました。
一方、ロボットの動作は本来、位置や角度などの連続値です。
そのため、動作系列そのものを連続値として生成する方法も研究されています。
5.1. Diffusion Policy:拡散モデルによる動作生成
論文:Diffusion Policy: Visuomotor Policy Learning via Action Diffusion
Diffusion Policyは、画像生成で知られるDiffusionモデルの考え方をロボットの動作生成へ応用した研究です。
例えば、ロボットアームの今後数ステップ分の動作を、一つの系列として生成します。
このとき、正解となる動作系列へノイズを加え、モデルがノイズを予測・除去できるように学習します。
標準的なノイズ予測の考え方で書くと、損失関数は次のように表せます。
\mathcal{L}_{\mathrm{diff}}
= \mathbb{E}
\left[
\|\epsilon-\epsilon_{\theta}(a_t,t,c)\|^2
\right]
ここで、$\epsilon$ は加えたノイズ、$a_t$ はノイズを含む動作系列、$t$ はノイズの段階、$c$ は画像などの条件情報です。
推論時には、ノイズから繰り返し処理を行い、実行する動作系列を生成します。
また、Diffusion PolicyではReceding Horizon Controlを採用しています。
生成された動作系列の一部を実行した後に、再度観測して新しい動作を生成する仕組みです。
これによって、環境の変化に応じて動作を修正できます。
なお、Diffusion Policy自体は必ずしもVLMをベースとするVLAではありません。
ここでは、VLAにも関連する「連続的な動作生成」の代表的な研究として紹介しています。
5.2. π0:VLMとFlow Matchingを組み合わせる
論文:π0: A Vision-Language-Action Flow Model for General Robot Control
π0は、Physical Intelligenceが発表したVLAモデルです。
このモデルでは、事前学習済みのVLMに、Action Expertと呼ばれる動作生成用のモデルを組み合わせています。
RT-2やOpenVLAとは異なり、主な動作出力には連続的な値を使用します。
その動作生成に用いられているのがFlow Matchingです。
Flow Matchingは、ノイズのような単純な分布から、目的のデータ分布へ変換する流れを学習する方法です。
学習では、途中状態と時間、観測情報を入力し、目的の動作分布へ向かう方向を予測するようにモデルを学習します。
5.3. π0の学習方法
π0では、事前学習済みVLMが持つ視覚・言語の知識を利用しながら、多様なロボット操作データで動作生成部分を学習します。
さらに、単腕ロボットだけでなく、双腕ロボットや移動可能なマニピュレータなど、異なる機体のデータも活用しています。
また、新しい作業に対してファインチューニングする実験も行われています。
ここで重要だと感じたのは、VLMの意味理解能力と、動作を生成するための専用モデルを分けている点です。
文章のトークン予測と、連続値の動作生成では、適した出力形式や学習目的が異なります。
6. 各モデルの学習方法を比較する
ここまでの内容を整理すると、次のようになります。
| モデル | ベース | 動作の出力形式 | 主な学習方法 |
|---|---|---|---|
| RT-2 | PaLI-X / PaLM-E | 離散トークン | Webデータ+ロボットデータの共同FT |
| OpenVLA | Prismatic VLM | 離散トークン | 大規模操作データによるFT |
| Diffusion Policy | 視覚条件付き生成モデル | 連続的な動作系列 | ノイズ除去の学習 |
| π0 | VLM+Action Expert | 連続的な動作系列 | Flow Matchingによる学習 |
今回の調査で特に面白かったのは、最終的には同じ「ロボットを動かす」という目的でも、モデルによって学習対象や損失関数が異なることです。
RT-2やOpenVLAでは、動作を離散化することで、LLMと同様のトークン予測を利用しています。
一方、Diffusion Policyやπ0では、連続的な動作系列を生成するための学習方法が採用されています。
また、FTによってロボットの動作を学習させる場合にも、モデルの事前学習知識をどのように保持するかが重要になります。
つまり、VLAの学習では、単にデータを追加するだけでなく、何を入力し、どのような形式で動作を出力させ、何を正解として最適化するかが重要だと分かりました。
7. 個人でもVLAの学習を試せるのか?
最後に、個人的に気になったのが、自分でもVLAのFTを試せるのかという点です。
OpenVLAのような7Bモデルを一から大規模学習させるのは、個人の環境では現実的ではありません。
しかし、最近は比較的小型で、FTしやすい公開モデルも登場しています。
その一つが、Hugging FaceのSmolVLAです。
SmolVLAは約450Mパラメータのモデルで、カメラ画像、ロボットの状態、言語指示から動作系列を生成します。
Hugging FaceのLeRobotでは、学習データの収集からFT、評価までの手順が公開されています。
実際に学習するなら
例えば、コップをつかむタスクであれば、次の手順が考えられます。
- ロボットやシミュレーション環境を用意する
- 人間の操作をデモンストレーションとして記録する
- 画像・言語指示・動作データを学習用に整形する
- 事前学習済みモデルをFTする
- 学習に使っていない配置や条件で評価する
SmolVLAの公式ガイドでは、簡単なタスクについて約50エピソードを収集するところから始める方法が紹介されています。
ただし、50エピソードあれば十分という意味ではありません。
評価では何を見るべきか?
個人的には、学習時と同じ条件で成功したかどうかだけでなく、未知の条件への汎化性能を重視したいです。
例えば、次のような条件で比較する方法が考えられます。
| 評価条件 | 確認したい能力 |
|---|---|
| 学習時と同じ配置 | 基本的なタスク成功率 |
| 物体の位置を変更 | 位置の変化への対応 |
| 背景や照明を変更 | 視覚的な汎化 |
| 未知の物体を使用 | 物体への汎化 |
| 指示文を言い換える | 言語的な汎化 |
また、単発の成功例ではなく、試行回数を揃えた成功率や、失敗した際の復帰能力も評価する必要があります。
ロボットでは予測が間違うと物理的な事故につながる可能性があるため、実機評価には安全対策も必要です。
まとめ
今回は、最近注目されているフィジカルAIについて、VLAのモデル構造と学習方法を中心に調べてみました。
特に興味深かったのは、次の3点です。
- VLMをロボットの操作データでFTすることで、画像や言語の理解能力を動作生成へ応用できること
- 動作を離散トークンとして扱う方法と、連続値として生成する方法が存在すること
- LoRAなどの効率的なFT手法や小型VLAモデルによって、個人でも学習実験を試しやすくなっていること
個人的には、RT-2やOpenVLAでLLMのトークン予測をロボット制御へ応用している点が印象的でした。
また、π0のように、事前学習済みVLMと専用のAction Expertを組み合わせる設計も興味深く感じました。
今後は、気になった論文を個別に紹介してみたいと思います。
紹介して欲しい論文があれば、コメント下さい。
参考文献
VLA・ロボット学習
- RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control(2023)
- OpenVLA: An Open-Source Vision-Language-Action Model(2024)
- OpenVLA公式プロジェクトページ
- Diffusion Policy: Visuomotor Policy Learning via Action Diffusion(2023)
- π0: A Vision-Language-Action Flow Model for General Robot Control(2024)
