研究ノート

何を試して、どうなって、どこで詰まっているか。

v1.0 サイト公開前(2026-10-31)までの記録。最終更新 2026-11-01

目次
  1. はじめに
  2. 先行研究
  3. 研究の経緯
  4. 想定される批判
  5. 課題(Issues)
  6. AI のソースコード
  7. 参考文献

1はじめに

チェスでは1997年に Deep Blue が世界王者に勝ち(Campbell et al., 2002)、囲碁では2016年に AlphaGo がトップ棋士に勝った(Silver et al., 2016)。その後 AlphaZero は、人間の棋譜を使わず自己対戦だけで、チェス・将棋・囲碁のいずれでも人間を大きく上回った(Silver et al., 2018)。これらのゲームでは、人間の理解を超えた水準まで最適な指し手・打ち手の探索が進んでいる。

しかし、文明シミュレーションのような戦略ゲームでは、人間の熟練者に勝ち越す AI はまだない。Civilization IV: Beyond the Sword(2007年。以下 Civ4)のルールは、すべて計算式と乱数で定義されている。それにもかかわらず、最適な戦略は分かっていない。

Civ4 は、少数の単純な要素(タイル、ユニットの移動、都市、生産、研究、戦闘)の組み合わせで構成される。要素の1つ1つは単純だが、全体を同時に最適化しようとすると、取りうる行動の組み合わせは急速に増大する。熟練者はこれを経験と直観で扱っており、プレイヤーの間には腕を競う文化がある。また、開発元はゲームの中核部分のソースコード(SDK)を Mod 制作向けに公開しており、計算を1つずつ検証できる。

Civilization 系のゲームを題材にした研究は過去にもあるが(2章)、計算資源と開発の手間が大きな制約だった。本研究は、現在の計算機と、AI によるコーディング支援(Claude Code など)を用いれば、個人の規模でも検証済みの Civ4 のシミュレーターを作り、大量の試合で戦略を探索できると考え、この空白を埋めることを目指す。

Civ4 の対人戦は、3人以上で遊ぶことが多い。しかし人数が増えると、外交、同盟、第三者の介入など、扱う変数が大きく増える。そこで本研究は、まず問題設定を1対1の対戦に限定し、そこで確立した方法を多人数へ拡張する。

チェス囲碁StarCraft IICiv4
情報完全情報完全情報不完全情報(霧)不完全情報(霧)
1回の意思決定の範囲駒1つ石1つ多数のユニットの同時制御全都市の生産・市民配置・労働者・軍・研究・税率
確率的要素なしなし少ない戦闘・小屋・イベント
1試合の長さ数十手数百手十〜数十分数十〜数百ターン
人数22主に22〜18、外交あり
AI が人間の第一人者に勝った年199720162019(グランドマスター級)未達

2先行研究

戦略ゲームは、AI 研究の最前線でベンチマーク(手法の性能を比べる共通の課題)として使われ続けてきた。理由は主に3点ある。ルールと勝敗がはっきりしており、AI の判断の良し悪しを客観的に測れる点。人間の熟練者が長く遊んできたため、人間の知性と直接比べられる点。そして、新しい種類のゲームを扱うたびに、現実の意思決定に含まれる難しさ(不完全情報、多人数、チームでの協調、交渉、長期的な計画)を、AI が1つずつ扱えるようになってきた点である。戦略ゲームは、人間の意思決定と機械の意思決定を同じ土俵で比べられる、現実の縮図である。

世界の主要な AI 研究機関が、この系譜に名を連ねている。

