ムエタイ · パンチ · 報酬設計 · コーチング

5つのパンチ:クロス、フック、アッパーカット

著者 ヤム トニー(Tony Yum) ·

学習コスト 約$22学習ラン10回、約14.2マシン時間 · 内訳

ポッドキャストのエピソードをSpotifyで聴く

ジャブには2日かかりました。ジャブが速く、正確に、踏み込んで打てるようになると、ヤム トニー(Tony Yum)はムエタイの基本パンチの残りを求めました。クロス、左右のフック、そして前の手のアッパーカットです。5つすべてを1体のファイターで、指示どおりに、同じガードから。

この記事は、その後の18時間を扱います。10月17日の午後から、最後のランが終わった10月18日10:00 UTCまでの10回の学習ランです。ファイターは空中へのパンチから35 kgの重いサンドバッグへのパンチへ、1つのパンチから5つへと進みました。

最後のトニーの評価を短くまとめると、完璧ではないが満足している、というものでした。いくつかのパンチはまだ少し届いていません。残りは、トレーニングをしている普通の人が打つパンチに近く見えます。次のステップはそれをアスリートのように見せることで、すでに取りかかっています。

4つの新しいパンチ

新しいパンチはどれも、ジャブと同じく参照モーションから始まりました。トニーの説明と写真からポーズを1つずつ組み立てたアニメーションで、物理は入っていません。彼の仕様はコーチのメモのようです。

  • クロス(奥の手のストレート)。右腕がまっすぐ伸び、拳が返って手のひらが床を向きます。胸が左に回り、前足が踏み込み、奥足はかかとを上げて母指球で回転します。左のグローブは頬に付けたままです。
  • フック。 「パワーは腕ではなく、脚、腰、体幹から来る」。腕はフックの形を取り、肘を肩の高さで約90°に曲げ、その後は胸に固定したままです。体の回転が拳を標的の向こうまで運びます。その前に、逆方向への小さな予備動作が入ります。
  • アッパーカット。 ためはしゃがむことではなく、回転です。腰と胸が前足の上で左に回り、拳は胸の高さまで下がります。そこから回転が足元から逆向きに戻り、拳がまっすぐ上へ、あごに突き上がります。

そしてファイターは、これをすべて物理シミュレーションの中でやらなければなりません。重さも勢いもあり、足は滑ることがあります。5つのパンチはすべて1つの方策(ポリシー)が動かします。方策はどのボタンが押されたかと標的がどこにあるかを見て、そのパンチの参照に従い、標的を速く打つことで報酬を得ます。図1が、最終的に到達したところです。

MuJoCoのファイターが緑の標的の点に向けてジャブ、クロス、左フック、右フック、アッパーカットを打つ様子の10コマ。インパクトの前とインパクトの瞬間
図1 最終モデル(10月18日10:00 UTC)の5つのパンチ、空中で。上:インパクトの直前。下:拳が標的(緑の点)に最も近づいた瞬間。左から右へ:ジャブ、クロス、左フック、右フック、アッパーカット。クロスと右フックでは奥足が母指球立ちになり、アッパーカットの拳は下から来ます。

空中、次にミット、そして重いサンドバッグ

トニーの指示にはもう1つ続きがありました。本物のファイターはシャドーボクシングだけをするわけではないので、このファイターもそうあるべきではない、というものです。

空中を打つことから始めて、次に軽い標的、そして重いサンドバッグへと学習させて、インパクトと反動を学ばせてほしい。

そこで標的はカリキュラムの一部になりました(図2)。レベル0では、ファイターは空中の1点を打ち、速さと正確さだけが評価されます。レベル0から1では、フォーカスミットほどの大きさのミットがばねに付いて現れ、0.75 kgから3 kgへと重くなります。レベル1から2では、それがロープに吊るした重いサンドバッグになり、12.5 kgから35 kgまで重くなります。アッパーカットには専用の標的があります。吊るしたサンドバッグを下から打つのは意味がないからです。下を向いたミット、次にあごの高さに吊るした重いボールです。これもトニーのアイデアでした。

レベル0空中打ち抜く緑の点:スピードが大事レベル0 → 1バネ付きミット0.75 → 3 kgアッパーカット: ミットは下向きレベル1 → 2サンドバッグ12.5 → 35 kgアッパーカット: ボール 12.5 → 25 kg全パンチの命中率 ≥ 40 %、転倒 ≤ 20 % で +0.1(20イテレーションの窓)
図2 標的のカリキュラム。20回の学習イテレーションのあいだに、すべてのパンチが40 %以上の確率で当たり、転倒が20 %以下なら、レベルが0.1上がります。レベル0より上では、ボタン押しの4回に3回は標的があり、1回は空中のままなので、ファイターは両方を練習し続けます。緑の点は狙いの点です。2日目の朝からは標的の内側にあるので、パンチは表面を突き抜けなければなりません。

