AlphaZero Shogi の開発ネタ1

AlphaZero将棋の論文を解読している方のブログを見た感想で、

AlphaZero開発者の人と同じ意見だなと思ったところをピックアップ。

ドメイン知識


■ドメイン知識とは

機械学習においては、いろいろな方向性がありすぎる状態の学習を

効率化するために指定する、その問題の捉え方、作り方みたいなイメージ。


AlphaZero将棋での開発者が指定した「ドメイン知識」は、たったの4つらしい。

その中のひとつに「千日手」が入っていたので、

AlphaZero開発者は「将棋の学習」において、格別に「千日手」を重要視しているようだ。

新「評価関数」について



■「第28回世界コンピュータ将棋選手権」 に使おうとしている新「評価関数」について

実はこの新評価関数を機械学習するに当たって、私も「千日手」について工夫しています。

何をしたかと言えば、

千日手を「悪手」であると「マイナス」した。

おいおい、それじゃ「AlphaZero開発者」と逆じゃないか?

と思われる人もいるかもしれませんが逆では無く、

そもそも学習の方法が違うからです。

私が学習に使用していた式は、

elmoの学習式  dsig = (eval_winrate -t) + 0.5 * (eval_winrate - teacher_winrate);

を「やねうら王」開発者様が改良した

dsig = (1 - LAMBDA)*(eval_winrate -t) + LAMBDA * (eval_winrate - teacher_winrate);

これだ。

小難しいことをすっ飛ばすと、

要は勝った指し手にボーナスを与えようってこと。

なので、この式では「千日手」の評価パラメタは「0」ってこと。


私からすれば「それはありえない」です。

なぜなら、この機械学習の指し手を読む深さは、6手先や8手先だからです。


「千日手」というのは「神の一手」に限りなくニアピンした、

もうソレ以外の指し手だと悪くしかならないよ!

っていう局面であって、

少なくとも「たったの6手」読んだ程度で理解出来るわけないからです。


これは機械学習時の局面生成で「同じ評価関数」の自己対局から生成される仕組みのため、

「たったの6手」読んでも「お互いの考える評価値が一緒」だから、

間違った合意をしてしまいます。

なのでコイツを「それ間違ってるから、もう一回ちゃんと考えて来て」ってマイナスしました。


「人造棋士18号」の開発者様は、この式に「負け」と「引き分け」にも

ボーナスを指定出来るコードを作成されていましたので、

他の開発者様もいろいろ試してみると良いかもです。



AlphaZeroさんのディープラーニングだと、

ドメイン知識として指定しているくらいだから、

こういった難しい判断を求められる「千日手」をダイレクトで学習出来るんでしょうね。


 ▶長くなったので分割「AlphaZero Shogi の開発ネタ2」

この記事へのコメント

スポンサーリンク