ゲームAI(研究機関)年新たに扱った課題
チェスDeep Blue(IBM)1997大規模な探索
囲碁AlphaGo(DeepMind)2016膨大な探索空間、直観的な形勢判断
ポーカー(6人)Pluribus(カーネギーメロン大学・Meta)2019不完全情報、多人数
StarCraft IIAlphaStar(DeepMind)2019実時間、多数のユニットの同時制御、不完全情報
Dota 2OpenAI Five(OpenAI)20195対5のチーム協調、長い時間軸
王者栄耀絶悟(Tencent)2020多数のキャラクターの組み合わせ
ストラテゴDeepNash(DeepMind)2022不完全情報下の長期戦、ブラフ
ディプロマシーCICERO(Meta)2022自然言語による交渉、協調と裏切り
CivilizationCiv II の研究(MIT ほか)、CivRealm(BIGAI ほか)2012・2024上のすべてを同時に。未解決
  • AlphaZero は、自己対戦だけでチェス・将棋・囲碁の人間を超えた。盤面が全部見え、1手が小さいゲームでの成果である。 Silver, D., Hubert, T., Schrittwieser, J., et al. (2018). A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play. Science, 362(6419), 1140–1144.
  • Pluribus は、6人で遊ぶポーカーでトップのプロに勝った。不完全情報かつ多人数のゲームでの成果である。 Brown, N., & Sandholm, T. (2019). Superhuman AI for multiplayer poker. Science, 365(6456), 885–890.
  • AlphaStar は StarCraft II でグランドマスター級に達した。白紙からではなく、人間の対戦記録からの模倣学習で始め、強化学習の間も人間のプレイを手がかりとして使い続けた。 Vinyals, O., Babuschkin, I., Czarnecki, W. M., et al. (2019). Grandmaster level in StarCraft II using multi-agent reinforcement learning. Nature, 575(7782), 350–354.
  • OpenAI Five は、5対5のチーム戦の Dota 2 で、2019年に世界王者のチームに勝った。数千の GPU を数か月使う、大規模な強化学習による。 Berner, C., Brockman, G., Chan, B., et al. (2019). Dota 2 with large scale deep reinforcement learning. arXiv, 1912.06680.
  • Tencent の絶悟は、5対5のチーム戦の王者栄耀で、選べるキャラクターを絞らずにプロ選手に勝ち越した。 Ye, D., Chen, G., Zhang, W., et al. (2020). Towards playing full MOBA games with deep reinforcement learning. Advances in Neural Information Processing Systems (NeurIPS 2020), 33.
  • DeepNash は、相手の駒の正体が見えない軍略ボードゲームのストラテゴで、人間の熟練者と同等の水準に達した。 Perolat, J., De Vylder, B., Hennes, D., et al. (2022). Mastering the game of Stratego with model-free multiagent reinforcement learning. Science, 378(6623), 990–996.
  • CICERO は、7人で同盟と裏切りを繰り返すディプロマシーで、プレイヤーと自然な文章で交渉しながら、オンラインのリーグで上位10%に入った。外交のある多人数の戦略ゲームとして、Civ の多人数戦に最も近い。 Meta Fundamental AI Research Diplomacy Team (FAIR), Bakhtin, A., Brown, N., et al. (2022). Human-level play in the game of Diplomacy by combining language models with strategic reasoning. Science, 378(6624), 1067–1074.
  • Civilization II を題材に、ゲームの取扱説明書の文章を手がかりにしてモンテカルロ探索の行動選択を助ける方式が提案され、ゲームに組み込まれた AI に対して 65% 以上勝った。 Branavan, S. R. K., Silver, D., & Barzilay, R. (2012). Learning to win by reading manuals in a Monte-Carlo framework. Journal of Artificial Intelligence Research, 43, 661–704.
  • CivRealm は、Freeciv を使った研究用の環境である。強化学習は限定した部分課題(ミニゲーム)では一定の成果を出したが、ゲーム全体では強化学習も大規模言語モデルも十分な成果を上げていない。 Qi, S., Chen, S., Li, Y., et al. (2024). CivRealm: A learning and reasoning odyssey in Civilization for decision-making agents. International Conference on Learning Representations (ICLR 2024).
  • Civ4 では、Better BTS AI や K-Mod が、ルールを手で書き足す方式(ルールベース)で内蔵 AI を改良した。プレイヤーの間では、それでも上級者には及ばないと評価されている。

まとめると、AI は隠れた情報、多人数、チーム、交渉といった難しさを、ゲームごとに1つずつ克服してきた。しかし、それらをすべて同時に含み、1回の意思決定の範囲が広く要素の多い文明シミュレーションは、研究が進んでいない。Civ4 の対人戦を正面から扱った研究は、調べた範囲では見当たらない。

3研究の経緯

以下の「実験者」は本研究の実施者を指す。Civ4 BtS の対人戦のプレイ歴は、のべ約4年である。

3.1背景:近年の機械学習の方式

近年成果を上げている AI(AlphaZero、AlphaStar、大規模言語モデル)は、共通して次の形をとる。大量のパラメータ(重みと呼ばれる数値)を持つ関数(ニューラルネット)を用意し、大量のデータや自己対戦の結果から、損失(誤差)が小さくなる方向へパラメータを少しずつ動かす(勾配降下法)。個々のパラメータに人間が読める意味はなく、意味は大量のパラメータの組み合わせとして後から現れる。チェスや囲碁では、駒や石の配置という単純な入力から、人間が言語化できない局面評価のパターンをこの方法で獲得した。

3.2最初の方式:すべてを平らな行動として扱い、勝敗だけで最適化する

