速読コンピュータ将棋用語【記事募集中】

将棋ソフト開発者をやっていると当たり前に見えてしまう怪しい用語、これを解りやすくするというミッションを受信したのでやってみます。

 

 

 【もっと良い辞書をくれ】

コンピュータ将棋専門用語辞典【寄稿、独自解説など】(できるだけ数学抜きで解説する) - rewritemath’s blog

コンピュータ将棋 レーティング

などがおすすめです。

中の人のボヤキ:(初心者視点で解りやすい記事が増えてきたので、この記事は開発者しか使わなさそうな謎のスラング辞典にするべきかも解らぬ)

 

本稿では受験生御用達の英単語風に、よく出てくるソフト用語を大盤解説語に翻訳していきます。受験生のようなまっさらな気持ちでどんどん覚えていきましょう。

 

【将棋ソフトに詳しいフレンズ、興味があるけど開発者が何を言ってるかわからないフレンズへ】

コメントやら作者twitter(妖怪惑星Qhapaq(@Qhapaq_49)さん | Twitter)で単語を募集しています。なお、作者は大半のコム将棋用語を知っているはずですが、息を吸って吐くかの如くコム将スラングを使い過ぎた結果、どこからが辞書にするべき単語なのかわからなくなってしまっています。

 

大盤解説で出てきそうな話】

評価値:現在何方がどれぐらい有利かを示した指標

評価値がプラスであれば手番側が有利、マイナスであれば手番側が不利であるという判定方法が一般的です。点数については±200以内で互角、200~600ぐらいで有利、600を超えたあたりから優勢で、1200を超えたあたりから勝勢と言われますが、最近のソフト同士の勝負だと400を超えると殆どひっくり返らない感じです。

例文:「現在の局面の評価値は+800です」→「現在の局面は手番側が優勢です。評価値は800点程度のようです」

 

Mate x:x手以内に詰む

25手詰めではないことに気を付けてください。どう逃れてもX手以内に詰むというのが見つかるとソフトはMateを吐いてきます

例文:「Mate +25と出ています」→「25手以内に詰むようです」

 

depth :手を読んでいる深さ

pv :読んでいる手筋

今の将棋ソフトには一部の手を選択的に深く読む機能が実装されています。故に、読みの深さが2種類表示されたりします。また、読み筋のことをちょくちょくPVと呼んだりします。

 例文「現在depth 10/14まで読んでいて、pvは83飛車82香です」→「現在10~14手先まで読んでいるようです。今は▲83飛打△82香打の筋を考えて居ます」

 

multiPV :読んでいる手の種類

multiPVはソフトを使って戦型などを研究するときによく出てくる技です。multiPVの後ろにある数と同じだけの候補手を出してくれます。

例文「multiPV 3で読ませると76歩、26歩、78金が候補になります」→「ソフトが良いと考えている上位3手は76歩、26歩、78金です」

 

Ponder:相手の手番中に読んでる手筋

将棋ソフト用語でのponderは、相手の手番中に相手の指し手を予想して読むことを意味します。殆どのソフトは相手の指し手の予想を1通りに絞り、その手を指した場合についてのみ深く読む作りです。当たれば相手の消費時間分だけ長く手を考えられますし、外れればゼロから読み直しになります。それ故にponderが当たるか否かは勝負を決める上で重要な要素となります。

例文「Qhapaqがponderを当てられ続けていて辛そうです」→「Qhapaqの指し手が相手の読みと当たっているせいで時間攻めを喰らっています」

 

反省、土下座:評価値が急落する様子

ソフトも結構な頻度で勘違いをします。自分が有利だと思っていたソフトが数手先で評価を翻すことを反省、土下座と呼びます。体感的には土下座の方が反省より評価値の下落が大きいことが多いです

 

説得中:ソフトの評価値が割れている状態

評価値が割れることでどちらかの反省 or 土下座が不可避になった時に開発者が良く「説得されろー」と互いを罵り合います。

