筋肉 · 実験 · バイオメカニクス · 構え · パンチ
モーターの代わりに筋肉で
学習コスト 約$273件の作業ログで学習ラン33回、約20マシン時間 · 内訳
要約。 これまでのファイターはすべて、各関節にあるモーターが関節を目標の角度まで動かす仕組みで動いています。私は、代わりに筋肉を使ったらどうなるかを問いました。筋肉は引くことしかできず、オンになるのが遅く、最適な長さから外れると弱くなり、拮抗する筋肉が両方働いたときにだけ硬くなります。3つの段階で、それぞれレンタルしたGPU上でムエタイの構えをゼロから学習させ、同じ設定のモーターの体と比べました。関節の筋肉(関節ごとに1対、計86本):学習ステップ数の2.1–2.9倍で解けました。MyoSuiteの本物の脚の筋肉を解剖学的な経路に沿わせたもの(まず26本、次に80本すべて):3つの修正を入れた後、それぞれ2.6–3.9倍と4.9–5.8倍でした。GPUシミュレーションは遅くならず、増えた分はすべて学習です。次にパンチです。モーターの体は自力でパンチを学びました(ヒット4 % → 9 %)が、筋肉の体は点が入るほど速くパンチを打てませんでした。腕の筋肉がすべてのパンチにブレーキをかけていたのです。強制的にオンにすると、ジャブは拮抗筋をオフにしたとき8.6 m/s、半分オンにしたとき3.0 m/sに達します(ヒットには3.5が必要)。腕を脱力させるとブレーキは解消し、ファイターは初めて筋肉でパンチを当てましたが、その後は倒れずにいられる遅いパンチに落ち着いてしまいました。
関節にモーター
ほかのすべての記事に出てくるファイターは、43の可動関節を持つMuJoCoの体で、関節ごとにモーターがあります。モーターは位置サーボです。方策(ポリシー)が各関節に参照モーションへの補正として目標角度を与え、サーボが関節をそこへ押し動かします。行動がゼロなら、すでに参照モーションに沿っています。ポーズを保つことが初期状態で、方策は何を変えるかだけを学べばよいのです。
本物の体は仕組みが違います。筋肉は引くことしかできないので、どの関節にも互いに逆向きに働く筋肉が最低2本必要です。筋肉は瞬時には反応しません。神経の信号(興奮)が筋肉をオンにするのに約10 ms、オフにするのに40 msかかります。その力は、どれだけ伸びているか、どれだけ速く動いているかによって変わります。そして関節は、両側の筋肉が同時に引いたときにだけ硬くなります。10月27日、私は問いました。もしファイターが筋肉で動いていたら、学習はどれだけ長くかかるのか、そもそも可能なのか、そして既存の成果のどれだけを再利用できるのか。
第1段階:すべての関節に1対の筋肉
最もすっきりした最初のテストは、駆動方式だけを変えることです。骨格、質量、接触、参照モーション、報酬は同じで、各関節のモーターを2本のMuJoCoの筋肉に置き換えます。それぞれ逆向きに引き、最適な長さではモーターと同じ強さです。これで86本の筋肉になります。MuJoCoの筋肉には、筋肉の制御を難しくする3つの性質があります。指令より遅れる活性化、長さと速さに依存する力、そして引くことしかできないことです。この段階で省いているのは解剖学です。各筋肉は1つの関節に固定のてこで作用します。
方策は筋肉ごとに1つの興奮を出力するようになり(43個ではなく86個の数値)、何もタダでは手に入りません。ゼロのときはすべての筋肉が半分の興奮で、どの関節も回さず、どの姿勢も保ちません。何もしなければ、サーボの体はサーボの力で約2秒立っていますが、筋肉の体は0.6秒で崩れ落ちます。
すべてのランは構えの環境をゼロから学習しました。構えを保ち、次にリズムに合わせて揺れ、次に押しを受け、トレーナーのテスト(リズム全開で20イテレーションにわたり、転倒5 %以下かつエピソードがほぼ最大長)に合格するまでです。どのランもレンタルしたGPU1台(RunPod、RTX 4090または5090)で、MuJoCo Warpを使って1,024体のファイターを同時にシミュレーションしました。
- 筋肉はGPU上のコストを増やしません。 筋肉の体は毎秒45.5kのステップでシミュレーションでき、サーボの体は36.6kでした。コストの大部分は接触であって、筋肉ではありません。
- サーボの体と同じ設定では、解けませんでした。 2つのシードは転倒7–9 %で頭打ちになり、1つは走り続けた末に185 Mステップで転倒100 %へと崩壊しました。どの転倒の前にも、最大の強さに達している筋肉はありませんでした。問題はタイミングでした。方策の行動は平滑化フィルタを通り、筋肉自身の遅れに加えて約80 msの遅れが生じていたのです。
- フィルタを軽くすると(約20 ms)解けました。 2つのシードで37.8 Mと26.6 Mステップです。同じフィルタのサーボの体は12.9 Mと12.7 Mでした。シードごとに比べてステップ数は2.1–2.9倍、時間は1.8–2.6倍(5~6分に対して10~15分)です。
- サーボの方策を教師にする(その関節トルクを目標の興奮に変換する)と、序盤は3~4倍速くなりましたが、教師の影響が薄れるとランは同じ頭打ちに戻りました。筋肉の体で学習することの代わりにはなりません。
学習済みモデル以外のすべては、そのまま引き継げました。体、参照モーション、報酬、GPUのトレーナー、クラウドのツール、評価ツールです。
第2段階:本物の脚の筋肉
関節の筋肉は単純化したものです。本物の脚の筋肉は骨の上を通る経路に沿って走っているので、関節に対するてこが角度によって変わり、2つの関節をまたぐものもいくつかあります(ハムストリングは膝を曲げ、股関節を伸ばします)。私は、この種の研究のために作られたオープンソースの筋骨格モデルであるMyoSuiteの脚の筋肉を使い、その経路をファイターの骨格に合わせて拡大縮小し、ファイターの脚に対応させました。第2a段階ではMyoLeg26(片脚13本、経路は計26本)を、第2b段階では完全なMyoLeg(片脚40本、骨に巻きつくもの)を使いました。股関節より上はすべて第1段階の関節ペアのままなので、全身では96本、次に142本の筋肉になりました。すべての筋肉のてこの腕の長さを、それがまたぐすべての関節で、MyoSuite自身のモデルと照らし合わせて確認しました。どこでも2.2 cm以内、ほとんどが1 cm以内でした。
2aの体が構えを学習するまでに3つの修正が必要でした。そのどれも、サーボの体には必要ありませんでした。
中立なゼロ行動。 半分の興奮では、本物の脚の筋肉は打ち消し合いません。たとえば股関節の伸筋は屈筋よりずっと強く、脚は構えから最大約180 N mの力で押しやられていました。そこからでは、方策は構えをまったく見つけられませんでした。背筋を伸ばし、脚をまっすぐにし、腕を広げて立っていたのです。私は各脚の筋肉の安静時の興奮を、静止した構えを保つ値に設定しました。これでゼロ行動は、サーボの体と同じく「立て」を意味するようになります。
関節の限界に寄りかかることへのコスト。 これで両方のシードがトレーナーのテストに合格しましたが、姿勢が間違っていました。後ろ脚がまっすぐ伸びて後ろへ振られ、それを補うように体幹が曲がっていたのです(図1、中央)。最初は筋肉が弱いのだと推測しました。構えでは後ろの股関節を45°外へ回しますが、そこでは股関節の外転筋がてこの半分を失います。MyoSuite自身のモデルでもそうです。外転筋を1.5倍、2倍に強くしても、角度は1度も変わりませんでした。本当の原因は、後ろ脚が股関節と膝の関節の限界に押しつけられ、その筋肉が遊んでいたことでした。限界に達したまっすぐな脚は、シミュレーションの骨によってタダで支えられます。方策はそれを見つけ、手放しませんでした。限界から10°以内で寄りかかることに小さなコストを課すと、このタダの支えがなくなりました。後ろの膝は33–35°になり(参照は43°)、サーボの体はこのコストにまったく影響を受けませんでした。
方策の更新を小さく。 正しい姿勢になると、バランスは転倒7–15 %で頭打ちになり、その後崩壊しました。学習率を3分の1にし、各バッチに対するPPOのパス数を半分にすると、さらに6.6 Mステップ以内に解けました。