最初は、この形に倣い、AI の選択を、人間の解釈を挟まない平らな行動の集まり(行動空間)として扱い、「勝ったかどうか」だけを目的関数にして、大量の自己対戦で一括して最適化しようとした。序盤の作戦6通りと首都の候補43か所を、それぞれ千試合以上の自己対戦で比べた。

差は、開始位置の有利不利や、50ターン以降の戦争の出来によるノイズに埋もれた。勝ちやすいと出た首都の場所も、実験者が選ぶ場所ではなく、その時点の AI の弱さに合わせた答えだった。

根には鶏と卵の関係がある。勝敗という遅れて届く報酬から、どの選択が勝ちに寄与したかを特定するのはもともと難しい(強化学習でいう信用割り当て問題)。そのうえ AI(エンジン)が弱いうちは、勝敗そのものが選択の良し悪しを正しく映さない。選択の良し悪しが分からなければ、AI は強くならない。一般にこれは難しい問題とされるが、近年の AI は、大量の自己対戦と計算資源(GPU などの並列計算)でこの循環を突破した。AlphaZero は、ランダムな初期状態から自己対戦だけで人間を超えた。

3.3Civ4 の構造:意味の付いた要素の組み合わせ

チェスや囲碁は、規則が極端に単純で、駒や石そのものには意味がない。人間はそこに定跡や大局観という抽象的な枠組みを当てはめて理解するが、その枠組みは実際の最善とずれることがある。AI は大量のパラメータの組み合わせによって、そのずれを越えたパターンを見つけた。

Civ4 は逆である。人口、研究、生産、幸福、衛生、戦闘、指導者の志向など、要素ごとの意味と計算式が、ゲームの設計者によって最初から与えられている。プレイヤーの腕は、パターンを見つけることよりも、意味の決まった要素をどう組み合わせ、どの場面でどれを優先するかに出る。形の決まったブロックで城を組む作業に近い。

この構造のゲームで、すべてを平らな行動として扱い、鶏と卵を大規模計算で突破しようとすると、組み合わせ爆発が問題になる。1ターンに決めることは全都市・全ユニットに及び、ユニット1体の1マスの移動まで行動として扱うと、行動空間は要素の数に対して指数関数的に大きくなる。MacBook Air はもちろん、大規模な計算資源を使っても、この方向は対象の構造に合っておらず、筋がよいとは言いにくい。

チェス・囲碁・言語では大規模計算による方式が通用したのに、ここで通用しにくいのはなぜか。計算資源の差だけではなく、行動空間の大きさと、ルールが意味の付いた式としてあらかじめ与えられているというゲームの構造によるのではないか。これが現時点の仮説である。AlphaStar が白紙からではなく人間のプレイを土台にしたことや、CivRealm でゲーム全体が苦戦していることも、この見方と矛盾しない。

方針:上級者の原則(名前の付いた戦略や判断の軸)を事前知識として AI に組み込み、その混ぜ方、優先順位、場面に応じた評価などを学習で詰める。

3.4原則を手で足していく

実験者が AI の試合を10ターンずつ振り返る誤り分析を行い、言葉での指摘を理由・適用条件つきの原則に翻訳して AI に組み込んだ(約100個)。新旧の AI を同一の地図・乱数シードで対戦させる対照実験で、効果を測定した。

測定したものの多くは勝率 0.5 前後にとどまり、明確な改善を示したものは少なかった。「この場合は人口1で開拓者、この場合は人口4」「ただしこういう時は別」といった場面ごとの例外を、すべて式として書くことになり、書く量に終わりが見えなかった。ある直しが、前に教えた動きを崩していたこともあった。これはルールを人手で書き連ねる古典的なルールベース AI(エキスパートシステム)と同じ道で、パラメータを学習で自動的に改善するという、近年の機械学習の強みを使えていなかった。

3.5学習が効いた所:首都の場所

開始時の首都の場所は、1問ごとに正解のある教師あり学習の問題として扱える。本物の開始画面から132問を作り、実験者の解答を教師データとして、地形や資源の約30個の特徴量の重みを学習させた。

問題を増やすと、1つ抜き交差検証での正解率が下がった時期があり(73% → 59%)、原因はデータ不足ではなく特徴量の定義だった。実験者の判断理由に合わせて食料の数え方を分け直すと 73% に戻り、データを増やすほど正解率が上がる形になった。同じ問題で小さなニューラルネットを試すと、訓練データでは 97% だったが、未知の問題では 53% に下がった。データ数に対してモデルの表現力が高すぎ、訓練データ固有の癖まで覚えてしまう過学習である。