教訓1:ジャブを忘れない

最初のランは最良のジャブから始め、4つの新しいパンチを加えました。2.7 Mステップ、約7分で、ジャブが崩れ始めました。ヒット率は28 %から2〜7 %に、速さは2.7 m/sから1.3 m/sに落ちました。ファイターはまだ立っていましたが、バランスと引き換えにジャブを遅くしていたのです。これは破滅的忘却で、以前に複数のボタンで試したときも同じようにジャブを失い、二度と取り戻せませんでした。

解決策は、古い方策に仕事を与えることでした。教師です。最良のジャブの方策を凍結したコピーが、学習中の新しい方策を見守ります。新しいパンチが動いていないとき、つまり構え、リズム、ジャブのあいだは、新しい方策は教師と違うことをするとペナルティを払います。クロス、フック、アッパーカットが動いているあいだは、自由に学べます。これは方策蒸留の一種で、すぐに効果がありました。続く36 Mステップのあいだ、ほかのすべてがその周りで学ばれるなか、ジャブは5〜6 m/sを保ちました。

フックとアッパーカットは早く、約10 Mステップ以内に当たるようになりました。これらは回転のパンチです。体が回り、腕は運ばれるだけで、形は参照がすでに作り上げていました。その後カリキュラムは、約18 Mステップで空中から35 kgのサンドバッグまで上がりました。約1時間半の学習のあと、4つのパンチが転倒なしで重いサンドバッグに当たっていました。拳はサンドバッグでは空中より少し遅く、5〜6 m/sに対して3〜4 m/sで、接触に備えて身構えているかのようでした。

5つ目のパンチはクロスで、9〜12 cm届いていませんでした。

教訓2:リズムに乗ったクロス

クロスは、ジャブの昔の問題の再来でした。奥の手のストレートは、届くまでの距離が長いのです。届かせるには、腰が0.16秒で約19 cm、最大1.75 m/sで前へ出なければなりません。方策の腰は参照より9〜11 cm後ろに残っていたので、腕の長さが足りなくなり、拳は手前で止まっていました。

次のランでは、ボタン押しの40 %をクロスに割り当て、腰が参照についていくことに報酬を与え、標的は10 cm手前から始めて、クロスが十分な頻度で当たるたびに2 cmずつ下げていきました。ほかの4つのパンチは教師が保ちました。103 Mステップのあいだに、クロスは17 cm届かない状態から、腕をいっぱいに伸ばした距離の標的に届くようになりました。

しかしテスト動画は、それを実際より良く見せていました。テスト動画の各グリッドはパンチごとに3回のボタン押しを映していて、その3回がたまたま良いタイミングで来ていたのです。もっと広いテスト、つまりファイターのリズムの異なる時点でパンチごとに6回押すテストでは、クロスは12回中0回でした。トニーのファイターはムエタイのリズムで立ち、両足のあいだでゆったりと体を揺らしています。クロスは揺れが大きいときにしか機能しませんでした。大きく揺れた状態からなら、拳は2.6〜4.1 m/sで届きました。ほぼ静止した構えからだと、10回中9回は3〜7 cm手前で、0 m/sで止まりました。方策は腰の突き出しを自分で作るのではなく、揺れの勢いを借りていたのです。

これに取り組んだランがさらに2つありました。

  • 静止した構えからのクロスを増やす。 改善なし。静止からはまだ3〜5 cm届かず、揺れからはむしろ悪化しました。その後、Amazonがマシンを取り戻しました(詳しくは後述)。
  • 腰の前への速さと回転に直接報酬を与える。 回転は直りました。5〜8°足りなかったのがぴったりになりました。腰は約1 cm近づきました。61 Mステップ後、クロスは良くならず、揺れからはむしろ遅くなりました。

これで3つのランが、静止状態から0.16秒で腰を19 cm突き出させることに失敗しました。報酬を変えるのをやめて、コーチに聞くべきときでした。

教訓3:標的へではなく、標的の向こうへ

トニーはスマートフォンでグリッドを見ていて、まず別のことに気づきました。

その緑の点、標的は重いサンドバッグの中、小さい標的の中にあるべきです。そうしないと表面を打つことになってしまう。突き抜けなきゃいけない。だから標的は真ん中に置いて。

