本物のポケモンカードのルールを実装した対戦シミュレータの上で、参加者のプログラム同士を戦わせる。主催は The Pokémon Company。順位はスコアではなく、参加者どうしを自動で戦わせ続けて算出するレーティングで決まる
終了した Featured コンペ313本のうち3番目に大きい
エージェント同士を戦わせる形式では歴代最大。2位は Lux AI の1,178
提出を締めたあとも自動対戦が続き、その時点のレーティングで確定する
締切時点の順位は、最終順位ではない。この最後まで動き続ける性質が、あとで出てくる評価の難しさに全部つながる
勝ち負けの決まり方だけ押さえておく。サイドを6枚取ったほうが勝ちで、この枚数があとで報酬を作るときの手がかりになる
1試合でこのやりとりが自分の側で約90回。合計600秒(CPUのみ)を超えたり、エラーを出すと負け
状態、行動、報酬、方策を、ポケカの盤面に置き換える
やってみて、うまくいったやり方を増やす。出てくる言葉は4つだけで、3つは普段の教師あり学習にそのまま対応する
対応が崩れるのは報酬だけである。教師あり学習ならデータ1件ごとに教師ラベルが付くが、こちらは1つも付かないまま試合が終わる
モデルは手を思いつかない。できる手の一覧はルール側が作る。モデルはその一覧に点数をつけて1つ選ぶだけである
点数はそのままその手を選ぶ確率になる。学習中はサイコロを振って選び(たまに新しい手を試す)、本番では一番高い手を選ぶ
反則の手はそもそも一覧に入らないので、原理的に出せない。候補は平均13個、多いときは19個以上。学習とは、この点数を動かすこと
前のページの4つのうち、素直に対応しなかったのは報酬だった。そこから違いが2つ出てくる
画像分類なら「これは猫」と答えがついている。ポケカの盤面に「この手が最善」という答えは誰も持っていない。環境が返してくるのは、約90手を打ち終えたあとの勝ち負け1つだけである
教師あり学習のデータセットは、学習しても中身が変わらない。こちらは自分で対戦して初めてデータになる。打ち方が変われば出会う盤面も変わるので、集め直し続けることになる
1つめには採点の基準を自分で作って手当てし、2つめには更新の幅に上限を置いて手当てする
学習は2段構えで、使うデータが段ごとに違う
他人のリプレイを使うのは1段目だけ。2段目の記録は全部自分の対戦から作る(=自己対戦。この練習相手の集まりを、あとで「リーグ」と呼ぶ)
2段目でやることは、この一周を繰り返すだけである。①と②で対戦の記録を作り、③でその記録を1手ずつ採点し、④で方策を更新する
難しいのは③である。勝ち負けしか返ってこないのに、どう1手ずつ採点するのか
そして④。方策をどれだけ動かしてよいのか
教師あり学習なら、データ1件ごとに教師ラベルが付く。ポケカの1手には付かない。返ってくるのは、約90手を打ち終えたあとの勝ち負け1つだけである
1つ1つの箱が打った手。勝ち負けは試合単位でしか返ってこないので、同じ点数が全部の手に配られる。勝った試合にも悪手はあり、負けた試合にも好手はある
1手ごとに分けて教えたい。ただし「この手が最善」という教師ラベルは誰も持っていない
だから教師ラベルの代わりに、何を良しとするかを自分で決める。それが報酬である
教師ラベルが付けられないので、外から与えられるのは報酬だけになる。何を良しとするかの定義が、そのまま方策の目標になる。本命は勝ち+1、負け−1で、これは試合が終わる最後の1手にしか入らない
勝敗だけだと、序盤の手が良かったのか悪かったのかを言う材料がない。サイドが動いたところで小さく点を入れておく
途中点は「増えた分 − 減った分」の形なので、試合を通した合計は0。成績の出方が早くなるだけで、目指すゴールはずれない
学習が最大化するものを1本の式で書くと、こうなる。足しているのは4つで、そのうち3つが報酬、残る1つだけ位置が違う
入るのは試合の最後に1回だけ。学習では、この1つが割引されながら手前の手にも配られる
1手ごとに定額で引く。90手なら合わせて 0.18 ほど(割引ぶん少し小さい)。同じ勝ちなら短いほうがよい
係数 0.3 をサイド6枚で割るので、1枚動くと 0.05。勝敗がつく前からサイドを多く取ったほうがよいと伝わる
模倣学習の打ち方から離れすぎたら引き戻す。最終の run では最初から 0
①〜③だけが記録に書き込まれる。この合計が、次に出てくる critic の予想の的になる。③は足すと打ち消し合う形なので、係数をいくつにしても最適な打ち方は変わらない
④は期待値の外にいる。報酬としてではなく、重みを更新するときに引く罰則である(式にはもう1つ、探索を促す項も足すが、何を良しとするかには関わらない)
モデルにもう1つ出口を付け、盤面を見て「ここから最後までに入る報酬の合計はどれくらいか」を答えさせる。この係を critic と呼ぶ。報酬の大半は勝敗なので、実質は勝ちやすさの見立て。手を打つ前と後で、その予想がどう動いたかを見る
この動いた分が、その1手の成績である。これをアドバンテージ A と呼ぶ。試合に1つしか付かない勝ち負けが、criticの見立ての差を通して、1手ごとの点数に置き換わる
criticは予想が外れるほど直され、記録の報酬に合うよう一緒に学習する。この A が、次の④でそのまま「上げるか下げるか、どれだけか」に掛かる
教師あり学習の「この場面の正解はこの手」に当たるラベルはない。できるのは、記録に残っている手を選ぶ確率を上げるか下げるかだけである。どちらに動かすかを、③で出た成績 A の符号が決める
教師ラベルとの違いは符号にある。ラベルは「この手に近づけ」としか言えないが、A は「近づけ」と「遠ざけ」の両方を言える
ただし、この記録を打ったのは更新前の方策である。更新するほど、手元の記録はいまの方策のものではなくなっていく
記録がどれだけ古くなったかは、その手を選ぶ確率が記録時の何倍になったかで測れる。この倍率に上限を置き、届いた手はそこで打ち止めにする
枠に届いた手はそこから先へ進まない(更新を戻すのではなく勾配が0になる)。学習率=1歩の大きさ、上限=行ける距離で、代わりにならない
モデルの中身、模倣での出発、持ち込むデッキ、自己対戦、そして速さ
入口が2つ(盤面と候補の手)、出口が2つのモデルである。約1,790万パラメータ。出口の1つ目が方策で、候補の手ごとに点数を出す。2つ目がさきほどの critic で、こちらは手ごとではなく盤面ごとに1つの値を返す
候補の数は毎回変わるので、「出口が固定N個」の形にはできない。手を1つ1トークンにして盤面との相性を見る形なら、候補が何個でも1回の推論でまとめて採点できる。1手を選ぶのに CPU で約5ms
何も知らない状態から対戦を始めると、まともな試合になるまでがとても長い。まずうまい人の真似から入る
公式が毎日公開する対戦記録を使い、「この場面で人はどの手を選んだか」を当てる練習をする(模倣学習、Behavior Cloning)。これは答えのある普通の分類問題
このときcritic も一緒に育つ。同じ胴体に付いた「勝ちそう度」の出口も、リプレイの勝敗を当てるように学ぶので、自己対戦を始める時点で勝敗予測の AUC は 0.8 前後。一周の③が最初から機能する
模倣の上限は教師の強さ。ここを出発点にして、強化学習で超える
提出物は打ち手のプログラムと、60枚のデッキの2つ。同じプログラムでも、持たせるデッキが違えば別のエージェントになる。だからモデルはデッキごとに1つずつ育てる
デッキを差し替えれば、使えるワザも、引けるカードも、勝ち筋も変わる。同じ重みのまま別のデッキを持たせても、うまく打てない
上位帯の実測である。マリィのオーロンゲはフーディンに勝ち越し、フーディンはシロナのガブリアスに勝ち越し、シロナのガブリアスはマリィのオーロンゲに勝ち越す
決まるのは、いま多い相手に強いデッキだけである。この「いま何が多いか」をメタと呼ぶ
金メダル圏の試合だけを取り出して、相手が実際に持ってきたデッキを数える。この分布が、そのまま自己対戦の相手になる
多いデッキが強いデッキとは限らない。デッキを乗り換えた人を追って打ち手の腕を揃えて比べると、ドラパルトは勝率が平均より +8.2ポイント、席数最多だったマリィのオーロンゲは −4.0ポイントだった
最終提出はこの2本。ドラパルト(一番当たる相手で、腕を揃えても強い)と カミツオロチ(2番手で、まだ伸びている)
練習相手が自分だけだと、自分にしか強くならない。大会でよく当たるデッキを使う相手をたくさん用意して順番に対戦する
PFSP=「苦手な相手と多めに練習する」。勝率が低い相手ほど当たる回数を増やす(2乗なので、かなり偏らせる)。自分との対戦は最大50%
練習相手も育てる。1つのデッキの強化学習が終わるたびに、その強い版を相手の席に入れて次のデッキを回す
弱い相手に勝てても本番では通じない。相手を強くしてから測り直すと、もう伸びないと思っていた壁の位置が動いた。1デッキあたり 5〜16億手
1デッキに5〜16億手を積むには、7日間回し続けることになる。ところが実測は毎秒345手で、7日でも2億手にしか届かなかった。効率的な学習に必要なチューニングを繰り返した
中身がバイト単位で同一の提出を2本、同時に出してみた
同じものが、これだけ離れる。これがこのラダーの目盛りの幅
だから手元の指標で候補を選びたくなる。教師との一致率で選んだ4回とも、ラダーでは逆を向いた。レート1100以上に絞った教師の版は手元で勝っていて −71、10日ぶんのコーパスは全エポックで勝っていて −85
結論として、手元の指標は候補の選別には使わないことにした。使い道はバグ探しだけである。判定はラダーだけで、そのぶん読むのに時間がかかる
提出ごとのレート(TrueSkill、全員600点から開始)。6,807チーム中、2026-09-05 時点の確定値。金圏カットライン自体も 1071〜1148 のあいだで動いた
強化学習は、状態を見て行動し、遅れて届く報酬から方策を直す。ポケカなら盤面、合法手、勝敗、採点ネット
ゼロから回さない。まず人の対局の模倣を出発点にして、PPOの自己対戦で教師を超える
効いたのはアルゴリズムより設計。誰と戦うか(PFSPとメタ)、何を報酬にするか(サイド差)、どれだけ速く回すか