☃️
浅いニューラルネットワークで作る高精度なオセロの評価関数 その2
前回の記事はこちら。
ニューラルネットワークのアーキテクチャ
最終的なアーキテクチャはこちらです。
変更点
- 入力パターンを合計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