評価関数をブリードすると何故強くなるのですか?

評価関数を合成するのが流行っている。ここで言う合成とは、2つの評価関数のそれぞれのパラメーターを足して2で割ることである。ブレンドと呼ばれている。

1:1でブレンドする以外にも比率は自由に変更できる。また「ブレンド」という用語は、ダビスタになぞらえて「ブリード」とも呼ばれている。

しかしブリードすると何故強くなるのかについてはよくわからない。

そもそも足して2で割ってそれぞれの良いとこ取りなんて都合よくされるはずがない。しかし強くなっているのは厳然たる事実である。

例えば、elmo(WCSC27)とrezero8をブリードするとelmo+R100ぐらいの評価関数が出来る。rezero8単体ではelmoより明らかに弱いにも関わらずだ。これをどう説明するのか?

一つの仮説としては、Aperyの学習部とやねうら王の学習部とで何かが違うのではないかということだ。

elmo(WCSC27)はAperyの学習部を用いて学習させたものである。
rezero8はやねうら王の学習部を用いて学習させたものである。

例えば、「双方の学習部にバグがあり、Apery側で学習できない何かが、やねうら王側では学習できる。その逆もまた真である。」というケース。

これを検証するには、やねうら王の学習部を用いて、elmo(WCSC27)と同じ条件で教師局面を生成して浮かむ瀬から追加学習させてみる必要がある。

ただ、Aperyのdepth 6とやねうら王のdepth 6とは探索の性質が異なる。やねうら王のほうが長時間では強いが、その分、枝刈りが激しかったり、短時間では弱い可能性がある。枝刈りが激しいとしたら、Aperyのdepth 6のほうが手広く読めていて、同じdepth 6同士の比較だとAperyのほうが良い探索である可能性がある。

そこはさておき、とりあえずそこ以外は(だいたい)同じ条件でやってみる。elmoは初期局面から6手がランダムムーブで評価値3000が投了スコアなので、やねうら王では以下のようにコマンドを打てば同等のはずである。

BookMoves 0
gensfen depth 6 eval_limit 3000 random_move_minply 1 random_move_maxply 6 random_move_count 6 random_multi_pv 1 loop 5000000000

さて、これで生成した50億局面から学習させるとelmoと同等になるのだろうか?

つづく

評価関数をブリードすると何故強くなるのですか?」への9件のフィードバック

  1. 良くも悪くも、平らに均されるということですよね?
    相手に対して自分の評価が良過ぎた手は評価が下げられて使われにくくなるとか、自分が知らなかった手を相手が良い評価をしていたら自分もちょっと良い方向に評価してちょっと使ってみるかみたいなことが起こるようになるとか。

  2. 学習部の違がいが影響を及ぼすというのは結構ありえるかもしれません。
    野生の読み太+elmoでrelmoと対戦させてみました。
    対局数は少ないですが、
    1手5秒 6スレッド no book
    yaselmo relmo 117 20 63 でした。

    やねうら王の学習部側がrezero8より強いものを使用した効果かもしれません。

  3. 最終的に纏められた技術名がどうなるかは分かりませんが、ディープラーニングの黒魔術に対して、なんだか錬金術みたいですね(人体練成ならぬ評価関数練成)

    • まあ評価関数のパラメーターだけでなく評価関数の形そのものも文字列で指定できるとそれを設計するのが盛り上がると思うんですけど、ちょっと私にはいまそれをする余力がなくて…。(´ω`)

  4. ブレンド=評価基準の変更なので、盤面を評価する基準を変更したら、強くなるか弱くなるかのどっちかですよね。
    ブレンドしても必ずしも強くなるってわけではないようなので、「ブレンドして平均化する=必ずしも強い」ってわけではありません。
    なので、評価基準をランダムで変えてみて、運よく強くなった方式を採用してるだけかと。

やねうらお へ返信する コメントをキャンセル

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