深層学習系の将棋ソフトでは主にPolicyを教師あり学習などで訓練する。しかし、将棋を普通にプレイしている上で出やすい手と出にくい手があると考えられ、正解ラベルにはクラスごとの偏りが大きくあると思われる。今回はその偏りについて調査した。
ラベルの作り方
Policyの出力はdlshogiと同じく、9×9マスに対して27方向から駒が動いてくる可能性があるとして、合計2187クラスのクラス分類として行っている。
指し手は全て先手のものとして見る。後手であれば盤面を180度反転させる。
27方向というのは、まず盤上の駒が動くものが上下左右斜めの8方向 + 桂馬の2方向で10方向あり、これらについては成りつつ動くものとそうでないものを区別して20方向とする。そして手駒から打つ指し手が歩、香車、桂馬、銀、金、角、飛車の7種類があり得るので、合わせて27種類ということになる。
より具体的には、方向の順番は
上、左上、右上、左、右、下、左下、右下、左上(桂馬)、右上(桂馬)
であり、成りなら+10する。手駒から打つ場合は20+歩、香車、桂馬、銀、金、角、飛車の順番となる。
マスのidは以下のようになっている。
たとえば8八に居る角を▲7七角と上がる手であるなら、7七のマスへ右上方向として動く移動であり、マスのidが60、方向のidが2になる。これらから60 + 2 * 81 = 222としてクラスラベルを作成する。
データ
普段検証データとして利用している、floodgateの2015年のデータを用いた。対局者のレートの高い方が3400を超える対局のみを抽出した。重複局面削除も導入して、50528局面が得られた。
重複局面削除の際には、一つの同じ局面についてPolicy正解ラベルは取りまとめている。(各指し手が指された割合に応じた値を正解値としている。)たとえば初期局面などは▲2六歩が30%、▲7六歩が25%、…以下指し手が続き、合計で100%になるようになっている(数値は例であり実際に確認したものではない)。
結果
頻度が多い順に並べると図のような結果になった。
上位の指し手を見てみると次のようなものであった。
順位 | 指し手の移動先 | 移動方向 | 頻度 | 割合 | 多そうな指し手 |
---|---|---|---|---|---|
1 | 2四 | 上 | 829.644 | 1.64% | ▲2四歩とか▲2四飛車 |
2 | 8六 | 上 | 687 | 1.36% | 相手の△8六歩に対する▲同歩 |
3 | 3六 | 上 | 635.693 | 1.26% | ▲3六歩 |
4 | 6六 | 上 | 587.545 | 1.16% | ▲6六歩 |
5 | 4六 | 上 | 559.747 | 1.11% | ▲4六歩 |
6 | 5六 | 上 | 458.679 | 0.91% | ▲5六歩 |
7 | 6五 | 上 | 449.611 | 0.89% | ▲6五歩 |
8 | 7七 | 右上 | 441.831 | 0.87% | ▲7七角 |
9 | 8八 | 左上 | 436.574 | 0.86% | ▲8八銀 |
10 | 3五 | 上 | 432.5 | 0.86% | ▲3五歩 |
11 | 3七 | 左上(桂馬) | 430 | 0.85% | ▲3七桂馬 |
要するに序盤の駒組で歩を突く指し手が多いということがわかった。ここまでで概ね10%ほどにはなっていると思われる。
指し手が一回でも正解ラベルに出てきたのは1411種類であり、1412番目以降の指し手は一回も正解ラベルとして現れていないようだった。
所感
前々から正解ラベルに偏りがあるだろうとは思っていたが、調べてみた感じでは思ったよりも偏りが大きいかもしれない。
詳しくないが、不均衡データに対してはたとえばFocal Lossなどが有効と聞いたことがある。
違う指し手が同じ正解ラベルになったりするので、通常の不均衡データとはまた事情が異なりそうではあるが、試してみるのはありかもしれない。