Twohotエンコーディングを試す

要約

 Value分布の学習にTwo-hotエンコーディングを試してみたけど特に明確な効果はなかった。

背景

を読んでいたところ、Criticの学習でtwohotエンコーディングをすると書いてあった。

 これ自体はこの論文の新規性というわけではないはずで、実際に33から36あたりの参考文献が引かれているのでそれらに明確に同じものがあるか、少なくともカテゴリカルDQNの元論文である33にある式をデルタ関数に対して適用すると自然にこうなるものでもある気がする。

 今まで自分のソフトウェアでは、Valueがどこのカテゴリカル分布のうちどこのビンに入るかを計算し、そのビンに確率1の分布とするonehotエンコーディングでラベルデータを作成していたので、今回はそれをtwohotエンコーディングに変えて学習をした。

変更の概要

 ある価値 vをカテゴリカル分布の教師ラベルとするとき、 vが分類される一番近い2つのビンについて、期待値がちょうど vになるようにその2つへの確率を上手く割り当てるようにする。

 たとえば v = 0.404であれば、以前のonehotエンコーディングだと青い1つのバー、twohotエンコーディングだとオレンジの2つのバーで表現されることになる。

 twohotエンコーディングの方がちゃんと教師ラベルの期待値が vそのものとなるので多少良いはず。

結果

学習結果

左: Policy損失 右: Value損失

 特に差はなさそう。

対局結果

 水匠ver.5のNodesLimit=100000と対局させた。

エンコーディング 対局数 勝数 引分数 負数 勝率 相対Eloレート
onehot 490 235 0 255 48.0% -14.2
twohot 500 276 5 219 55.7% +39.8

 レート差50程度。正直有意差があるのかよくわからない。

 悪化はしていなさそうなので、とりあえずmasterブランチには投入しておくことにする。