ムエタイ · 蒸留 · 並列学習 · GPU · コーチング
シャドウクローン:ムエタイの4つの技を並行して学ぶ
学習コスト 約$818件の作業ログで学習ラン71回、約108.1マシン時間 · 内訳
要約。 新しい技はそれぞれ、最新モデルのコピーである教師の中で、専用のレンタルGPUを使って学習します。教師が覚えなければならないのは、自分の技と、構えとバランスを保つことだけです。合格した教師は、1つの生徒に蒸留されます。生徒はPPOで学習を続けながら、その瞬間に行っている技を担当する教師の方へ引き寄せられます。合格した教師は4つでした。奥の手のボディストレート、奥足の膝蹴り、スイッチニー、そしてプルカウンターです。採用された生徒distill4-131.1Mは最初の3つを身につけ、以前の技もすべて保っています。プルカウンターは半分しか戻ってきませんでした。いくつかのクローンは学習を終え、数字の上では良いスコアを出したのに、それでも間違っていました。真似していた動きのせいか、学習での報酬の与え方のせいです。この記事は、8つの作業ログにわたる約$80の学習をまとめたもので、もっと長い物語の第1部です。
この記事は一人称で書いています。これまでの記事では「トニー」や「コーチ」と呼んでいましたが、これからは私自身として書きます。
ナルトのアイデア
『NARUTO -ナルト- 疾風伝』には、これを計画している間ずっと頭にあった場面があります。ナルトは、本来かかるはずの時間よりずっと短い期間で、ある術を習得しなければなりません。カカシの解決策が影分身でした。ナルトは自分の分身を大勢作り、全員が一斉に修行します。分身が消えると、その分身が学んだことはすべて本体に戻ります。1週間分の修行が1日に収まるのです。ただし落とし穴があって、分身の疲れも本体に戻ってきます。
ファイターに技を加えるのも、そんなふうにしたいと思いました。これまでは、新しい技はすべて1つのモデルに順番にファインチューニングし、古い技は教師によってその場に保っていました。新しい技はどれも前の技を待たなければならず、ひとつ加えるたびに他の技を壊す危険がありました(破滅的忘却)。技を別々に学習するのは、ほぼ自明な並列です。膝蹴りはボディストレートを待つ必要がないので、別々のマシンで同時に走らせられます。
そこで計画はこうなりました。
- 最新のモデル(ベース)を取り、新しい技ごとにそのクローンを作る。
- 各クローンを専用のレンタルGPUで学習させる。覚えるのは自分の技と、構えとバランスを保つことだけ。「知る必要があるのは、構えとバランスと、その特定の技だけ」。
- 経験を持ち帰る。合格したクローンを1つの生徒に蒸留し、生徒はベースができたことをすべて保つ。
この記事の残りでは、クローンをどう作るか、経験をどう持ち帰るか、そして何がうまくいかなかったかを説明します。すべてのランは作業ログにあります。
クローンを作る:技1つだけの教師
教師はベースのコピーから始まります。512ユニットの隠れ層を2つ持つ多層パーセプトロンです。448個の入力を読み、48個のモーター出力を動かします。このコピーを教師に変えるのは、次の3つです。
ネットワークを変えずに加える新しい入力。 技ごとに専用の入力「この技を実行中」を用意し、最後の入力(バランスゲート)のすぐ手前に置きます。新しい入力から第1層への重みはゼロから始めます。 を第1層の重み行列とすると、その列は と分けられ、拡張したネットワークは次を使います。
そのため最初のステップでは、拡張したネットワークはベースとまったく同じように振る舞います(関数を保つ拡張)。その入力を使い始めるには学習するしかありません。どの教師も最終的な生徒と同じ入力の並びを読むので、生徒は後で同じ観測の上ですべての教師から学べます。
その技だけを練習する。 すべてのエピソードはパンチのエピソードで、すべての押下が教師の技です。間に押される動作を挟んで、バランスも引き続きテストします。
それ以外はすべて親が保つ。 ベースの凍結したコピーが、新しい技の実行中以外はずっと教師として残ります(方策蒸留を参照)。教師は技の間は自由に動きを変えられ、それ以外の時間はベースの振る舞いに引き戻されます。これで構えと、押されたときの立て直しが保たれます。技はそこから始まり、そこで終わらなければなりません。
各技の動きは私自身のモーションキャプチャから取っています。教師はその参照モーションをなぞることで報酬を得ます。たとえば、奥の手のボディストレートは、私の撮影の1テイクから切り出した1.45秒の区間です。
クローンを並べて走らせる
学習器は1つのGPUで動きます。世界のコピー2,048個(並列環境)をそれぞれ16ステップずつ、1イテレーションあたり32,768ステップです。レンタルのRTX 5090では、1秒あたり約25,000〜34,000ステップになります。クローンにはそれぞれ専用のマシンを割り当てます。膝蹴りの教師2つが並んで学習し、その修正版も並んで走りました。回避の教師4つは1分以内に相次いで始まりました。アッパーカットの教師2つは、2台のRunPodマシンで同時に走りました。
| 技 | 採用した教師 | ラン数 | 親 | 必要だったこと |
|---|---|---|---|---|
| 奥の手のボディストレート | bodycross4-118.0M | 4 | guard14(最後のランではguard18が残りを保持) | 「ローブロー禁止」のライン、サンドバッグを当たる位置へ移動、その後ベースの遅めの肘で再学習 |
| 奥足の膝蹴り | kneeR3-183.5M | 3 | guard14 | 足をキャプチャどおりの位置に保ち、その後キャプチャのペースで元の位置へ戻るステップ |
| スイッチニー | kneeL3-214.0M | 3 | guard14 | 同上 |
| プルカウンター | pull1-209.7M | 1 | distill1-282.5M | 空中で8/8、サンドバッグで8/8、一発で成功 |
各教師の学習には約2時間かかります。時間と費用の大半は修正に使われます。いくつかの短いランを、それぞれ最後の良いチェックポイントから1つだけ変えてウォームスタートします。クローン同士は独立しているので、ある技で修正が失敗しても、他の技には何の影響もありません。
経験を持ち帰る:蒸留
生徒はベースから始まり、すべての教師の入力を読めるように拡張されます。生徒はエピソードの全種類の組み合わせ(パンチ、ブロック、歩き、対戦相手、押される動作、新しい技)で学習を続けます。その損失は、PPOの損失に、正しい教師への引き寄せを加えたものです。
生徒の方策(ポリシー)はガウス分布 です(確率的方策を参照)。技の教師が 個 と、ベース があります。各状態は、その入力によってどれか1つに振り分けられます。
そして生徒自身の経験のミニバッチ ごとに、次で学習します。
最初の3つの項は通常のPPOの学習です。クリップした方策の目的関数、価値の誤差、そして行動に対する滑らかさのペナルティ(CAPS)です。最後の項は、生徒の平均行動と振り分けられた教師の平均行動との二乗誤差で、重みは (最初のランでは2、採用したランでは4)です。大事な点がいくつかあります。
- 状態は生徒自身のもの。 教師がラベルを付けるのは、教師自身のランの状態ではなく、生徒が実際に訪れる状態です(オンポリシー)。教師を教師自身の記録からコピーする方法(行動クローニング)は、生徒が教師の軌道から外れると破綻します。生徒はそういう状態を一度も見たことがないからです(共変量シフト)。生徒の状態で教師ならどうするかを尋ねるのが、DAggerによる解決策です。
- 各教師は、自分が学習したときと同じものを見る。 教師は入力のうち自分の担当部分を、自分自身の移動統計で正規化して読みます。以前、教師が生徒の統計でスケーリングされた入力を見てしまうバグがあり、そのアドバイスがわずかに間違っていました。
- 報酬はそのまま。 生徒はすべてのタスク報酬を引き続き得るので、教師を真似して転倒するということはできません。
- 平均は1つ、教師はたくさん。 各状態を担当する教師はちょうど1つなので、目標が衝突することはありません。生徒はそのすべてを1つのネットワークに収めなければなりません。
学習器は、教師ごとに監視用の数値を1つ記録します。各更新の前に、その教師に振り分けられた状態について、生徒とその教師の平均行動との平均二乗誤差を測ったものです。ベースの誤差が低いまま、新しい技の誤差が高いところで止まってしまったら、ネットワークの余地(容量)が尽きたということなので、ネットワークを広げるつもりでした。止まることは一度もありませんでした。最初のランでは、ベースの誤差はずっと0.002のままでした。ボディストレートは39 Mステップまでに0.028から0.005へ、奥足の膝蹴りは0.054から0.007へ、スイッチニーは0.059から0.008へ下がりました。ランが282.5 Mで終わったときも、まだ下がり続けていました。3つの技は、余裕を残して512ユニットに収まったのです。
戻ってきたもの
候補はすべて評価ゲートで判定します。古い技も新しい技も、すべての技を決定論的にテストします。6回の蒸留ランがこれを通りました。図2はベースと3つの生徒を比べたもので、表に全項目を載せています。
| パンチ /120 | 空中のクロス /12 | 歩き /40 | ブロック /32 | 対戦相手 /160 | 距離 /60 | ボディストレート /24 | 膝蹴り 右、左 /12 | 転倒 | |
|---|---|---|---|---|---|---|---|---|---|
| guard18(ベース) | 59 | 3 | 39 | 27 | 114 | 34 | – | – | 0 |
| distill1 282.5 M | 53 | 0 | 39 | 25 | 109 | 36 | (まだ未導入) | 40 Mの時点で6/8、5/8 | 0 |
| distill2 52.4 M | 54 | 0 | 38 | 29 | 122 | 38 | 21 | 10、12 | 0 |
| distill4 131.1 M | 60 | 3 | 39 | 24 | 117 | 39 | 20 | 11、9 | 0 |

