Bonanzaは何故未知の局面に対して弱いのか

どちらも強いプログラムなのに、未知の局面への対応力に差が生じるのは不思議ですね。

http://d.hatena.ne.jp/yaneurao/20140208#c1392482608

棋譜からの学習は、いわゆる「機械学習」の考えを用いていますが、この機械学習にはL1正則化だとかL2正則化だとかがあります。簡単に言ってしまえば、出現しなかった評価項目はゼロするという縛りみたいなものです。この縛りを入れないと、出現頻度が低かった因子(評価項目)に対して棋譜との一致率を上げるためにどこまでも大きな値がつく(発散する)ことがありえます。これを回避したいというのがL1/L2正則化を行う主な動機です。


ところが、このような正則化をしますと、棋譜に現れなかった因子はすべてゼロになってしまいます。Bonanza入玉の評価が著しく下手なのも、入玉棋譜が足りていないため、おかしな値しかついていない(もしくは値がつくべきところなのにゼロになってしまっている)のが原因です。


逆に言えば、棋譜に現れないものはゼロになるのでそれを見越した形に評価関数を変形しておくのが、ひとつのテクニックと言えます。


例えば、王の右隣に金がいる形を評価(スコアリング)することを考えてみるとします。


GPS将棋は、王と周辺の駒との相対的な位置関係によるスコアリングもしていますから、ここに仮に50点をつけたなら、88玉78金 = 50点、78玉68金 = 50点 、68玉58金 = 50点…。のように、位置をスライドした形にも同じように点数が与えられたことになります。


もちろん、スコアリングは相対的な位置関係によるスコアリングだけではないので、最終的には、もっとバランスの取れた形になります。


ここで2つの疑問が出てくるかと思います。


1つ目。何故このようになっていると未知の局面に対してうまく適応できるのか。


上のようになっていれば、98玉88金のような棋譜にはほとんど出てこない形に対しても50点というスコアがついているわけで、この形に対して0点がつくよりはいいスコアリングだと言えることはおわかりいただけるでしょう。すなわち、未知の形に対してもうまく対応できることが多いです。


2つ目。何故、このようになっているとL1/L2正則化の影響を受けにくいのか。


L1正則化というのは、評価因子のスコアの絶対値を合計したものをなるべくゼロに近づけようという外的な圧力であると言えます。L2正則化は評価因子のスコアの二乗の合計をゼロに近づけるという意味です。どちらがコンピューター将棋に使う機械学習において適切なのかという問題はありますが、L1であろうとL2であろうとL1.5(1.5乗)であろうと、あるいは他の方法であろうと、基本的な考え方において大差はありません。出現頻度の少ないものをゼロ方向に引っ張りたいだけです。


そこで、ここではL1正則化のときについて考えてみます。


「8段目の玉の絶対位置とその右隣の金」という二駒関係に「玉の右隣の金のスコア」という評価因子を追加した場合を考えてみます。


L1正則化でゼロに引っ張るのは、全評価因子のスコアの絶対値の合計ですから、次の合計が最小化する方向に引っ張ります。


sum = abs(玉の右隣の金のスコア) + abs(98玉88金のスコア) + abs(88玉78スコア) + abs(78玉68金のスコア) + ... 【 minimize → 0 】


このとき、「玉の右隣の金のスコア」と「98玉88金のスコア」等にはゼロへ均等の引っ張られかたをしています。(それぞれに変な係数がかかっていないため) また、「玉の右隣の金」は出現頻度は「98玉88金型」よりははるかに高いため、棋譜との一致率を上げる方向に「玉の右隣の金のスコア」と「98玉88金のスコア」の値を調整しようとしたとき、後者はともかく、前者をゼロにするわけにはいきません。そこで前者に何らかの値がつき、後者は(L1正則化の影響で)おそらくはゼロに向かいます。


このように出現頻度が高く、ゼロでないことが予測されうる因子を分離するというのも、この手の学習に機械学習を用いる上での重要なテクニックと言えます。そんなわけでして、このように因子を細かく分離してあるGPS将棋のほうがBonanzaより未知の局面に対する適応力が高い(期待損失が低い)と言えます。