☃️

浅いニューラルネットワークで作る高精度なオセロの評価関数 その2

に公開

前回の記事はこちら。
https://zenn.dev/natsuatsui/articles/c1d9aa50acb347

ニューラルネットワークのアーキテクチャ

最終的なアーキテクチャはこちらです。

変更点

  • 入力パターンを合計8種類から22種類に増やした。
  • 入力パターン増加に伴う計算量増を抑えるため、最初の隠れ層のサイズを「512 + 128」から「196 + 96」に縮小。
  • 活性化関数の一部をClipped Leaky ReLUに変更。

変更1: 入力パターンを追加

オセロの盤面評価において重要と考えられる辺と斜めのパターンを追加しました。

最初の隠れ層のサイズを「512 + 128」から「320 + 96」に変更しました。

効果

互角局面集のXOTを使って前回のバージョン(v0.1.0)とLevel 1で対局した結果:

  • 総局数: 21568(勝ち11359 / 負け9582 / 引き分け627)
  • Elo差: +28.69 (勝率換算54.12%)

変更2: さらに入力パターンを追加

以下のパターンを追加しました。

このパターンはGemini2.5 Proの提案によるもので、

2x4 (または 4x2) パターン: 辺とその隣の列(行)を組み合わせることで、辺の安定度や相手の侵入の可能性を評価しやすくなります。

ということらしいです。
最初の隠れ層のサイズは「192 + 96」に変更しました。

効果

v0.2.0 (Level 1)との対局結果:

  • 総局数: 21568(勝ち11512 / 負け9375 / 引き分け681)
  • Elo差: +34.54 (勝率換算54.95%)

変更3: 活性化関数をClipped Leaky ReLUに一部変更


以前の検証で小規模ネットワークに有効と分かっていたClipped Leaky ReLUを一部で採用しました。活性化関数の出力を[-16, 111]の範囲にクリップした後、[0, 127]にシフトすることで、AVX2の_mm256_maddubs_epi16を活用できるようになり、計算速度の低下を抑えています。

効果

  • v0.3.0 (Level 1)との対局結果:

    • 総局数: 21568(勝ち10741 / 負け10151 / 引き分け676)
    • Elo差: +9.51 (勝率換算51.37%)
  • v0.1.0 (Level 1)との対局結果:

    • 総局数: 21568(勝ち12580 / 負け8336 / 引き分け652)
    • Elo差: +69.27 (勝率換算59.84%)

強豪ソフトと比較

  • Edax v4.6(Level 1)との対局結果:

    • 総局数: 21568(勝ち18470 / 負け2774 / 引き分け324)
    • Elo差: +321.00 (勝率換算86.39%)
  • Edax v4.6(どちらもLevel 5 probcut無し)との対局結果:

    • 総局数: 21568(勝ち17529 / 負け3271 / 引き分け768)
    • Elo差: +276.11 (勝率換算83.05%)
  • Egaroucid v7.6.0(Level 1、-nobook)との対局結果:

    • 総局数: 21568(勝ち16120 / 負け4967 / 引き分け481)
    • Elo差: +198.87 (勝率換算75.86%)

まとめ

Level 1で比較すると精度はかなり高いように見えるが、深く読むほど精度の差は縮まる傾向がある。探索速度を犠牲にしてネットワークを大きくするか、その逆にするか悩ましいところ。現状は中途半端な感じがする…。

リポジトリ

Discussion