やねうら王と将棋所で遊びながら評価値を鑑賞する
前回の将棋所で遊んだ際に残したメモである、評価関数を入れ替えることによる評価値の変化を観察してみる。
jotcut-jshakki.hatenablog.com
最も、課題局面は前回と同じであり大差のついた局面なので、評価関数違いが目に見えるかは不安なところである。
やねうら王、Apery系列は、評価関数に互換性があるため、Aperyチルドレン、やねうら王チルドレンの評価関数は入れ替えて使うことができる。
今回は、やねうらお氏の公開している28種の評価関数の181_0020Gと500_0000M、第4回将棋電王トーナメントでやねうらチルドレン最強と評された読み太の評価関数、第27回世界コンピュータ将棋選手権で優勝したやねうらチルドレンのelmoの評価関数を用い、前回の課題局面での評価値を見比べてみる。
将棋所の設定は次の通り
評価関数:500_0000M
課題局面では8八角成からの展開で3200有利と表示し、読み筋先でのEval値は2880であった。
また、課題局面自体の評価は0と計算している。これは500_0000Mが駒得のみの計算基準に基づいているからだと考えられる。
評価関数:181_0020G
課題局面では8八角成からの展開で3074有利と表示し、読み筋先でのEval値は-3006であった。
また、課題局面自体の評価は-58と計算している。
評価関数:読み太_SDT4
課題局面では8八角成からの展開で2967有利と表示し、読み筋先でのEval値は2686であった。
また、課題局面自体の評価は48と計算している。
評価関数:elmo_wcsc27
課題局面では8八角成からの展開で3627有利と表示し、読み筋先でのEval値は-3265であった。
また、課題局面自体の評価は154と計算している。
500_0000Mに比べて、他の評価関数は読み筋先での局面の評価値との差が少ない気がする。
気が向いたらそれぞれの評価関数の設計思想とこれらの値を照らし合わせてみようと思う。
閑話
elmoの第27回世界コンピュータ将棋選手権での優勝おめでとうございます。正直Ponanza Chainerを二度も打ち破るとは思いませんでした。見立てが甘かったです。
旅の記録ー書籍編(未完成?)
ひとまず評価値と探索の関連について、参考になった書籍を羅列するだけです。
人工知能はいかにして強くなるのか? 対戦型AIで学ぶ基本のしくみ (ブルーバックス)
- 作者: 小野田博一
- 出版社/メーカー: 講談社
- 発売日: 2017/01/18
- メディア: 新書
- この商品を含むブログを見る
- 作者: 松原仁
- 出版社/メーカー: 共立出版
- 発売日: 2005/12
- メディア: 単行本
- クリック: 10回
- この商品を含むブログ (6件) を見る
- 作者: 松原仁
- 出版社/メーカー: 共立出版
- 発売日: 2012/05/09
- メディア: 単行本
- 購入: 1人 クリック: 10回
- この商品を含むブログ (11件) を見る
- 作者: 松原仁
- 出版社/メーカー: 共立出版
- 発売日: 1994/07
- メディア: 単行本
- クリック: 2回
- この商品を含むブログを見る
Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)
- 作者: 池泰弘
- 出版社/メーカー: 工学社
- 発売日: 2007/04/25
- メディア: 単行本
- 購入: 9人 クリック: 18回
- この商品を含むブログ (9件) を見る
いやぁ、今年のコンピュータ将棋選手権も面白い展開ですね、正直言って去年二次予選に進めなかったelmo(monkeymagic)がPonanzaを、大合神クジラちゃんが技巧を倒すとは思っていませんでした、すみません。
決勝リーグではPonanza Chainerがelmoにリベンジを果たすも、クジラちゃんに負け、混戦の末にPonanza三連覇とかになると根拠なしの予想をしておきます。(執筆2017/05/04時点では二次予選まで終了)
旅の記録ー実験(将棋所編)
前回の記事では、将棋ウォーズの棋神(2016Ponanza)による解析の評価値から千田先生の解説を噛み砕いていった。
今回は将棋プログラムのやねうら王(Yaneuraou-2017early)を使った実験で、先の説明を補完していった結果を示す。(正直最初にこれに気づいてれば回り道しなくてよかったかも)
やねうら王には将棋所で使えるUSI拡張コマンドが多数用意されており、その中に'eval'というコマンドが存在する。このコマンドはその時点の局面に対しる評価関数での計算結果を表示するというものである。
▲7六歩△8四歩▲6八銀の局面に対し、このコマンドを使用し、その局面での評価値と指しての先の評価値を比較してみる。
実験結果
まずは▲6八銀まで進めた状態。この時点でやねうら王は、およそ700~800万局面を読み、3106という評価値をつけている。(赤枠参照) これまでの説明をもとにすると、この値は隣にある読み筋の△8八角成▲7九金△9九馬▲7七銀…という応酬の果てにある局面を示していることになる。
次に、この局面でevalコマンドを送った状態。-87という値が返されており(赤枠参照) 、この局面だけ見るのならば評価は-87ということがわかった。
最後に、先程の評価値3106の読み筋通りに進めた局面を示す。evalでの値は2796となっており、まあまあ近い値を示すことがわかった。
今回の実験では、やねうら王の拡張コマンドを用いることで、将棋プログラムが示す評価値が、その局面の評価値ではないということが明らかになった。
ただ、本実験でも、読み筋の先の局面の評価値が2796で、初期の3106と比較して400程度離れていることが気になった、
今後の予定としては、探索を制限させる、評価関数を変えてみるなどして、様々な局面(6八銀の局面/その他序盤/こまのぶつかりあった中盤/最終盤、盤上この一手や劇的逆転の局面など)でいろいろ試行錯誤したいところである。
以上
メモ:
値自体は静的評価値
読みと異なる手をさした場合、大幅に値が変動するが、序盤など選択肢が広い場合は、プログラムが探索してない局面に移行しても評価が大きく変動しない?
旅の記録ー人体実験(将棋ウォーズ編)
当時、千田先生の解説を読んでもいまいちわかったようなわからないような気分の私は、
実際に試して見たほうが早いと考え、幾つかの評価値の出る媒体で実験してみることにした。
今回は将棋ウォーズでの結果
方法は、▲7六歩△3四歩▲6八銀!と指し、その対局を棋神(2016Ponanza)グラフ解析と1手解析で解析するというもの
実際結果
解析による3手目の評価値、左は一局をグラフ解析した後3手目を表示した状態、右は3手目の局面から次の一手を1手解析して得られた結果となる。
左図での評価値2708は、4手目以降の8八角成となる展開を予想して算出された値だと予想できる。一方右図の1手解析では、Ponanzaは発狂でもしたのか、8八角成を読まずに、△6二銀と自陣に手をいれる手を読んでいる。その後は▲7七角△7四歩▲2六歩△7七角成▲同銀△2二銀▲6八銀△2五歩▲7三銀△2四歩と進み、この局面に進めば互角の30になると評価を下している。
実戦では△3五歩と進んだ、この場合、後手としては必勝手順である8八角成を逃し、先手側に8八角成を回避する猶予を与えてしまったため、グラフ解析による評価値は先程の2708から86にまで減少している。またこの局面の1手解析では、▲7八金で角を保護し、以下△8八角成▲同金△3二金▲7八金△4二飛▲6六歩△6二玉▲6七銀△4四歩と進み、この局面に進めば63になると計算している。
この場合は、グラフ解析における評価値と1手解析で示された手順での評価値が近いため、グラフ解析での評価値は1手解析の手順と近いものを探索し86という値を表示したのだと思われる。
実戦では次に5六歩と指し、再度8八角成を誘導した。その際の評価は下のようになった。
今度も1手前の局面同様、グラフ解析と1手解析での評価値が近い値を示しており、グラフ解析での評価値2583は1手解析での手順と近い手順を辿り計算されると想像できる。
なお、1手解析では△8八角成▲7七桂△9九馬▲7八金△8九馬▲5七銀△3二飛▲6八玉△6二玉▲2六歩の手順で2708となっている
実戦では今度こそ8八角成とされ、当然負け。
以上
旅の記録ーその他参考になったツイート
動画非公開の頃に、Twitterで調べたら、参考になる様々なツイートを見つけることもありました。
指す将の三岸さんによる説明
@kiiro_ki 現局面で評価値を出したら、そこから分岐しうる局面達の評価値を出してみて、評価値の高かった局面を最善の局面(=読み筋)として読み進めます。何手先まで読むかは設定次第ですが、最終的に表示される評価値は、読み筋の先にある局面の駒の位置関係とかを評価した値になります
— 三岸 健@指す将順位戦B5 (@migishiken81) 2017年2月10日
@kiiro_ki 現局面で評価値を出したら、そこから分岐しうる局面達の評価値を出してみて、評価値の高かった局面を最善の局面(=読み筋)として読み進めます。何手先まで読むかは設定次第ですが、最終的に表示される評価値は、読み筋の先にある局面の駒の位置関係とかを評価した値になります
— 三岸 健@指す将順位戦B5 (@migishiken81) 2017年2月10日
@kiiro_ki ソフトが読めていなかった手を人が指して、その手の良さにソフトが気づくと数値がバーンと上がる事はありますね。そういえば昨日スマホの将棋ソフトで検討してたら、詰みがあるのに3700点とか言ってました。一手指したら気づいてたけど。 pic.twitter.com/xtGSpM3EHA
— 三岸 健@指す将順位戦B5 (@migishiken81) 2017年2月10日
@kiiro_ki 無論スペックの高いPCを使えばこんな事は減るんですが、原理的には同じなのでどんなソフトでも読み抜けは発生します。
— 三岸 健@指す将順位戦B5 (@migishiken81) 2017年2月10日
アユムさんは実況で有名で、マイナー戦法とかで動画検索するとよく見る気がしますね
個人的メモ
— 元奨励会員アユムの将棋実況 (@ZpikT1) 2017年1月30日
棋譜並べにフリーソフト使う時の注意点
・序盤の評価値は無視(本の言うことや自分の感性を信じた方がいい)
・入玉含みの時の評価値は無視
・長手数の詰みや必至がありそうな時は、少し局面を進めてから読ませる(結構長手数の詰みは見落としがち)
最後から二番目のツイートに評価値関連の記述
で、最善手を指し続けるうちに相手がどこかで間違えたらそれを正確に咎めればその時ようやく勝つ事ができる。お互いにイーブンの条件で始める勝負なら「自分が良い手を指して勝つ」ってのは原理的にあり得ないんですよ。できる事は「負けないように最善手を指す」即ち「最善手=負けない手」なのです。
— 彫木・環(安倍首相ガンバレby塚本園児) (@CordwainersCat) 2014年12月19日
これ、「将棋に必勝法はあるのか」とかコンピュータ将棋の作り方とか考えたり調べたりして出た結論なんですけどねw
— 彫木・環(安倍首相ガンバレby塚本園児) (@CordwainersCat) 2014年12月19日
人間の棋士も基本的にはそうしてるわけです。だから「最善手」とはどちらかが一方的に良くなる手では無く、ほぼ「双方にとってベスト」な手、つまり負けない手になるわけです。あ、そう言う読み方をするから、多少評価関数が不正確でも深く読むとそれなりに強くなるのか。間違いを打ち消し合いそうだ。
— 彫木・環(安倍首相ガンバレby塚本園児) (@CordwainersCat) 2014年12月19日
盤デレ感想関連で参考になったもの
盤外のシンデレラ 『5四銀の見つけ方』 ~ソフトを用いた局面検討~ (19:55) https://t.co/mRnSlBMKAF #sm28458281
— さばかん (@sa_ba_ka_n) 2016年3月20日
ソフト検討に関する。留意点とか注意点とか、そもそもソフトの評価値を鵜呑みにしない為のエトセトラ
盤外のシンデレラ 『5四銀の見つけ方』 ~ソフトを用いた局面検討~ (19:55) https://t.co/1DfAfcSQJK #sm28458281
— SIM(シム)@予定調和 (@sim3simo3) 2016年4月2日
人間の補助を加えるとより、精度が増すって事はわかったですw
盤上のシンデレラの7話見た.あれはニコ生の将棋放送で評価値が大きく揺れ動くのを見て狂乱してる観る将はぜひ見るべきだな.自分で将棋指して自分の棋譜をソフトに検討させてる人なら常識なんだろうけど,観てるだけの人にはちゃんと説明しないとね.
— アーシェ@指す将順位戦B3 (@Ashe_is) 2015年12月20日
盤デレラ(番外編)新作きた。
— とーちか (@touchica) 2016年3月19日
ソフト検討初心者にオススメです。
とても分かりやすくまとまってます!
盤外のシンデレラ 『5四銀の見つけ方』 ~ソフトを用いた局面検討~ (00:19:55) #sm28458281 https://t.co/3YgkWH6Iod
『同一局面深く読ませるより数手自分で動かした方が速く正確な検討になりやすい』
— とーちか (@touchica) 2016年3月19日
はとても共感出来る
ちなみに最後のfloodgateでのApery系統のソフトの見分け方は
Apery(系統と分かったソフト)との対局で評価値推移がほぼ一致するかで大体分かると思うけどどうなのかな?
以上
旅の記録ー高橋直大さんのツイート
AtCoderのchokudaiさんはしばしば将棋の話題にも触れられている。
今年の1月ごろには、評価値と言語化について参考になるツイートをされていた。
特に、この会話の中で評価値について触れられている
@unyan0719 いやいや、それはありえない。木の探索である以上、(検討結果にアウトプットされていないかもしれないけれども、)「こういう進行が最善である」という進行は絶対に読んでいる。で、そこの一番深い部分の評価値がそのまま評価値になってるソフトがほとんどのはず。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
きっかけとなった一連のツイートは以下
よく、「コンピュータ将棋は、なぜこの手が良いのかを言語化出来ない」みたいなことを言うけれども、これは大嘘だと思っている。「例えばこの手だと例えばこういう進行になってこれはこれくらい良いが、こっちだとこういう進行になるのでこっちの方が良い」というのは、探索結果そのままである。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
で、「こう進んだ時にこっちの方が良さそう」の、「良さそう」の判断が機械学習を使った評価関数なので、その「良さそう」の感覚はちょっと複雑なんだけど、ここが複雑なのはコンピュータも人間も一緒で、三駒関係の計算から出せるコンピュータのがまだ単純な気がする。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
もっと正直に言ってしまえば、プロの人とかが「わかるように解説してくれる」というのは、「あたかもわかったかのように思わせてくれる」部分が多いので、それを「言語化」と読んでいるならそれは確かに無理かもなあ、と思っている。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
あくまで自分は「コンピュータ将棋は言語化出来ない」に対して否定しただけのつもりなんだけど、何故か「コンピュータ将棋に○○は出来ないよね」的なコメントが結構ある。そりゃ出来ない部分はあるけど言語化は出来てるよね、くらいの主張のつもりである。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
ってことで、人間にとって分かりやすい言語化がコンピュータにできていない局面も存在する、くらいであればまあ分かる。「言語化出来ない」という意味の分からない論調に文句を言いたいだけである。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
「言語化」って単語に「人間がわかりやすくする」って意味は別にないと思うんだけど、あるんですか。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
いやなんか、正直自分から見ると、コンピュータのが分かりやすい場面もあり、人間が分かりやすい場面もあり、って感じなので、別に人間>>>>コンピュータだとも思っていないのだけど。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
いや個人的には、人に教えてもらうのと、コンピュータの評価値見るので、参考になる度は半々くらいなので、そこまでコンピュータの示すものが我々に判りにくい言語化である、という印象もない。(人間がプロになれば印象がもっと変わるのかな、とは思わなくはない)
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
話が「言語化」と「分かりやすいか否か」で分かれちゃってるけど、前者については多分不満ないと思うので後者の話に移る。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
「三駒関係の部分言語化できてねーじゃん」は、まぁ「DeepLeaning」とか「人間のカン」と同程度に言語化出来てないよね。でも将棋の本質ってどちらかというと「手順」だよね。だから探索木部分が肝で、そこは言語化出来ているよね、というのが自分の主張のメインの部分かな。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
ただまぁ「言語化」の定義を「計算や予測の手順を明確に示している」という話にしてしまうと、DeepLeaningだって三駒関係だって全部そうじゃん!という話になり、それは個人的にはちょっと「行き過ぎ」って感じがする。そこまで理論派ではない。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
「将棋は探索が肝」という主張に関しては、やねうらおさんが作った「ひようら王」って将棋AIが根拠にある。このAIは、「駒得のみを評価関数に用いる」という無茶苦茶単純な評価関数であるにも関わらず、R2400くらいの実力がある。これはアマチュアでかなり上位にいけるくらいのレーティング。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
まぁこのあたりの探索手法に関しては、多分stockfishライクな超絶技巧が使われているので、当然誰でもこれが出来るわけじゃないんだけど、これもアウトプットされるのは探索木で、どういう理由でそういう評価になったのかは分かりやすいよね。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
これちょっとごまかしが入っていて、「どうしてここで評価を打ち切ったのか」が示されていない。ここはstockfish風ヒューリスティック探索での判断なので、ちゃんと把握するのは相当に難しい。「他より悪そうだから切ったのかな」くらいに捉えるしかないw
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
他にもこのような議論が行われていた。
-------------------------------------------------------------------------------
@chokudai 機械学習って基本的に人間の理解を超えた判断をしていて、それを解釈するのは人間だと思ってるんですけど、違うんですかね?(ここでいう言語化は機械学習による判断そのままなので人間による解釈が必要)
— 白沢ノエル(社畜) (@nf_shirosawa) 2017年1月8日
@chokudai 「探索」なのでその手の有効さが分かる人にはわかるという感じだと思います。何を思ってそう動かしたかみたいなのまで(将棋にそこまで詳しくない人が)知ろうとするととプロによる解説が必要なんだろうなと思います。
— 白沢ノエル(社畜) (@nf_shirosawa) 2017年1月8日
@chokudai なるほど(駒の動かし方くらいしかほとんど知らないので気持ちがわからない)
— 白沢ノエル(社畜) (@nf_shirosawa) 2017年1月8日
@nf_shirosawa まぁ例えば初心者でも「これをこう動かしちゃうと角がただで取られちゃうけど、こうすれば取られない」みたいなのは、3手先くらいまで見ればわかるわけです。細かいところはわからなくて良いので評価ががくっと落ちる手だけ避ければ良くて、これ自体は分かりやすい。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
-------------------------------------------------------------------------------
@dasapon17 まぁどこまでを「言語化」って言うのか、って問題はありますよね。計算過程が示されているのだから言語化されている、というのはその通りですし、ただまぁそこまでくると「それぞれがどういう意味を持っている」が完全に失われちゃうので、(つづく)
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
@dasapon17 その「意味」をどこまで持たせられるか、みたいなのが言語化度合いなのかなあ、と思ってます。で、「探索結果」ってのは、「単なる計算結果」と比べて遥かに明確な意味があると思うんです。そういう基準で局面の評価値自体は言語化されているとは言い難いかな、とは思ってます。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
@dasapon17 まぁその「意味がある・ない」を「人間にとってのわかりやすさ」と言ってしまうこともあると思うんですけど、自分の中でその2つには結構な乖離があるんですよねー。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
@dasapon17 うーん、だとしたら、まぁ多分程度問題なんだと思うんですよねー。突き詰めるとDeepLeaningも言語化されている、という立場ではあるので、『一切問わないとまではいわない』くらいなのかなあ、と思ってます。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
-------------------------------------------------------------------------------
@28tomabou ちょうどそれ思ってたところです。何を持って自分が「DeepLeaning+モンテカルロ」を言語化されていないと感じて、普通の探索木(というのはちょっと変ですけどw)を言語化されていると感じるのか、ってのは、割と考えてみたら面白そうだなあと思ってます。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
@28tomabou あ、ちなみに、将棋の「三駒関係」の部分と、囲碁の「DeepLeaning」の部分は大差ないと思ってます。前者のがちょっとシンプルですけど。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
本質的なのは、将棋は囲碁と比べて遥かに「探索木」の影響が大きい、という部分がポイントだとおもってます。
@28tomabou 例えばの話として、「駒得のみ」の評価関数で探索するようなAIを作っても、かなり強かったりします。(アマ有段くらい) 囲碁はそれはまぁ無理なので、どちらに重きをおいているか、というのはあると思います><
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
@28tomabou んー。理論的な話で、結局全部計算が行われているし、全部勘みたいなのが入ってるよ、って話だったら、同じだと思います。程度問題だと思うので。
— chokudai(高橋 直大) (@chokudai) 2017年1月8日
以上
旅の記録ー参考となった記事
ひとまずごちゃ混ぜで公開、あとで再編集するかも
正直この記事の説明がすごくわかりやすいです
評価値とは探索の代用であるとの説明
再探索によって評価が変わる例
評価値の値は何の基準なのかという話
評価値という数値 2:勝率と酔歩模型 : コンピュータ将棋基礎情報研究所
ミニマックス法とは何か? 1:コンピュータ将棋の基本戦略 : コンピュータ将棋基礎情報研究所
ミニマックス法とは何か? 2:アルファベータ枝刈り : コンピュータ将棋基礎情報研究所
盤デレのブロマガ内で評価値について触れた記事
その他面白かった記事
以上