例文「「nozomiの評価値+400で有利って出てます」「Qhapaqはまだ互いに0ですね」「説得されろー」「説得されろー」」(WCSC27の開発者雑談より。因みにこの後Qhapaqが反省した)

 

ライブラリ:コードが公開されていて改造できるソフト

やねうら王、Apery、技巧が有名。今のソフト開発の爆発的進化を支えているとても偉いソフト達です。

 

チルドレン:ライブラリを使ったソフトの総称

先人が与えてくれた探索部や学習のノウハウを改造して戦っているソフト達の呼び名です。有名どころで言えば、elmo(WCSC27優勝)、たぬき(sdt5優勝)など

 

【ソフトの手法について出てきそうな話】

評価関数:一つ一つの局面に対し、どちらが有利であるかを判別する手段

 

探索部:各々の指し手に対する評価値から、どの手を指すと一番得かを判断する部分

昨今の将棋ソフトを理解する上で恐らく最大の障壁になっている、評価関数と探索部。評価関数も探査部も一緒くたにソフトと呼ぶのは本来適切ではないのですが、用語として広がりすぎているので、評価関数、探索部の意味をそれぞれ簡単に解説する必要がありそうです。

 

ボナメソ:ボナンザメソッド。Bonanzaが使った学習方法です。具体的にはプロ棋士の手を再現できるように評価関数を調整する手法です。

 

雑巾絞り:深い読みで与えられる評価値や指し手に対して、浅い読みの評価値を一致させるようにすることで、評価関数を学習する手法。凄く雑に言えば読みが深くて強いソフトで読みが浅いソフトを教育する超高速指導対局

 

elmo絞り:雑巾絞りの進化形。評価値と勝ち負けの合議で手の良し悪しを求め、それを教え込む超高速指導対局

 

KPPT:よく見る評価関数の形。玉と駒二つの並びに点数をつけて、それの和で盤面の良さを判定します

 

 

第28回世界コンピュータ将棋選手権の成り行き予想(4/1 ver)

エイプリルフールだし、WCSC28の決勝リーグへ行くソフト予想という全く当たらない類の予想をしても許されるだろうと言うことでダラダラ書いていきます。

「あのソフト無いよー」的なツッコミは多々あると思いますが、全ソフトについて書くと私の工数削減がマッハなので許してください

 

【今回の予想】

評価関数がある程度強いことを条件に、弱点の少ないソフトが勝ち上がりやすいと思います。これは技術共有により各ソフトのレート差が小さくなってきていることと、決着までの手数が長くなり小さい得を積み上げるような展開が増えてきており、定跡や読み落としに起因した事故からの復活が大会を重ねる毎に難しくなっていると感じているからです。

 

【決勝リーグに多分進むと思ってるソフト】

クジラちゃん

個人的には優勝候補。wcsc27でも計算資源の効率的な運用を以て、蒼天幻想ナイツ・オブ・タヌキなどを撃破していますが、今回は評価関数と定跡も独自調達するようです。個人的には一番隙がない相手だと思っています。

 

読み太

今回はクラスタ化をするそうです。独自実装の学習+depth 8/200億の教師ででwcsc27のelmoに75%勝つ程度の評価関数を用意出来ているので、やねうら王並み(もしかしたら以上?)の学習部を搭載していると考えられます。独自実装は格上を倒す可能性を上げると同時に格下に負ける可能性も増やすのですが、読み太がここぞという試合で負けたのを見たことがないので、今年も勝ち上がると思っています。

 

elmo

WCSC27では評価関数の公開とponanzaを撃破しての優勝のインパクトがありすぎて忘れられがちですが、開発者の棋力に頼らない定跡生成ルーチンを持ってる数少ない開発者の一人です。学習と定跡作りを同時にやろうとすると往々にして人や計算機などの資源が足りなくなるのですが、過去の実績を鑑みれば隙のない構築にしてくることでしょう。敢えて言うならsdt5でのelmoはとても運が悪かった(予選は後手ばかり引いてたし、本戦では読み太+まふ定跡に狙撃されるし、5位決定トーナメントでは永世後手のQhapaqに先手を譲るし)ので、それを引きずってないか心配です。

 