彼の言うとおりで、基本的なミスでした。標的の表面が狙いの点に置かれていたので、どのパンチも表面に届いて止まるように学習していたのです。狙いの点は標的の内側に移されました。最初はサンドバッグの中心に、次に(「サンドバッグの真ん中は中心すぎる」と言われて)7.5 cm内側に。ヒットは拳の拳頭が表面に触れたところで数えるようになり、パンチにはそのまま突き抜けることが求められました。

そこで2つ目の疑問が出てきました。重いサンドバッグは何に報酬を与えるべきか。最初の答えは距離、つまりサンドバッグがどれだけ揺れるかでした。それは約18 cmで頭打ちになりました。参照が腕をまっすぐ引き戻すので、拳がサンドバッグに触れているのは0.04〜0.08秒だけで、どのパンチも1回コツンと当てるだけだったのです。そこでトニーは、距離を完全に却下しました。

サンドバッグを押しちゃだめ。大事なのはインパクトだけ。インパクトと、パッと引くこと。サンドバッグに押し込まない。インパクトして、引く。

そこで重い標的は、2つのことに報酬を与えるようになりました。インパクトは、拳が届いてから最初の0.06秒でサンドバッグがどれだけ速く動くかで、パンチの運動量を測ります。引き戻しは、拳が0.2秒以内にサンドバッグから離れることに報酬を与えます。ジャブはすぐに両方を学びました。サンドバッグに31〜34 N s、0.06〜0.08秒で離れます。クロスとフックは軽いままでした。

教訓4:正解しやすくする

クロスがいくつものランを通して行き詰まったあと、トニーはそれを、何度も失敗する生徒を見るコーチのように見ました。

標的はもう少し近くていい。それと、当たったかどうかを、そんなに白黒で決めないようにしよう。標的に近いほど報酬が多くなるように。

同じランで3つの変更が行われました。

  • クロスの標的を6 cm近づけました。腕をいっぱいに伸ばした距離の標的に届かないクロスは、主にリーチの問題で、本物のファイターなら単にもう少し近くに立つはずです。
  • 届かなかったパンチも、0点ではなく、途中の最高速度で採点するようにしました。以前は、報酬が表面のところでほぼゼロから一気に大きくなったので、3 cm手前で止まる拳は、2 cm手前で止まることについて何も学べませんでした。今は1 cmごと、1 m/sごとに意味があります。これが報酬シェーピングです。
  • ハードルを下げました。ヒットの判定範囲を5 cmから10 cmに広げました。テストでは、外れたパンチはほぼすべてすでに5 cm以内にあり、外れた理由は速さかインパクトでした。そこで空中でのヒットに必要な速さを3.5 m/sから3 m/sに、重いサンドバッグでは31 N sから約21 N sに下げました。この質問へのトニーの答えはひとことでした。「ハードルを下げて」。

クロスが当たり始めました。学習中、腕をいっぱいに伸ばした距離へのクロスのヒット率は0 %から34〜42 %になり、テストではサンドバッグに3回中3回当たりました。

教訓5:コーチにしか見えないもの

パンチが当たるようになると、トニーのメモは、ヒット率には表れないことに移りました。

パンチの前に一歩下がる。 「どうしていつも一歩下がるの?」 ジャブでは、ファイターは体重を後ろに移し、前足を上げて約5 cm後ろに動かしてから踏み込んでいました。クロスでは、かかとが上がるときに奥足が後ろに滑っていました。参照はどちらもしていません。奥足は着いたまま、前足はまっすぐ踏み込みます。新しい報酬項で、パンチが戻るまでどちらの足も開始位置より後ろに行かないことに報酬を与えました。前足が下がる幅は、最大4 cmからほぼゼロになりました。

頭。 「頭がすごく横に傾いてる」。実際、ガードで約30〜35°傾いていました。どの参照も頭を傾けてはいません。保存されたすべてのモデルをさかのぼると、原因が分かりました。10月17日の、ずっと強い押しを相手に学習したジャブのランです。そのラン以前は傾きは5〜9°でした。それ以降は20〜30°で、教師がそれ以来すべてのランに忠実に受け渡していたのです。

頭を参照の近くに保つことへの報酬は、6 Mステップでは何の効果もありませんでした。頭は大きな報酬の中の小さな一部にすぎなかったのです。そこで次のテストは単刀直入なものにしました。首と頭を参照に固定し、パンチをテストし直しました。固定した場合は40回中15回のヒット、自由な場合は40回中16回で、速さは同じ、転倒もありませんでした。傾きは何の役にも立っていなかったのです。首は固定したままにし、頭はまっすぐになりました(図3)。

