学習が手作りに「負け続ける」正直な話 —— そして、いつ学習は勝つのか
対象: 強化学習・進化計算・制御工学に興味がある人 / 「学習は手作りに勝つ」を鵜呑みにせず検証したい人。
前提知識: Python が読めれば十分。制御・学習の用語は都度かみくだきます。
数値はすべてローカル実測(ロケットは完了・箸は stage-1 予備)。「学習が勝った」と言う前に反証する、その途中経過です。
0. 3行まとめ
- 自分の2つの実験——ロケット垂直着陸と箸でのつまみ上げ(chopstick grasping)——で、素朴に学習させた方策は、公平に/手で設計した制御に勝てなかった。ロケットは厳密統計で「引き分け(robust NULL)」、箸は「易しい箱ですら scripted 制御に負け、接触で止まった(予備観察)」。
- これは「失敗」ではなく価値ある結果だ。学習が制御に勝ったように見えたら、最初に疑うべきは「baseline が弱い」「統計が薄い」。両実験ともその規律(予算を揃えた baseline / held-out / paired 信頼区間 / 事前登録 / 最終姿勢で判定 / 窓積分で crush 判定)を守ったから、幻の勝ちが消えた。
- ではいつ学習は勝つのか。 正直な現状は「評価を厳密にすると gaming は止まるが、それだけでは勝ちに届かない」。だが第3の実験(蛇の這行)で、今度は進化が素直に勝った ── 決め手は「competing する強い手作り baseline が無かった」こと。つまり学習が弱いのではなく、人間の事前知識という"下駄"に対して不利なだけ。手作りが強い所は世界モデル(予測)か warm-start で、手作りが無い所は素直に学習で。この記事は、2つの負け・1つの勝ち・1つの合わせ技を同じ物差しで並べて、その地図を描く。
1. 用語(先に地図)
| 用語 | かみくだき |
|---|---|
| 手作り制御(hand-crafted control) | 人間が物理を理解して式で書いた制御則。PID などの古典制御 |
| PID 制御 | 誤差に比例(P)・微分(D)・積分(I)して打ち消す制御の定番。I(積分)は「ずっと同じ方向の誤差」を溜めて消す記憶 |
| 学習方策(learned policy) | データや試行から自動でパラメータを決めた制御器。ここでは主に進化(ES)で重みを探したニューラルネット |
| 進化戦略(ES, evolution strategy) | 重みを少しずつ変異させ、良かった方を残す最適化。勾配を使わずに方策を探せる |
| 残差方策(residual policy) | 「手作り制御の出力 + 小さなネットの補正」。ネットがゼロ初期化ならそのまま手作り制御(進化のウォームスタート) |
| メモリレス(memoryless) | 「今の観測」だけから出力を決め、過去を覚えない方策。積分のような記憶を持てない |
| held-out(ホールドアウト) | 学習に一切使っていない「新しい問題」での成績。汎化の唯一の証拠 |
| 過学習(overfitting) | 評価に使った少数のシナリオだけに強くなり、新しいシナリオで崩れること |
| 目的ハッキング(objective gaming) | 本当に欲しい性質(例: ソフト着陸)を犠牲にして、スコアの数字だけを稼ぐこと |
| 信頼区間(CI, confidence interval) | 「本当の平均はこの範囲にありそう」の幅。下限が 0 を超えて初めて"有意に勝ち" |
| paired 評価(対応のある比較) | 2つの方策を同じ乱数・同じ初期条件で戦わせ、1試行ごとの差を取る。ノイズに強い |
| 事前登録(pre-registration) | 結果を見る前に「何をもって成功とするか」を凍結する。後付けの言い訳を封じる |
| NULL(帰無・空振り) | 「差は無かった/勝てなかった」という結果。正しく測った NULL は一級の成果 |
| 世界モデル(world model) | 環境の先行きを予測する内部モデル。「この後どうなるか」を持てると、反応的な制御より先手を打てる |
2. 2つの実験は同じ結末 —— だが3つ目で、結末が変わった
私は自宅 CPU で回る小さな物理シミュレータ(MuJoCo ベースの onocollo)で、性格の違う2つの制御タスクを、同じ規律——「学習が手作りに勝ったと言う前に、公平な baseline と厳密な統計で反証しろ」——で扱った。片方は空中の姿勢制御(倒立振子を排気で立てて降ろす)、もう片方は接触の多い操作(2本の棒で物体を掴んで持ち上げる)で、力学も難所も全く違う。にもかかわらず、結末は不気味なほど揃っていた。「素朴に学習させると、公平な手作り制御に届かない」。以下、2つを順に、数字つきで正直に見ていく。
2.1 ロケット垂直着陸: 厳密統計で「引き分け」
onocollo.rocket は、ジンバル推力(thrust vectoring=ノズルを傾けて推力の向きを変える舵)を持つ booster を垂直着陸させるトイだ。機体は排気の上に立つ倒立振子で、放っておけば必ず倒れる。だから着陸させること自体が制御問題になる。
手作りの基準として、よくチューニングしたカスケード PD 誘導を置いた。**実測(32ランダム着陸、グリッド調整済み、正直)**は、着陸率 1.00 / ソフト率 ~0.85 / 接地 ~0.68 m/s / 接地時の傾き ~7°。全ランダム降下が着陸し、約85%が「遅く・まっすぐ・パッド上」のソフト着陸。手作り、かなり強い。
その上に学習を足す。ctrl = pd_control(obs) + scale · MLP(obs)。MLP(多層パーセプトロン)はゼロ初期化=最初は PD そのもので、(μ+λ) 進化で PD の上の改善を探す。全候補と PD を同じランダム初期条件で採点するので、best > baseline は「学習が手作りを超えたか」の公平なテスト——のはずだった。
結果は段階的に「勝ったように見えて、正直には勝てない」を繰り返した。
- 無風: 進化残差が PD をわずかに上回る(76.60 → 77.78、+1.5%)。PD が既に強いので差は小さい。「良い手作りの上にちょっと足す」だけ。
- 持続横風(memoryless 残差): 小さい評価セット(10エピソード)で進化すると訓練 +26%(52.8→66.4)。でも held-out では PD に負ける(20.5 vs 27.2)。ゲインは有限の評価エピソードへの過学習だった。評価を24に増やすと訓練ゲインは縮み、held-out は引き分け。転移しない。理由は明快で、メモリレス方策は一定の横力を"一定の傾き"でしか相殺できず、積分の記憶が無いから定常オフセットが消えない。
- 手作りに状態を足す(PID): 横ずれの積分を持たせると、PD を控えめだが一貫して上回る(ソフト率 0.09→0.16 など、決して悪化しない)。仮説「状態が足りない」は当たった——手作りの状態が、状態の欠けた学習に勝つ。
-
学習に状態を持たせる(recurrent): RNN の隠れ状態を残差にする。訓練は
PID 53.8 → recurrent 65.1、+21%——大きく見える勝ち。だが held-out では転移せず、しかも全 held-out でソフト率が PID より低い。進化はスカラー fitness をソフト着陸を犠牲にして稼いだ=目的ハッキング。
ここまでで「伸びしろは policy の容量ではなく"評価"だ」と分かったので、評価設計そのものを事前登録して決着させた(後述の規律を全部盛りにした版)。主判定 P の結果は——
robust NULL。公平に再調整した PID には勝てなかった。 TEST(3ストリーム×100エピソード、paired)で 0/10 seed が正、fitness の信頼区間は3ストリームとも 0 をまたぐ(+0.1[-1.2,+1.3], -0.1, +0.5=引き分け、負けではない)。フルスタックの評価改善は学習を引き分けまで押し上げるが、それ以上は無かった。
正直な但し書き(数字を"きれい"に見せないため): 唯一 TEST の soft で1ストリームが
+0.035[+0.015,+0.055]と CI 下限が 0 を超える正の信号を出した。だが別ストリームで相殺され、その stream の fitness CI は 0 をまたぐので勝ちにはならない。この 1 本も隠さず載せる。
決着実験の全条件を、負けも含めて 1 枚に並べる(held-out は policy − PID の差)。列の見方: 訓練ゲインが大きくても held-out で ≈0 に潰れ、過学習 gap(訓練 − held-out)が残るほど"見かけの勝ち"だったことを意味する。
| 条件 | 方策 / 評価 | 訓練ゲイン | held-out fit差 | 過学習gap | held-out判定 |
|---|---|---|---|---|---|
| P(主) | recurrent, 再サンプル+soft-margin+val選抜 | +3.7 | −0.1 | +3.8 | 引き分け(0/10正) |
| C_evaldesign | recurrent, 再サンプル+スカラー目的 | +9.4 | −4.2 | +13.6 | 負け |
| C_sham | recurrent, 固定eval+soft-margin | +8.7 | −0.0 | +8.8 | 引き分け/負け |
| C_feedforward | メモリレスMLP, 再サンプル+soft-margin | +6.7 | −1.9 | +8.6 | 負け/引き分け |
| R_nominal | recurrent, 無風(sanity) | +0.5 | −0.1 | +0.6 | 引き分け |
読み解きの要点は3つ。(1) 見かけの勝ちは厳密統計で消えた——主判定 P は訓練 +3.7 が held-out で −0.1、0/10 seed。(2) eval 改善は本物だが引き分け止まり——soft-margin 目的にすると目的ハッキングが止まり(P は引き分け、スカラーの C_evaldesign は −4.2 で負け)、再サンプルが過学習 gap を半減(P +3.8 vs 固定 C_sham +8.8)。負け→引き分けまで押すが、勝ちは作らない。(3) 訓練ゲインはどれも転移しない(訓練 +3.7〜+9.4 が held-out で ≈0)。
さらに念のため、時変の突風でも試した。「一定の風は積分(PID の I)に有利すぎたのでは?」という疑いへの答えだ。突風下で PID を再調整すると最適は k_i=0(積分なしの純 PD)——積分はむしろ害になり、"反応的な"純 PD が最良の手作り制御になった。ここは理屈上「記憶より反応の速さ」が効くので学習に勝ち目がありそうな領域だ。ところが——
また引き分け。 P_gust(recurrent)は 0/10 seed、TEST の fitness CI は3ストリームとも 0 をまたぐ。feedforward 版は1ストリームだけ fit +4.3[+2.3,+6.2] と光ったが、他2ストリームは負/横ばい、held-out は負、seed も 0/4——全ゲート不通過で robust な勝ちではない。「突風なら反応性で学習有利」という私の予想は、正直に言うと外れた(仮説の機構=積分が効かない、は当たったが、だからといって学習が勝つわけではなかった)。
🗒️ 「その界隈だと持ち上げられてるけど『その界隈』が狭すぎて世間に通用しない感じの人…?」— 10エピソードの評価セットの中でだけ +26% の英雄。held-out という"世間"に出た瞬間に通用しなくなる、過学習の似顔絵(© Forbidden shibukawa / SHUEISHA・『スナックバス江』)
2.2 箸でのつまみ上げ: 易しい箱ですら scripted に負けた(予備観察)
もう1つのタスクは毛色が違う——箸で物体をつまんで持ち上げる(tool-use manipulation)。動機は「手を失った人の AI 義手が箸で食事を掴めるか」という介助技術のイメージだ(まだ動く義手ではなくシミュレーションのトイ)。onocollo.chopstick は、AI 義手が箸を本物の持ち方で握る最小リグ——本物の箸は非対称で、下の箸は固定・上の箸1本だけを動かす(親指・人差し指・中指で「一の字」)。だから下の箸を関節ロックで固定、上の箸だけを支点で回して先端を閉じ、義手ごと持ち上げる。駆動は「義手→上の箸(梃子)→物体」(物体は下の固定箸に押し当てて挟む)。※作り込みの経緯(直動グリッパ→対称梃子→正しい非対称の AI 義手)は箸記事に訂正の詳細。
このタスクの**#1 モデリングリスクは「箱が2点接触の軸まわりに回ってすり抜ける」こと。だから接触に condim=6(torsion+roll friction、ねじれと転がりの摩擦)を入れて回転を止めている(default の condim 3 だと物体はグリップから転がり出る)。ここは stage-2 で事前登録のノブ**として扱う——「答えが出るまで摩擦をいじる」のは experimenter DoF(実験者の自由度)による自己欺瞞なので、やらない。
そして成功判定は徹底して正直にした。これは運動学把持で学んだ教訓(見かけの一瞬でなく最終姿勢を見る)の直輸入だ:
- 成功=最終の "held" 状態(両側接触 AND しきい値以上に持ち上がっている AND 発散していない、を保持窓の終端で判定)。振りの途中で一瞬触れただけは数えない。
- crush(潰し)判定は窓の平均力。接触法線力はソルバの都合で数ステップごとにスパイクするので、瞬間ピークを見ると「ソルバのノイズを予測した」ことにできてしまう。だから保持窓で平均を取る。
-
グリップは dwell(滞留)後に latch。両側接触が
_GRIP_CONFIRMステップ続いて初めて「掴んだ」と認める。かすっただけは把持ではない。
fitness も正直に組んだ: held に +5.0、持ち上げ高さに比例した shaping、接触に +0.5、そして潰したら −1.0 のペナルティ(過剰把持がクリーンな空振りより高得点になってはいけない)。
さて、ここでの正直な予備観察(結果ではなく、警戒を保つための観察):
易しい箱の上で、手書きの scripted 制御器(open-loop で「強く閉じて→持ち上げる」だけ)はあっさり held に到達(fitness ~6)。一方、ゼロから小予算で進化させた素朴な線形方策は接触(~0.5)までしか届かなかった。——手作り制御が、また naive 学習を追い越した。ロケットで見たのと同じパターンだ。
なぜ scripted が易々と勝ち、素朴学習が接触で止まるのか、機構で見ておく。scripted は物理を知っている人間が「settle → 強く閉じる(0.5秒)→ ゆっくり持ち上げる」と手順を決め打ちしているので、box の平らな面に対しては最短で held に届く。一方、ゼロから進化させた線形方策は、[bias, block_x, block_y, block_lift, hand_lift, two_sided] という6特徴から [pinch, lift] を線形写像するだけ——小予算では「まず十分に閉じてから持ち上げる」という順序すら安定して発見できず、閉じ切る前に持ち上げようとして接触(fitness ~0.5)で足踏みする。これは「学習が原理的にできない」のではなく、探索予算と方策クラスが、手書きの事前知識に対して割に合っていないという、ロケットの残差方策と全く同じ構図だ。手作りは"人間が積んだ事前知識"というハンデを baseline に持っている。
強調しておく: これはstage-1 の予備観察であって結論ではない。stage-2(本番)は未実施だ。stage-2 の設計はもう決まっていて——evolve した反応的な閉ループ方策を、丸い/柔らかい物体(滑り vs 潰しの分離、force_cap という潰し proxy 付き)で、予算を揃えた baseline と held-out seed で比較し、滑り/潰しを予測する予測器(=小さな世界モデル)を QD の gate に使う。この記事で「箸は学習が負けた」と結論づけるのは早すぎる。今言えるのは「易しい箱の smoke test で、素朴学習は手書きに負けた」だけだ。
2.3 第3の実験: 今度は「進化が勝った」—— 蛇の這行が、仮説を裏打ちした
ここまでの2つ(ロケット・箸)は、強い手作り baseline に学習が届かない話だった。だが最近、同じ土台でまったく逆の結末を引いた ── 蛇の這行だ。ここでは進化(CMA-ES)が、素直に、明確に勝った。そして "勝った理由" が、§4 でこれから述べる仮説をそのまま裏打ちしている。
蛇は脚が無く、胴のうねりを異方性摩擦(前には滑る・横には引っかかる)で前進に変える。抵抗力理論(RFT)でこの摩擦をモデル化し、4パラメータの serpenoid 歩容(振幅・周波数・関節間の位相差・曲がり)を CMA-ES で進化させた。結果は clean な成功だった:
- 異方性の下で +3.65m 前進(横ずれ 0.08m=ほぼ直線)。同じ歩容を等方摩擦にすると 0.00m(その場でくねるだけ)。ablation で「異方性こそが推進の源」を確認。
なぜ蛇では進化が勝ち、ロケット/箸では勝てなかったのか。決定的な違いは「competing する手作り baseline の有無」だ。ロケットには人間が積んだ PD/PID があり、箸には「閉じてから持ち上げる」scripted 手順があった ── どちらも人間の事前知識という下駄を履いていた。蛇にはそれが無い。「くねり方の正解」を手で書き下すのは難しく、進化に追い越すべき強い相手がいない。しかも4パラメータの探索空間は小さく、異方性摩擦さえ正しく実装すれば fitness の勾配は綺麗だ。手作りが強い領域では学習は引き分け止まり、手作りが弱い/存在しない領域では学習が普通に勝つ ── これは §4 の核心そのものだ。
さらに 全身骨格の運搬(place)は、その中間の "合わせ技" の例になった。掴んだボトルを命令先へ運ぶ課題で、ゼロから進化させると報酬ハッキング(筋を弛緩させボトルを放置して近接点の底値だけ稼ぐ)に落ちて負ける。だが §3.1 の型どおり、検証済みの把持方策(手作り相当の事前知識)からwarm-startして進化を載せると、その窪地を飛び越え、3命令すべてで保持・1つを厳密配置した(held 3/3・placed 1/3)。手作り単独でも学習単独でもなく、"手作りで温めてから学習" の合わせ技が勝った。
念のため、両方が負けた例も同時に出たことを正直に置く(虫のホバリング・四足の登坂)。単純な開ループ翼打ちも進化も虫を飛ばせず(揚力が体重に届かない)、専用報酬でも四足は 6° の坂を登れなかった。課題が方策の容量や物理そのものを超えていると、手作りも学習も等しく負ける ── これも同じ物差しで測った、正直なデータ点だ。
3. なぜこれが「失敗」でなく「価値ある結果」か
2つの実験で同じ絵が出た。ここで大事なのは、この負けが正しく測られていることだ。学習が制御に勝ったように見えたとき、真っ先に疑うべき容疑者は2人いる。
容疑者A: baseline が弱い。 弱い手作りを相手にすれば、学習は"トリビアルに"勝てる。だから両実験とも baseline を強く、かつ公平に保った。ロケットでは、学習と同じ目的・同じ風・同じ評価予算で PID を再調整した(k_i≈0.012 を発見)。「古い設定のまま放置した baseline」を相手にすれば、学習が勝つのは当たり前だからだ。箸では、比較を予算を揃えた baselineにすることを stage-2 設計に事前登録した。
ただし、ここで私は一度自分に騙されたので正直に書く。ロケットで中間結論として「元の PID(k_i=0.005)が under-tuned で、公平に再調整したら見かけの勝ちが消えたのだ」と書きかけた。きれいな物語だ。だが実験後に確かめたら、TEST 上では k_i=0.005 ≈ 0.012(soft はむしろ 0.005 が僅かに上)で、「元の bar が弱かった」という私の物語は TEST では成り立たなかった。真因はもっと地味だった——見かけの勝ちは"弱い審判"ではなく、次の容疑者Bだった。
容疑者B: 統計が薄い。 過去の「recurrent が勝つ」は、"3 seed で fitness 3/3、信頼区間なし"だった。これを paired・10 seed・ブートストラップ CI で測り直すと、0/10・pooled 平均マイナス。小 N・CI 無し・seed 依存ノイズが、勝ちに見えていただけだった。箸でも paired common random numbers(同 seed で両方策が同じ初期条件を見る)を rollout に作り込んである。
この2つの規律——予算を揃えた強い baseline と paired・多 seed・CI 付きの厳密統計——を守ると、幻の勝ちは自壊する。だから残った「引き分け/負け」は信用できる。信用できる NULL は、次の実験の正しい出発点になる。honest disclosure(正直な内訳開示)は、他人の主張だけでなく自分の中間結論にも向けるべきものだ。
🗒️ 「う〜〜〜ん…イマイチ考察が甘いわね…/それ もうちょっと踏み込んで考えられない…?」— 3 seed・CI なしの"勝ち"を持ってきた自分に、こう言い返せるかどうかだけが分かれ目だった(© Forbidden shibukawa / SHUEISHA・『スナックバス江』)
3.1 2タスクに共通する「正直なベンチの型」
面白いのは、ロケットと箸で使った道具立てが同じ型に収束したことだ。これは意図せず生まれた再利用テンプレで、他のタスクにも移植できる:
-
物理モデル(
model.py) + 正直に採点する env(fitness を1つの数字にするが、内訳を必ず別々に吐く)。ロケットは着陸率・ソフト率・接地速度・傾きを別々に、箸はcontacted / held / slipped / crushed / lift_height / grip_forceを別々に。1つの成功率の中に失敗を隠さない。 - 手作り baseline を先に強くチューニングし、その上にウォームスタートした学習方策(ゼロ初期化残差=最初は手作りそのもの)を載せる。これで「学習は手作りを超えたか」が公平な引き算になる。
- 最終姿勢で判定(ロケットは接地時、箸は保持窓の終端の held)。一瞬の見かけを成功に数えない。
- 窓積分でノイズをならす(箸の crush 判定は法線力の窓平均。瞬間ピークを見ると「ソルバのノイズを予測した」と偽れてしまう)。
- 同 seed で paired(両方策が同じ初期条件を見る common random numbers)+held-out seed で汎化を測る。
この型があるから、新しいタスクを足すたびに「正直さ」をゼロから設計し直さずに済む。そして型が同じだから、2タスクの NULL を横に並べて比較できる——これが「1つの空振り」を「再現する法則」に変える土台になる。
4. ではいつ学習は勝つのか(正直な仮説)
ここが読者への本当の贈り物だ。「学習はいつも負ける」と言いたいのではない。いつ勝つのかを、実測に足をつけて正直に絞り込む。
4.1 (a) 評価を厳密&再サンプルにすると gaming は抑えられる——が、それでも勝ちには届かない
ロケットの決着実験で組んだ「eval-signal スタック」は全部 opt-in(既定 OFF=過去の NULL を壊さない)で、次を積んだ:
- 世代ごと再サンプル eval(固定セットの記憶を封じる)。
-
連続 min-margin ソフト目的(3つのソフト余裕の最小に比例する滑らかなボーナス。二値
int(soft)の崖にしない——崖はギリギリのソフトを量産して汎化で崩れる)。 - validation ブロック選抜(動く eval で最高訓練 fitness を選ぶと"運の良い引き"に過学習するので、別ブロックで、しかも元の目的で選ぶ)。
- 公平に再チューニングした PID(前述)。
-
リークしない paired 評価(seed を100万ブロックで分割+実行時
assert_no_seed_leakage、共通乱数の paired 差分+ブートストラップ CI)。
効果は本物だった。soft-margin 目的は目的ハッキングを止め(主判定 P は引き分け、スカラー目的の対照は −4.2 で負け)、再サンプル eval は過学習 gap を半減した(P の +3.8 vs 固定 eval の +8.8)。負け→引き分けまで押し上げた。
だが——引き分け止まりだった。評価の厳密化は必要だが十分ではない。これが正直な結論だ。「評価を直せば学習が勝つ」と期待していたが、勝ちは作れなかった。
なぜ天井が「引き分け」だったのか。私の読みはこうだ。評価を厳密にする作業は、本質的に**「幻の勝ちを削る」方向にしか働かない**——目的ハッキングを封じ、過学習の水増しを剥がす。これは下駄を脱がせる操作であって、方策に新しい能力を与える操作ではない。手作り PD/PID は既にこのタスクの構造(一定風=積分、突風=反応)を人間の知識として内蔵しているので、下駄を全部脱がせた素朴学習は「ちょうど同じ土俵」に立つだけで、追い越す原資が無い。追い越すには、手作りが持っていない能力——外乱や滑りの予測——を方策側に足すしかない。だから次のレバーは「評価」ではなく「方策に何を持たせるか(世界モデル)」なのだ、と2つの実験は指している。
4.2 (b) 反応性/記憶が本質的に効く領域でこそ、学習・世界モデルに目がある——が、突風では NULL が続いた
理屈はこうだ。持続する一定の風は「記憶(積分)」が効く領域で、だから手作り PID が強かった。逆に時変の突風なら、積分は常に一歩遅れて的外れを撃つので、"記憶"より**"反応の速さ"**が効く——ここは学習に勝ち目がありそうだ。
機構の予想は当たった: 突風下では手作りの最適が **k_i=0(純 PD)**になり、積分は害になった。だが学習はそこでも純 PD を明確には超えなかった(§2.1)。反応性の領域に持ち込んでも、robust な勝ちは出なかった。
正直なスコープも開示する。ロケットの fitness チャネルは、この規模の効果に対して検出力不足(1エピソードの標準偏差 ≈ 20 に対し候補効果は +0.06…+0.52、Cohen's d < 0.03)。だからこれは「経済的に意味のある勝ちは無い」であって「効果ゼロの証明」ではない。NULL を過大解釈しないための線引きだ。
4.3 (c) 次の賭け=「滑る/潰れる直前を予測する低次元の世界モデル」を選択圧に使う
では、まだ試していない筋はどこか。箸の stage-2 がその賭けだ。
箸タスクの本質的な難所は、箱(易しい・平面)ではなく、球/円柱(滑る)と柔らかい物体(潰れる)にある。ここでは「今この瞬間の観測」だけを見る反応的方策では遅い——物体が滑り出す直前、あるいは潰れる直前を予測できて初めて、先手の把持調整ができる。rollout はもうその分離を測れるように作ってある: slipped(掴んだのに逃げた/転がり出た)と crushed(force_cap を窓平均の最大力が超えた)を別々の指標として吐く。
賭けは明確だ: 滑り/潰しを予測する小さな世界モデルを、進化の QD(Quality-Diversity)gate に組み込んだとき、box では手書きに負けた素朴学習が、round/soft では手書きを超えるか。 反応性が本質的に効く領域(時変外乱・滑る物体)でこそ、予測を持つ学習に目がある——というのが、2つの NULL を積んだ上での、私の一番正直な仮説だ。
なぜ「世界モデル」が鍵になり得るのか、機構で言い直しておく。ロケットの突風で学んだのは「純 PD(反応だけ)は、外乱が反応より速く動くと一歩遅れる」ことだった。反応制御の遅れは外乱の予測でしか埋められない。箸の滑り/潰しも同じ構造だ——slipped も crushed も、起きてから観測すると手遅れで、起きる直前の状態(接触法線力の伸び方、物体の微小な回転の兆し)から先読みできて初めて対処できる。手作り PID には、この「先読み」を安く積む方法が無い(積分は過去の平均であって未来の予測ではない)。ここが、素朴な反応方策でも手作りでもなく、予測を内蔵した学習方策にだけ開いている隙間の正体だと考えている。
逆に言えば、box(平面・滑らない)や持続風(一定・積分で消える)は、予測が要らないから手作りが強かった。2つの NULL は「学習が弱い」ではなく「予測が不要な領域では手作りで十分」を示していた、と読むのが一番正直だ。だから次に賭けるべきは、予測が"必要になる"領域なのだ。
ただし念押し: stage-2 はまだ走っていない。予算を揃えた baseline と held-out seed で反証してからでなければ「学習が勝った」とは書かない。ロケットで学んだ規律を、そのまま箸にも適用する。そして——もし round/soft でも学習が手作りを超えられなかったら、それはそれで正直に書く。3つ目の NULL は、仮説「予測が鍵」への強い反証になるからだ。負けを消さないことが、この一連の作業の背骨だ。
🗒️ 「おじさんの特殊過ぎる相対性理論…」— 未来を予測する理論は、いつだって語り口だけは壮大になる。だから走らせて反証するまでは"賭け"としか書かない(© Forbidden shibukawa / SHUEISHA・『スナックバス江』)
4.4 (d) そもそも「強い手作り baseline」が競合しない領域では、学習は普通に勝つ
§2.3 の蛇が示したのは、(a)-(c) とは別の、いちばん素直な勝ち筋だ。ロケットも箸も「学習 vs 手作り」だったが、蛇は事実上「学習 vs 何も無し」だった。 くねり歩容を手で最適化するのは難しく、進化に追い越すべき強い相手がいない。加えて探索空間が小さく(4パラメータ)、物理(異方性摩擦)さえ正しければ landscape の勾配は綺麗。この2条件 ── (i) competing する強い手作りが無い、(ii) 探索空間が小さく landscape が素直 ── が揃うと、学習は苦もなく勝つ。
これは (a)-(c) と矛盾しない。むしろ補完だ。ロケット/箸で学習が引き分け・負けだったのは「手作りが人間の事前知識という下駄を履いていたから」で、その下駄が無い蛇では、下駄の差がそのまま消える。「学習は弱い」のではなく「competing する事前知識に対して、下駄のぶんだけ不利」 ── という一貫した読みに、蛇の勝ちがぴたりと収まる。さらに place が示したように、手作りが強い領域でも手作りを"初期値"として学習に食わせれば(warm-start)、下駄を履いたまま学習の探索を足せる。だから戦略はこう整理できる:
- 手作りが強い領域(ロケット・箸の平面) → (c) の世界モデルで、手作りが持たない予測という原資を足すか、warm-start で手作りを土台に使う。
- 手作りが弱い/存在しない領域(蛇のくねり) → 素直に学習(進化)を回す。普通に勝てる。
- 課題が方策容量や物理を超える領域(虫の飛行・四足の登坂) → 手作りも学習も負ける。方策クラスや物理の作り直しが先。
どの領域にいるかを最初に見極めることが、「学習 vs 手作り」のどの手を打つべきかを決める。2つの NULL に、1つの clean な勝ち(蛇)と1つの合わせ技(place)を並べて、ようやくこの地図が描けた。
5. 先行研究について(正直に)
タスクの新規性について正直に書いておく。箸での操作そのものは新しくない。 Yang et al. の SIGGRAPH 2022 論文("Learning to Use Chopsticks in Diverse Gripping Styles"、arXiv:2205.14313)が、ヒューマノイドの手+箸で多様な把持スタイルの操作を既に実現している。私の chopstick リグはそれに比べればトイであり、タスクとしての新規性は主張しない。
私がやっているのは別のことだ——「手作り制御 vs 素朴学習」を、同じ厳密な規律で複数タスク横断に測り、NULL を正直に積むこと。貢献があるとすれば、それは新タスクではなく、"負け"の再現性と、その内訳開示の作法にある。派手な勝ちの主張よりも、こちらの方が次の人の時間を節約する、と信じている。
教訓(gift-to-reader)
- 手作りに負けたら、まず喜べ。 それは baseline が強い証拠だ。弱い相手に勝った学習より、強い相手に引き分けた学習の方が、はるかに信用できる情報を持っている。
- 「学習が勝った」は、反証してから言え。 最初の容疑者は "弱い baseline" と "薄い統計"。派手な手法や policy 容量ではない。CI 無しの 3 seed の勝ちは、paired・10 seed・CI で溶ける。
- 自分の中間結論も疑え。 私は一度「under-tuned baseline が原因」と書き、自分の追加チェックで反証した。honest disclosure は他人だけでなく自分にも向ける。
- 評価設計 > policy 容量。 伸びしろは RNN を大きくすることではなく、評価を厳密にすることにあった——それでも公平な手作りは超えなかった。評価の厳密化は必要だが十分でない。
- 正直な NULL は、再現すると"法則"になる。 ロケットと箸で同じ絵が出た。1つの NULL は空振りだが、独立な2タスクで再現した NULL は「素朴学習は強い手作りを簡単には超えない」という、次の設計を導く経験則になる。
- "学習が勝つ条件"は、勝った実例から逆算せよ。 蛇の這行では進化が素直に勝った。決め手は「competing する強い手作りが無く、探索空間が小さく landscape が素直」の2条件。逆に言えば、負けた2タスクは"手作りが下駄を履いていた"だけ。学習は弱いのではなく、事前知識に対して下駄のぶん不利——この読みは、勝ち・引き分け・負けを同じ物差しで並べて初めて見える。
- 手作りと学習は、対立ではなく"合成"できる。 place では、検証済みの手作り把持から warm-start して進化を載せた合わせ技が、単独のどちらにも勝った。「vs」で考える前に、手作りを学習の初期値にできないか疑うと、選択肢が1つ増える。
次回に続く
残る問いはシンプルだ。世界モデルを評価器(あるいは選択圧)に組み込んだとき、この連敗は動くのか。
- 箸 stage-2: 滑り/潰しを予測する小さな世界モデルを QD gate にして、round/soft 物体で、予算を揃えた baseline と held-out seed で決着させる。box で手書きに負けた素朴学習は、予測を持てば round で勝てるか。
- ロケット: 観測が「状態ベクトル」ではなく「カメラ画像」になったとき(世界モデル V/M/C で画素から着陸を学ぶ)、この引き分けは動くのか。そして移動パッド——反応性がさらに効く領域では。
正直な現状は「学習は、強い手作りに、まだ勝てていない」。だがどこでなら勝てそうかは、2つの NULL のおかげでかなり絞れた。次は、その一番細い隙間——予測が本質的に効く、滑って潰れる領域——に、世界モデルを差し込む。負けたら、また正直に書く。
補足: ロケットの数値の正本は
onocollo-complete/docs/rocket_landing.md(実験はscripts/rocket_eval_experiment.pyほか、結果はout/rocket/eval_exp/)。箸の予備観察はsrc/onocollo/chopstick/(model.py/rollout.py/evolve.pyの docstring)。ロケットは完了、箸は stage-1 予備で stage-2 未実施。この記事はドラフト(公開は人間判断)。