3つすべてを最初から入れると、2aの体はゼロから33.1 Mと49.6 Mステップで、完全な2bの体は63.3 Mと73.5 Mステップで解けました。一発で、体に特化したものは何も足さずにです。図2は4つの体を並べたものです。
つまり、可能です。学習量は2~6倍で、解剖学的な要素が多いほど学習も多く必要になります。実時間では、筋肉の体はGPU1台で10~37分かかり、サーボは約6分でした。筋肉の構えは少し緩く(ポーズのスコアはサーボの0.95に対して0.86–0.89)、第1段階の構えはサーボより滑らかに静止していました(関節の反転は毎秒0.15に対して0.04)。
第3段階:パンチ
立つことと戦うことは別です。ファイターの目的は戦うことです。パンチの環境は、5つのパンチ(ジャブ、クロス、左右のフック、アッパーカット)を学習したものと同じです。指令に応じて空中の標的やサンドバッグにパンチを打ち、その合間に押しが入ります。拳が標的から5 cm以内を3.5 m/s以上で通過すると、パンチはヒットとみなされます。どの体もそれぞれ自分の構えから、同じ設定で始めました。
サーボの体は助けなしにパンチを学びました。10 Mステップ以内にパンチがガードから出るようになり、145 Mステップでヒットは4 %から9 %に上がり、外れの距離は25 cmから10 cmに縮まり、転倒は3 %未満でした。2aの筋肉の体は一度も当てられませんでした。最初のランでは腕がほとんどガードから離れず(外れは51–68 cm)、ラン全体が押しへの対応に費やされました。
伸張反射
サーボの体は大まかなパンチをタダで手に入れます。目標値がパンチの参照モーションに沿っているので、方策がまだ何も学んでいなくても腕が前に出るのです。筋肉の体は、96個の興奮と報酬だけからパンチを見つけなければなりません。人間の場合、この仕事の一部は脊髄が担います。伸張反射は、筋肉が伸ばされるとその筋肉を興奮させ、手足を本来向かっていた方向へ引き戻します。私は各筋肉に伸張反射を1つずつ与えました。目標のポーズでの長さを超えて伸ばされた量に比例した追加の興奮と、伸びる速さに応じた少しの追加です。腕はすぐに前に出るようになりました(外れは28–31 cmで、サーボの体の出発点と同じです)。
ただし、反射は最初から入っていなければなりませんでした。反射なしで学習した構えに後からオンにすると、体は最初エピソードの97 %で倒れ、30 Mステップ後でも25–30 %倒れました。反射ありでゼロから学習した構えは56.0 Mステップで解け、ポーズは全体で最もきれいでした(0.93)が、ジッターは3倍でした(関節の反転は毎秒0.10に対して0.30)。その構えからのパンチは、やはりヒットなしでした。
なぜ点が入らなかったのか
探索ノイズなしでテストすると、筋肉のファイターはまったく倒れず、いくつかのパンチは惜しいところまで行きました。アッパーカットは標的から3–10 cm、左フックは10–16 cmです。しかし拳の速さは0.5–2.9 m/sでした。サーボの体は3~11です。パンチは短いというより、遅かったのです。
ジャブの間の腕の筋肉を記録すると、理由が分かりました。肩と肘のペアの両方の筋肉が、ずっと0.3から0.7の興奮のあいだにありました。かなりの共収縮です。伸ばされながらオンになっている筋肉は、自分が引ける以上に抵抗するので、拮抗筋がすべてのパンチにブレーキをかけていたのです。力不足ではなくこれが原因だと確かめるため、ジャブの筋肉(肩を前に出す筋肉と肘を伸ばす筋肉)を構えから強制的に完全にオンにし、開ループで、ほかはすべて同じにしました。
体は十分に強いのです。ブレーキを外せば8.6 m/sです。方策が保っていたように半分にすると3.0 m/sで、ヒットに必要な速さを下回ります。そして方策は、拮抗筋をオフにすることを最後まで学びませんでした。半分の興奮がすべての腕の筋肉の安静点であり、正しい筋肉で正しい瞬間にそこから離れるというのは、試行錯誤で見つけるには大変なことなのです。
脱力した腕
そこで腕の安静点を変えました。腕の筋肉はすべて50 %ではなく10 %で休み、方策の行動は引き続きオフから完全なオンまで全範囲をカバーします。これは違う出発点であって、違う体ではありません。筋肉もその強さも同じです。この設定での構えは47.1 Mステップで解けました(ポーズ0.92)。パンチでは拮抗筋がオフになるようになり(パンチを打つ筋肉が完全にオンになる間、反射がそれらをゼロへ押しやります)、ファイターは4 Mステップ以内に筋肉の体で初めてのヒットを記録しました。4.3 m/sのアッパーカットです。
そこで改善が止まりました。約10 Mステップのうちに、方策は倒れずにいられる遅いパンチ(局所最適解)に落ち着き、ジャブは1.5 m/sで、その後さらに120 Mステップそのままでした(図4)。学習中と同じく探索ノイズをオンにすると、押しが最も弱いときでもエピソードの約4分の1で倒れました。ノイズなしでは一度も倒れませんでした。ノイズを3分の1にすると、パンチは早く出るようになりました(序盤でヒット2 %)が、ほぼすべてのエピソードで倒れ、二度と回復しませんでした。速いパンチはこの体を倒してしまいます。サーボの体の脚はそれを吸収します。

