GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

ちょっとだけ改良

 えー、まず現状から。

 GA将!!!!!!では、自己対戦での学習時の方策*1にはBoltzmann分布をベースとしたソフトマックス方策を使っています。

 で、これは「基本的にはランダムに手を選ぶが、評価値が高い手ほど高確率で選択する」っていうものです。

 そこで、手選択のランダムさの調整用に温度というメタパラメータがあるのですが、これを適切な値に設定するのは結構難しいです。経験と勘を頼りに決めないといけない感じ。

 んで、そこで一つ考えました。「温度を自動調整すればいいじゃないか」、と。

 やる事は単純で、まずルートノードでの探査率(=最善手以外を選択した確率)を計測し、それが事前に設定した目標探査率より高ければ温度を下げて探査率が下がりやすくする。逆に目標探査率より低ければ温度を上げて探査率を上げやすくする。これだけです。

 こうすると何が嬉しいかってーと、目標探査率という比較的最適値がイメージしやすい値を調整すればいいだけなんで、温度を自分で決め打ちするより大分楽です。

 ただ、今までは目標探査率は固定で、0.2とか0.05とか、その辺の値を使っていました。

 さて、ここからが本題です。

 今日やったのは、目標探査率をランダムウォークさせるって改良です。

 具体的には、目標探査率の初期値を適当な値とし、一局自己対戦します。終局後に上記のアルゴリズムで温度を調整し、その後目標探査率に平均0・分散1E-6の乱数を加えた上で、再度自己対戦に戻ります。

 こうすると、目標探査率はフラフラと上下します。ただ、あんまり上がり過ぎ・下がり過ぎは良くないので、目標探査率が0.3以上か0.1以下になったら、目標探査率を0.2にリセットします。

 こうすると学習が停滞している時に目標探査率と温度が(たまたま)上がっていけば、局所最適解から離れて学習が進む様にならないかな〜、と考えています。

 まぁ、考えてるだけでちゃんと効果が出るかどうかは不明なんで、本将棋での方策勾配法の学習で実験してみます。基本的に以前からやってる学習と(今日改良した部分以外は)同じで、パラメータも引き継ぎです。

 本将棋での学習は対sspの勝率が7割弱で頭打ちになったっポイ雰囲気なんで、改良がちゃんと働いてくれるのを期待して一晩過ごしてみます。

*1:ルートノードでの指し手の選び方