適切な特徴量(判断の軸)があれば、少ないデータからでも学習で詰められる。同じことを1ターン目、10ターン目、50ターン目と広げていけば、試合全体に届く見込みがある。

3.6シミュレーター(以下、業務用 Civ4)

学習には大量の試合が要るが、本物の Civ4 は画面・アニメーション・操作のための処理が重く、大量の試合を回せない。そこで、ルールの計算だけを行う Civ4 を Python で書いた。

  • 処理の順番:ルールはゲームの中心のソースコード(C++)とデータ(XML)に散らばっており、処理の順番まで合わせないと結果がずれる。たとえば交易路はターンの処理の最後に計算し直され、次のターンから効く。無政府期間でも研究は少しだけ進む。
  • 戦闘:勝敗は乱数で決まり、勝率・撤退・巻き添え・回復・要塞化・砲撃などの細かい規則がある。照合表を作り、ソースコードと1つずつ照合した。軍の動かし方は、実験者の指摘を受けて v1 から v5 まで作り直した。
  • 実行速度:同じ計算の使い回しで、1試合 14.5秒 → 9.2秒(150ターン)。現在は80ターンの試合が約3.5秒で、MacBook Air(Apple M2)で7並列、1時間に約7,000試合。

検証:実験者が本物の Civ4 で打った試合の手を流し込み、毎ターン状態を比べる。蛮族・小屋ありの試合で T0〜T49 の50ターンが完全に一致した。規則は、この照合(差分テスト)に通ったものを信頼する方針とし、AI がシミュレーターの誤りを突いて見かけの強さを得る(いわゆる reward hacking)のを防ぐ。外交や諜報など、対象外の要素は実装していない。

3.7いまの方式:特徴量を設計し、パラメータを最適化する

学習を、性質の違う2つの作業に分ける。

特徴量設計
AI が判断に使う観点(特徴量)を決める。AI が見ていない判断の軸を見つけ、AI が扱える形にする。値はここでは決めない。例:「蛮族を見張る」という判断を AI に加え、その強さを決めるパラメータ(何体置くか)を用意する。何を特徴量とすべきかは、ゲームのシステムと戦略に熟練していなければ見当がつかない。そのため、人間の知見が欠かせない工程である。
パラメータ最適化
決まったパラメータの値を、機械が探す。現在は25個のパラメータを、少しずつずらした候補6つと元の AI を40試合ずつ対戦させ、勝った方を残す方法((1+λ) 進化戦略。勾配を使わないブラックボックス最適化の一種)で探している。模倣学習の段階では、首都の場所と同じく勾配法で最適化する予定である。
特徴量設計 → パラメータ最適化(大量の試合) → 試合を人間が見る → 欠けている特徴量が見つかる → 特徴量設計 → …

パラメータ探索の最初の9世代では、元の AI に勝ち越す候補は出なかった(勝率 0.57 の候補も、検証の60試合では 0.47)。40試合での勝率の標準誤差は約 ±8% で、小さな差はノイズに埋もれる。

3.8データの収集:3つの経路

公開サイト「大先生MOD」の3つの遊び方は、3.7 の2つの作業に使うデータの収集経路として設計している(括弧内はサイトでの呼び方)。

人間による誤り分析(観戦してツッコむ)
特徴量設計の材料。誤り分析として、AI の試合を見た人間の「この観点が抜けている」という指摘から、欠けている判断の軸を見つける。選手として強いことより、ゲームをよく見ていて判断の切り口を言葉にできることが効く。1人の視点だけでは、特定の戦略や思い込みへのバイアスが生じる。
対戦記録からの模倣学習(セーブで教育する)
パラメータ最適化の材料。経験のあるプレイヤーが実際に打った手を、局面ごとの教師データとして模倣学習に使う。
人間との対戦による挙動テスト(直接わからせる)
学習した AI が、人間相手の実戦で意図どおりに動くかを検証する。自己対戦では出にくい局面や、人間に突かれる弱点が見つかる。試合数は少ないため、パラメータ最適化の材料ではなく確認の手段として使う(準備中)。

