TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

将棋でディープラーニングする その40(入力特徴に履歴追加)

その39からずいぶん期間が空きましたが、AlphaGo Zeroの論文を読んで試したいことができたので、AlphaGo Zeroの論文の方法が将棋AIに応用が可能か少しずつ試していこうと思います。

AlphaGo Zeroの特徴については、別の記事に記載していますので、参照してください。

AlphaGo Zeroでは、入力特徴は現局面を含む8手までの履歴局面の石の座標になっています。
入力特徴に履歴が必要な理由は、論文では囲碁にはコウがあるためと説明されています。

将棋にはコウはありませんが、駒の取り合いや千日手があるため、履歴の情報は有用と思われます。

前回までに作成したニューラルネットワーク(Wide ResNet、5ブロック、PolicyとValueの同時出力)の入力特徴に履歴を追加して試してみました。

入力特徴は、前回までと同様に駒の配置と持ち駒、王手がかかっているか、効き数の情報を8手まで持たせます。

学習局面は、elmo_for_learnで履歴も出力できるようにして探索の深さ8で生成しました。学習前に重複を排除してシャッフルしています。

※2017/11/3 データに誤りがあったので修正しました。

履歴あり/なしの比較結果

測定条件
  • 訓練データ:7000万局面
  • テストデータ:100万局面
  • 1000万局面ごとに評価
  • SGD(学習率:0.01)
  • ミニバッチサイズ:64
  • policyとvalueマルチタスク学習
  • policyは勝敗をアドバンテージにした強化学習
  • valueは勝敗をelmoの探索結果でブートストラップして学習
average train loss

f:id:TadaoYamaoka:20171103143117p:plain
※policyとvalueの損失の合計

test loss

f:id:TadaoYamaoka:20171103143137p:plain
※policyとvalueの損失の合計

test accuracy policy

f:id:TadaoYamaoka:20171103143210p:plain

test accuracy value

f:id:TadaoYamaoka:20171103143233p:plain

学習時間
時間/1000万局面
履歴あり 1:46:33
履歴なし 1:21:41

考察

予想に反して、履歴ありの方がpolicy、valueともにtest accuracyが小さくなっている。
将棋では囲碁のコウのように履歴の情報が重要になることが少ないことが関係しているかもしれない。
駒の取り合いや千日手となる局面においては精度がどう影響しているかは気になるが、今回の結果からは履歴は入れない方がよさそうである。

また、学習時間は、履歴を増やしたことで約1.3倍になった。