rewritemath's blog

rewritemath’s blog

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

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

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

 

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

 

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

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

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

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

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

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

 

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

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

 

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

 

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

 

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

 

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

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

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

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

 

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

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

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

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

 

過学習の例を挙げます。

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

 

 

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

 

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

 

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

 

 

ここから雑談

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

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

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

 

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

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

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

 

 

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

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

たぬきの第28回コンピュータ選手権(略称WCSC28)バージョンの使い方

導入方法を伝えるまでもなく、評価関数とバイナリと定跡がセットで配布されているので、誰にでもすぐに使用できるようになっている。

『the end of genesis T.N.K.evolution turbo type D』(tanuki- 第28回世界コンピュータ将棋選手権バージョン)のバイナリ・評価関数ファイル・定跡データベースです。

 (リンク先から引用)

リンクはこちら

 

github.com

f:id:rewritemath:20180508133815p:plain

 

一番上のものをクリックするとダウンロードが始まります。

↓分からない人は気にしなくてもよい

(評価関数がいままでのものと違うので、とても軽量です。また、探索部は同封されているものでしか動きません)

 

解凍すると中身は以下画像のようになります。解凍が上手くいかない場合はこちらの解凍ソフトをお勧めします

ダブルクリックだけで圧縮ファイルを解凍できるソフト「Lhaplus」 - Windowsにまず入れる定番無料アプリ -2018年版- - 窓の杜

f:id:rewritemath:20180508134136p:plain

SSEとAVX版があるので、ご利用のパソコンに合わせてお選びください。

古いものから順に、

sse2,sse41,sse42,avx2となっています。

tournamentやevallearnの名前のexeは使わない方が多いでしょうから、

新しいほど動作は早いはずです。新しいcpuなら古いものでも動かせます。

 

エンジン登録をすれば動作します。

将棋所はこちらから。エンジン管理の説明を参照していただければ。

将棋所:将棋所の使い方

 

 

評価関数の表現力と、線形とかDeepLearningとか。後は探索について

WCSC28では、たぬき、CrazyShogi、DL将棋、ねね将棋、YSSzeroなど、三駒関係を捨ててDeepLearningを用いた評価関数を使ったチームが目立った。そもそも三駒関係とDeepLeaering系の評価関数は何が違うのかについて説明しながら、この傾向が何故流行りだしているのかについて、私のメモも兼ねて記事にしていく。

 

ただし、たぬきの論文は私も理解して読めていないので、私は書き手としては力不足であることをはじめに断っておく。(というか、ガチでやってる人たちは多分忙しくてこんな風に記事を書けないのだと思う)

 

三駒関係の仕組みについては

(まだ書くかどうか決まってないのでこの部分は自分で調べて)

 

だから、これは線形の関数の和で表されることになる。しかしこれでは、実際のところ表現力が足りない(限界近くまで来ている)と言えるのではないか。

 

開発者によってその意見は異なっていた

elmo瀧澤さん「まだ最適化の余地があるだろうと考えているが、方法は分からない」

nozomi大森さん「ほぼ限界まできていて、これ以上は伸びないので『三駒関係は終わった』と思う」

 

ちなみに、表現力問題には計算資源問題も絡んできていて、表現力を高くしすぎると計算資源が足りなくなる。

そもそも三駒関係が表現力の足りない手法であるのは、表現力を落とすことでその結果計算量を減らし、学習コストが現実的になるという結果を生み出している。

合理的な理由があって表現力を落としているのだ。

 

表現力問題についてもう少し触れていこう。評価関数を左右対称にするべきかどうかという問題がある。Ponanzaの山本さん、Aperyの平岡さんは、対象にしない方が強くなるのではないかとtwitter上で言っていた。やねうら王の、…

(選手権でやねさんは、本名で呼ばれると警戒すると言っていたので気にしている)

やねさん、ボンクラーズの伊藤さんは、対象にするべきだと言っていた。

 

