rewritemath's blog

rewritemath’s blog

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

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

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

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

 (リンク先から引用)

リンクはこちらhttps://github.com/nodchip/tanuki-/releases/tag/wcsc28

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系の評価関数は何が違うのかについて説明しながら、この傾向が何故流行りだしているのかについて、私のメモも兼ねて記事にしていく。

 

ただし、たぬきの論文は私も理解して読めていないので、私は書き手としては力不足であることをはじめに断っておく。

 

三駒関係の仕組みについてはまた後日気が向けば書く予定です。

 

三駒関係はつまり、3つの駒の配置の仕方それぞれに数値が割り振られていて、その数値の合計を評価値に反映させる手法なのである。4駒関係などの亜種もこれと基本的な仕組みは同じ。

 

だから、三駒関係は線形の関数の和で表されることになる。しかし、3駒関係の表現力は、最新のコンピュータ将棋ソフトをこれ以上強くしようとした際には、不足している(あるいはその表現力は限界近くまで来ている)と言えるのではないか。

 

(ちなみに、評価関数の表現力というのは、人間で例えれば自身の形勢についてどの程度正確に判断する事が出来るかという問題である。当然の事ながら、表現力があるほど形勢を正確に判断しやすい。)

 

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

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

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

 

ちなみに、表現力問題には計算資源が有限であるという問題も絡んできていて、表現力を高くしすぎると計算資源が足りなくなる。3駒で足りなければ4駒関係にすればいいというのは当然の発想で、大将軍などはその様な実験的な方法に取り組んでいた。しかし、4駒関係は3駒関係と比べて非常に評価関数の収束までに時間が長くかかる。時間が長くかかるという事はつまり、「ある改良を加えた時にその改良で強くなったかどうかを検証する」というサイクルを回すのに時間がかかる様になる。

 

そして、表現力の高い重い評価関数ほど、「評価関数が局面を評価するのにかかる時間」が長くなる。つまり、読める局面数が減るのである。コンピュータ将棋世界では読める局面数が2倍に増える度にレートが150程度上昇するという暗黙の(そしてある程度検証によって正しいという認知が一般化している)法則が存在し、重い評価関数が仮に1局面の評価にかかる時間が倍かかるなら、その表現力の優位性はR150以上必要となってくるのである。

 

ちなみに3駒関係絶頂期のトレンドはelmoの「その局面から対局させた際の終局時の勝率を重く評価して評価関数に適応する」というアイデア、「その局面を深く読んだ場合の将来の評価値を現在の局面の評価値として適応する」というNDFが採用していた方式(通称雑巾絞り)、であり、これらの手法の集大成はこれまでのコンピュータ将棋が不可能であった「教師となる棋譜が無くても人間より強くなる」という革命的なソフト(rezero評価関数)を生み出すに至っている。

 

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

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

 

 ところで、三駒関係と比べてDeepLearning系統の評価関数は理論上線形ではない局面評価が可能であるから、表現力が高いと言える。

 

それでも一定のNPSを保っているのはNNUEの設計思想、技術力の高さの証明である訳だが(DeepLeaning系統のコンピュータ将棋ソフトは他にも取り組んだチームはあるようだが、結果としては上手くいかないという結論を出していたりするチームも結構あった)

 

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

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

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

 

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

 

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

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

 

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

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

伊藤さんも概ね私と同じような見解の様である。

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

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

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

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

 

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

 

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

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

 

多層ニューラルネットを使うと、実はあらゆる関数を表現できるらしい。(2層で十分。ただし、層を深くした方が表現力と計算資源の都合上から実用性は高いので深層学習が重宝されている訳である)

この証明は前世紀には行われていて、ニューラルネットの研究は実は昔からあるのだが、計算資源が足りないことと教師データを集めるのが大変(なら作るのも大変)という理由で停滞していた。インターネットが出てきて大量のデータを集めて利用することが手軽にできるようになってきた今、やっと成果が上がってきた。新分野みたいなもんだ。まだブームが来て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(強豪の振り飛車を指すソフト)についてです。対局は長くなりがちなようです。これはつまり、相手に粘りを許しやすいということです。つまり、相手に最善手を指されやすい、もっと言うと、あえて自分が不利になるような局面に突っ込んでいるということになります。不利飛車ですね…。

 

 

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

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

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

速読コンピュータ将棋用語【記事募集中】 - qhapaq’s diary

↑こちらがカパックさんの記事です。

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

uuunuuunさんの記事