4想定される批判と本研究の立場

  • 計算資源が足りないだけではないか。大規模な GPU を使えば、平らな行動空間のままでも解けるのではないか。この可能性は否定しない。3.3 は現時点の仮説である。ただし、大規模計算で成功した StarCraft II や Dota 2 の研究も、人間のプレイを土台にしたり、行動空間や報酬の設計に人手の工夫を入れたりしている。本研究は、限られた計算資源のもとでは、ゲームの構造を利用する方が筋がよいという立場をとる。大規模計算での検証は、将来の比較対象として価値がある。
  • 人間の原則を組み込むと、AI は人間の限界を超えられないのではないか。AlphaZero は人間のデータを使わずに強くなった。特徴量は人間が設計するが、その混ぜ方や優先順位といったパラメータは自己対戦で最適化するため、人間が試していない組み合わせは見つかりうる。一方、特徴量そのものにない発想は見つけられないという限界は認める。まず熟練者の共通認識をミスなく実行する AI を作り、その後、固定した部分を段階的に学習の対象へ開いていく。
  • シミュレーターは本物の Civ4 と同じなのか。シミュレーターで強くなっても、本物で通用するとは限らない。本物の試合を流し込み、毎ターン状態を照合している(3.6)。規則は照合に通ったものを信頼し、外交や諜報などの対象外の要素はそもそも実装していないため、AI も使えない。ただし、一致を確かめたのは記録した1試合の T0〜T49 までで、学習に使う試合(80ターン)の後半や、記録にない局面での一致は保証されていない。照合する試合と範囲を広げることを、研究の前提条件として扱う。
  • 判断の基準が実験者1人に依存しており、主観に偏るのではないか。首都の場所の教師データや、原則の元になった誤り分析は、実験者1人のものである。この偏りを減らすために、公開サイトで多数のプレイヤーから誤り分析と対戦記録を集めている(3.8)。
  • 1対1の対戦は、Civ4 の本来の遊び方ではないのではないか。対人戦の多くが3人以上で行われることは認識している(1章)。変数を減らすために問題設定を絞っており、多人数への拡張は課題として明示している(5章)。
  • 集めたセーブデータが、強いプレイヤーの手とは限らない。すべてを混ぜて平均するのではなく、試合の結果や成績(勝った側、上位のプレイヤーなど)で選別して模倣学習に使う。この方針は、セーブを送る人に向けてサイトにも明記している。
  • 勝率の差は、統計的に意味のある差なのか。40試合での勝率の標準誤差が約 ±8% であることを前提に、候補が勝ち越した場合は追加の60試合で再検証してから採用している(3.7)。小さな差を見分けるには試合数が足りないことは認識しており、試合数と検証の方法を改善していく。
  • ChatGPT や Claude のような大規模言語モデルに打たせればよいのではないか。大規模言語モデルは、文章の続きを予測するように学習されたモデルであり、ゲームに勝つように学習されたものではない。チェスでも、専用のエンジン(Stockfish など)には遠く及ばない。言語モデルが外部のエンジンを呼び出して強く打つことはできるが、それは判断をエンジンに任せているだけで、エンジンがまだ存在しない Civ4 では成り立たない。また1試合に数千回の判断が必要で、1手ずつ問い合わせると速度と費用の両面で大量の試合を回せない。CivRealm でも、ゲーム全体では大規模言語モデルは十分な成果を上げていない(2章)。本研究では言語モデルを、試合中の判断ではなく、エンジン(シミュレーターと AI)を作る開発の支援(Claude Code)に使う。

5課題(Issues)

  • セーブデータのパーサセーブのファイルから、毎ターンの局面と打った手を取り出す
    Pythonファイル形式の解析
  • 評価関数局面から、勝利までのターン数を予測する
    機械学習
  • 上位方針の特徴量内政で伸ばすか攻めるかの切り替えを、AI が選べるようにする
    Civ4 の戦略の知識
  • 強さの評価尺度人間の熟練者と比べられる、レーティングのような尺度
    統計
  • 多人数対戦への拡張業務用 Civ4 に外交(国境開放・和平など)を入れ、3人以上へ広げる
    Civ4 のルールの知識

6AI のソースコード

観戦席で打っているのはこの AI である。内政・戦闘・蛮族の見張りのモジュールを組み合わせたもので、そのパラメータを自己対戦の勝率で最適化していく。

業務用 Civ4ルールの計算だけを行う Civ4
Python・約1万行
AI内政・戦闘・蛮族の見張り
Python・約4千行
学習25個のパラメータを自己対戦で最適化
1試合 約3.5秒・7並列
# AI のパラメータの一部(最適化前の初期値)
ATTACK_RATIO   = 1.25  # 軍事力がこの倍以上なら攻める
LAUNCH         = 8     # 出発に要る主力の数
WATCH_PER_CITY = 0.7   # 都市1つあたりの蛮族の見張り
WATCH_MAX      = 5     # 見張りの最大数

公開予定公開用に整えてから出す。

参考文献

← 大先生MOD に戻る