ゲーム構成要素を 組み合わせた特徴の最適化

ゲーム構成要素を
組み合わせた特徴の最適化
東京大学
矢野友貴, 三輪 誠
横山大作, 近山 隆
1
評価関数の設計
• 評価関数の設計
– 従来:手作業による設計
• ゲームに対する深い知識が必要
• 特徴の選択や重みの調整に膨大な時間と手間
– 近年:組み合わせ特徴の利用
• 知識に依らないシンプルな特徴
• 機械学習を利用した自動調整
2
組み合わせ特徴
• ゲーム構成要素を組み合わせた特徴
– 将棋では, [駒の種類]×[絶対位置]
• これを複数駒間で組み合わせる
– Ex) Bonanza (玉を含む3駒間の組み合わせ)
6
5
4
角
歩
三
銀
金
二
四
▲5三歩
▲6三金
▲5三歩
△4二角
▲5三歩
△5四銀
▲6三金
△4二角
▲6三金
△5四銀
△4二角
△5四銀
2駒間の組み合わせ特徴
3
組み合わせ特徴
• 組み合わせ特徴の問題点
– 組み合わせ爆発, 冗長性
– 計算資源による制約
限定的な利用
• 提案:ゲーム構成要素間の関連性に注目し
た組み合わせ特徴の絞り込み
– 局面評価に有効そうな組み合わせの抽出
• cf) 実現確率探索
– 将棋を対象に評価
4
本研究の貢献
• 局面評価に有効そうな組み合わせ特徴の絞
り込みを行う新しい手法の提案
• 高次の組み合わせ特徴の利用の実現
• 将棋における高次組み合わせ特徴の有用性
の評価
5
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
6
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
7
組み合わせ特徴と評価関数
• 駒の2項関係による評価関数 [T. Kaneko, et al., 2003]
– 既存の多くの評価要素
駒の2項関係として表現可能
– 2駒間では十分に表現できない特徴も
• Ex) 駒によって遮られている長距離効き
• 詰み評価関数の自動生成 [M. Miwa, et al., 2005]
– 「駒の位置」, 「利き」を組み合わせた特徴の抽出
• 飽和頻出パターン抽出, カイ二乗値による絞り込み
– 最大23要素の組み合わせ特徴
• 人手の評価関数に近い精度を実現
碁石のパターンへのハッシュ利用
[D. Silver, et al., 2007]
• 碁石の配置パターン (最大5x5)を利用した評価関数
– 4x3以上のパターンをハッシュにより圧縮
ハッシュ値が同じ
パターンで重みを共有
“D. Silver, et al., Reinforcement learning of local shape in the game of go, IJCAI’07”
より表を引用
8
実現確率探索
[Y. Tsuruoka, et al., 2002]
9
• 局面の実現確率を用いた可変深さ探索
– 各指し手の遷移確率を用いて実現確率を算出
– 遷移確率は棋譜から導出
• Ex) 激指ではロジスティック回帰を利用
現在の局面の実現確率
(遷移確率)
(実現確率)
Px  Pm  Px
指し手の
遷移確率
直前の局面の
実現確率
“Y. Tsuruoka, et al., Game-tree search algorithm based on realization probability, ICGA Journal 2002”
より図を引用
10
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
11
アプローチ
• 盤面を駒や升で構成されたグラフと考える
– 各ノードには「種類, 位置」のラベル
• 組み合わせ特徴 = グラフ上のパス
– パスの総数はとても多く, すべては展開困難
パスに重要度を定義して枝刈り
A
パス
B
A
B
B
C
・・・
D
・・・
E
C
D
展開
C
・・・
12
提案手法の評価関数
減衰定数により長いパス
(=高次組み合わせ特徴)の影響度を調整
f (w, G)   wii (G)
where i (G) 
i
d : パスの大きさの上限