理論上は当然、完全な評価関数なら対象にするべきであるが、両陣営の主張は見るべきところがあるので書いて残しておきたい。

 

山本さんは、「居飛車のように、飛車が右側にある時は、左側は居飛車の囲いになっていると考えられる。その分の評価を、居飛車の飛車に与えることなどは、表現力を高めることにつながる」

やねさんは、「理論上の最適解を求めるという意味でもそう。また、左右対称にしないと、その分、一つの合法局面が複数通りの評価を受けることになる。これを一通りにすることは教師局面を増やすことにつながる」

 

というような発言をしていたように記憶している。

私は理論上の最適解を求めるべきだと考えているので、対象の評価関数にするしか選択肢はないと思っている。

伊藤さんも概ね私と同じような見解だったみたいだ。

ちなみに、伊藤さんはボンクラーズの時点で手元の実験環境での計測データを取っており、計算量が倍に増えるとレートは100~200ほど上昇するという結果だったみたいだ。

ここに書き加えておくと、stockfishの探索では96スレッドにもなると(?、詳細は把握していないが)計算量が増えることによる影響を受けていないのではないかということがWCSC28以降com将棋開発者の間で噂されている。

Bonanzaは全幅探索だったから計算量とレートの推移については概ね線形でも違和感がないが、stockfish探索の場合は枝刈りがあるのでそうもいかない。枝刈りによって上がっていたレート分を解消してしまうまで探索して、結局深くは読めないという結果をもたらすこともあるだろう。少なくともstockfishではそういう挙動になるようだ。stockfishの大本では、その挙動に気がついていないことが理由で修正されていないのかもしれないとやねさんが発言している。

伊藤さんが将棋ソフトの開発から引退したのは、将棋ソフトの強さが人類を超えたと判断したからだと思う。私は、クラスタによるレートの測定はそういう意味を持って行われたと思っている。将棋ソフトはとっくに人間を超えていたのにも関わらず、それを隠すように米長が動いた。興行としては成功したかもしれないが、将棋界にそういうメリットがあろうと、Xデー(人間をコンピュータが越えたタイミング)が分からなくなったことは、研究者としては悲しむべき結果だろう。

 

Novice熊谷さんのtwitterによると、手元の研究では探索で成果が上がっているとかなんとか言っていた。「チェスと将棋で同じ探索が最適になるはずがない」とかなんとか。

 

私個人の見解では、探索と評価関数にも相性がある。評価関数が変わると探索との相性が悪くなるかもしれないのだ。そのことも考えると、手が回らなくなりそうだから他の開発者の方は最適をそこで探すより、別のところにてを付けた方が強くなるのではないかと考えているのだと思う。

 

実は探索については、与える時間とマシンの変化とレートの伸びが色々とごちゃごちゃする。時間は指数関数的に実験で与える訳にはいかないが、探索できる手の深さに対して局面は指数関数的に変化する。

 

新しいソフトを開発したとしても、そのソフトが強くなっているかどうかは分からないのだ。強くなったかどうかを検証するには時間と計算資源が必要。

評価関数も三駒以上に駒を増やすと局面の評価に時間がかかって読める手数も減るし、検証も大変だし、沢山手元に用意するだけでも容量を圧迫するし。

 

表現力の話に戻るが、表現力を高くしすぎるとそもそも意味がないということもある。評価値をつけられなくなるのだ。また、必要な教師局面の数も膨大になる。あえて表現力を落としてしまわないといけない。ほんの少しだけ違う局面は、ほとんど同じ局面だから同じような評価値を与える、というくらいの曖昧さが残るようでないと、教師の量が多くなりすぎて破綻する。

見たことない局面であってもなんとなく近い局面から評価値を類推するという余地をのこさなければいけない。そういう時に自分で判断できなくなってしまってはいけない。だからあえて表現力を落とす。もちろん計算資源の問題もあるけれど。

 