ガードを取るMuJoCoのファイターのクローズアップ2枚:左は頭が横に傾き、右は頭がまっすぐ
図3 頭の修正前と修正後のガードを正面から、同じリズムの2秒時点で。左:10月18日08:12 UTCのモデル。頭が横に約30°傾いています。前日に強い押しの下で身についた癖です。右:最終モデル。首と頭を参照に固定し、頭はまっすぐ。どちらでもパンチのスコアは同じでした。

現在の到達点

最終モデルは最後のランのもので、46 Mステップで凍結しました。探索のノイズなし(決定論的)で、リズムの異なる瞬間にパンチごとに6回押し、空中と重い標的に対してテストしました。一度も倒れませんでした。図4がサンドバッグの列、図5がスコアです。

MuJoCoのファイターが吊るした重いサンドバッグをジャブ、クロス、左右のフックで打ち、吊るしたボールをアッパーカットで打つ様子の10コマ
図4 重い標的に対する最終モデル:35 kgのサンドバッグと、アッパーカットにはあごの高さに吊るした25 kgのボール。上:インパクトの直前。下:インパクト。狙いの点は表面から7.5 cm内側に隠れているので、拳はそこを突き抜けなければなりません。
空中でのヒット(6回中)ジャブ: 55クロス: 00左フック: 66右フック: 66アッパーカット: 66重い標的へのヒット(6回中)ジャブ: 66クロス: 55左フック: 00右フック: 00アッパーカット: 00標的への運動量(N s)サンドバッグのヒット基準ジャブ: 29–3329–33クロス: 20–2920–29左フック: 11–1511–15右フック: 11–1511–15アッパーカット: ~10~10ジャブクロス左フック右フックアッパーカット
図5 最終モデルのテスト、パンチごとに6回押し、決定論的。上:空中でのヒット(10 cm以内、3 m/s以上)。中:重い標的へのヒット。下:接触後の最初の0.06秒で標的に与えた運動量。破線はサンドバッグのヒットの基準で、約21 N s。アッパーカットのボールは軽く、基準は約17 N sです。合計:60回中34回のヒット、転倒なし。

言葉にすると、次のとおりです。

  • ジャブがいちばん良く、12回中11回、35 kgのサンドバッグに29〜33 N sです。
  • クロスはサンドバッグには6回中5回当たります。空中では約7 m/sと速いのですが、2〜5 cmずれて通過するか、手前で止まります。これがまだ「少し届かない」パンチです。
  • フックとアッパーカットは空中では毎回当たり、18回中18回、5〜6 m/sです。重い標的にも当たりますが軽く、サンドバッグに11〜15 N sで、基準を下回っています。

コーチの側から見れば、これは本物のコンビネーションを持つファイターです。構えは保たれ、頭は上がり、パンチの前に足が後ろにずれることもなく、どのパンチも正しい形をしています。腰が回り、クロスでは奥足のかかとが上がり、フックは体で運ばれます。しばらくトレーニングを積んだ人のように見えます。まだファイターのようではありませんが。

道のりを数字で