私なら違う表現をするという場合の記述ですので、基本的には補足みたいなもんだと思ってください。(段々本家より充実してきている…説明の厳密さによって分担かなぁ)

楽しんでもらえるように、茶番を含みます。ミニマリストじゃないので…

 

コンピュータ将棋開発者の方々、そしてその文化を育ててくれている方々皆さんに感謝を 

 

利用の仕方(お勧め)

  • 全部読んでもすぐ読み切れる
  • 読みたいものがあれば、ctrl+f(キーボードのショートカット)を使って検索したい文字を入れてみよう

 

floodgate

コンピュータ将棋ソフトが対局してる場所。ググると出てくる。強いソフトの棋譜を得ようと思ったらここ。まとめて一年分とかダウンロードできたりする。棋譜の管理については別のところに解説を譲る。

 

レート

強さのこと。将棋界ではイロレーティングが使われていると思ってよい。

測定の仕方は他にもある。

ソフトの場合はfloodgateのものがめやす。

個人的に、ここが一番見やすかったりするので感謝して閲覧しましょう。

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

uuunuuunさんという方のサイトです。

 

人間と比較すると、3000以上のソフトはデスクトップのいいパソコンでは人類越えだと思っていいです。最近の上位ソフトは4000くらいあるので、人間には勝てないと思われる。人間をソフトが越えたのはいつか、というのは議論すると長くなりそう…他に譲る。将棋倶楽部24よりfloodgateの方がレートはシビアだと思われる。強さに自信がある人は、floodgateに潜ってみては?

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

 

評価値

どちらかが、その数字分有利という目安

±150くらいまでは互角

±300で作戦勝ち

±500で有利(ミスがなければ勝ち)

±800で優勢

±1000で大優勢

±1200で勝勢

±3000で逆転不可能

(あくまでめやす)

 

Depth ~

読みの深さ。~の数字の手数まで読む。全幅探索(記事の中で説明してます)とは限らない

 

Mate~

勝敗を読み切った宣言。~のところが手数。Mate15だとしたら、どんな手を指したとしても最善で応じれば15手以内に終局があることを読み切っている。

(詰みがあるとか必死とかってことではない。連続王手で終局を長引かせても、この手数以内に収まるという宣言)

 

multiPV~

検討する手の上位~個を表示させる設定。主に、局面の検討で使用する。次善手などの分岐も検討する場合はこれを設定する。

 

Ponder=読み筋

 

Ponder hit=読み筋通り

読み筋が当たったから早指しする

 

ライブラリ

公開されていて、中身を使って改造していいよって言ってるソフト達。

(公開されていても、ライブラリに登録されていない場合は、大会などに提出するソフトに利用してはいけない)

 

チルドレン

ライブラリを使って参加したソフト達。

複数使っている場合は親が沢山いることになる

 

 

 

評価関数

局面を評価する基準となるもの。関数とは、物を入れると何か操作されて物が出てくる箱だと思ってくれればいい。コンピュータ将棋の評価関数は、局面のデータを入れると、評価値が返ってくる。人間でいえば大局観と考えていい。

仕組みのざっくりとした説明はここで

ritomath-shogi.hatenablog.com

 

 N駒関係

Nは任意の正の整数値

N駒関係とはつまり、N個の駒の位置関係が盤上にあるとき、その評価は何点、という採点をして、局面をその関係につけた点数を合わせたものとして評価するもの。これによって局面に評価値がつくことで、有利か不利かを判断し、有利な局面を選ぶように指し手を進める基準になる。

 

ボナメソ

ボナンザメソッド。Bonanzaが使った学習方法。プロの棋譜を食べさせて、一手一手次の手をソフトに答えさせる。プロと同じ手を指したらいい子いい子する。段々プロっぽい手を憶える。手筋を人間が教えたりするより、強くなった。革命。

 

二駒関係

これだけだとちょっと弱いみたい。三駒がちょうどいいのかな

 

三駒関係

ソフトちゃんが、完全に同じ局面でしか答えられないと困るので、局面を抽象化する必要がある。そこで、局面を三駒の位置関係に分解して教えた。

 

N駒+効き

効きを入れると終盤とか入玉で強くなるかも?技巧さんは効きも使ってたはず。

 

四駒関係

頑張っても、情報量が大きくなりすぎるので今のところ主流じゃない。

 

KPPT

King 王様

Piece 他の駒

Piece 他の駒

Turn 手番

 

今はこれが主流

これで分かるように、KPPは三駒関係のこと。KPは二駒。やっぱり王様は大事。

