relmo8がelmoより+R100近く強いと一つ前の記事で書いたところだが、まふ定跡のまふさんが、まふ評価関数というのを発表された。
engine1 = YaneuraOuV471.exe , eval = elmo_WCSC27
engine2 = YaneuraOuV471.exe , eval = mafu_v2
T2,b1000,328 – 17 – 655(33.37% R-120.15) win black : white = 51.27% : 48.73%
T2,b2000,291 – 24 – 505(36.56% R-95.76) win black : white = 54.52% : 45.48%
T4,b2000,127 – 8 – 265(32.4% R-127.78) win black : white = 53.06% : 46.94%
elmo(WCSC27)を基準にして考えると、おそらくrelmo8より若干強そうである。relmo8がelmo(WCSC27)とリゼロ評価関数をベースとしており、それらの評価関数の生成にはかなりの計算資源を用いているので、その何十分の1という計算資源でrelmo8より強くなったということであれば、これは画期的なことである。
ただ、この上のレーティング計測自体、本当に正しいのかという問題はある。
レーティングの計測には、やねうら王の互角局面集を用いている。これは2ch棋譜(≒プロ棋士の棋譜)から互角の局面を抽出したようなものである。これを開始局面として、そこから対局させたときの勝敗をもとにレーティングを計算していることになる。
まふ評価関数は生成にまふ定跡を用いているので、定跡の局面で、駒がどの位置関係にあると勝ちやすいかについて学習させてある評価関数だとも言える。そういう意味では、定跡局面(とその類似局面)のエキスパートである。
しかし、それ以外の局面についてはどうなるのだろう?それらの局面の評価の精度が高くないことは想像に難くない。それは実際のソフト同士の対局で問題とならないのだろうか。
結局、将棋においてプロの定跡局面とその類似局面は、将棋ソフト同士の対局において本当に実現確率の高い局面なのかというところに行き着きそうである。
rezero8+elmo=relmo8より
rezero8+mafuのほうが強いものが出来るとコッソリ書いておきます。
完全教師無しから生まれた高レートの評価関数がrezero系しかいないからか、上手く交配すると覚醒するようです。
ただしrezero系と交配した評価関数を追加学習すると今のところ弱くしか出来ていません。
おそらく何十億局面から学習したパラメタを数億局面程度の追加学習では弱体化してしまうのかな?
なのでrezero系との交配は起爆剤と考えて、切り札的な位置付けで定跡系評価関数を鍛えています。
mafu評価関数のレートについては
「局面の3駒関係」開発者より4スレッド5秒で
mafu、relmo8、野生読み太2、elmo
この4つを1767局も対局させた結果を頂きました。
それによるとrelmo8+R15とほぼ同じ結果でした。
http://ii.ttlv.jp/20170707/
まだ先がありそうですね…。いやはや。
mafuをrezero8と交配した結果分かったことを書いておきますね。
まず配合率 12.5%まではレートはほとんど変わらず、ちょっと違う評価関数になりました。
それ以上の配合率にするとレートが少し下がってきます。
レートが下がった原因は、rezero8はきれいに全体を学習しているので、囲いの配点がすごく低いです。
※囲いはある意味玉を偏らせている局面になるからだと思います
mafuは意図的に全体の慣らしを行うために評価値を抑えているので、rezero8との配合率が上がってくると囲いの減算が大きくなって玉周りが危険になります。
私の場合は定跡を使用することが当たり前なので、デメリットにならないしもっと配合率を上げれば5%近く勝率は上げれました。
が、ただ混ぜるだけで定跡OFFとかの対局をすると弱く見えると思います。
つまり、elmoは6八玉等の配点がはっきりと大きいのでrezero8と相性が良く、relmo8でレートが上がるようです。(rezero8のポテンシャルが発揮される)
さらに互角局面等で囲いの補強も出来ればさらに良い感じになります。
uuunuuun氏は定跡OFFでレート測定しているため、上記の理由でレートが低めに出る可能性が高いです。
※これはどちらの計測が良い悪いではなく、そういった特性を理解して計測する必要があるかなと
情報ありがとうございます。お陰様で私の理解が進みました。
今のところ最強の評価関数はrezero 8+ mafu ということですか?
交配した直後の評価関数が一番強くて、その後の世代は弱くなってしまうなんて、まるで本当の生物の交配のようですね。生物の交配の場合はハイブリッド第一世代は両親のよい所が最大の確率で現れ、その後の世代では複数の形質で片方の親のいけてない性質が復活してしまいますが、ハイブリッド評価関数を追加学習させた場合は生物と違って遺伝子もないのに、どのような原因で弱くなるのか、素人なので想像もできませんが、とても不思議な気がします。
第二世代が弱くなる理由はなんとなく想像はつくのですが、一言では説明できませぬ…。
まふ評価関数はまふ定跡で学習してるらしいけど、
5の段の玉とか、歩の持ち駒18枚とか学習できてるのだろうか?それともこんな大局が決したようなのは無くてもさしつかえないのだろうか?
大勢が決しているかどうかはともかく、実現確率は相当低いので勝率としてはほとんど出てこないでしょうね…。
私のPC2台 (i7-4790K及びRyzen7 1700)で色々な評価関数を組み合わせた(全て50+50)結果最強は、まふ+野生の読み太でした。持時間は5分持、切れ1手10秒
以内の設定で12戦1セットで行いました。
他の組み合わせでは1手1秒未満の超早指しはともかく公式戦仕様の1手10秒ではelmoに対して6割どころか5割の戦績を残せるかどうかの状態でした。
しかし、まふ7+野生だけは7割以上勝ちました。さらに新登場のまふ10に野生を+して、まふ7+野生と対戦させたところ7割以上勝ちました、つまり私のPC環境で現時点での最強は、まふ10+野生の読み太です。
> 以内の設定で12戦1セットで行いました。
( ゚д゚) ・・・
(つд⊂)ゴシゴシ
(;゚Д゚) …!?
勝率5割か7割かのどちらに近いかを判定するときに12戦はさすがに少なすぎるような…。
まふ10+野生の読み太 vs elmoの12戦1セット対戦が5セット終了してelmoに通算7割以上の勝率を
残しています。連続60戦と比べてどちらが参考になるかは人によって意見が異なるでしょうが私は
研究目的ではないので12x5の方が参考になります。大会では多くても20戦ぐらいしか対局しないので20戦過ぎて勝率が上がるエンジンが存在していたとしてもあまり価値が無いと思います。
というわけでこれからも1手10秒で10戦から20戦
の間のセットでチェックしたいと思います。
レーティング計測、60と12×5なら後者のほうが良いでしょうね。
異種ソフトでレーティング計測するならShogi Server立ち上げて各ソフトを放り込んでおくのが良さげです。(どうやって各ソフトを放り込んでいるのかは知りませんが。VPSで各ソフト立ち上げているだとか?)
http://ii.ttlv.jp/20170707/
mahu7対elmo
12-2-11(25戦)
4スレッド1手20秒での対局だと、まったくの互角になりました。
mahu評価関数は長時間でやるとそれほど強くならない印象があります。
▼環境・設定
i7-4710MQ
定跡オフ
Contempt2
長い時間ではどうなんでしょうね…。さすがに25戦では計測できないように思うのでせめて500局は対局させて欲しいですけども…。
500局もやらなくても判断できると思います。uuunuuun氏のところでの技巧1と浮かむ瀬のレート差は約140程ですが、R140差程度でも25局で互角の戦績にはならないはずです。ということはelmoとmahu7は限りなく互角に近いレベルだと言えます。なので私はまふ氏がmahu評価関数を過大評価していると思うのです。ちなみに、60局少し越えた今でもまったくの互角です。
mahu7対elmo
29-6-27
mafu7とelmoの差は、
https://github.com/mafu-opening-theory/Shogi_opening_theory/releases/tag/v2.0
> 短時間elmoに勝率70%、長時間勝率60%となり
と書いてあるわけで、勝率6割としてR70です。
※ 短時間はおそらく1スレ1手1秒とかのことなので…。4スレ5秒とかはこの分類だと長時間でしょうね…。
なので、
まふさんの主張「R70の差らしい。」
あなたの主張「R140もない。R0(互角)だろ。」
これでは話が噛み合ってないような…。
それはそうと、elmoとmafu7の差がR0とR70とどちらに近いのかというデータは有意義なので信頼区間95%でそれがわかるデータが欲しいとは思いますけども。
あと、これは大丈夫ですか?
https://twitter.com/yaneuraou/status/886104844091629569
>>あと、これは大丈夫ですか?
https://twitter.com/yaneuraou/status/886104844091629569
私が設定間違えてたようです…
同じ評価関数での対戦になってたかもしれないんですね。mahu側の勝率が良くなりました。
ご指摘ありがとうございました。
(`・ω・´)b
やねうら王の学習部は本家elmoのように入玉にボーナスは入ってるんですか?
あとsse42版でキメラコマンド使おうとすると、合成元のフォルダのうち一つが”eval”って名前じゃないと落ちるような気がします
“test”コマンドの実行時にoptionの”EvalDir”で設定されているフォルダの評価関数を読みに行く動作が入るからでは。
EvalDirがデフォルトeval/になっているのでこのフォルダがないと読み込みに失敗して終了します。(評価関数の読み込みに失敗したときは終了する動作になっていないと変な指し手を指してしまうためこうなっています。)
ご回答ありがとうございます、そういう動作になっているのですね。
入玉の話なのですが、千田先生もツイートされているようにelmoと、野生の読み太やまふ関数とでは入玉時での精度がかなり違うように思われるのですがどう思われますか?
入玉形はひたすら学習局面を増やすしかないということでしょうか?
> 入玉形はひたすら学習局面を増やすしかないということでしょうか?
教師局面の生成時のeval_limitを下げると入玉局面になる前に大抵終局してしまうので、eval_limitを下げている派の人たちは、そもそも入玉形を学習させる気がないのだと思いますけども。(それが良いか悪いかについてはよくわかりません)
まふさんが教師局面を生成される際、「ResignValue 100」に設定したうえで「eval_limit 32000」で生成されているとのことなのですが、
教師局面生成時にResignValueの設定は効くのでしょうか?(ソースコードを見る限りでは、効かないように見えます)
まふさんの評価関数が強いのは、定跡を使用したうえで投了スコアを極端に小さくすることにより
定跡を抜けた局面でelmoの勝敗項がより正確に効くようになりそうなことが関係するのかと思っていたのですが…
> 教師局面生成時にResignValueの設定は効くのでしょうか?
私もさっきまで勘違いしてましたが、効かないです。ワハハ。
ではまふ評価関数は何故強いのかということですよね。そこが面白いところですね…。
自己対戦するときに関して質問です。
やねさんは4スレッドを並列でいくつも走らせ自己対戦してるかと思いますが(*違ったらすいません)
例えば16コアのCPUの場合、4スレッド2秒の対戦
を並列4つ走らせてるのでしょうか?
それとも自己対戦でハイパースレッディング分フルに32スレッド使用しているのでしょうか?
HT(ハイパースレッディング)、オンにして、40C80Tの環境で、1スレッドで80並列対局とかさせています。2スレッドなら40並列対局ですね。
なのでEvalShareみたいな機能がないと、80並列対局のときに160個の評価関数を読み込む必要があって、メモリが足りなくなるということなんです。