三駒関係の仕組みは記事にするかもしれないがとりあえずは自分で調べて頂いて、ニューラルネット系の(多層の)評価関数が有力ではないかとされている理由とか、その周りを少し書く。

まず、計算資源が足りないのでそもそも、Googleそのままの手法で学習させるのは無理に近い。Googleはこのタイプの計算を高速化するための独自のプロセッサを開発しているし、資金力もある。計算の効率も、使っている台数も、ひたすら強い。個人でそれに追い付くのは無理だ。数時間で終わったとか言っている計算も、一般人の自宅PCで行ったら何万年かかるかわからない。CPUじゃあ遅すぎて無理。GPU(CPUより相性がいい)でもたくさん必要。TPU(Googleが開発した専用の計算機)を並べてこそできる力業だ。

差分計算を取り込むことでたぬきは高速化をしたらしいが、(実装が難しすぎて並みの天才では)無理(並みの天才ってなんだ)。

たぬきはどうやらまだ最適化の余地があるみたいだ。

 

というか、タヌキはそもそも一から学習したんじゃなくて、もともとの評価関数を真似るようにニューラルネットを学習させていて…

(ここまでで3000字くらい書いたらしい。大変だった)

 

ところで、ニューラルネットは三駒関係と比べて素晴らしい特徴がある。

三駒関係は線形の関数の和だが、DL型だと、関数の結果を関数に投げてその結果を関数に投げて…という構造になっているので、外から見たら何が起こっているのかは分からないが、その実態はものすごく複雑な多次元の関数になっているはずだ。

 

多層ニューラルネットを使うと、実はあらゆる関数を表現できるらしい。この証明は前世紀には行われていて、ニューラルネットの研究は実は昔からあるのだが、計算資源が足りないことと教師データを集めるのが大変(なら作る…のも大変)という理由で停滞していた。インターネットが出てきて大量のデータを集めて利用することが手軽にできるようになってきた今、やっと成果が上がってきた。新分野みたいなもんだ。まだブームが来て10年も経ってないし。

 

とにかく、ニューロンを増やせばあらゆる関数を表現できるという魅力から、期待は大きい。(ただし出費も大きい)

 

三駒はもう大体最適近くまで来てしまったので、強いしさらにまだ最適化の余地があると思われる新手法はcom将棋界では期待のニューウェーブってわけ。乗るしかない。このビッグウエーブに。

 

まぁでも、この波は乗るのも大変です。Googleなんて異常な札束パンチをしてきているわけで、この札束パンチを真似しようと思うと厳しい。この業界、お金にならない趣味の領域なんでね。人間を超えたら研究対象としてはもう終わってるし。

 

まぁそういうわけで、たぬきを含めDLをやっている将棋ソフトはこれからも増えていくんじゃあないでしょうか。

 

散文を書き散らす結果になりましたが、ここまで読んでいただいた熱心な方には感謝の気持ちしかありません。マイナー分野とマイナー分野の高度な掛け合わせみたいな知識が求められるcom将棋業界ですが、興味を持って読んでくださった方は本当にありがとうございます。

消費電力(カロリー)対決!プロ棋士と将棋ソフトの対決は、どちらが勝つのか!

導入

よく見る主張である、

「消費カロリーをコンピュータ側が揃えて、その上で対戦すべき」というもの。なるほど。それなら人間も勝てそうだと思うかもしれない。

 

だが、私の記憶だとそういった話が出たところでいうと、

カワンゴさんがそういったのに対して平岡さんが、それで比べることに意味はないとか反論していた記憶がある

 

まぁ、立場の違いである。興行的に盛り上げるなら人間がちょうどいいくらいの戦いをしないといけない。

研究目的としては、双方全力を出してどちらが強いのかはっきりさせるべし。

 

 

しかし、当時と比べてコンピュータはかなり強くなっている。当時より1000くらいはレートが上がっていると考えられるだろう。