KKPの場合、二つの王様は、自分と相手の王様。

 

NN 

NeuralNetwork(ニューラルネットワーク)の略語。

人間の脳を模倣した機械学習です

 

DL

DeepLearningの略語

 

NNUE

TNKが採用する、高速に差分計算ができるニューラルネットワーク型の評価関数

ごめんなさい、難しいこと言いたかっただけです。

TNK(たぬき)はソフトの名前です。基本的にニューラルネットワークを使うと、GPUでしか高速に動かすことができないのですが、その辺りの不都合を上手く解消した天才的な発明です。(技術が高度すぎて分かりやすく説明できないので許して)

 

不利飛車

コンピュータ将棋は振り飛車しない。振り飛車は損?振り(不利)飛車って呼ばれてる

 

頑張れ(ソフトの名前)

頑張って育てたソフトには愛着が湧く。開発者と一緒に応援しよう。

 

雑巾絞り

「この局面を探索すると、将来的にはもっといい評価値が出るのよ。だから、未来は明るい。あなたはこの局面をもっと楽観視していいのよ」という感じで、局面を与えては評価して、未来の評価値を持ってきて、ということを繰り返すこと。とっても仕事量が多い。強くなるけど。絞るにつれて段々と絞れなくなってくる。

 

雑巾絞りについて、有識者の言葉

エクスカリバー最初の町で売られているけどめっちゃ高いし装備できる人は限られてる

「札束ビンタ」

「ドモホルンリンクルのように、滴ってくる(強さが上がる)」

 

elmo絞り

「我々は、未来の局面についてだけではなくて、この局面から勝利が導けるかどうかを考えます。その結果から、未来の評価値を持ってくるのです」というタイプの雑巾絞り。なんかめっちゃ強くなったみたい。

 

Rezero

elmo絞りって、評価関数がない状態からでも未来予測できるようになってるってことじゃないか!?という発想から生まれた(多分)評価関数の元として人間の棋譜を入れたり、人間の棋譜が元となっているソフトの棋譜を入れたりしなくても、ソフトが自分で強くなる。(elmoくらいまで)

人間からの独立。やねうら王の開発者、磯崎様がこれを発表して世界に衝撃が走った。あのGoogleも注目したかもしれない。やはりやねさんは天才。(ちなみに電気代…)

 

探索部

役目

  • 局面を作って、評価関数という箱に投げつける
  • 帰ってきた評価値と局面を並べて、次に投げる局面を決める(優先して読む手はどれかなぁ、ということをこの子が決める。この子によっては読みぬけとか…)
  • 次に指す手を決める

 Stockfish

チェスの探索部で、公開されているもの。参考にしているソフトが多い。

詰みルーチン

この局面が詰むかどうかしか考えないマン。でも、詰め将棋だけは素晴らしい腕前。CPUのお仕事をこの子にどんくらい割り振るかによって勝敗が決まることもある。

 

全幅探索

有効な手、考えられる手。すべてだ!全てを考えてこそ将棋の可能性に迫ることができる!という感じで全部読むよう…。読みは浅くなっちゃう。Bonanzaはこれだったけど今は、効率よく先を読む手法(Minimaxとか、下の方に…)が色々使われている。

 

モンテカルロ

専門的な内容だからこれだけで一本記事がかけてしまう

 

αβ探索とかMinimaxとか枝刈りとかrootstrapとかbootstrapとかとか

上に同じ

 

 book

定跡

 

eval 

評価関数

 

 

 

 

 

IT関係の言葉

OS

オペレーティングシステムlinux,windows,mac,android,iosなど。

OSがアプリケーションを動かす。下地といえば分かりやすいだろうか。機械と人間との対話をするために、翻訳する役目を担っている。 

 

CPU

パソコンの計算機。脳みたいな。中国語で電脳はコンピュータのことだっけ。

 

GUI

Graphical User Interface(グラフィカルユーザーインターフェース

視覚的に人間に分かりやすくするためのもの。将棋所か、将棋GUIのどちらかを使うのが一般的。

 

GPU

映像処理が得意な子。CPUの中にも少し住んでる。たまに、この子が住んでないCPUもある

 

グラボ(グラフィックボード)

GPUの親分。GPUの団体みたいな。強力なGPU。最近はやりのでーぷらーにんぐでは、CPUよりこの子が頑張る

 

コア

仕事する人。最近はマルチ(複数のって意味)コアのCPUが多いですね。沢山いると仕事が捗るけど、仕事の割り振りは大変。Xeon(じーおん)という、インテルのCPUはコアが沢山。

 

メモリ、HDD、SSD、キャッシュ、ハッシュ、64bit…etc

他に分かりやすい解説があるはずなので割愛。メモリが小さいとソフトが動かないことがあるとか、32bitだと動かないことがあるとか、割と致命的なこともあるので要望があれば記事にします

 

インテルIntel悪の枢軸) 