【以下、この辺のソフトが椅子をとり合うと予想】

Apery

depth 10のelmo絞り+aperyがあまり機能しないという極めて貴重な情報を提供してくれています。アピール文がメモ帳ですが、ここで紹介してるソフトの中では一番たくさん情報を出しているすらありえます。有志の強力を元に大量のデータを持っていること、これまでの成績的に学習部では高いパフォーマンスを出してくる可能性が高いことなどから、今回も注目株だと思います。探索部がsf9仕様になってたら言うことなしです。

 

たぬきCrazyShogi

 非線形関数を引っさげてくる勢。Ponanzaが示してきたようにディープラーニングはKPPTよりも高い精度で盤面を表現できることが知られていますが、計算効率でKPPTを上回るのにかねてより難がありました。たぬきチームは差分計算などの実装を頑張ることで高速化を、CrazyShogiは「んなこと知るか」と数の暴力で殴りかかることを考えているようです。

CrazyShogiはお値段100万円ちょいのTesla V100を8体連れてくるようです。たぬきチームは詳細は解りませんが、遂に所属企業を連れてきたので割とガチで来る可能性があります。こいつら頭おかしい

良くも悪くも線形計算でガラパゴス化したコム将棋界でディープラーニングベースの評価関数が簡単に計算効率で勝ち越してくるとは思いませんが、WCSCには計算資源制限はないし、並列化とニューラルネットの相性の良さを考えると脅威ではあります。

 

nozomiHoneyWaffleQhapaq

sdt5後の学習のメタゲームはelmo絞りから変化していません。インフラの改善が大きなウエイトを占める状態では開発者の経験に基づいた隙の無さと手の広さ(評価関数、探索部、定跡、高速化など伸びる要素に手を出すこと)が重要です。nozomiはミリオンファイターとしての長い経験が、HoneyWaffleは振り飛車というブルーオーシャンに相手を引き込むことで、こうしたゲームを上手く制することを助けると思っています。Qhapaqは正直隙だらけなのですがAperypaqより一応強い評価関数を作ってるので、外がサボってれば勝てます。

 

PALYorkiesHafeweizen

恐るべき新人。PALはコンピュータ囲碁界のAperyことAQの開発者のチーム、Yorkiesはsdt5でやねうら王の大幅な高速化に成功したチーム、Hafeweizenはsdt5の準優勝ソフトshotgunと13位の人造棋士18号の連合チームです。独自手法について深くを語ってはいませんが(PALは囲碁ベースの学習、Yorkieは並列化と高速化、Hefeweizenは未定らしい)飛び抜けたスキルを使って虎視眈々と上記ソフトの暗殺を狙ってくると思います。

 

monkey magic再び?】

wcsc27ではmonkey magicというソフトがfloodgateで謎の高レートを成し遂げていました(ちなみに正体はwcsc27優勝ソフトのelmoだった)が今年も唐突にヤバイソフトが出てくる可能性はゼロではありません。今のfloodgateの参加ソフトは評価関数やハードが明らかでないものが多く(最も、明らかにしてるソフトも自己申告ですが)レートの正確な推定は難しいと思っています。i9のaperypaqなどを有意に倒しているようなソフトは今の所いませんが、floodgateの旬は4月なので今後の動きに注目です。

注:といっても開発者はこの時期は最後の調整が忙しすぎてfloodgateを見てる暇は概ね無いのですが

 

【結論】

よくわからん

学習の最適化に纏わる考察

評価関数の学習をやっている人達における、バッチサイズや学習率に関する話は、
アラサー男子の健康トークのような立ち位置であると言えます。