私はそこで止めました。次のステップは、ステップ数を増やすことではなく、もっと大きな作業です。サーボの体のパンチを筋肉の腕に見せる教師か、低いところから始めてファイターが上達するにつれて上がっていくヒット速度の基準です。
これが意味すること
- 可能か:構えについては、はい。 本物の脚の解剖学を含む142本の筋肉を持つ体が、ムエタイの構え、そのリズムと押しへの対応を、ゼロから、GPU1台で40分未満で学習します。
- どれだけ長くかかるか:関節の筋肉で2~3倍、完全な脚で5~6倍。同じ設定のサーボの体と比べた値です。シミュレーションは遅くならず、増えた分はすべて学習です。
- 何が引き継げるか: 学習済みモデル以外のすべて。体、参照モーション、報酬、学習コード、ツールです。サーボの方策を教師にしても、役立つのは序盤だけです。
- モーターの体には要らず、筋肉の体に必要なもの: ポーズを保つ安静点。関節の限界にぶら下がらない理由。バランスの限界近くでの小さな学習ステップ。腕については、速く動けるほど低い安静点。
- まだ学んでいないこと:速くパンチを打ちながら倒れないこと。 サーボの体はパンチの形をタダで手に入れ、脚がその振りを吸収します。筋肉の体はその両方を見つけなければなりません。腕は十分速く動けます。速さとバランスを両立させることが、未解決の問題です。
コーチとして思うこと
私の問いは単純なものでした。このファイターがモーターではなく筋肉を持っていたら、学ぶのにどれだけ長くかかるのか、そもそも学べるのか、そしてこれまで作ってきたもののどれだけがまだ役に立つのか。私は実験をその推奨のとおりに進めさせ(「推奨はすべてそのとおりにやって」)、2日目からは$50の予算内で自分で判断して報告するように伝えました。新しい構えの動画が届くたびに、それを見ていました。
これまで体にはサーボモーターを使ってきました。便利で学習が速いからです。でも本当の目標は、人間としてムエタイを戦うことです。ですから筋肉がどう動くのか、そしてゆくゆくはその動きにかかるエネルギーを理解することがとても大切です。
これはごく初期の実験です。すべての技を扱っているわけではなく、冗長性や、筋肉の損傷、過伸展についてはあまり試していません。いずれはブラジリアン柔術もやります。そこでは関節が過伸展し、靭帯が切れることもあります。ですからこれは文字どおり、サーボのロボットが筋肉と、より人間に近い構造にどう置き換わるのかを理解するための、私の最初の実験です。
作業ログ
この記事の裏にあるランを、段階ごとにまとめています。費用は、RunPodの台帳にある各ポッドの課金時間に時間単価を掛けたものなので、請求書ではなく見積もりです。新しい体ごとに、そのシミュレーションがCPU版と一致するかを確かめた短いGPUのチェックも含んでいます。
| 作業ログ | ラン | 時間 | コスト |
|---|---|---|---|
| 筋肉、ステージ3:パンチ2026年10月28日 · 筋肉の体での5つのパンチを、同じ設定のサーボの体と比べる。筋肉の体は一度も点になるほど速く打てませんでした。その理由、伸張反射と脱力した腕、そしてどこで止めたか。 | 10 | 9 | $11.18 |
| 筋肉、ステージ2:本物の脚の筋肉2026年10月27–28日 · MyoSuite の脚の筋肉を本来の経路のままファイターに当てはめる:まず26本、次に80本すべて。トルクが中立なゼロ行動、関節の可動限界に寄りかかることへのコスト、小さめの PPO 更新で、どちらも構えにたどり着きました。 | 15 | 6.1 | $9.69 |
| 筋肉、ステージ1:モーターの代わりに関節の筋肉2026年10月27日 · 私が頼んだ実験です。ファイターをサーボではなく86本の関節の筋肉で動かし、構えを覚えられるのか、覚えられるならどれだけ長くかかるのかを測ります。 | 8 | 4.9 | $5.75 |
| 合計 | 33 | 20 | $26.62 |