CPUを売る最大手の会社。Corei3,i5,i7とかいうシリーズを持つ。せろりん、セレロンCeleron)、Pentium(ぺんちあむ)とか。独占禁止法

 

AMD

安くて高性能が売りの会社。グラボも作ってるよ。スペックでIntelに勝てていなかったが、最新CPUのRyzenシリーズは破竹の勢いでIntelを追い込んでいる。頑張れ。AMDファンは熱量がある。むしろ、熱量がないとAMDを選べない程にIntelの力は強大であったと言える。

 

クラスタ

GPS将棋が東大のパソコンをたくさん使って三浦先生に勝ったのが有名。パソコンを沢山使ってみんなでお仕事すること。誰かがサボったりデータを捨てたりネットワークから居なくなったりとかとかすると途中の読み筋が消えたりするから、仕事の割り振りは大変だよ。

 

thread(スレッド)

お仕事してる人(擬人化)の数。コアが分身して、コアよりスレッドが多くなることもあります

 

拡張子

ファイルの最後についてる、.exe(実行するもの).kif棋譜データ).csa(違うタイプの棋譜データ)など。この部分を書き換えると色々まずいのであんまり推奨しない。

ちなみに、.kifとか.csaのファイルを右クリック→プログラムから開く→メモ帳とすると、文字で棋譜を見れる。このテクは覚えておいて損はないかも。

 

.NET(現在では殆ど.NET Frameworkのことを指す。読みは一般に、ドットネット)

コンピュータが使う七つ道具みたいな詰め合わせだと思ってくれると分かりやすいと思う。これが古い(又は、古いソフトを動かすのに道具が新しすぎる)とソフトが動かないことがある。

 

margin(マージン)

余白のこと。時間切れにならないように、手を少し早く出力する設定をするときもある。

 

.db

拡張子の一つ、データベース。単にデータベースとだけ言う場合は、整理された情報の集まりのことを指す。特にコンピュータ将棋の時は主に定跡で使われる。

 

エラーメッセージ

出たらとりあえずググろう。英語なら訳そう。

 

システム

しすてむ。ものを構成する仕組みの全体

システム - Wikipedia

 

互換性

システムの部品の一部を入れ替えても、動作する状態のことを、互換性があるという。

特に、部品Aと部品Bを置き換えることができる時、互換性があるという。

 

処理

計算すること、お仕事すること。CPUは社畜さん。

 

電気代

CPUはお仕事する時に電気を食べます。おっきい仕事だと一杯食べます。将棋ソフト開発者さんは、大食漢のCPU(値段高い)を買ってきて、沢山乗るお皿とかまな板とか冷蔵庫を買ってきて(メモリ、HDD、SSD。高い)お仕事してもらってます。

家賃より高いこともあるとか。

やねさんは赤字と日々戦っている

 

暖房

沢山仕事したCPUやGPUは熱を持ちます。冷やさないといけません。冬は暖房代わりになります。夏は冷房をガンガンかけないとCPU達も夏バテします。

 

団体とか大会とか

CSA

Computer Shogi Association。コンピュータ将棋協会

 

SDT

Shogi Denou Tournament。将棋電王トーナメントドワンゴ主催、コンピュータのスペックは固定。トーナメント方式は決勝リーグだけ。

 

WCSC

World Computer Shogi Championship

世界コンピュータ将棋選手権。PCのスペック制限なし。クラスタと金の力がものをいう…

 

追記予定アル

加筆するかもしれないワード

次元下げ、rootstrap、やきなまし、線形、嵌め手、ルーチン、GUI、回帰、キメラ、高速化とか枝刈り、Githubフリーソフト、ライセンス、教師、強化学習、時間攻め、局所解、サチる、発散、まふ定跡、ベンチマークUbuntu、Bitboard、AVX、64bit、バイナリ、ソースコードオープンソース、Stockfish、合法手、合議、αβ、MiniMax、ゲーム木、過学習、bitboad

 

and more...?難しい用語専用の上級者向け解説記事を執筆する予定があるかも…?