16:0018:0020:0022:0000:0002:0004:0006:0008:0010:005つのボタン:15:53–16:02 UTC、0.1時間、ジャブを忘れる5つのボタンジャブを忘れる教師:16:03–17:36 UTC、1.6時間、4つのパンチがサンドバッグに教師4つのパンチがサンドバッグにクロス:17:38–20:25 UTC、2.8時間、揺れからなら届くクロス揺れからなら届く静止:20:27–21:19 UTC、0.9時間、改善なし、取り戻される静止改善なし、取り戻される突き出し:23:31–01:20 UTC、1.8時間、回転は直り、腰は直らず突き出し回転は直り、腰は直らず内側を狙う:02:42–03:43 UTC、1.0時間、突き抜ける内側を狙う突き抜けるサンドバッグを押す:03:44–05:27 UTC、1.7時間、コツンと1回サンドバッグを押すコツンと1回引き戻し:05:28–06:46 UTC、1.3時間、インパクト引き戻しインパクト近く、段階的に:06:46–08:12 UTC、1.4時間、クロスが当たる近く、段階的にクロスが当たる足と頭:08:14–10:00 UTC、1.8時間、最終モデル足と頭最終モデル
図6 10回のランを1本の時間軸で(UTC、10月17〜18日)。各ランは、それ以前のランの最良または最新のモデルから始まりました。塗りつぶしの棒はモデルが採用(凍結)されたランで、輪郭だけのものは停止されたか置き換えられたランです。その教訓は次へ引き継がれました。真夜中の前の空白は、スポットマシンが取り戻されたのに1時間誰も気づかなかったことから始まりました。
ラン何を変えたか結果
5つのボタン最良のジャブに4つの新しいパンチを追加2.7 Mステップ以内にジャブが劣化、停止
教師新しいパンチ以外のすべてをジャブの方策がつなぎ止める36 Mステップで4つのパンチが35 kgのサンドバッグに。クロスは9〜12 cm届かず
クロスボタン押しの40 %をクロスに、腰の突き出しへの報酬、手前から下がっていく標的クロスは届くが、リズムの大きな揺れからのみ。広いテストでは0/12
静止クロスの大半をほぼ静止した構えから静止からは改善なし。32 Mでスポットマシンが取り戻される
突き出し腰の前への速さと回転に報酬回転は直り、腰は1 cm近づく。不採用
内側を狙う狙いの点をミットとサンドバッグの内側にパンチが表面を突き抜ける。次のアイデアのため停止
サンドバッグを押すサンドバッグの揺れ幅に報酬。アッパーカット用のミットとボール約18 cmの揺れで頭打ち。トニー:「サンドバッグを押しちゃだめ」
引き戻し0.06秒でのインパクトとサンドバッグから離れることに報酬ジャブは習得。クロスとフックは軽い
近く、段階的にクロスを6 cm近く、届かないパンチを段階評価、標的を大きく、ハードルを下げるクロスが当たる:学習中、腕をいっぱいに伸ばした距離で34〜42 %
足と頭パンチ前に下がらない、頭をまっすぐ最終モデル:34/60、転倒なし

費用

ファイターはクラウドのAmazon EC2のスポットインスタンスで学習しています。余っている計算資源を割引価格で売るもので、Amazonは2分前の通知で取り戻すことができます。この作業の大部分はc8a.24xlargeで動きました。96 vCPUで、ゾーンによって1時間$1.47〜1.80、オンデマンドなら約$4.90です。

この作業の始めにマシンを変えました。いつもの64 vCPUのマシンでは、もうシミュレーションがボトルネックではなく、学習の更新がボトルネックになっていて、シミュレーターのコアは約40 %の時間、遊んでいました。96 vCPUに移り、バッチを大きくして各バッチを回す回数を減らしたところ、学習は1時間あたり約22 Mステップから約40 Mステップになりました。約1.5倍の価格で1.8倍の速さです。

スポットには代償もありました。この18時間でAmazonは3回マシンを取り戻しました。2回は、ランが最後のチェックポイントから数分以内に再開しました。1回は、10月17日の遅くに、監視が最後のステータス行を表示し続けていて、1時間誰も気づきませんでした。それが図6の空白です。

ランマシン時間費用
5つのボタン0.15$0.15
教師1.5$1.87
クロス2.8$4.10
静止0.9$1.57
突き出し1.8$2.91
内側を狙う1.0$1.50
サンドバッグを押す1.7$2.85
引き戻し1.3$2.10
近く、段階的に1.4$2.15
足と頭1.7$2.75
合計約14約$22

これらは請求書からではなく、各ランの開始・終了時刻と、その時点のゾーンのスポット価格から出した推定値です。シミュレーションステップは全部で約470 M、100万ステップあたり5セント弱です。

次は:トレーニングを積んだ人から、プロへ

トニーはこの結果に満足しています。ファイターはムエタイのガードから、指示どおりに、空中にも重いサンドバッグにも、倒れることなく、それと分かる5つのパンチを打てます。しかし彼は、トレーニングを積んだアマチュア以上のものを求めています。

最終モデルをアニメーションと比べて測ると、なぜそう見えるのかが分かりました。どのパンチも、参照どおりのスケジュールで標的に届いています。ジャブは0.22秒、クロスは0.26秒、フックは約0.5秒です。報酬の中に、もっと早く届くことに報いるものは何もありませんでした。フックの拳の最高速度は5.6〜5.8 m/sで、アニメーションでは8.3〜8.8 m/sです。クロスは遅く届くか、届きません。

プロのパンチが違うのは、まさにこうした点です。より早く標的に届き、インパクトでより強く打ち、より速くガードに戻ります。そこで次のランでは、ファイターに自分のペースを決めさせ、素早さと標的での速さに報酬を与えます。その作業はこのランが終わった1時間45分後に始まりました。それが次の記事になり、5つのパンチすべての動画を載せる予定です。