predictionと棋力との関係

棋譜からの学習のiterationを回しているとprediction(指し手一致率)が上がっていきます。このpredictionが上がっていくとそれが過学習でない限りは棋力が上がります。

Bonanza6のlearn.cの実装ではペナルティが結構きつめになっているので、過学習はあまり起こらないようです。

やねうら王のほうもペナルティはきつめなのでいまのところ過学習は起こっていないようです。

今回の電王トーナメント版のやねうら王では学習に費やす時間がなかったため、やねうら王2014(5月版)から追加学習(パラメーターの値の初期値を引き継いで学習させること)をしました。そのため、新たに導入したKPP相対(これはNDFのアピール文書にあったもの)の値は十分な値に収束できませんでした。

電王トーナメントが終わって時間が出来たため、評価関数パラメーターをすべてゼロにした状態から学習をやりなおしました。8コアPCで1ヶ月ほど要したのですが、ようやくpredictionが電王トーナメント版のやねうら王と同じぐらいの値に収束しました。1000回対局させたみたところ、ほぼ同じ強さ(2%ほど勝ち越し)であることを確認しました。

ただ、電王トーナメント版のやねうら王は、KPP相対の値として小さな値しかついていないので棋譜に現れなかった特徴因子がたくさんあるような局面では低めの評価値となっています。そのためか、新しいほうは + 200(自分有利)を主張して、古いほうも + 200(自分有利)を主張することがよくあります。こういう風に意見が分かれる将棋を見ているのは楽しいです。こういう将棋は、新しいほうが勝つとも限らず、その後の勝率はおそらく五分ぐらいです。

また、新しいほうは、値が大きく出やすいという特徴があります。古いほうで検討させると500ぐらいの評価値なのに、新しいほうで検討させると1000ぐらいの評価値だったりすることがあります。

かと言って、棋力的にはほぼ互角なので、1000と出るのが正しいわけでもなさそうです。

このへんが大規模な評価因子の機械学習の面白いところで、優劣のある2つの局面を比較して、それが評価値の大小関係としてきちんと出てくればそれで良く、それが1000と800でも、500と450でもどっちでも正しいわけです。もしくは、200と-200でも正しいわけです。

評価値として-200と出ていると普通は「自分が不利だと思っている」ことになるのですが、どうもそうとも限らないようです。

ともかく、
過学習していないならpredictionを上げていくことが超重要!
評価値の値が大きく出ても気にしない。大きく出るから強いとか弱いとかそういうのは(predictionが同じぐらいの値になっているなら)あまりなさそう。
という結論になりました。

また、最近話題のWord2Vecとの共通点を挙げてこの記事を終わりたいと思います。

一方で、Word2Vecで使われている手法は、他の手法に比べその内部構造が非常に簡略化されている。ある単語が与えられたときに、近く(前後5―10単語くらい)に出現する他の単語を当てる、という問題の解を、与えられた文章中の単語全てに対して人工ニューラルネットワークに学習させる。

自然言語処理に新風を巻き起こしたWord2Vecとは何か

特徴次元30程度(評価因子30程度)にしてある単語の近くの単語を当てられることをゴールとして機械学習させてあるわけですね。これもprediction超重要という点において将棋の評価関数の機械学習との共通点があります。特徴次元30程度で十分な表現力があるというのもなかなか興味深いところですね。コンピューター将棋のほうは評価因子は10億前後であり、そういう意味では将棋のほうが機械学習の問題としては困難な部類に属するように思えます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です