| p|1
pG ,1| p| d , h ( p ) i ,
importance ( p ) threthold
重要度の高いパス
のみを利用
p : グラフ中のパス
h(p) : pのハッシュ値
λ : 減衰定数
ハッシュ関数を用いることで
パスのインデックスを計算
13
パスの展開と枝刈り
• 各要素間 (エッジ) に結合度を定義
– パスの重要度 = パス上のエッジの結合度の積
– 重要度が閾値以下のパスを枝刈り
選択されたパス
「A-B」, 「A-B-C」, 「A-B-D」, ・・・
0.5
0.5
0.4
0.2
C
B
1.0
0.08
B
cut
0.08
0.3
0.15
A
C
0.1
D
cut
E
0.05
・・・
閾値 = 0.1
最大長さ = 3
14
ハッシュ関数によるインデックス
• パスのインデックス
パスのハッシュ値
– Zobrist Hash [Zobrist, 1970] を利用
– 特徴の総数をハッシュサイズに抑え込む
• 2種類のハッシュ
– グラフのノードに乱数 (パスの経路を考慮しない)
– グラフのエッジに乱数 (パスの経路を考慮する)
rand(A)
rand(B)
rand(C)
A
B
C
rand(A-B)
rand(B-C)
hash(A-B-C)
= rand(A) ^ rand(B) ^ rand(C)
OR
= rand(A-B) ^ rand(B-C)
15
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
16
評価環境
• 将棋プログラム「激指」を利用
– 第20回世界コンピュータ将棋選手権のバージョン
• 激指の評価関数を変更することで実験
– 探索ルーチンには激指オリジナルを使用
– 評価関数のパラメタを学習させて評価
17
学習方法
• 「激指」の学習で用いられた手法を利用
– Bonanza Method [K. Hoki, 2006]
– Averaged Perceptron [M. Collins, 2002]
• プロ, アマ混合の30,000棋譜を用いて学習
– 探索はルート局面から深さ6相当
– 各局面で棋譜以外の手は16手をランダムに選択
18
評価関数
• ベースとして単純な駒割を利用
– 評価関数 = 駒割 + 各種手法
• 各種手法
– 提案手法:駒グラフ, 利きグラフ
– 比較手法:all_two, kkp_kpp, atkk
19
駒グラフと利きグラフ
6
5
4
駒グラフ
角
歩
三
銀
金
二
四
• 駒を全対全で結んだグラフ
• ハッシュの計算
ノード基準
• エッジの結合度
– 棋譜からロジスティック回帰により推定 (後述)
パスの長さの最大値は4に制限
6
5
4
角
二
歩
三
銀
金
利きグラフ
四
• 駒と升を利き (含む間接利き) で結んだグラフ
– パスの起点は駒に限定
• ハッシュの計算
エッジ基準
• エッジの結合度
– 利きがある:1.0, 利きがない:0.0
20
棋譜を利用した結合度の学習
• 「エッジ = 2駒間の関係」として学習
– LIBLINEAR (ロジスティック回帰, LR) を用いて学習
– 学習用の棋譜から訓練データを作成
データのラベルをチェック
y = +1 (if t0 == 先手),
-1 (if t0 == 後手)
t0
棋譜の手
t1
t2
・・・
tn
訓練データ (x, y)
ランダムに一つ手 (tj) を選択
エッジの差分を計算
x = edges(t1) – edges(tj)
21
学習された結合度の分布
• エッジの重み (w_e) を結合度 (p_e) に変換
pe,i
1

