MNISTやってみる!

(46)【Othello AI】オセロAIにも相性がある。

428 views

74個のモデルの総当たり対戦

現在までに、超パラメータを変えて学習させた全 74個のモデルがある。
どれもランダム指し手の相手に対して勝率 75%以上の猛者(?)たちだ。

どれが一番強いんだろう?
と、ふと気になったので、総当たりで対戦させてみることにした。

対戦ルール

ε=0とする。
すなわち、推論時の探索率を 0 にする。

探索率が 0ということは、Q学習で得られた Neural Networkのパラメータを使って対戦し続けるので、
「状態 → 行動 → 報酬」のロジックにランダム性が入る余地は0
であり、1000回対戦しても 1000回同じ結果になる。

つまり、ε > 0 に設定してランダム性を入れない限り、1000勝0敗 or 0勝1000敗になる。
絶対に 738勝262敗とかにはならない。

対戦結果

出場者数 74人の総当たりなので、
組合せ、すなわち 試合数 = 74 x 73 / 2 = 2701試合

いったい何時間かかるんだろうか・・・
と心配していたが、GeForce RTX 5070ti のパワーを使えば、たったの 1分で全 2701試合が完了した。

恐るべしGPU

星取表

全試合の結果をプログラムで CSVファイル出力させ、それを Excel上で色付けしてみた。
全 2701試合の星取表は、大きすぎて全体を見渡せない・・・

いやぁ、これを 1分でやってしまう 5070tiは本当に凄いわ。
5080, 5090はもっとすごいのか・・・

左上隅を拡大するとこんな感じだ。(勝利数の多い順)

栄えある第一位は、37番目に誕生したモデルで 勝率 78.6% だ。
Hyper parameterの記録が無いので、どんな学習をさせたかの記録が無い。→ 今後制作が進んだらモデルファイルに埋め込む予定

CvR値と対戦順位の比較

前回の投稿 (45)【Othello AI】強化学習でオセロAIを作る。 で記した CvR(勝手に作った指標)は、すべてのモデルを同じ物差しで比較するための指標だ。
CvR 10000 : ランダム指し手の相手と 10000回対戦したときの勝利数。レベルとも呼ぶ。
 → CvRの値が大きいほど強いはず!

今大会で優勝したモデルは、Lv.8314 と CvR値は第19位と決して高くはない。(CvRの大きい順)

でも、星取表を見ると、上位の強豪たちに対して多くの勝利 〇 を獲得している。

全体的には CvRの大きいモデルが上位寄りにいるが、CvRは絶対的な強さの評価指標にはなり得ない。
∵モデル間の戦術の違いに相性があるから。

だと思う。

こんな次元をはるかに超越した強さを獲得したモデルが、本物の強者なのだろう。

個別の対戦結果

いくつか気になった対戦結果をアニメーションにしてみた。
Python matplotlibと imageioライブラリを使うと、こんなことも簡単に出来てしまう。Pythonすごい!

(1) model#37〇 vs model#68●

今回の優勝モデルである #37 と CvRランキングトップの #68 との対戦だ。
結果は 18対18 の引分け。 前述の通り ε=0 であれば何回やってもこの結果になる。

(2) model#37〇 vs model#18●

今回の優勝モデルである #37 と最下位の #18 との対戦だ。
こちらも結果は 18対18 の引分けだった。

(3) model#37〇 vs model#22●

今回の優勝モデルである #37 と準優勝の #22 との対戦だ。
結果は 21対15 でチャンピオンの勝ち。

(4) model#68〇 vs model#69●

CvRランキング第一位の #68 と第二位の #69 との対戦だ。
結果は 3対22 で #69の勝ち。
しかも、途中でお互いに石を置く場所がなくなり… (両者パスで試合終了)

vs 人間(私)

今回の優勝モデルがどれだけ強いのだろうか?
私が人間代表として対戦してみた。

結果は・・・

思わず
「なんじゃこりゃ・・・」
と声が出てしまった。

弱い、弱すぎる・・・

まだまだ強化が必要です。

所感

・今日までの CvR最高値は 8855 であり、目標の CvR 9500 に少しだけ近づいた。
 でも、ここからの +645 はとてもしんどい上り道だ。

・なかなか面白いが、壁にぶち当たっている気がする。
 Break throughするためには何が必要か?
 ネット上を徘徊して先人のお知恵を拝借したい。

・高速な GPU実行環境を使えるのだから 6×6ではなく正式な 8×8盤面 で学習させてみようかとも思う。
 でも…
 目的は「私(人間)の学習」なので、試せる回数が多い 6×6のまま制作を進めよう。

残課題

投稿後に気づいたのだが…
先攻、後攻を変えると勝敗が変わるケースがある!

当然と言えば当然だが、
ランキング集計時には両方の結果を使う必要がある。

後日やり直そう…
試合数は 2701 x 2 = 5402試合
になるが、GeForce RTX 5070ti が2分以内に実行してくれるはず。


アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済
  • 2025-10-06: 0回
  • 2025-10-05: 0回
  • 2025-10-04: 0回
  • 2025-10-03: 2回
  • 2025-10-02: 0回
  • 2025-10-01: 1回
  • 2025-09-30: 1回
  • モバイルバージョンを終了