人の動作を見て学んだヒューマノイド(人型ロボット)がいる。箱を押し、持ち上げ、運ぶ。指先で小さな物をつまむこともなかなかこなす。そこに新しい指示が下る。「その箱を横に倒してみて」。ロボットが止まる。
おかしいのは、倒すのに必要な動作をロボットはすべてできる、という点だ。押す、もたれる、重心を移す——部品はすべて手元にある。ないのは「これらの動作をこう組み合わせろ」と書かれた指示書だけだ。身体はできている。言葉がなかった。
InterEvolveというロボット学習法は、ここで方向を変える。身体をより賢くするのではない。身体に渡す言葉をより賢くするのだ。すでに学習を終えた身体(コントローラ)はそのまま凍結しておき、課題を『報酬プログラム』——何をすればうまくいったのかを書いたルールの束——に置き換え、その指示書だけを書き直していく。基本を身につけたベテランを再び学校に送らず、新しい作業指示書だけを渡すやり方だ。
正直に言おう。この身体が最初から完全に準備できていたわけではない。従来のヒューマノイドコントローラは自分の身体しか見ておらず、目の前の箱は見ていなかった。だから『箱を左へ』と『右へ』が、コントローラの目には同じ動作としてつぶれてしまった。追跡実験では、この自分の身体しか見ないモデルは箱をほとんど取り逃した(成功率8%)。
直した方法は、身体をまるごと教え直すことではなかった。身体を担う部分は凍結しておき、対象を読み取る部分だけを上に重ねた。ここで『残差(residual)』という言葉が出てくる——既存のものを作り直さず、変わった差分だけをその上に付け足して学ぶ、という意味だ。重要なのは、この作業がたった一度きりだという点だ。箱を見ることのできる身体を一度作っておけば、その後新しい課題が次々に押し寄せても、身体は学び直さない。
こうして完成した身体を前に、指示書だけを書き直す。報酬プログラムは三つのパーツからなる。何を報酬とするか、いつ次の段階へ移るか、その二つをどんな数値で補正するか。持ち上げから押しに変えたいなら、関節の軌道を一から組み立てはしない。対象をどこへ動かすかという報酬と、段階の条件だけをいじればいい。
指示書は誰が書き直すのか。二つのループが噛み合う。外側のループでLLM(人の言葉を扱う言語モデル)がプログラムの『構造』を変える。どんな報酬と段階を使うか、だ。内側のループでは数値最適化器が、その構造に付随する『数値』を合わせる。なぜ分けたのか。構造が良くても数値が間違っていれば失敗するからだ。だからすべての提案は、審査にかけられる前にまず数値を合わせる。創造的な分解は言葉を扱う側に、粘り強い数値合わせは最適化に任せた分業である。
審査基準はロックしておく。課題が言葉で与えられると、成功基準(検証器)を一度立てて固定する。エージェントが基準をこっそり緩めて課題を簡単にしてしまう道を塞ぐためだ。入れ替えも慎重だ。新しい候補は同じ状況の数々で現在の最良と競い、上位の候補はそれぞれ三回ずつ再評価される。改善幅が実行ごとに生じるノイズを超えたときにだけ、入れ替えを承認する。運の良い一回を実力とはみなさない、ということだ。こうして生き残ったプログラムは『スキルライブラリ』に要約され、次の課題が白紙から始まらないよう助ける。
表を読む前に、指標を二つだけ。SR(成功率)は、課題のすべての基準と物理的制約が一回の試行で同時に成り立った割合だ。転んだり目標を取り逃したりすれば、その試行は失敗だ。Earnedは通過した基準の平均割合だが、落とし穴がある。じっと立っているだけでも基準の半分近くは自然に通過してしまう(下のInactionのEarnedが49.1%)。だからEarnedは膨らみやすい。本当の主指標はSRだ。以下は八つの課題群の平均である。
| プログラム | 定数チューニング | 進化 | SR(%) | Earned(%) |
|---|---|---|---|---|
| Inaction(静止) | – | – | 0.0 | 49.1 |
| Human(人が作成) | ✗ | ✗ | 8.0 | 65.2 |
| Agent(初期案) | ✗ | ✗ | 32.2 | 73.3 |
| Human + チューニング | ✓ | ✗ | 18.0 | 75.2 |
| Agent + チューニング | ✓ | ✗ | 34.6 | 82.5 |
| InterEvolve | ✓ | ✓ | 86.5 | 95.6 |
人が素朴に書いた報酬は成功率8%にとどまる。身体が能力を秘めていても、手で書いた指示書ではその能力をほとんど引き出せない、ということだ。エージェントが書いた草案に数値補正まで加えても34.6%、まだ半分に満たない。構造を実行結果に基づいて直す『進化』が加わって初めて86.5%に達する。
この34.6%から86.5%への跳躍——約2.5倍——がこの論文の一行要約だ。注目すべきは数字の大きさではない。人でもそう簡単には思いつかない動作を、言語モデルの提案と進化の選別が協力して見つけ出した、という事実だ。箱をその場で回す動作は学習データになかった。進化したプログラムは、身体を新しい使い方で用いてそれをやってのけた。シミュレーションでこうして見つかった技術の一部は、実際のUnitree G1ロボットがカメラとセンサーだけで自ら実行した。
その『なぜ』の底には、はっきりとした姿勢がある。この研究が追い求めたのは、正解をそっくり真似る能力ではなく、どんな状況が来ても任務をやり遂げる頑健さだった。成功率が高いということは、決められた軌道を完璧に真似られなくても、転んだり箱を完全に取り逃したりする致命的な失敗を減らす、という意味だ。追跡課題の数値がこれを物語っているが、詳細は付録に回した。一つ判断を添えるなら——AIを実際の現場に送り出すほど、ベンチマークスコアの小数点よりも、この頑健さのほうが重要になる。
誇張しないために、まず線を引こう。コントローラは固定で、InterEvolveは身体がすでに持つ能力を改めて引き出して使うにすぎない。身体が出せる動作の目録(モーターレパートリー)にそもそもない能力を、新たに作り出すことはできない。その範囲を外れた課題なら、身体そのものを育てなければならない。
進化が回る場所もはっきりさせておこう。進化はシミュレーションで起こる。実機ロボットの結果は、そこで選んだプログラムを持ってきて再生したものだ。『実機で自律的にやり遂げた』と『進化が実機で起こった』はまったく別の話で、後者は事実ではない。成功の定義が検証器に委ねられているのも諸刃の剣だ。その基準を誰がどう立てるかが解釈を左右する。扱った物体も箱類と小さな物であり、より多様な形状・材質への一般化は、この結果だけでは断定できない。
この設計がロボティクスの外でも読める理由がここにある。『課題の指示書そのものを探索する』という発想は、ONTLEで私たちが取り組んでいる問いと同じ急所に触れる。AIエージェントをどこまで信じられるのか。
一つの場面でたどってみよう。ONTLEのAIプロジェクトマネージャーに、顧客が「来週の納期を前倒ししてほしい」と依頼する。プロジェクトの途中で入ってきた、もともと手順になかった仕事だ。ここで私たちがInterEvolveと共有する原則は一つだ。提案は言語モデルが行うが、実行と判定はエージェントが手を触れられないサーバー側の決定論レイヤー——決められたルールどおりにだけ処理し、即興の判断が割り込まない層——が担う。エージェントが「処理しました」と言葉でごまかしたり、『完了』の基準を自分の都合で緩く変えてしまったりする道を塞ぐためだ。
そのためには『終わった』を、言葉ではなく条件として書かなければならない。納期変更が完了したとは、たとえば関連工程のスケジュールが新しい日付に更新され、資材の入荷日がその前に設定され、顧客が変更を受け入れた状態——これらがすべて真であるときだ。この条件が真になる前には、誰も『完了』を宣言できない。
ただし、ロボット研究と私たちの現場のあいだには、無視できない違いが一つある。InterEvolveは候補の指示書をシミュレータで何度も回して『この処理の仕方のほうが良い』を事前に検証する。そこでは『ノイズを超える改善のときだけ採択』が成り立つ。繰り返せるからだ。だが、実際の顧客の依頼一つひとつには、その再試行がない。一度の実行がそのまま実際の結果になる。だから私たちが繰り返し検証するのは『処理の仕方』であり、実際の依頼に対してできるのは、上の条件による『完了の確認』だ。この二つは分けて見なければならない。だから残る問いはあっさりしている。私たちの『完了』は、本当に人が手を触れられない条件として書かれているか。
本文から外した詳細な数値と用語をまとめた。
追跡課題——誤差が低いことが、そのまま成功率の高さにはならない。決められた正解軌道をそのままなぞる課題では、専用の追跡器ULTRAが誤差が最も低い(身体15.68cm、物体21.45cm、成功率66%)。ところがInterEvolveのコントローラは進化なしでも成功率60%(27.20/30.80cm)で肉薄し、追跡用の報酬を乗せて進化させると72%(19.80/24.92cm)で専用追跡器を上回る。誤差はULTRAが低いのに、成功率はInterEvolveが高い。エージェントが見つけ出した報酬は『対象を基準点にした揺れ補正』だった。コントローラは自分の身体周りの座標(自己中心座標)しか見ない。だから世界全体を基準にすると少しずつずれていく(ドリフト)のに、自分ではそれが見えない。目の前の箱を基準点にしてこの死角を埋めたところ、胴体の基準点(ルート)と箱の最終的なずれがほぼ半分に減った(論文Figure 5)。
構成要素の実験——どのパーツが成果を出したのか。対象の状態や、身体と対象のあいだの距離の信号を外すと、コントローラは自分の身体はそれらしく追従しても、成功はまれになる。同じニューラルネットワークを凍結せずに一から学習させると、ほとんど動作しない。逆に、身体を凍結したうえで残差を育てるほど成績が良くなる。基本は凍結した部分が担い、相互作用は残差が学ぶ、という分業が数字で確認されたわけだ。箱を六つ一度に扱ったり、小さな物を指で繊細につまんだりする場面まで現れた。
コスト——一つの課題群を完全に進化させるのに、単一GPUで2.1時間、LLMトークン0.23Mがかかる。固定プログラム(0.6時間、0.03M)より大きいのは、五ラウンドを回り、ラウンドごとに複数の提案の数値を合わせるからだ。ラウンド数で上限を縛れば、コストの天井ははっきりする。
用語
いいえ。重みは固定で、毎ラウンド『プロンプトの中でだけ』学ぶ。そのプロンプトには、課題の依頼、場面の文脈、検証器、現在の最良プログラムとその実行フィードバック、スキルライブラリが入る。言語モデルはこの文脈だけを見て、構造を変えた新しいプログラムを複数提示する。
妥当性チェッカーが実行前にそうした提案をふるい落とす。ルールを破った提案は、そもそも実行の段階へ進めない。検証器を課題ごとに一度立ててロックすることに加えて、エージェントが課題を自分の都合で簡単にしてしまう二つ目の抜け道を塞ぐ装置だ。
課題ごとに、場面、課題文、基準別の通過率、そしてチューニングまで終えたプログラム(構造と定数)をテキスト文書として書き残す。だから次の課題は白紙から始まらず、この資産を組み合わせ・変形するところから出発する。
それが従来のやり方で、遅い理由もそこにある。報酬を一度直すたびに、方策を一から学習し直さなければならなかった。InterEvolveでは固定のモーターモデルが再学習なしで実行するので、候補一つを確認するコストが『RL一回』ではなく『ロールアウト一束』で済む。だから複数の候補を素早く回して比較できる。