いまどきのスマホ、ハイスペックのものなら、いま出回っているMacBook Air程度の性能がありますから、今回の電王トーナメントのPCの1/4程度のnpsは出るようです。これは多めに見積もってもR400程度のダウンで済みますから、スマホ向けのチューニング一切しなくとも、ponanzaならR3400付近(推定)、魔女(やねうら王)+Apery最新評価関数でR3200付近なのではないでしょうか。

 引用元

やねうら王がスマホで遊べる時代に?! | やねうら王 公式サイト

 

2016年九月時点での、やねうら王開発者の磯崎さんの概観を確認するとこんな感じです。

 

 elmo時点ではこういった見解。

ちなみに、この話題で出ているelmoのレートと、現在最強ソフトとの差が…

f:id:rewritemath:20180426220654p:plain

http://www.uuunuuun.com/より

 

約200もレート差が既にあるなんて…

WCSC28ではもっと高いレートのソフトがザクザク出てくるんでしょうね…

 

ところで、スマホの消費電力をカロリー換算すると、人間の消費カロリーよりも少ないのかという話。

(データを集めながら、実はこの記事、二番煎じなのではないかという話になってきている…

将棋の消費カロリーは何ワット? : コンピュータ将棋基礎情報研究所

ここによると、(便乗)概ね人間が将棋を指すのに使うカロリーを電力換算すると50W。

 

 

 高い処理能力と省電力という両立が難しい課題について、大変興味深かったのは、Snapdragon 835との動画再生時やベンチマーク実行時の電力消費量のモニタリングのデモだ。動画再生では、Snapdragon 835が平均2000mW以上を消費しているのに対し、Snapdragon 845では平均1600mW程度に改善されていることがわかる。

Snapdragon 835とSnapdragon 845で同じ動画を再生
Snapdragon 845の電力消費量
Snapdragon 835の電力消費量

 さらにベンチマークアプリ「GFXBench」の実行時では、Snapdragon 835が平均3780mW程度を消費するのに対し、Snapdragon 845は平均2950mW程度に抑えられていた。電力消費量のグラフを見ると、波形の山のでき方も異なっており、電力を消費していない谷の部分ではSnapdragon 845はきれいに平らになっているが、Snapdragon 835は途中で負荷がかかっている状況が見て取れる。

 

http://www.itmedia.co.jp/mobile/articles/1802/16/news050.html

 

 なるほど、。

なるほどぉ…

Snapdragon845というのは最新のスマホのCPU(計算機だと思ってもらって)です。名人を超える将棋ソフトを動かすには十分でしょう。しかし、素晴らしい消費電力性能ですね。

 

え?充電にはもっと使う?発電の熱量と比べて計算しろ?

 

ところで脳の消費電力だけを考えたら、とか色々ありますが

 

まぁね、確かにそういう意見もあるかもしれませんけれど、そもそも比べることに意味なんてないでしょう。

 

競輪選手をお呼びして、漕いで貰ってその電力でスマホを動かすとか、太陽光で名人を倒すとか、そういう興行もありなんでしょうか(知らんけど)

 

結論!

最近のスマホの消費電力性能ってすごい!

会話が続く人と続かない人の違いはどこから来るのだろう

会話が続かない。誰しも抱える悩みではないだろうか。というか、誰しも抱える悩みであってほしい。私だけが悩んでいたんだとしたら惨めな気分になるじゃないか。

 

さて、「会話が続く」というのはどういった言葉と意味が近いだろうか。

 

  • 聞き上手
  • 話していて落ち着く
  • 物腰が柔らかい
  • 会話が弾む

 

並べて見てみると、話が続く人というのは、他者を尊重する人であったり、他者が発言するのを妨げない人であったりするということが分かる。

会話が続くことは、よい印象を与えるということがわかる。では、なぜ会話が続くのはよいことなのだろうか。これを考えることで、会話の目的を見出し、その目的を達成するにはどういった会話が望ましいのか考える助けとしよう。

 

そこで、なぜ人は会話するのかを考えてみる。

 

  1. 人に自分の意見を伝える、意思の疎通
  2. 人に話すことで、他者の視点を得る
  3. 人に話すことで共感してもらい、気持ちが楽になる

 

主に会話は、この三種類のどれかに当てはまると考えてよいと思う。では、それぞれ効果を見ていこう。

 

1.人に自分の意見を伝える、意思の疎通

これは、人間関係を円滑に進める目的がある。利害が一致している場合、助け合うことができるし、利害が一致していない場合は早々にそれを判断して、その人との関わりを避けることができる。

幸い、人は沢山いるので、利害が一致する人はだれか見つけることができるだろう。利害が一致する人と行動を共にすることで、お互いの利益になる。

人間関係は、お互いの利益になる取引ができる人と関係を持つのがよいから、その助けとなるのが会話ということだ。

 

2.人に話すことで、他者の視点を得る

これは、自分が直面しているなんらかの課題を解決する際に役に立つ場合がある。もちろん、これで助けてもらった場合は、何かお返しをするといいだろう。物で返すのでもいいし、この後で書く3で返してもいい。お互いに知見を交換することで互いの利益になる場合もあるだろう。

自分では思いつかなかった解決が見つかったら、自分は得をする。

 

3.人に話すことで共感してもらい、気持ちが楽になる

これは、自己肯定感や社会的欲求を満たすのに有用だ。共感してもらうのが効果的みたいだ。人は、自分の考えが人と違うと、脳がストレスを感じるようである。人に同意してもらうというのは、嬉しいこと。話を聞いてくれていると思えば、自分は尊重されている、自分はその人に親切にされる価値がある、と感じるだろう。

 

 

では、双方にとって理のある会話とはなんだろうか。

 

人に親切にすると、自分も気分がいいなら、双方が会話で利益を得たことになる

相談する人と、相談されたことを嬉しく思う人ならいい関係だと言える

 

話を聞いてあげれば、その人から好意を持ってもらえる、それが嬉しい

 

 

一方で、会話をするのにはもちろんコストもかかる。無駄に時間をかけて話をされたり、愚痴を聞かされたりしてストレスになった経験がある人も多いだろう。

 

利害関係として、総合的に会話の結果会話が双方にとってプラスになる人とかかわるのが望ましい。

(というか、そういう関係を友達って言うんじゃないのか…)

 

ではここからは、自分が一方的に利益を得るような会話をしてしまっている人が、どううやったら相手に利益を渡せるのかを考えよう。

 

そのためにまず、相手がその会話で何を求めているのかを考えよう。1か、2か、3か。どれが目的なのかによって、良い会話の応答というのは異なる。

 

そして、冒頭に書いた通り、相手が話すのをしっかり聞くようにしよう。相手の会話を遮らないで、相槌を打ち、(同意か、相手の言ったことを復唱するのがいい。)意見や言いたいことを引き出せるように話のつながる質問も挟む。

 

そして大切なのが、「会話が続きやすい言葉」を使うことだ。断定をできるだけ避けるのは勿論の事、相手が色々な解釈をできる言葉を並べる。話を続けるためには、その言葉とつながる会話が多くなるような言葉を選ばなくてはいけない。

 

余談になるが、知っていることであっても知らないというのは話を長くするテクニックの一つらしい。相手が説明を面倒がってしまう場合は逆効果だが、「~って知ってる?」と得意げに聞いてきたときなんかはとにかく知らないと言えば、その分話は長くなる。興味があるかのように装うのが大切だ。

 

「うるせぇ!キャバクラとか、スナックとか、ホストクラブとか、私はそういう役目を負いたいんじゃねぇんだよ!」

 

こういう声が聞こえてきそうだが、話を聞くのにもコストがかかっている(商売になるくらいに)ということはどこかで心の片隅に置いておくといいかもしれない。

 

結局評価値とか評価関数とはなんなのか

評価値、評価関数。こういった言葉が存在するが、これはそもそも何のためにあるのか、何の指標なのか、どのくらいあてになるのか。

 

これが今回のテーマです。

そのためにまず、ゲームの分類をしましょう。

 

学問の世界の話をしますと、ゲーム理論というものが存在します。これを今回の解説で参考にしております。しかし、できるだけそういう部分は出さないように、簡単に説明しようと思います。

 

では、ゲームを考えましょう。ゲームの種類ですが、今回は将棋や囲碁をテーマに据えますので、このゲームは

  • プレイヤーは二人
  • 二人の利害関係としては、片方が得するともう一方は損する 

   =片方が勝ちに近づくともう一方は負けに近づく

  • ゲームの勝敗に運は関与しない(コイントスとかサイコロとか)
  • ターン制

 

という特徴があります。オセロ、チェスも同じ分類ですね。

(引き分けは一旦考慮しません)

 

最善の手段をプレイヤーが取り続けると仮定します。

すると、ゲームの手番が決まった時点で既に、勝敗は決まっているということになりますね。「勝ち」「負け」のどちらかです。

 

では、最善の手段はどうやって求めればいいでしょうか。

 

まず、勝ちが近い場合は分かりやすいでしょう。例えば、将棋ではあと一手で詰ますことができる場合は、その一手が最善です。

他に、ある局面から、相手がどんな行動をしても勝ちが読み切れている場合も、最善手は決まります。

 

取れる行動のパターンが少ない場合は、全て列挙すれば、それで最善手は分かるのです。

 

つまり、仮に全ての終局までのパターンが列挙できているとしたら、その局面の評価値は「勝ち」か、「負け」かしかありません。

 

 では、評価値をわざわざ細かく区切って点数表示するのはどういった意味があるのでしょうか。

 

 

それは一重に、中間目標の点を指し示すために他なりません。

 

 では、どういった目標を中間目標として目指すべきなのでしょうか。

 

↓こちらに続きます

ritomath-shogi.hatenablog.com

実は将棋において水平線効果は合理的かもしれないという話

水平線効果というものをご存知でしょうか

探索アルゴリズムが、その探索深度が有限の場合に、将来的に見て問題のある行動を取ってしまう効果の事です

 

分かりやすく言い換えると、問題のある行為でも「未来のことが分からないから、仕方ない」ってなって問題行動を起こしてしまう人みたいな感じでしょうか

 

コンピュータ将棋において水平線効果が現れるのは、主にコンピュータが不利を自覚した時です。不利を自覚した時、不利になる将来を先延ばしにしようと意味のない手を指すのです。

 

では、不利な状況というのはどんな状況でしょうか。

また、不利な状況での最善手とはどういった手でしょうか。

 

 

まず、相手が最善手で常に応じてくる場合を考えましょう。

どれだけあがいても負けることに変わりはないのですから、どういった手を指しても結果は変わりません。全ての手は等しく最善手であると言えます。

 

では、その考え方が気に入らないとするならば、最善手と悪手の間に区別を設けることにしましょう。

 

「悪手は、負けを早める手」

 

どうでしょう、この決め方にはきっと皆さん納得してくれると思います。

では、この定義を元に、

 

「負けないように手数をかける手こそが最善手」

 

という仮説を立てます。

仮に相手がどこかで悪手を指すと仮定しても、着手が増えるほど、相手が「真の意味での悪手」(=形勢が逆転する着手)をしてくれる可能性は高くなるだろうというのは妥当な可能性に思えます。

 

では、水平線効果というのは将棋で、どういった指し手が現れた時にそうだと言われるのでしょうか。

負けを悟って、負けをあえて早める手を指した場合は、真の意味で水平線効果が現れたと考えることになりそうです。

 

しかし、将棋における水平線効果というのは主に、負け(≒評価値が悪化する局面)を先延ばしにする時に出てくる現象です。

 

負けを先延ばしにする手は、将棋で劣勢の場合は大体最善手だという話を先程しました。おそらく、人間同士の対局でもそうでしょう。

誤魔化すような手というのは、相手のミスを前提に置いた手であり、勝負手というのは往々にして負けを早める手(≒悪手)です。

また、相手がミスをすると想定できるなら、将棋を長引かせるような着手の方が勝てる可能性は高くなるのではないでしょうか。

 

まぁもちろん、場合によりますけどね。

 

 

さて、ここからは水平線効果についてもう少し掘り下げます。

「仮に相手が最善手で応じるなら、どの手を指しても不利な局面では負けに変わりがない」

これは大前提です。この場合、全ての手の価値は等しくなります。

 

 

では問題は相手がミスをするかどうか、ミスをどうやって誘発するかです。

この際突き詰めるなら、本質的な話をしましょう。言葉はしっかりとした定義が必要ですからね。

 

「勝負手を放つ」

 

これが想定される回答です。では、勝負手とはどういった手なのかといえば、おそらくその目的は、

 

「間違えやすい局面に誘導する」

 

ということになるでしょう。では、間違えやすい局面とはどういった局面なのでしょうか。これを数値で表すとすると、勝率に影響してくるんだろうなということが考えられます。

 

勝率に影響する局面まで誘導できたとしたら、形勢は傾いていると考えてよいとしましょう。

 

ところで、最近の(特にelmo以降の)将棋ソフトは、雑巾絞りの際に勝率も評価値に入れています。実際に、それでかなり強くなりました。

 

 

 

ここから大胆に解釈を進めると、評価値の正体は勝率であった。そして、勝率に影響してくる局面とは、間違えやすい局面である。

 

こういう結論が導き出せます。

 

この結論から過去の将棋ソフトを振り返ってみると、

 

Bonanza時代

当時の評価関数はプロの棋譜からです。となると、勝率は勿論勝敗に影響してくることになりますね。勝率の高いプレイヤー(≒強いプレイヤー)の棋譜に近づけているのですから。

 

Bonanza以降の探索の改善

勝率の悪くなる局面(≒評価値の悪くなる局面)を枝刈りして、先まで読めるようにして強くなりました。

 

Floodgateからの棋譜で学習させたソフト、自己対局で強くなったソフト

勿論これは、高レートのプレイヤーや勝ったプレイヤーに近づけているのですから、これも勝率へのアプローチだと考えることができます。

 

雑巾絞り

こちらも同様ですね。将来に現れる勝率の高い局面の評価値を持ってくるのですから。

 

 

ここまでの洞察から、「評価値はその局面の勝率を反映している」という結論が得られました。

 

 

では、勝負手というものを考えます。間違えやすいような、勝率に影響するような局面に誘導するのが勝負手であると言いました。つまり、勝負手は、評価値を悪くしないように保つ役割が求められることになります。

 

もっと言いましょう。粘る手と言われる手も勝負手の一種と言えるということです。

 

補足すると、局面を悪くしないように保つことは、他の効果も生みます。相手が一定の確率で間違えるとしたら、その間違える可能性のある局面を参照する機会を増やす効果があるのです。

 

更にここから考えを深めます。

HoneyWaffle(強豪の振り飛車を指すソフト)についてです。対局は長くなりがちなようです。これはつまり、相手に粘りを許しやすいということです。つまり、相手に最善手を指されやすい、もっと言うと、あえて自分が不利になるような局面に突っ込んでいるということになります。不利飛車ですね…。

 

 

最後に、人間にも水平線効果のようなものが起こりうるということも付け加えておきます。

未来が見えないと人間も悪手を指しやすくなるわけですね。