私自身は、学習におけるパラメタ調整は落とし穴のようなものだと考えています。
微調整した所でそこまで強くはならないのですが、設定を誤ると学習を大失敗させる ポテンシャルはあるからです。
故に、どういうケースでどういう失敗をするのかを考えておくことは有意義と言えましょう。

【取り敢えず実験】
以下のコードを実行すると、バッチサイズ、学習率を変えながら1次元問題の最適化が出来ます。
勾配は -x + 乱数 なので、理想的にはx=0になってほしいところです

import random
import sys
import math

def getgrad(x,batchsize):
    grad = 0
    for i in range(batchsize):
        grad += -x + random.uniform(-1.0,1.0)
    return grad

def adagrad(initx, batchsize, epochsize, eta):
    x = initx
    g2 = 0                                                          
    save = 10 # 適宜変える
    for i in range(epochsize):
        g = getgrad(x,batchsize)
        g2 += g*g
        x += eta * g / math.sqrt(g2)
        if i % save == 0:
            print(x)
adagrad(float(sys.argv[1]),int(sys.argv[2]), int(sys.argv[3]), float(sys.argv[4]))

【バッチサイズを変えながら計算してみる】

データ数を1000万、batchsizeを1,100,1000に変えた結果が此方です。
横軸が食わせた教師の数、縦軸がxの値(0に収束するはず)です。
青:1000 赤:100 黄:1 です

f:id:qhapaq:20180311004024p:plain

基本的に収束した後の綺麗さはバッチサイズが大きいほど、
収束速度はバッチサイズが小さいほど早くなります。


【バッチサイズを大きくすることの数理的な意味】

雑に言えば、バッチサイズの平方根に比例してノイズに対する耐性がつきます。

というのも、各特徴量に対してホワイトノイズ(統計誤差)が乗ったものが勾配になると考えれば、
真値から特徴量がずれていた時に勾配が真値の方向を向くか否かは真の勾配とノイズの
SN比に依存しており、ノイズレベルはサンプル数の平方根に反比例するからです。

【将棋の学習への適用】

将棋では一度の学習でxx局面を使うという形でバッチサイズを決めていますが、
各々の特徴量について、バッチ毎に何回出てくるかは異なります。

故に特定の特徴量についてバッチサイズや学習率を良くした所で、その他の特徴量に
ついても設定が最適化されているかといえば、それは結構怪しいです。

一番避けたいのは出現回数が少ない特徴量が変な値を持つことで、マイナーな局面について
大幅な読み誤りをしてしまうことです。それらを避けるには

・出現回数の少ない特徴量は更新させない or 学習率を下げる(河童絞りでよく使う)
・学習速度を犠牲にバッチサイズを大きくしておく(雑巾絞りの追加学習でよく使う)

が有効ですが、最強の解決策は

・教師データの数を課金して増やす

ことです。しかし、私自身は課金してデータを増やすのはあまりよい戦略だとは思っていません。
というのも、教師データの質に問題があれば数をどんなに増やしても強くはならないからです。

【私が考える学習パラメタ弄り論】

学習に失敗した際に、何より先に知るべきなのは教師データの質に問題があるのか量に問題があるかです。
基本的にはバッチサイズを大きくしたり河童絞りのような手を使って、変な学習をさせないことを重視して(必要ならReMUとかを使って)
時間をかけて勝率を測定してみるのが良いと思ってます。

最強ソフトの言うことの真逆をやると最弱になるのか検証してみた

今や将棋研究のお供の定番である将棋ソフトですが、その裏で初心者の練習相手としても定番になりつつあるようです。駒の動かし方を覚えた人が次にやるべきなのが数練習をすることであり、数をこなす為のモチベーションを維持する際に、無限に遊んでくれてしかも負けてくれる将棋ソフトにニーズがあるようです。

 

どのぐらいニーズがあるかというと、絶対王者のponanzaさえも弱いソフトを作ることに一石投じる程度にはニーズがあるようです。

将棋ウォーズにある史上最強に弱いPonanzaの話|山本 一成@Ponanza|note

 

