はじめに
ヒューマノイドロボット向け基盤モデルとして大きな注目を集める Project GR00T-N1.7。実際にテストしている開発者の間でも、時折 「指示文のわずかな揺らぎ(言い換え)や順番の変更で、ロボットが全然違う動きをしてしまう(タスクを誤認識する)」 というロバスト性の課題が話題にのぼります。
「アクションヘッドの学習不足」と捉えられがちですが、そもそも 「アクションヘッドに入力される前段階の VLMバックボーン(言語ベクトル)の時点で、意味の区別が曖昧になっているのではないか?」 という疑問が湧きました。
そこで、GR00T N1.7のバックボーンであるVLM Cosmos-Reason2-2B(Qwen3-VL-2Bベース)と、比較対象として軽量な Qwen3.5-0.8B-Base の隠れ状態(Hidden States)を抽出し、中間層ベクトルのコサイン類似度や分離性能を測定してみました。
手元での静的評価ではありますが、言語アライメントの観点から非常に興味深い傾向が見えてきたので、仮説の一つとして共有します。
バックボーンのL16を引き抜くGR00Tの設計
GR00T-N1.7は、推論を行う「System 2 (VLM)」と、実機のモータ制御を行う「System 1 (Diffusion Transformer: DiT)」を連携させています。
公開されているコード(gr00t_n1d7.py)によると、GR00Tはバックボーンである Cosmos-Reason2-2B の最終出力を通すのではなく、「第16層目(L16)の出力(Last Token)」 を引き抜き、アクションヘッドであるDiTのクロスアテンションに入力する設計になっています。
本検証では、この引き抜き層である Cosmos L16、Cosmosの最終層である Cosmos L28、および代替候補となる軽量モデル Qwen3.5 L24(最終層) の3つを対象に、10種類の指示文を与えて隠れ状態ベクトルを比較しました。
- S1~S4(掴むタスクの言い換え): 「コップを掴んで」 / 「カップを持ち上げて」 / 「グラスを握ってください」 / 「目の前のコップを取る」
- S5~S8(押すタスクの言い換え): 「ブロックを左に押して」 / 「ブロックを左方向へ移動させて」 / 「左側へブロックをスライドさせる」 / 「ブロックを左に動かして」
- S9~S10(無関係なタスク): 「机の上を綺麗に拭いてください」 / 「赤いボタンを押して」
1. コサイン類似度から見る「意味のねじれ」の可能性
実際に抽出したベクトルのコサイン類似度を測ってみると、GR00T標準の Cosmos L16(Last Token) において、以下のような傾向が確認できました。
-
同一タスク(コップ掴み)の言い換え同士の類似度:
- 「コップを掴んで」 $\leftrightarrow$ 「グラスを握ってください」 $\rightarrow$
0.732
- 「コップを掴んで」 $\leftrightarrow$ 「グラスを握ってください」 $\rightarrow$
-
全く異なるタスク(掴む vs 押す)の類似度:
- 「コップを掴んで」 $\leftrightarrow$ 「ブロックを左に押して」 $\rightarrow$
0.852 - 「コップを掴んで」 $\leftrightarrow$ 「赤いボタンを押して」 $\rightarrow$
0.846
- 「コップを掴んで」 $\leftrightarrow$ 「ブロックを左に押して」 $\rightarrow$
「コップを掴む」という同じタスク内の言い換えの類似度(0.732)よりも、別タスクである「ブロックを押す」(0.852)との類似度の方が高くなってしまっています。
この状態でベクトルをアクションヘッド(DiT)に渡す場合、後段の制御モデルが「掴む」と「押す」を安定して分離しにくくなり、指示文のわずかな変更が誤認識リスクを高める一因になり得る、という仮説が立ちます。
Seaborn による類似度マトリックスの可視化と解析
抽出した10文(S1〜S10)の相互コサイン類似度を Seaborn を用いて個別にヒートマップ化した結果と、それぞれの図が示す技術的な意味を解説します。
① Cosmos L16 [Last Token] (GR00T標準の引き抜き層)
標準設計でアクションヘッドに入力される層の表現空間です。
-
「グラス」の孤立(掴むタスク内の不均一さ): 左上の4x4ブロック(掴むタスク)を見ると、S1(コップを掴んで)とS2(カップを持ち上げて)は類似度
0.916と高いですが、S3(グラスを握ってください)が入った途端に類似度が0.732まで低下しています。モデルは「コップ」と「グラス」を同じ掴む対象として十分に同一視(抽象化)できていません。 -
タスクのねじれ現象(赤色の越境): S1(コップを掴んで)と、別タスクであるS5(ブロックを左に押して)の類似度は
0.852と非常に高くなっています。アクションヘッドから見ると、「グラスを握る」という同義の命令よりも、「ブロックを押す」という全く別の動作命令の方が「コップを掴む」に近いベクトルとして見えてしまっています。これが、言い換えによってタスク認識が不安定になる一因である可能性があります。
② Cosmos L28 [Last Token] (Cosmos 最終層)
層を最終層まで深くした場合の表現空間です。
-
全体的な赤化(セマンティックの過度な飽和): レイヤーを深くしたことで、対角成分以外も全体が赤い領域(類似度
0.8〜0.9以上)に埋め尽くされています。これは、トランスフォーマーの深層において「すべてロボットへの動作指示である」という高次元の共通セマンティクスにベクトルが吸い寄せられ、過剰収束(飽和)したことを意味します。 -
タスク境界の消失: 同一タスク内の類似度は上がりましたが(S1-S3は
0.763に改善)、タスク間類似度も極端に跳ね上がってしまいました(S1-S5は0.920に増加)。ベクトルの「向き」がほとんど同じになってしまったため、後段の制御モデルが「掴む」のか「押す」のかを、十分な線形マージンを持って判別しにくくなっていると考えられます。
③ Qwen3.5 L24 [Mean Pooling] (Qwen3.5 最終層)
代替候補として検証した軽量LLMに Mean Pooling を適用した表現空間です。
- クッキリとした対角ブロック(高い頑健性): 左上4x4(掴むタスク)と中央4x4(押すタスク)の領域が、周囲と比べて綺麗に濃い赤色の「ブロック(塊)」を形成しています。これは、言い換え表現のゆらぎを同じタスク表現として強くまとめられている(頑健性が高い)ことを示します。
-
タスク間の青化(十分なマージンの確保): タスク間(例:S1-S5は
0.811)や対照タスク(S9, S10)との類似度が青〜薄い赤に抑えられており、対角ブロック以外の領域との境界マージンが視覚的にも最も広く確保されています。これが、Fisher判別比において高いスコア(1.37)を示した幾何学的な裏付けです。この表現であれば、アクションヘッドがタスクの境界線を引くのが極めて容易になります。
【詳細データ】コサイン類似度マトリックス(S1〜S10)の生データ表
S1〜S10 の文章対応
- S1: 「コップを掴んで」
- S2: 「カップを持ち上げて」
- S3: 「グラスを握ってください」
- S4: 「目の前のコップを取る」
- S5: 「ブロックを左に押して」
- S6: 「ブロックを左方向へ移動させて」
- S7: 「左側へブロックをスライドさせる」
- S8: 「ブロックを左に動かして」
- S9: 「机の上を綺麗に拭いてください」
- S10: 「赤いボタンを押して」
① Cosmos L16 [Last Token] (標準バックボーン)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| S1 | 1.000 | 0.916 | 0.732 | 0.742 | 0.852 | 0.808 | 0.712 | 0.829 | 0.687 | 0.846 |
| S2 | 0.916 | 1.000 | 0.735 | 0.740 | 0.869 | 0.834 | 0.727 | 0.866 | 0.715 | 0.851 |
| S3 | 0.732 | 0.735 | 1.000 | 0.747 | 0.704 | 0.689 | 0.725 | 0.704 | 0.910 | 0.706 |
| S4 | 0.742 | 0.740 | 0.747 | 1.000 | 0.735 | 0.697 | 0.851 | 0.706 | 0.746 | 0.719 |
| S5 | 0.852 | 0.869 | 0.704 | 0.735 | 1.000 | 0.875 | 0.808 | 0.940 | 0.705 | 0.907 |
| S6 | 0.808 | 0.834 | 0.689 | 0.697 | 0.875 | 1.000 | 0.832 | 0.898 | 0.715 | 0.800 |
| S7 | 0.712 | 0.727 | 0.725 | 0.851 | 0.808 | 0.832 | 1.000 | 0.782 | 0.741 | 0.752 |
| S8 | 0.829 | 0.866 | 0.704 | 0.706 | 0.940 | 0.898 | 0.782 | 1.000 | 0.719 | 0.851 |
| S9 | 0.687 | 0.715 | 0.910 | 0.746 | 0.705 | 0.715 | 0.741 | 0.719 | 1.000 | 0.673 |
| S10 | 0.846 | 0.851 | 0.706 | 0.719 | 0.907 | 0.800 | 0.752 | 0.851 | 0.673 | 1.000 |
② Cosmos L28 [Last Token] (最終層)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| S1 | 1.000 | 0.973 | 0.763 | 0.879 | 0.920 | 0.900 | 0.818 | 0.903 | 0.758 | 0.924 |
| S2 | 0.973 | 1.000 | 0.774 | 0.876 | 0.935 | 0.921 | 0.830 | 0.922 | 0.767 | 0.937 |
| S3 | 0.763 | 0.774 | 1.000 | 0.831 | 0.819 | 0.813 | 0.841 | 0.824 | 0.978 | 0.820 |
| S4 | 0.879 | 0.876 | 0.831 | 1.000 | 0.875 | 0.851 | 0.922 | 0.867 | 0.822 | 0.884 |
| S5 | 0.920 | 0.935 | 0.819 | 0.875 | 1.000 | 0.977 | 0.909 | 0.989 | 0.813 | 0.983 |
| S6 | 0.900 | 0.921 | 0.813 | 0.851 | 0.977 | 1.000 | 0.898 | 0.978 | 0.809 | 0.958 |
| S7 | 0.818 | 0.830 | 0.841 | 0.922 | 0.909 | 0.898 | 1.000 | 0.906 | 0.835 | 0.902 |
| S8 | 0.903 | 0.922 | 0.824 | 0.867 | 0.989 | 0.978 | 0.906 | 1.000 | 0.817 | 0.967 |
| S9 | 0.758 | 0.767 | 0.978 | 0.822 | 0.813 | 0.809 | 0.835 | 0.817 | 1.000 | 0.813 |
| S10 | 0.924 | 0.937 | 0.820 | 0.884 | 0.983 | 0.958 | 0.902 | 0.967 | 0.813 | 1.000 |
③ Qwen3.5 L24 [Mean] (最終層・Mean Pooling)
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| S1 | 1.000 | 0.879 | 0.887 | 0.887 | 0.811 | 0.795 | 0.790 | 0.810 | 0.833 | 0.826 |
| S2 | 0.879 | 1.000 | 0.809 | 0.823 | 0.754 | 0.748 | 0.723 | 0.754 | 0.803 | 0.776 |
| S3 | 0.887 | 0.809 | 1.000 | 0.830 | 0.818 | 0.810 | 0.813 | 0.818 | 0.842 | 0.824 |
| S4 | 0.887 | 0.823 | 0.830 | 1.000 | 0.756 | 0.760 | 0.763 | 0.763 | 0.781 | 0.816 |
| S5 | 0.811 | 0.754 | 0.818 | 0.756 | 1.000 | 0.971 | 0.905 | 0.987 | 0.802 | 0.847 |
| S6 | 0.795 | 0.748 | 0.810 | 0.760 | 0.971 | 1.000 | 0.911 | 0.974 | 0.814 | 0.816 |
| S7 | 0.790 | 0.723 | 0.813 | 0.763 | 0.905 | 0.911 | 1.000 | 0.907 | 0.795 | 0.856 |
| S8 | 0.810 | 0.754 | 0.818 | 0.763 | 0.987 | 0.974 | 0.907 | 1.000 | 0.808 | 0.842 |
| S9 | 0.833 | 0.803 | 0.842 | 0.781 | 0.802 | 0.814 | 0.795 | 0.808 | 1.000 | 0.813 |
| S10 | 0.826 | 0.776 | 0.824 | 0.816 | 0.847 | 0.816 | 0.856 | 0.842 | 0.813 | 1.000 |
2. 先行研究との整合性:言語ロバスト性に関する最新論文の動向
この「言い換えによるタスク特定の失敗やロバスト性の欠如」という問題意識は、近年のVLA(Vision-Language-Action)モデル研究における最先端のトレンドとも一致しています。
文献①:LIBERO-Para: A Diagnostic Benchmark and Metrics for Paraphrase Robustness in VLA Models (arXiv:2603.28301)
この論文では、VLAモデルにおける「言い換えに対する頑健性(Paraphrase Robustness)」を評価するベンチマーク LIBERO-Para を提案しています。
- 言い換えによる急激な性能低下: 指示文を言い換えるだけで、モデルのタスク成功率が一貫して 22%〜52%も低下 する。
- プランニング段階での破綻: 失敗原因の80%〜96%は、ロボットの微細な物理制御ミスではなく、プランニング段階での軌道の逸脱(Planning-level trajectory divergence) である。すなわち、「指示文のゆらぎによって、そもそも何のタスクをすべきかの特定(Task Identification)自体に失敗している」ことを意味します。
文献②:RoVLA: Multi-Consistency Constraints for Robust Vision-Language-Action Models (arXiv:2605.19678)
さらに直近(2026年5月)の論文 RoVLA でも、既存のVLAモデルが視覚変化だけでなく、意味的に等価な言語指示の言い換えに対しても非常に脆弱であるという課題設定から出発し、マルチ一貫性制約(Multi-Consistency Constraints)を導入して頑健性を高めるアプローチを提案しています。
今回、我々が Cosmos L16 で観察した「タスク間の意味的境界の曖昧さ(ねじれ現象)」は、これらの論文が指摘する 「プランニング段階におけるタスク特定(Task Identification)の失敗」を引き起こす、表現層レベルでの有力な証拠/強い示唆 と言えるでしょう。
[!NOTE]
ただし、本検証はVLA全体の性能評価ではなく、あくまで「バックボーン表現が後段のアクションヘッドにとって識別しやすい形になっているか」を見るための補助的解析です。
3. Fisher判別比(線形分離性能)で見る境界線の明瞭さ
次に、「掴むタスク(S1~S4)」と「押すタスク(S5~S8)」が、ベクトル空間上でどれだけ綺麗に線形分離できているかを評価するため、Fisher判別比(クラス間分散とクラス内分散の比)を計算してみました。値が高いほど境界線が引きやすく、アクションヘッドがタスクを識別しやすいことを示します。
-
Cosmos L16 (Last Token - 標準):
0.469912 -
Cosmos L28 (Last Token):
0.458058 -
Qwen3.5 L24 (Mean Pooling):
1.375882
CosmosのL16やL28は、Last Tokenにおける判別比が 0.46 付近と低迷しているのに対し、軽量な Qwen3.5-0.8B-Base(L24 / Mean Pooling)は 1.375882 と高い分離性能を示しました。
Qwen3.5(0.8B)はパラメータ数がCosmos(2B)の半分以下ですが、Mean Pooling を組み合わせることで、言い換えの揺らぎを同じタスクとして吸収しつつ、異なるタスクとの境界線を最もシャープに保てている傾向が見て取れます。
4. CKA(幾何学的類似度)から見るモデル内部の変容
最後に、次元数や座標系が異なるモデル間で表現構造の類似度を測る CKA (Centered Kernel Alignment) を計算しました。
-
Cosmos L16 vs Cosmos L28 (Mean):
0.411037
同じCosmosモデル内ですが、L16層目とL28層目(最終層)の表現空間の幾何学的類似度は 0.411 とかなり低めです。
これまでの処理過程で意味表現の構造が大きく変容していることを示しており、「16層目の時点では、LLMとしての文脈解釈や概念のアライメント(意味の成熟)がまだ不十分な状態で引き抜いている」 という批判的思考をサポートする一つのデータと言えます。
一方で、
-
Cosmos L16 vs Qwen L24 (Last Token):
0.957554
モデルも次元数(2048 vs 1024)も違うのにもかかわらず、CKA値は 0.957554 と高く、Last Tokenによる表現構造が非常に近いことを示しています。これは、Qwen3.5がCosmosのLast Token表現に近い構造を持つ可能性を示しており、蒸留や補助エンコーダとして検討する余地があります。
まとめ:意味理解とリアルタイム制御のトレードオフをどう解決すべきか
本検証における静的ベクトル解析の結果から、以下の「結論と今後のアプローチに関する仮説」をまとめます。
1. 指示の意味理解を重視するなら深い層の情報は重要だが、単純に最終層を使えばよいわけではない
言語的な指示のニュアンス(言い換えの揺らぎなど)を正しく認識させるためには、やはり中間層(L16)で処理を打ち切るよりも深い層まで推論を実行することが望ましいと考えられます。
しかし、Cosmos L28の結果が示す通り、単純に最終層まで進めれば解決するわけではありません。最終層(L28)に近い表現は「言い換えの吸収(同じタスクとしての認識)」には有利になりますが、全文章のベクトルが過剰に類似してしまうため、異なるタスク同士を分離する能力(タスク間分離)まで同時に改善するとは限らないからです。
2. フィジカルAI特有の「軽量・高速化」とのジレンマ
しかし、実機をリアルタイム(数十Hz〜数百Hz)で制御するフィジカルAIにおいては、**「モデルが軽量で推論が速いこと」**が最優先の要件の一つとなります。
GR00T-N1.7の設計がCosmos-Reason2-2BのL16で処理を止めていたのは、最後まで推論させることによるミリ秒単位の遅延(推論コスト)を嫌い、リアルタイム制御の周波数を維持するために中間層で引き抜くという「速度・軽量性のためのトレードオフ」があったと推察されます。
3. 「小さなモデルの最終層」という第三の選択肢
この「理解力(頑健性)とリアルタイム速度のジレンマ」に対し、今回の検証データは興味深い方向性を提示しています。
それは、**「大きなモデル(2B)の中間層で切り捨てるよりも、小さなモデル(0.8B)の最終層まで処理した方が、速度を維持しつつ高度な意味理解と分離性能を両立できるのではないか」**という点です。
Qwen3.5-0.8B-Baseはパラメータ数がCosmos(2B)の半分以下であり、最終層(L24)まで推論させても高速に動作することが期待できます。それでありながら、Cosmos L16の中間層よりもしっかりと「意味」を理解したタスク分離境界を持っています。
したがって、VLAの設計において、バックボーンを単に中間層で切るのではなく、バックボーン全体のモデルサイズを落としつつ最終層まで走らせる、という設計アプローチは検討に値します。
4. 本検証の制約と限界(画像・ロボット情報の欠如)
重要な制約として、本検証は「画像」や「ロボットアームの現在位置(状態)」といったマルチモーダルな情報を一切考慮していません。
実際のVLAモデルの動作時においては、言語のみの曖昧さ(ねじれ)があったとしても、周囲の視覚情報や実機アライメント学習、DiT側での学習によって曖昧さが補正され、実用上は問題なく動作している可能性があります。この静的ベクトル解析が、実機上のタスク成功率にどう直接結びつくか(因果関係)は、最終的に実機アームの軌道検証を行わなければ不明です。
LLM/VLMの発展に伴い、フィジカルAIの「言語解釈のロバスト性(言い換え耐性)」は避けて通れないテーマです。
「どのモデルを選び、どの深さの表現を引き抜くか」という選択が、リアルタイム性と指示理解力のトレードオフの鍵を握るという点は、今後のロボット基盤モデルの設計において非常に面白い議論になるのではないかと考えています。
何かの参考になれば幸いです!


