rewritemath's blog

rewritemath’s blog

これマシュマロ。質問も受け付ける(https://t.co/VfNWTuMqau)

キメラ評価関数は局所解や過学習を是正するから強いのだと思います

キメラ評価関数、局所解、過学習とは何なのかそれぞれ説明しますね。

 

キメラ評価関数というのは、三駒関係の同じ型でのみ使えるキメラコマンドを使った、評価関数を合成することによって生まれた評価関数です。

 

何を言っているのか分からない人のために追加解説します

キメラというのは、合成生物のことを一般的にそう呼びます。鳥の羽が生えた蛇が有名でしょうか。ギリシア神話に登場する生物の「キマイラ」に由来する言葉で、ライオンの頭と山羊の胴体、毒蛇の尻尾を持つらしいです(wikiより)

伝説上の生物がキマイラになるという話は結構ありまして、色々くっつけてミイラとして化け物が展示されている場合もあります。日本では獏(貘)(バク)が有名でしょうか。

コンピュータ将棋では、生き物の名前をソフトにつけることがなぜかそこそこ多く、大合神くじらちゃん(Qzillaの名前のバージョンはゴジラ意識?他にも、魔女)、Apery(猿真似)、tanuki(表記ブレが激しい。ハクビシンの名前だった時も)、Qhapaq(通称、河童?)などが居ます。(追記、名人コブラ

人名も含めますと、nozomi、なのは、もそうですね

(人間も動物だぞ!神格化して分けるんじゃない!(`~´))

 

評価関数の合成というのは三駒関係の少し細かい話になるのですが、三駒関係では、三駒の関係に点数が付いていますね。その点数を複数の評価関数で比べて、点数の間を取るという訳です。この手法を極端なほどに使っているソフトがWCSC28にいましたね。名人コブラっていうんですけど。あ、こいつも生き物だ。もしかしてこの蛇には羽が生えているのかもしれませんね。

ところでこのキメラ評価関数、素人でも簡単に独自の強い評価関数が作れてしまうのです。混ぜると強くなることが多いみたいなので。

 

配合する割合も自分で決めることができますし、混ぜたものをさらに混ぜることもできるという優れもの。ただし、混ぜることができるのはKPPT型の評価関数だけ(多分)です。混ぜることができて、強くなる(可能性が高い)評価関数の一覧を挙げますと、

 

クジラ、河童、猿、読み太、rezero、elmo、コブラ辺りでしょうか。漏れもあるでしょうけれど。

 

WCSC28直前の話ではApery-Qhapaqの合成関数が強いと話題になりましたね。

 

キメラの話を長々としたところで、局所解の話に移ります。

まず、局所解とは何かという話をすると、最速降下法でローカルミニマムに陥りやすいとかなんとかいう声が聞こえてきそうですね。

簡単に言うと、「狭い範囲では最適解なんだけどそこに最適解があると思ってしまって遠いところにある最適解を見つけられなくなってる状態。」です。

過学習というのも似ていて、「同じようなことばっかりしていたらそのことをするのは得意になったけど他のことができなくなっちゃった状態」です。

 

局所解の簡単な例を挙げると、

水がほしいとします。水のある場所を探します。湖を見つけます。

「近くに湖がある!ここが我々の求めていた場所だ!」

↑これが局所解です。湖を見つけた途端、探索をやめてしまうのです。もっと探せば遠くに海があるのに。一応探すつもりで近場を見て回りますが、水のある場所がなかったらずっとそこにとどまり続けてしまうでしょう。この状態が、局所解に陥っている状態です。

 

過学習の例を挙げます。

普段に日曜大工でのこぎりをよく使う人がいます。のこぎりをよく使うので、のこぎりは木を切るのに素晴らしい道具だと思っています。ある日木材を調達するために木を伐りに出かけました。本当は斧を使った方がいいのに、同じ木だからと言ってのこぎりを頑なに使います。効率の悪いことといったら!これが過学習です。

 

 

将棋ソフトも同じように、局面を学習する時に自己対戦だと、好みの戦形を選んでしまいがちです。このままでは、他の戦形のことを知らないままになってしまいます。定跡を与えても好きな形に戻そうとしたりと頑なです。これをなんとかするために、ランダムムーブ(ランダムに駒を動かしてその状態を使って教師局面を作る)を加えたりするわけですが、それでもソフトに癖は出てきてしまいます。また、探索の段階で枝刈りをしたり(学習させるためには沢山局面が必要なので、探索は浅くなりがち。)すると、局所解に陥りやすくなりますね。

 

これを解消したら強くなると思いませんか?そう。きっと強くなる。どうやればいいのかというと、キメラという話になるわけです。別の評価関数は、別の戦形ばっかり指しているかもしれません。情報を交換しましょう。混ぜましょう。遠くに海があることを知っているかもしれません。

 

とまぁ、キメラ関数が強くなるのはこういう理由からではないかという仮説、理屈の話でした。

 

 

ここから雑談

もう少しだけ話すと、実は居飛車ばっかり採用されているのは、プロ棋士居飛車党うが多い)の棋譜ばっかり使っているからでは?

とか、振り飛車は対局が長くなるから評価値の推移がゆっくりになるので、近場の湖である居飛車に飛びつきがちなのでは?

とか色々推測できますね。答えは知りません。完全解明できたらとか、人間の棋譜がない状態から学習させたソフトなら?とか色々憶測はできますけどね。

 

私の意見としては、結局人間も居飛車の方が勝ちやすいんじゃないの?(定跡を覚える量が少ないという意味では振り飛車にも有利はあるけど。しかも知ってる人が少ないというアドバンテージもあるかも)

しかも、居飛車をする人の方が多かったら、研究がより進むのは居飛車の側に決まってるやん。

将棋が長くなるのはできるだけ避けた方(振り飛車は避けた方が)が勝ちやすいのでは?(異常に早い場合は研究勝負になっちゃうけど)

 

 

と思っています。不利飛車がなくなると将棋の自由度が制限されて面白くなくなる部分もあるかもしれませんが、そういう宿命はゲームにはつきものですしね。最適解以外は淘汰されていくのです。

最善かどうかは分からないしおそらく勝ちにくいけど、振り飛車も戦法選択の自由のために頑張ってほしいですね。