ムエタイ · パンチ · 報酬設計 · コーチング
5つのパンチ:クロス、フック、アッパーカット
学習コスト 約$22学習ラン10回、約14.2マシン時間 · 内訳
ジャブには2日かかりました。ジャブが速く、正確に、踏み込んで打てるようになると、ヤム トニー(Tony Yum)はムエタイの基本パンチの残りを求めました。クロス、左右のフック、そして前の手のアッパーカットです。5つすべてを1体のファイターで、指示どおりに、同じガードから。
この記事は、その後の18時間を扱います。10月17日の午後から、最後のランが終わった10月18日10:00 UTCまでの10回の学習ランです。ファイターは空中へのパンチから35 kgの重いサンドバッグへのパンチへ、1つのパンチから5つへと進みました。
最後のトニーの評価を短くまとめると、完璧ではないが満足している、というものでした。いくつかのパンチはまだ少し届いていません。残りは、トレーニングをしている普通の人が打つパンチに近く見えます。次のステップはそれをアスリートのように見せることで、すでに取りかかっています。
4つの新しいパンチ
新しいパンチはどれも、ジャブと同じく参照モーションから始まりました。トニーの説明と写真からポーズを1つずつ組み立てたアニメーションで、物理は入っていません。彼の仕様はコーチのメモのようです。
- クロス(奥の手のストレート)。右腕がまっすぐ伸び、拳が返って手のひらが床を向きます。胸が左に回り、前足が踏み込み、奥足はかかとを上げて母指球で回転します。左のグローブは頬に付けたままです。
- フック。 「パワーは腕ではなく、脚、腰、体幹から来る」。腕はフックの形を取り、肘を肩の高さで約90°に曲げ、その後は胸に固定したままです。体の回転が拳を標的の向こうまで運びます。その前に、逆方向への小さな予備動作が入ります。
- アッパーカット。 ためはしゃがむことではなく、回転です。腰と胸が前足の上で左に回り、拳は胸の高さまで下がります。そこから回転が足元から逆向きに戻り、拳がまっすぐ上へ、あごに突き上がります。
そしてファイターは、これをすべて物理シミュレーションの中でやらなければなりません。重さも勢いもあり、足は滑ることがあります。5つのパンチはすべて1つの方策(ポリシー)が動かします。方策はどのボタンが押されたかと標的がどこにあるかを見て、そのパンチの参照に従い、標的を速く打つことで報酬を得ます。図1が、最終的に到達したところです。

空中、次にミット、そして重いサンドバッグ
トニーの指示にはもう1つ続きがありました。本物のファイターはシャドーボクシングだけをするわけではないので、このファイターもそうあるべきではない、というものです。
空中を打つことから始めて、次に軽い標的、そして重いサンドバッグへと学習させて、インパクトと反動を学ばせてほしい。
そこで標的はカリキュラムの一部になりました(図2)。レベル0では、ファイターは空中の1点を打ち、速さと正確さだけが評価されます。レベル0から1では、フォーカスミットほどの大きさのミットがばねに付いて現れ、0.75 kgから3 kgへと重くなります。レベル1から2では、それがロープに吊るした重いサンドバッグになり、12.5 kgから35 kgまで重くなります。アッパーカットには専用の標的があります。吊るしたサンドバッグを下から打つのは意味がないからです。下を向いたミット、次にあごの高さに吊るした重いボールです。これもトニーのアイデアでした。
教訓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)。

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

言葉にすると、次のとおりです。
- ジャブがいちばん良く、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で、基準を下回っています。
コーチの側から見れば、これは本物のコンビネーションを持つファイターです。構えは保たれ、頭は上がり、パンチの前に足が後ろにずれることもなく、どのパンチも正しい形をしています。腰が回り、クロスでは奥足のかかとが上がり、フックは体で運ばれます。しばらくトレーニングを積んだ人のように見えます。まだファイターのようではありませんが。
道のりを数字で
| ラン | 何を変えたか | 結果 |
|---|---|---|
| 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つのパンチすべての動画を載せる予定です。