左右反転によるデータ拡張

要約

 左右反転によるデータ拡張を行うことで性能を落とさず学習速度を2倍にできた。

背景

 囲碁では左右反転や回転などを利用してデータ拡張することができ、本家AlphaZeroでも

の下の方にあるSupplementary Materialsに掲載されているFigure S1

f:id:tokumini:20191227145141p:plain

において、同じ学習時間で比較したときにはこのようなデータ拡張が有効であると示されている。

 将棋では回転は利用できないので左右対称だけの2倍にしかならず、また飛車角の初期位置自体は左右非対称なので左右反転したデータが良いデータかはわからないが、ものは試しということで実装・実験を行った。

実験

 いつも通りのAlphaZero式強化学習を、左右反転によるデータ拡張あり/なしで比較した。データ拡張を入れる場合、対局を行ってリプレイバッファにデータを格納する際、盤面及び指し手の教師ラベルを左右反転させたものを同時に格納する(Valueの教師ラベルは同じものを使う)。

実験結果

  • validation損失

f:id:tokumini:20200217105303p:plainf:id:tokumini:20200217105310p:plain
左:Policy損失 右:Value損失

 Policy損失については左右反転によるデータ拡張を行った方が小さい値となった。Value損失はほぼ変わらなかった。

  • 対局結果

f:id:tokumini:20200217113251p:plain

 最後のステップでやや伸びているが、基本的に同程度の性能だった。

 データ拡張により生成速度はほぼ2倍になっており、現在Miacisでは生成速度に応じて自動的に学習時間を調整しているため学習時間が半分で済むようになった。上で示したグラフを、横軸に学習時間を取って描画し直すと次のようになる。

f:id:tokumini:20200217113534p:plainf:id:tokumini:20200217113538p:plain
左:Policy損失 右:Value損失

f:id:tokumini:20200217113558p:plain

 2080ti×2のマシンで学習全体は約186時間 ≒ 8日程度となった。