Kaggle Pokemon TCG参加記録
ルールベース、探索、模倣学習、強化学習、Transformer、そしてLLMまで。2026年6月17日から8月9日までの開発記録。
この話の結論を先に書く。
このコンペで最も大きく勝率を伸ばしたのは、巨大なニューラルネットでも、長時間の強化学習でもなかった。
効果が大きかったのは、公開対戦から当時の上位プレイヤーが使っていた60枚のデッキを正確に復元すること。そして、見えていないカードを複数の「あり得る世界」として想像し、それぞれで次の一手を比べることだった。
最終的に残ったのは、次の組み合わせである。
- 当時の上位プレイヤーが使っていた60枚
- カードごとの使い方を記述したルール
- 見えていないカードを推測しながら先を読む探索
- 山札切れと勝利までの速さを比べる小さな補正
ここへたどり着くまでには、もっともらしい改善を大量に捨てた。学習精度が上がったのに弱いモデル、狙いどおり動いたのに勝率を落とすルール、全体では勝っているのに一つの苦手な相手で危険な崩れ方をしたデッキ、そして候補ではなく評価指標のほうが間違っていた実験もあった。
この記事は成功した手法の紹介というより、何を試し、どこで間違い、なぜ止めたかの記録である。
そもそも、何を競うコンペだったのか
Kaggleは、参加者がデータ分析やAIの性能を競うオンラインの競技プラットフォームである。今回の舞台は、公式シミュレータ上でポケモンTCGのプログラム同士を戦わせるコンペだった。
参加者が提出するのは、次の二つである。
- 対戦に使う60枚のカードの組み合わせ。
- 対戦中の各場面で、どの行動を選ぶか決めるプログラム。
後者を、この記事では「エージェント」と呼ぶ。
エージェントには、その場で選べる行動の一覧が渡される。カードを出す、攻撃する、番を終える、といった候補の中から、ルール上許されている行動を一つ選ぶ。
ただし、すべての情報が見えるわけではない。相手の手札は見えず、自分の山札がどの順番で並んでいるかも分からない。伏せられたカードもある。エージェントは、分からない情報を抱えたまま勝ち筋を選ばなければならない。
この記事で何度も出てくる「サイド」は、相手のポケモンを倒した時などに取る、勝利点に近いカードである。「山札切れ」は、自分の山札から次のカードを引けなくなる敗北を指す。
対戦結果からKaggle上の評価値が更新され、他の参加者と順位を競う。チェスのように盤面がすべて見えるゲームとは違い、見えていない情報をどう扱うかが大きな課題だった。
この記事で使う言葉
専門用語をできるだけ避けるため、最初に最低限だけ整理しておく。
| 言葉 | この記事での意味 |
|---|---|
| ルールベース | 「この場面では攻撃を優先する」のように、人が判断規則を書く方式 |
| 探索 | 候補となる行動を実際に少し先まで試し、結果を比べる方式 |
| 学習モデル | 過去の対戦例から、良さそうな行動や盤面を学ぶニューラルネット |
| 比較元 | 改善前のエージェント。英語ではbaselineと呼ばれる |
| 変更案 | 比較元へ新しいルールやモデルを加えた候補 |
| 1ptの差 | 勝率50%が51%になるような、1パーセントポイントの差 |
| timeout | 考えるのに時間がかかりすぎ、対戦を正常に終えられなかった状態 |
以下の勝率は、特記がなければ手元のコンピュータで、相手と試合数を固定して測ったものだ。対戦相手が変わり続けるKaggle本番の評価値とは直接比べられない。
また、同じ初期条件を指定しても、シミュレータ内部の偶然まで完全には揃わない。そのため、「変更だけが原因で必ずこの差が出る」と言い切らず、観測された差として扱っている。
最初に作ったAIは、カードを理解していなかった
6月17日、プロジェクトは公式シミュレータをPythonから動かし、選べる行動の中からランダムに一つ返すところから始まった。
そこから、複数の試合を自動で行う仕組み、勝敗を集計する仕組み、学習コード、提出用ファイル、対戦ログ、試合を見返す画面を順に整えた。
振り返ると、最初に必要だったのは高度なAIではない。
- 先攻と後攻を入れ替えて、公平に比べられること。
- 勝敗だけでなく、途中停止やエラーを記録できること。
- 変更前と変更後を、同じ条件で比べられること。
まず既存のエージェント同士を小さな総当たりで戦わせると、Alakazam(アラクサム)を中心にした公開デッキのルールベースが暫定首位になった。
一方、ニューラルネットを使う一部のエージェントには、学習済みデータが読み込めていないものがあった。プログラム自体は起動するが、実際には毎回「一覧の先頭にある行動」を選んでいたのである。
プログラムが止まらず動くことと、意図したAIが動いていることは違う。
この問題は、後の学習実験でも何度も戻ってきた。
そこで既存の実装を直接壊さず、Alakazam用のルールエージェントを別に作った。攻撃、進化、カードの検索、エネルギーの付け方、退却、ベンチへの展開をそれぞれ点数化し、対戦ログを見ながら直していった。
たとえば、あるポケモンの攻撃は特殊な処理でダメージを与えるため、単純なカードデータ上では威力0に見えていた。これを実質100ダメージとして評価すると、短い90試合の比較で56勝から60勝へ改善した。
逆に、「支援役を置きすぎない」「山札が少なければカードを引かない」「攻撃役が準備できたら追加展開をやめる」といった直感的なルールは、必要な勝ち筋まで消してしまうことが多かった。
山札を使い切らせて勝つ別のデッキも改良したが、ある相手へ強くするほど、別の相手に弱くなった。
ここで最初の重要な原則ができた。
一つの苦手な相手への勝率が上がっても、エージェント全体が強くなったとは限らない。
「少し先まで試す」だけで、初めて大きく伸びた
次に、ルールベースへ短い先読みを加えた。
まずルールで有望な行動を4個まで選ぶ。それぞれを約0.15秒だけシミュレータ上で試し、少し先の盤面が最も良くなる行動を採用する。
人間にたとえるなら、「直感で候補を数個に絞り、その候補だけ頭の中で試してから決める」方式である。
代表的な8種類の相手と各100試合、合計800試合を行うと、元のルールは勝率40.6%、短い先読みを加えた版は48.0%だった。特に苦手だった山札切れ戦術への勝率は14%から30%へ上がった。
ただし、その苦手相手だけをさらに対策する変更は、800試合全体の勝率を下げた。
この頃から、評価を三段階に分けた。
| 段階 | 対戦内容 | 試合数 | 目的 |
|---|---|---|---|
| 基本確認 | 単純な行動をする相手 | 600試合 | ルール違反や進行停止がないか確認する |
| 実力比較 | 特徴の異なる8種類の相手 | 800試合 | 戦術、相性、苦手な相手を確認する |
| 提出前確認 | 競争力の高い10種類の相手 | 1,000試合 | Kaggleへ提出するか判断する |
すべての比較で先攻と後攻を半分ずつ入れ替えた。最初は160試合の短い確認を行い、有望な案だけを800試合へ進める。最後は、それまで使っていない初期条件で確認した。
短い試験で勝っただけでは、正式な改善とは呼ばない。勝率だけでなく、時間切れや不正な行動が一件もないことも求めた。
ルールを学習すれば、もっと強くなると思った
次は、ニューラルネットに強いルールエージェントの行動を真似させた。これは模倣学習と呼ばれる。
盤面を入力すると、「教師役のエージェントならどの行動を選ぶか」を予測する。複数のネットワーク構造を試すと、記録済みデータに対する正解率は約75%まで上がった。
しかし、実際に対戦させると勝率は28.75%や32.5%で、ルールと先読みを組み合わせた約50%へ届かなかった。
原因は単なる学習時間不足ではなかった。
- 11枚目以降の手札が入力から落ちていた。
- カード固有の効果を判断するための情報が足りなかった。
- 選べる行動が31個以上あると、後ろの候補が見えていなかった。
- AIから見ると同じ入力なのに、実際には異なる判断が必要な場面があった。
つまり、AIへ渡した盤面の説明そのものが不完全だった。人間には別の状況に見えても、AIには「同じ盤面」に見えていたのである。
模倣学習から始め、試合の勝敗を報酬として学ぶPPOという強化学習も試した。最初の実験では、勝率が32.5%から15%まで崩れた。
学習を長く続ければ解決する兆候もなく、ニューラルネットだけで行動を決める路線はいったん止めた。
最大の転機は、上位デッキの60枚と「あり得る世界」の比較だった
学習実験と並行して、2026年7月14日に公開された上位対戦から、当時の首位プレイヤーが使っていた60枚を復元した。
ここでいう「首位デッキ」は、私のエージェントが1位になったという意味ではない。外部の首位プレイヤーが使っていたカード構成を指す。
カードを数枚だけ変えたように見えても、60枚全体の噛み合わせは大きく変わる。手札を整えるカード、相手の行動を妨害するカード、使い終わったカードを戻すカードなどが調整されていた。
同時に、短い先読みを「belief search」と呼ばれる方式へ変えた。beliefは、ここでは「見えていないカードは、こう並んでいるかもしれない」という仮説を意味する。
仕組みを単純化すると、次のようになる。
- まず、ルールベースで有望な行動を6個ほど選ぶ。
- すでに見えているカードを、60枚の一覧から除く。
- 残ったカードから、見えていない山札や伏せカードの並びを2通り作る。
- すべての行動を、同じ二つの仮想世界で試す。
- 最初の試行で悪かった候補を落とし、有望な候補へ計算時間を集中する。
- 0.30秒以内に終わらなければ、安全な既存ルールへ戻る。
たとえば、見えていない重要カードが「山札の上にある世界」と「下にある世界」を作り、どちらでも大崩れしにくい行動を選ぶイメージである。
同じ条件で各800試合を行った結果は、次のようになった。
| 構成 | 勝数 | 勝率 | 直前との差 |
|---|---|---|---|
| 旧デッキ+短い先読み | 443/800 | 55.38% | — |
| 旧デッキ+複数世界の探索 | 509/800 | 63.63% | +8.25pt |
| 首位デッキ+複数世界の探索 | 608/800 | 76.00% | +12.38pt |
最も大きな改善は、モデルを複雑にすることではなく、強い60枚へ追随することだった。次に効いたのが、既存のカード知識を残したまま、見えない情報を複数の世界として比べる探索だった。
この版は三段階の正式評価も時間切れ0で完走した。最終1,000試合では791勝だった。ただし、この79.1%には特に相性の良い相手への200勝が含まれている。それを除けば73.88%になる。
したがって、「どんな相手にも79.1%勝てるAI」ではない。用意した相手の組み合わせを含めた成績として読む必要がある。
ここまでの投資対効果は、ほぼ次の順になった。
強いデッキへの追随 > 見えない情報を扱う探索 > 小さなルール調整 ≫ 学習モデル
強いルールと探索を、学習で超えられるか
強い比較元ができた後、設定を慎重にしたPPOを再び試した。最初のような急激な崩壊は抑えられ、学習用の相手には以前より勝てるようになった。
しかし、固定した8種類の相手との評価では、模倣学習版が33.54%、PPO版が39.38%。最も良い学習モデルでも42.5%で、強いルールと探索の75.75%には遠く及ばなかった。計算資源は約5.5時間で止めた。
これは「PPOが何も学ばなかった」という意味ではない。学習中の限られた相手には改善したが、提出候補に必要な広い強さを確認できなかった、という失敗である。
次に、ルールを捨てず、探索した先の盤面評価だけをTransformerというニューラルネットに手伝わせた。
記録済みデータ上では、勝ち・負け・引き分けの予測精度が86.67%まで上がった。探索が選ぶ行動との一致率も73.45%から74.48%へ少し改善した。
ところが実際の対戦を調べると、先に大きなバグが見つかった。探索が時間内に終わらなかった時、本来の強いルールではなく、単純な行動選択へ戻っていたのである。この戻り先を直すと、勝率は比較元の水準まで戻った。
正式な800試合では、学習補助版609勝、比較元618勝。計算時間は3.46倍だった。さらに調べると、その設定ではニューラルネットが最終行動を変えた回数は0だった。
つまり、重い仕組みを追加したのに、実際の判断へ貢献していなかった。提出候補へ進める根拠はなかった。
別の学習方法も5回試したが、昇格はゼロだった。勝敗が同じ候補を、残ったサイドカード数や勝利までの速さで順位付けしようとしても、差が小さすぎて安定した教師にならなかった。
さらに、教師となる探索が選んだ行動の94.8%は、すでに既存ルールが作った候補の中にあった。
学習に成功するほど既存候補と同じ答えになり、学習から外れた時だけ危険な新候補を持ち込みやすい。
構造そのものが不利だったため、学習モデルを候補へ足す路線から、探索の弱点を直接直す路線へ移った。
「山札が少なければ引かない」は正しくなかった
このゲームでは、山札を使い切ることが敗因になる。苦手な相手との対戦では、それが特に目立っていた。
そこで、山札が少ない時だけ、追加でカードを引く攻撃を使わないルールを作った。
短い160試合では、比較元128勝に対して変更版129勝。苦手な相手には20勝から26勝へ改善し、山札切れによる敗戦も19件から10件へ減った。かなり有望に見えた。
しかし、正式な800試合では変更版607勝、比較元620勝。さらに別の976試合でも、勝率は0.717pt下がった。
ルールは狙いどおりに動き、エラーもなかった。それでも全体では弱くなった。
「山札が少ないならカードを引かない」は正しそうに聞こえる。しかしカードを引くことは、強い攻撃、進化、次の攻撃役の準備にもつながる。
危険な行動を一律に禁止するのではなく、山札が尽きる前に勝ち切れるかを比べる必要があった。
二つの時計を比べる仕組みは、一度だけ間違った物差しで落ちた
そこで作ったのがP2-Sという小さな補正だった。名前は難しいが、考え方は単純である。
探索した先の盤面ごとに、二つの時計を比べる。
- 山札が尽きるまで、あと何回攻撃できるか。
- 勝利に必要なサイドカードを取り切るまで、最短であと何回攻撃が必要か。
「山札切れのほうが先に来る」と判断した盤面だけ、評価を少し下げる。勝敗やサイド差といった大きな判断を上書きせず、分からない時は補正しない安全側の設計にした。
最初の800試合では、P2-Sが615勝、比較元が599勝で、勝率は2pt高かった。
それでも当初は不採用にした。事前に「特定の相手に山札切れで負けた件数が増えないこと」を条件にしており、その件数が41から46へ増えたからだ。
後から、この物差しに欠陥があると分かった。
P2-Sは、途中で不利な行動を避け、終盤の山札レースまで試合を続けるための仕組みである。狙いどおり終盤へ到達する試合が増えれば、山札0枚で終わる試合の総数自体が増える。勝った試合も負けた試合も増え得るのに、負けた件数だけを数えていた。
仕組みが働くほど、悪く見える可能性がある指標だった。
ここで古い実験を、後から成功扱いにはしなかった。最初の不採用はそのまま残した。P2-Sの計算式や発動条件も変えず、評価指標だけを「対象となる3種類の相手への合計勝数」に直した。
そして、まだ使っていない初期条件で、比較元とP2-Sをもう一度各800試合走らせた。
| 再確認 | 比較元 | P2-S |
|---|---|---|
| 総合 | 605/800 | 635/800 |
| 勝率 | 75.625% | 79.375% |
| 対象3種類の相手 | 204/300 | 217/300 |
| 時間切れ・不正・補正手 | 0件 | 0件 |
観測差は+3.75ptだった。ただし統計上の幅には0も含まれており、「P2-Sが必ず強い」とまでは証明できない。
それでも、実験前に決めた五つの採用条件はすべて通過した。続く最終1,000試合も783勝216敗1分、10種類すべての相手に勝ち越し、時間切れや不正な行動は0だった。
測定ミスを見つけても、負けた実験を勝ちに直さない。新しい物差しと新しい条件で、もう一度決着をつける。
この出来事は、強いエージェントを作った話であると同時に、強さの測り方を作り直した話でもあった。
手元で勝っても、本番には別の相手がいた
最初の首位デッキ版をKaggleへ提出すると、エージェント自身との確認対戦を除く外部30試合は17勝13敗だった。評価値は、10試合時点の715.079から25試合時点の785.411まで大きく上下した。
少ない試合数で逐次更新される評価値を、そのまま強さの即時判定には使えないことが分かった。
P2-S版の提出後に取得できた外部59試合は31勝28敗、勝率52.54%。手元の固定試験で得た78.3%とは大きく違って見えるが、対戦相手も、相手が選ばれる仕組みも異なる。
本番の試合を見返すと、手元の固定相手では目立たなかった問題が見えた。
- 同じAlakazam系同士の対戦は22試合10勝12敗で、12敗中7敗が山札切れだった。
- 新しく現れたMarnie Grimmsnarlには7試合2勝5敗だった。
- 全28敗のうち8敗が山札切れだった。
- 当初は、さらに16敗を「自分のポケモンがいなくなった敗戦」と分類した。
ところが16件を詳しく見直すと、本当に場のポケモンがすべていなくなっていたのは6件だけだった。残り10件では控えのポケモンが残っていた。
シミュレータの終局画面では、次に前へ出すポケモンを選ぶ表示が省略される。その表示だけを見て、「攻撃役をすべて失った」と誤解していたのである。
Marnieへの敗戦も、特定カードが足りないという単純な話ではなかった。相手が前のポケモンへ大きなダメージを与えながら、控えにも同時にダメージを蓄積する間に、こちらの攻撃回数が追いついていなかった。
敗因につけた名前も、検証前は仮説にすぎない。
ログの分類を信じるのではなく、実際に何回攻撃できたか、どの資源がいつ尽きたかまで見直す必要があった。
失敗には、少なくとも四つの種類があった
P2-Sを採用した後も、ルール、探索方法、デッキ、学習モデルを一つずつ変更して試した。
重要だったのは、すべての不採用を単に「弱かった」でまとめないことだった。
| 失敗の種類 | 何が起きたか | 次に取る行動 |
|---|---|---|
| そもそも動く場面が少ない | 対象となる局面がほとんどなく、行動も変わらない | 大規模試験へ進めず、安い確認で止める |
| 狙いどおり動いたが弱い | 多くの場面で行動を変えたのに、勝率が下がった | 実装ミス探しを続けず、不採用にする |
| 情報は増えたが危険 | 判断材料は増えたが、時間切れや不安定さが出た | 勝率が良くても止める |
| 実験そのものが無効 | 対戦相手を再現できない、結果データが欠けている | 強さを判定せず、実験を無効とする |
たとえば、行動候補の重複を減らす仕組みは6,152回の判断で実際に候補を変えた。それでも各512試合の比較では勝率が3.516pt下がった。動かなかったのではなく、動いた上で弱かった。
デッキのカードを2枚入れ替えた案は、仕組みと安全性の確認を通過したが、各320試合で9.688pt下がった。
学習した盤面評価は、記録済み139万局面に対する予測性能を大きく改善した。それでも実対戦2,432試合では+0.350ptに留まり、実験前に期待した+2.5ptへ届かなかった。
別のデッキは全体で+5.625ptだったが、一つの相手で事前に決めた停止境界まで悪化したため、正式評価へ進めなかった。
また、本番41試合を追加分析しようとした時は、1試合だけ勝敗データが欠けていた。都合よく40試合だけを使ったり、映像から結果を推測して埋めたりせず、分析全体を無効として止めた。
「仕組みが動いた」「記録済みデータへの正解率が上がった」「全体の勝率が少し良い」は、それぞれ有用な情報である。しかし、提出採用の十分条件ではなかった。
上位デッキを持ってくるだけでも、いつも勝てるわけではない
上位Alakazamの60枚へ追随したことは最大の成功だった。しかし、「ランキング上位のデッキなら、既存の行動ルールへ載せても強い」と一般化すると失敗した。
- 上位Crustleデッキを近い既存ルールで動かすと79/160勝で、元のデッキと専用ルールの89/160勝を下回った。
- 上位Marnieデッキは、比較元156/220勝に対して99/220勝だった。
- 上位Mega Lucarioデッキは、比較元152/200勝に対して112/200勝だった。
強かったのは60枚だけではない。
その60枚と、それをどう使うかという行動ルールの組み合わせが強かった。
Alakazamでは、上位デッキと既存ルールの意味がうまく噛み合った。しかし、その成功を別の種類のデッキへそのまま移すことはできなかった。
最後の有望候補も、安全性の条件で止めた
8月6日に上位20人の公開対戦を調べると、復元できたAlakazamデッキ3件は、すべて現在の60枚と完全に同じだった。少なくとも公開情報からは、新しいAlakazam候補を得られなかった。
一方、自分の新しい本番180試合では、96敗中32件で終局時にAbra系のポケモンが場から消えていた。
そこで、妨害カードを1枚減らし、ポケモンを回収するカードを1枚増やした候補を作った。
短い比較では123/160勝で、比較元の115/160勝を上回った。別条件の296試合でも192勝対170勝で、観測上は+7.432ptだった。
それでも不採用にした。
比較元側で、最大手数へ到達する時間切れが1件起きたからだ。変更版自身の時間切れは0だったが、事前に「比較する両方で安全上の問題が0件」と決めていた。
これは変更版が危険だと証明した結果ではない。この比較を採用根拠として使うための条件が満たされなかったという結果である。
数字が良かった後で例外を作らず、再試行も基準変更もせず、その候補を閉じた。
事前に決めた条件が本当に役立つのは、守るのが簡単な時ではない。守ると惜しい結果を失う時である。
番外編:文章生成AIを、そのままプレイヤーにしたら
8月には、ChatGPTのように文章を生成する大規模言語モデル、いわゆるLLMを教師やプレイヤーとして使う実験も行った。提出本線には一切入れていない。
最初はGemma 4 31Bというモデルへ「この場面では何を選ぶか」を尋ねつつ、安全のため既存ルールへ戻れる形で5試合を行った。結果は5勝だった。
しかしログを調べると、Gemmaの提案は一度も実行されていなかった。実際の行動は、毎回既存の強いルールへ戻っていた。
証明できたのは「既存ルールが5勝した」ことだけで、Gemmaの強さではなかった。そこで同日中に記録を訂正した。
次に、安全網なしでGemma自身へ行動を選ばせた。5試合で2勝2敗、技術的な失敗が1件。単純なランダム相手には勝ち、強いルール相手には負けた。AIが読み書きした文章量は約111万token、費用は約0.155ドルだった。
別条件の10試合は、すべて最後まで動いたが0勝10敗。低価格な3モデルを比べた実験は、15試合すべてが通信や出力形式の問題で失敗し、完了した試合は0だった。
プログラミング支援AIのCodexを教師として使う実験では、300種類の盤面すべてで、形式上正しくルール違反のない回答を返した。
しかし、別々に動かした3個のCodexが同じ答えを選んだ割合は63.3%。主要な行動選択では44.4%、選択肢が11個以上ある難しい場面では33.3%だった。さらに、先読みで支持できた回答は0件だった。
小規模な対戦では良い数字が出た実験もあったが、モデルや条件を固定した別の2試合では0勝2敗だった。試合数が少なく、相手も一種類なので、正式な強さの根拠にはしていない。
ルール違反なく答えること、複数回同じ答えを返すこと、最後まで動くこと、安く動くこと、強いこと、そして同じ結果を再現できることは、すべて別の条件だった。
この開発で残った六つの教訓
1. 強い人のデッキを観察することが、最も安い大改善だった
探索方法を変えず、60枚を上位デッキへ合わせただけで、観測上は+12.38ptだった。ただし、カード構成と行動ルールの相性確認は必要である。
2. 既存知識を残した先読みが、学習より先に効いた
ルールを捨てず、見えない情報だけを複数の世界として補う探索は、旧デッキのままでも+8.25ptだった。
3. 記録済みデータへの正解率は、実戦の強さではない
139万局面で予測性能が上がったモデルも、Transformerの小さな改善も、実対戦では昇格できなかった。最後に必要なのは、同じ条件での対戦結果と安全性だった。
4. 「動かなかった」と「動いて弱かった」を分ける
対象場面がなく行動を変えない案は、安い確認で止める。十分に動いた上で負けた案は、何度もやり直さず、強さの問題として閉じる。
5. 敗因につけた名前も疑う
当初「場のポケモンが全滅した」と分類した16敗は、詳しく見直すと本当の全滅が6敗だけだった。ログの見た目ではなく、攻撃回数や資源の変化まで確認する必要がある。
6. 評価方法も、エージェントと同じくらい作り込む
先攻と後攻の入れ替え、現行版との同時比較、未使用の初期条件、統計上の幅、時間切れ0、実験前に決めた停止条件。これらは慎重さの飾りではない。
何十個もの候補を試すと、偶然よく見える案は必ず出てくる。それを「改善」と誤認しないための仕組みだった。
現在地
2026年8月9日時点で、提出の中心は次の構成で凍結している。
- 2026年7月14日に確認した上位Alakazamの60枚。
- カードごとの使い方を記述したルール。
- 見えないカード配置を複数作り、有望な行動へ計算を集中する探索。
- 山札切れまでの攻撃回数と、勝利までに必要な攻撃回数を比べるP2-S補正。
この組み合わせは、修正後の採用条件を5項目すべて通過した。最終1,000試合では783勝216敗1分、全10種類の相手に勝ち越し、安全上のエラーは0だった。
8月6日には提出用ファイルを別の場所へ展開し直し、プログラムを読み込めること、デッキが60枚あること、主要カードの枚数、必要ファイルの内容が最終版と一致することまで確認して凍結した。
機械学習を完全に諦めたわけではない。ただし次に使うなら、既存の強い探索を丸ごと置き換える役ではなく、安定した教師データと十分な出番を先に確認できる、小さな補助に限る。
この開発で強くなったのは、AIだけではなかった。何を勝利と呼び、どの失敗を数え、どの魅力的な結果を採用しないか。最後までいちばん長く鍛えられたのは、評価方法そのものだった。
この記事は、2026年8月9日時点の実験記録をもとにした中間総括である。勝率はそれぞれの対戦相手、試合数、実行条件と一緒に読む必要があり、Kaggle本番での普遍的な強さを保証するものではない。