1  exp we,i 
※予稿集とは式が異なるので注意
8
p_e,i
正例 : p_e, i (p_e,i > 0.5)
6
占有率 (%)
4
2
0
2
4
6
負例 : 1,0 - p_e, i (p_e,i < 0.5)
8
0.5
0.6
0.7
0.8
p_e,i
0.9
正例(%)
負例(%)
0.9~1.0
0.016822
0.015848
0.8~0.9
0.058717
0.060234
0.7~0.8
0.236484
0.231238
0.6~0.7
2.387789
2.412282
0.5~0.6
25.243782
25.229019
計
27.942289
27.948621
※ p_e,i = 0.5 (i.e. w_e,i = 0) は含めていない
1.0
22
結合度の利用方法
• LRでは正例の分類確率が得られる
– 得られた結合度をそのまま扱うのは不適切
• 正例・負例で別々に重要度を計算
A
正例
負例
0.8
0.8
B
×
0.4
0.4
C
×
0.7
0.7
(1.0 - 0.8) × (1.0 - 0.4) × (1.0 - 0.7)
D
=
0.224
=
0.036
どちらかが閾値を超えるかチェック
23
比較手法
ハッシュを利用する 乱数の設定
特徴
名前
用いない
all_two
2駒の全組み合わせ
kkp_kpp
2玉と1駒の全組み合わせ
1玉と2駒の全組み合わせ
ノードに付与
atkk
2駒の全組み合わせ
2玉と1駒の全組み合わせ
1玉と2駒の全組み合わせ
ノードに付与
※条件をそろえるために, 提案手法で生成する盤面グラフを用いて実装
24
評価方法
• 評価基準は次の3つ
基準
詳細
一致率
学習に用いなかった500棋譜で計測
不一致度
学習に用いなかった500棋譜で計測
勝率
初手30手を固定 (100局面, 先手後手で計200試合)
1手あたりの探索ノード数を50万ノードに制限
※不一致度は以下の式を用いて計算
(M:棋譜の手以外の手の集合, t:最善応手手順後の局面)

1 N
不一致度   T wT  (t j )  wT  (t1 )
N i 0 jM i