曰く、クッソ強いponanzaの評価値を反転すればクッソ弱いソフトが出来る。

成る程。ponanzaが全力で悪くなる局面を探してくれるなら、確かに弱くなりそうだ。しかし私はこの記事を見て「ソフト同士が負けることに全力を尽くした場合、果たしてどのくらいまで弱くなるのか」が気になりました。

ここでは、ponanzaに倣い(?)評価値を反転させたソフトの棋風とその弱さについて考察していきたいと思います。

 

 

【ゲームのルール】

意図的に負けようとするとなると、初手投了や非合法手、王手放置などがでてきてしまいますが、此処では非合法手は禁止とします。また、これはやねうら王の評価値を反転させるだけという手抜きhackの副作用なのですが【評価値の詰みは反転していません】即ち、評価値の低い手を探す一方で、意図的に詰みがある局面には持って行こうとしないということです。

この辺はゲームのルールとして議論の余地がありますが、詰みがないと言う縛りでできるだけ悪い局面を探すのは絵的に面白いし、なにより改造が怠いのでこのまま行きます。

 

【△aperypaq on やねうら王 vs ▲私】

f:id:qhapaq:20180115214054p:plain

終局図はこちらです(駒が往復するようになったので打ち切った)。青線が終局後に通常のaperypaqで棋譜を検討した場合の評価値です。

 

互いに悪い手を指すわけですから、評価値は手毎に往復することになります。中盤にかけて私のほうがちょっと良く(負けようとしているのだから、相手よしが自分よしだ)なっていますが、コンピュータの流石の終盤力で最後は私の判定負けに近い評価値になっています。

 

【評価値反転ソフトの棋風(初手20手)】
   1 7六歩(77)        ( 0:02/00:00:02)
   2 4四歩(43)        ( 0:01/00:00:01)
   3 5五角(88)        ( 0:04/00:00:06)
   4 1二香(11)        ( 0:01/00:00:02)
   5 6四角(55)        ( 0:02/00:00:08)
   6 7四歩(73)        ( 0:01/00:00:03)
   7 4六歩(47)        ( 0:07/00:00:15)
   8 2四歩(23)        ( 0:01/00:00:04)
   9 4五歩(46)        ( 0:05/00:00:20)
  10 4二玉(51)        ( 0:01/00:00:05)
  11 4八飛(28)        ( 0:01/00:00:21)
  12 4三玉(42)        ( 0:01/00:00:06)
  13 4六飛(48)        ( 0:02/00:00:23)
  14 4二銀(31)        ( 0:01/00:00:07)

  15 1六飛(46)        ( 0:01/00:00:24)
  16 5一銀(42)        ( 0:01/00:00:08)
  17 1四飛(16)        ( 0:03/00:00:27)
  18 3四玉(43)        ( 0:01/00:00:09)
  19 3六歩(37)        ( 0:11/00:00:38)
  20 4二金(41)        ( 0:01/00:00:10)
 

みたところ、玉を前に繰り出す棋風のようです。玉を相手の攻め駒に近づけ、少しでも駒が入ったら寄せられてしまうようにしているのでしょう。途中取らせるつもりで跳ねた桂馬の行き先に銀と飛車を配置されたりと「あ、コヤツ出来る」的な技を幾つかやられましたが、私の棋力があんまり高くないこともあり、ふと気付けば駒組が相手のほうが酷いという負け筋(勝ち筋)に入ってしまいました。

 

【謎の頂上決戦】

さて、私ぐらいの棋力では負けることが出来ないことが解ったので、此処からはソフト同士に対局してもらうことにします。お相手はやねうら王の教師110億のうち30億ちょいを食わせたもの(yanezero。私が手元で用意した)です。

 

f:id:qhapaq:20180115221257p:plain

 

大方の予想(?)に反し、通常ではaperypaqよりレートが200以上低い後手番のyanezeroが勝ちました。本局を振り返ると60手目と200手目あたりにドラマがあったようです。