生徒はランの最後からではなく、スナップショットの中から選びました。学習中の平均値はほとんど動きませんでしたが、決定論的なゲートの結果はスナップショットごとに大きく揺れました(distill3ではブロックが21から29の間)。distill4の5つのスナップショットはすべてゲートにかけ、131.1 Mのものを採用しました。distill4をdistill2より良くしたのは、より強い引き寄せ( を2から4へ)と、クロスの練習を増やしたことでした。これで空中のクロスが0/12からベースと同じ3/12に戻り、どの教師との一致も締まりました。その代償はブロック3つで、ブロックの割合を元に戻しても(distill5)取り戻せませんでした。
すべてが戻ってくるわけではない
distill6では、4つ目の教師であるプルカウンター(後ろに反ってから、奥の手で頭へのストレート)を加えました。教師は空中で8/8、サンドバッグで8/8当てます。生徒はサンドバッグでは覚えましたが(6/6)、空中では覚えられず(1〜2/6、約10 cm届かない)、どのスナップショットも総合ではdistill4を上回りませんでした。そのため今のところ、プルカウンターはファイターの中ではなくクローンの中にあります。次の蒸留では、押下の回数を増やし、引き寄せを強くします。

蒸留は、ナルトが分身を解くのとは違うということを思い出させてくれます。経験は丸ごと届くわけではありません。生徒が保たなければならない他のすべてと一緒に、学習で身につけさせる必要があり、2つの技が同じ出力を奪い合うところでは、結果は取引になります。
学習を終えたのに、まだ間違っていたクローン
もっと悪い驚きは、学習を終えて、ゲートに合格したかほぼ合格したのに、私が見てみると間違っていたクローンでした。ゲートが言うのは、技が当たったということだけです。その技が私の求めたものに見えるかどうかはわかりません。主なケースは次のとおりです。数字付きの詳細は作業ログにあります。
参照モーション。 回避の教師(スリップ、ローリング、スウェーバック)は私のモーションキャプチャから学びましたが、それを最大2倍の速さで実行していました。方策がパンチを速められるようにするパンチクロックは、パンチ用に作ったもので、これらの技でもオンのままになっていたのです。そこまで縮めたローリングは、ただ落ちるだけの動きになります。頭の軌道をもっと広いU字にしてほしいと頼み、参照そのものを広げたところ、体幹が横に曲がってそこへ届こうとし、教師はその曲がりを覚えてしまいました。ローリングとスウェーバックの教師はすべて、動画で失敗と判断しました。スリップ・アッパーカットは、もっと良いものができるまでの間だけ残しています(「スリップというより大きなアッパーカットに見える」)。どれも元のキャプチャからやり直します。
学習の方策。 距離を変えた前の手のアッパーカットは、空中で40/54当たりましたが、打ったあとファイターは右に90°向きを変え、そのままになっていました。原因は参照ではありませんでした。参照はどの距離でも正面を向いて終わっています。学習では、押下のたびと、押されて立て直すたびにリセットされる「元の向き」に報酬を与えていて、対戦相手はファイターが向いた方向に向き直っていました。ひとつの方向を向き続けることには何の報酬もなかったのです。今は両方のアッパーカットを、向きをエピソードごとに固定して再学習しており、ゲートはどの技のあとでも向きの変化を測るようになりました。同じ種類の小さなケースもありました。
- サウスポーの構えで0.6 m前に着地してしまう膝蹴り。足に関する項を加えて修正しました。
- ベルトより下に入ってしまうボディストレート。越えてはいけないラインを設けて修正しました。
- 生徒より速い肘で学習したボディストレートの教師。蒸留すると外れるようになり、再学習が必要でした。
最初からやり直すか、チェックポイントから再開するか。 ほとんどの修正は、肝心なところが良かった最後のチェックポイントからウォームスタートします。参照に問題がある教師は、間違った動きを覚える前のチェックポイントからやり直さなければなりません。そして、最初のステップの試みは完全に諦めました。長いステップは後ろ足で蹴り出すことを最後まで覚えず、その参照はより良いモーションキャプチャから作り直すことになります。
コーチとして思うこと
シャドウクローンのアイデアは、うまくいったところでは私が期待したとおりに働きました。3つの新しい技が、古い技を一つも壊さずに1つのモデルに入り、どのクローンも他のクローンを待つ必要がありませんでした。ファイターの教え方も変わります。他に何もしないクローンの中で技を1つずつ見て、生徒に入る前に直せるのです。
失敗のほとんどは、コーチが人間相手でよく知っている種類のものでした。タイミングが大事だと誰にも言われなかったので、スリップを急いでしまう生徒。練習で正面を保つよう求められたことがないので、コンビネーションを打ち終えたときに違う方向を向いているファイター。動画への私のコメントはすべて、形とタイミングについてのもので、数字では捉えられないことでした。
ローリングはただ落ちるだけじゃなく、U字を描くように横へ転がらないといけません。
スリップもローリングも全部間違っています。横に動いてはいるけれど、胴体を曲げてやっているわけではありません。
私の元の参照、モーションキャプチャのものに従ってください。
アッパーカットのあと、ファイターが右に90度向きを変えています。対戦相手の方を向き続けないといけません。
ここから私が学んだのは、モーションキャプチャは私のものであり続けなければならない、ということです。きれいな数字を出すために参照を編集するたびに、動きはムエタイらしくなくなっていきました。
作業ログ
この記事の裏にあるものはすべて、分野ごとに1つずつ、8つの作業ログにあります。それぞれに、各ランをなぜ始めたのか、何を変えたのか、ゲートと動画が何を示したのか、そしていくらかかったのかが書いてあります。合わせると前回の記事以降のすべてのランを網羅し、このページの冒頭の費用と統計ページのこの記事の行に一致します。費用はvast.aiとRunPodの台帳からのもので、各マシンの課金時間に時間単価を掛けたものです。起動しなかったマシンやRunPodに断られた分も含まれています。
| 作業ログ | ラン | 時間 | コスト |
|---|---|---|---|
| 教師:距離を変えたアッパーカット2026年10月25日 · RunPod で並行して学習させた2つのアッパーカットの教師。奥の手は採用しましたが、前の手はパンチのあと90°向きを変えてしまい、その原因は学習で相手を向くことへの報酬の与え方にありました。 | 2 | 10.1 | $7.81 |
| 教師:スリップ、ローリング、スウェーバック2026年10月25日 · 4台の並列マシンで2回に分けて学習させた9つの回避の教師。ゲートは通過したものの動画で不合格になりました。最初はパンチクロックに急かされ、次は編集した参照モーションに体を曲げられました。 | 9 | 20 | $12.97 |
| 蒸留:生徒 distill4 までの6本のラン2026年10月24–25日 · ボディストレート、2つの膝蹴り、プルカウンターをベースに蒸留する。各ランで何を変えたか、評価ゲートがどう生徒を選んだか、評価にいくらかかったか。 | 6 | 22.9 | $16.27 |
| 教師:プルカウンター2026年10月24–25日 · vast.ai の4台が一度も立ち上がらなかったあと、RunPod で1本のラン。上体を後ろに反らしてから奥の手で頭部へのストレート、空中でもバッグでも 8/8。 | 1 | 3.1 | $3.45 |
| 教師:奥の手のボディストレート2026年10月24日 · ボディストレートの教師ができるまでの4本のラン。ローブロー禁止のライン、インパクト位置へのバッグの配置、そしてベースの遅い肘での再学習。 | 4 | 5.7 | $4.01 |
| 教師:奥足の膝蹴りとスイッチニー2026年10月24日 · 2つの膝蹴りの教師を並べて、それぞれ3本のランで学習。膝は最初から当たり、足と戻りのステップにさらに2本かかりました。 | 6 | 9.2 | $6 |
| 高いガード:すべてのスキルを新しい構えに学習し直す2026年10月22–24日 · すべてのスキルを高いガードに移し、前の手のフックとジャブを直し、すべてのクローンの出発点となるベース guard18-124.5M を生んだ18本のラン。 | 18 | 24.5 | $21.04 |
| 速いステップとステップジャブ(中止)2026年10月22日 · 間合いへの速い出入りと、踏み込むジャブについての26本の短い GPU ラン。長いステップは最後まで後ろ脚で蹴り出さず、モーションキャプチャをやり直すために作業を止めました。 | 25 | 12.6 | $9.49 |
| 合計 | 71 | 108.1 | $81.04 |
そのうち2つはこの記事の技についてのものではありませんが、同じ時期にお金がかかったものです。高いガードは、すべてのクローンの出発点となったベースを生み出した再学習です。速いステップは、上で触れた、諦めた試みです。
つづく
これは第1部です。アッパーカットの教師は、向きを固定して再学習しています。回避は、パンチクロックをキャプチャのペースに抑えて、私の元のキャプチャからやり直します。プルカウンターは、アッパーカットと一緒に次の蒸留に入ります。キックは、より良いモーションキャプチャを待っています。新しい技はそれぞれクローンがもう1つ増えるということで、蒸留はそれぞれ経験を持ち帰るもう1回のラウンドです。