1
T ( x) 
1  exp 3x / 100
25
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
26
実験
1. 駒グラフにおける4要素パターン
2. 駒グラフにおける枝刈りの閾値と精度
3. 既存手法との比較
a. all_two, kkp_kpp, atkkとの比較
b. 激指の既存評価関数を用いた比較
※実装の見直し, 手法の変更に伴い予稿集とは以降の結果が異なるので注意
27
1. 駒グラフにおける4要素パターン
• テスト用の500棋譜中の30~70手目の局面で
のパターンを列挙
– 重要度の高い4要素のパターンのうち上位100パ
ターンを抽出
– 既存手法との比較実験で得られた重みを用いて
パターンの評価値も調べる
• 減衰定数を0.5として計算
• パターンは重複してカウントさせるため, 最終的な評価
値は2倍の値を表記している
28
重要度が最も高いパターン
抽出されたパターン
▲2七歩 , ▲2八飛, ▲3七角, ▲3六歩
重要度
-0.779690
評価値
-45.6940
評価値の詳細
サブパターン
重み
▲2七歩 , ▲2八飛
-37.8101
0.5
▲2八飛, ▲3七角
-9.5258
0.5
▲3七角, ▲3六歩
-2.4587
0.5
▲2七歩 , ▲2八飛, ▲3七角
-0.7845
0.25
▲2八飛, ▲3七角, ▲3六歩
8.0595
0.25
▲2七歩 , ▲2八飛, ▲3七角, ▲3六歩
1.8526
0.125
“CC Resources for Shogi Applications”, http://www.muchonov.com/bona/
より画像の素材を利用
減衰
29
評価値が最も大きいパターン
抽出されたパターン
△1四歩 , △2二玉, △3二金, △2三歩
重要度
+0.621807
評価値
-192.9503
評価値の詳細
サブパターン
重み
△1四歩 , △2二玉
-25.9238
0.5
△2二玉, △3二金
-98.9921
0.5
△3二金, △2三歩
-33.7543
0.5
△1四歩 , △2二玉, △3二金
-21.1438
0.25
△2二玉, △3二金, △2三歩歩
-38.5311
0.25
△1四歩 , △2二玉, △3二金, △2三歩
-17.7706
0.125
“CC Resources for Shogi Applications”, http://www.muchonov.com/bona/
より画像の素材を利用
減衰
30
2. 駒グラフにおける枝刈りの閾値と精度
• 駒グラフに関して, パス生成時の閾値の違い
による精度の変化を調査
– 閾値:0.4, 0.45, 0.5, 0.55, 0.6
– 減衰定数は予備実験によって調整
– ハッシュサイズは2^24に統一
31
枝刈り閾値と精度の関係
閾値
11
10
精度が向上
不一致度
9
8
有効特徴数
一致率
不一致度
赤:0.4
8,452,262
37.8672
4.66838
緑:0.45
4,090,410
37.4666
4.70421
青:0.5
2,352,143
37.0758
4.78376
紫:0.55
605,469
35.7126
5.13301
201,162
水:0.6
精度の向上が鈍い
34.7554
5.59606
高次の特徴選択の正確さが低い可能性
※有効特徴数:非零のパラメタの総数
7
6
大
5
小
4
0
5,000
10,000
閾値0.5前後で
20,000
25,000
棋譜数 精度に開き
15,000
30,000
閾値
32
3-a. 既存手法との比較
• 利きグラフ, 駒グラフを用いた提案手法を既
存手法 (all_two, kkp_kpp, atkk) と比較
– 既存手法についても提案手法と同様に予備実験
により減衰定数を調整
– all_two以外はハッシュサイズを2^24で統一
– 速度はXeon X5560(2.8GHz)で測定
33
探索速度の比較
300,000
赤:速度
緑:平均評価特徴数
2,500
2,000
200,000
156,520
150,000
126,201
1,500
112,472
100,000
74,691
50,000
1,000
平均評価特徴数
探索速度 (nodes/sec)
250,000
275,578
3,000
500
0
0
all_two kkp_kpp
atkk
koma
kiki
※平均評価特徴数:局面評価で出現する特徴数の平均
34
精度・対戦比較
kkp_kppも精度で他に劣る
学習期間が足りない可能性
各種手法の有効特徴数と精度
手法
有効特徴数
一致率
不一致度
all_two
1,585,855
37.8710
4.77810
kkp_kpp
15,701,153
36.5022
5.06266
atkk
15,737,354
37.7703
4.67875
koma
8,452,262
37.8672
4.66838
kiki
16,777,214
36.7603
5.01192
駒グラフは不一致度が最も良い
駒グラフは既存手法と同程度の強さ
提案手法の比較手法及び相互対戦での勝率 (%)
利きグラフは精度で他に劣る
all_two
kkp_kpp
atkk
koma
kiki
\
利きのない組み合わせ特徴が欠落するため
koma
50.0
60.0
48.0
kiki
39.0
50.0
39.5
利きグラフは既存手法に対して負け越す結果
53.0
47.0
35
3-b. 激指の評価関数を用いた比較
• 激指の評価関数を利用した場合を評価
– 評価関数 = 激指の評価関数 + 各種手法
• パラメタの初期値として激指オリジナルを用いる
• 減衰定数は再調整
• 激指の評価関数部分にはハッシュを用いない
36
精度・対戦比較 with 激指
各種手法の有効特徴数と精度
手法
有効特徴数
none
一致率
不一致度
350,730
39.1640
3.77321
all_two
1,872,374
40.8526
3.59242
kkp_kpp
15,488,058
40.8386
3.57085
atkk
15,617,337
41.0516
3.53186
koma
8,180,896
41.0482
3.54278
kiki
17,127,676
41.3484
3.53955
利きグラフの精度が大きく向上
提案手法の比較手法及び相互対戦での勝率
(%)
空升も用いた組み合わせ特徴なのが影響した可能性
既存手法に対して同程度以上の成績
\
none
all_two
kkp_kpp
atkk
koma
57.5
52.5
44.0
52.5
kiki
58.0
52.0
46.0
50.5
koma
kiki
52.5
47.5
※none
: 激指の評価関数をそのまま学習したもの
kkp_kppに対しては精度と逆の成績に
37
提案手法に関するまとめと考察
• 提案手法における2つのグラフ
– 駒グラフ
• 既存手法を包括する特徴群であり, 単体でも精度大
• 閾値実験及び比較実験において精度向上
高次組み合わせ特徴の有用性
– 利きグラフ
• 疎なグラフとなるため, 単体では精度が出ない
• 激指の評価関数と併用することで効果あり
利きを用いた組み合わせ特徴の有用性
38
本発表の流れ
• 関連研究
• 提案手法
• 評価設定
• 実験
• おわりに
39
おわりに
• 組み合わせ特徴の絞り込むことで, 高次組み
合わせ特徴の活用法を提案
– 4要素までの組み合わせ特徴の利用の実現
– 既存手法と同程度以上の精度を獲得
• 今後の課題
– 空升の情報の活用
– 組み合わせ特徴の選別, 利用方法の改善
ご清聴ありがとうございました