f:id:qhapaq:20180115221858p:plain

59手目26玉で先手のaperypaq側が大幅な有利を獲得します。

というのも、先手玉によって後手玉の退路が封鎖されたことで後手玉に詰み筋が生じつつあり、かつ、先手玉が後手玉側に居るため、下手に受けようとすると先手玉が寄ってしまうからです。13桂不成ではなく成にしたのはなぜかと思いましたが、王手をすることで無理やり駒を押し付けるのがコンピュータ流の負け方のようです。

後手は泣く泣く13香と成桂を取りますが、ここから暫くは後手が苦しい(通常の評価値で言えば後手有利な)局面が続きます。

 

f:id:qhapaq:20180115222738p:plain

 

しかし、yanezero不利で迎えた192手目でドラマを迎えます。ここでyanezeroが取った手は金を取る75歩

そして78玉に対し、67金打、同玉、66歩、同玉、46飛車、56金打、同飛、同玉で後手の攻守の要であった飛車を押し付けることに成功します。すごい!!

 

感想戦

評価値逆転将棋ソフトの対局は自玉を危険な場所に置きながら相手玉を詰まない程度に追い込んで攻め駒を押し付けることで不利を確保するという見ていて地味にスリリングなものでありました。

意味があるかは解りませんが、皆様も暇つぶしにどうでしょう?

各種将棋ソフト間での教師データの変換ツールの開発

【もっと良いコンバータを作ってQhapaqの侵略を阻止しよう】

このままだとデータのAperyとYaneuraOuを強くする変換器、略してKizunaAy converter(キズナアィコンバータ)が業界標準になってしまいます。助けて!

 

Aperyとやねうら王の間で未だに教師データがやり取りできない(個人的な開発はされているのかも知れないですが、基本機能として実装されていない)のを受けて、変換ツールを開発してみました。

 

Aperyとやねうら王の間では棋譜のHuffman符号化のルールが違ったり、データの形式が微妙に違ったり(例、勝ち負けに関する変数の値のとり方、手数の情報を保持するかetc)すること、今後もこうした仕様変更がありうることを受けて、一旦sfenベースのテキストファイルにすることにしました。

 

例:

sfen 6s1l/3p1sk2/5p1p1/p2+Bp1p1p/2p4N1/P5LPP/3GPPP2/1+p5K1/L4+r1NL b R2N2Pb3g2sp 0
move 6d5d
score -1917
ply 110
result -1
e
sfen 6s1l/3p1sk2/5p1p1/p2+Bp1p1p/2p4N1/P5LPP/3GPPP2/1+p5K1/L+r3S1NL w R2N2Pb3gsp 0
move 8i4i
score 2717
ply 109
result 1
e

(以下、続く)

 

 

sfen hoge  ...... 局面をhogeにする

move hoge ...... その局面でのbestmoveを指定する

score hoge ...... その局面での評価値

ply hoge ..... その局面での手数(Aperyでは無視される)

result hoge ..... 最終的な結果(2017.11のやねうら王を標準としてる。手番側が勝っていれば1、負けていれば-1、引き分けなら0)

e ...... 教師データ一局面分が終了する

 

【apery側での利用】

conv_teacher_sfen teacher output

teacherという名前のApery用の教師データをoutputという名前のsfenベースのテキストに変換します

conv_teacher_bin sfenfile output

sfenfileという名前のsfenベースのテキストをApery用の教師データに変換します

 

【やねうら王側での利用】

learn convert_plain output_file_name output input1 input2 ...

input1,input2 ...という名前のやねうら王用の教師データをoutputという名前のsfenベースのテキストに変換します

 learn convert_bin output_file_name output input1 input2 ...

input1,input2 ...という名前のsfenベースのテキストファイルをoutputという名前のやねうら王用の教師データに変換します。

 

【例:やねうら王のdepth 10の教師データをaperyに食わせたい】

教師データをDLする(ファイル名をshuffled_sfen.binとする)

./YaneuraOu-by-gcc

learn convert_plain output_file_name yane_sfen.txt shuffled_sfen.bin

 

./apery

conv_teacher_bin yane_sfen.txt shuffled_sfen_apery.bin

use_teacher shuffled_sfen_apery.bin 8

 

注:use_teacherの仕様はaperyのドキュメントなどを参照

 

【その他注意】

この形式でやねうら王の教師データを変換した場合、ファイルサイズは約3倍になるようです。それなりに鬱陶しいですがギリギリ我慢できるレベルかなとも思います。ストレージ圧迫が気になるなら、ファイルを分割して、変換と削除を繰り返しても良いでしょう。

 

Aperyとやねうら王のHuffman符号の仕様の差を読み込み、直接変換したほうが効率は良いのでしょうけど、今後も両者が同じ仕様で教師データを作り続けるかは怪しく、また、バグ取りが面倒だったのでこの形式でリリース(もとい、プルリク)します。隗より始めよ...ですね。

apery-qhapaq評価関数(apery sdt5比でR+50くらい?)を公開します

正式名称はapery-qhapaq評価関数。略すならaperypaqと書いて「えいぷりぱーく」または「あぺりぱーく」と読みます。

 

【DLはこちらからどうぞ】

Release qhapaq学習機によるコラボ関数群 · qhapaq-49/qhapaq-bin · GitHub

# aperypaq.7zが今回の関数です。

 

【強さ】

第5回将棋電王トーナメント終了後に公開されたaperyの評価関数(探索部は双方ともやねうら王を利用)に対して、8スレ1秒対局で
・375-37-266 定跡off(勝率58%)
・221-32-162 たぬき互角局面集8手目(勝率57%)
となっており、推定レートはapery-sdt5比で+50程度です。長い持ち時間での強さは解りません。寧ろ教えてください。

 

【精製方法】

sdt5でQhapaq_conflatedが用いた学習をapery-sdt5に対して適用したものです。独自学習手法を持っているとこういう時に便利ですので、皆様も是非やりましょう。

 

【ご利用に際して】

本評価関数はaperyに依存しています。
ご利用の際は、aperyの使用条件を満たすようにお願いいたします。

 

【おまけ(チラシの裏):開発者的に気になること】

evalresolveすると解りますが、差分がメッチャ小さいです。0.1%ぐらいしか差がないみたいです。こんなに小さな差でレート差がでる(少なくとも、短い時間では有意に強くなる)となると、KPPTの値の大半はゴミなんじゃないかなと思います。

 

Qhapaqの学習方法は互角局面集での勝率を最適化する作りなのに、定跡offの方がほんのり強くなっている気もします。KPPTの汎化性能ってまだまだ上限からは遠いのかも知れません。

Qhapaq_conflatedの評価関数と定跡を公開しました

長らくおまたせ(?)しましたが、Qhapaq_conflatedの評価関数を公開しました。河童パーク定跡も同梱してあります。

 

DLは此方からどうぞ

Release qhapaqの評価関数群 · qhapaq-49/qhapaq-bin · GitHub

 

評価関数の強さについて

Qhapaq_conflatedは2秒(4スレ、8スレ、12スレ)対局、かつ、nodchipさん提供の互角局面集の8手目、または16手目の局面を初期局面とした上での勝率を最適化しています。定跡offに比べると

【メリット】

・互角局面集の方が局面が広い(オールラウンダーになる)

・広い局面で強いほうが検討に用いる際に便利

・評価関数の序盤の穴を突く類の過学習を避けやすい(未知の評価関数に強い?)

【デメリット】

・普段なら指されない戦型に特化してる可能性がある

・開始局面の時点で形勢が傾いているものも多くレートが信用しがたい

 

といった違いがあると思います。あまり対局数は稼げてないですが、elmo比で勝率73%程度、tamore相手に勝率60%程度のようです。

 

楽しんでいただければ幸いです。