将棋ソフト開発(仮)

将棋のソフトを作るのです。趣味で。

電王戦Final - 第一局

一年ぶりの更新でございます。

 

見ましたので感想を書いて見ようと思いました。

なお、私はプログラマーですので、開発者側の視点で書くことが多いです。

将棋についての解説や、私の見解も書きますが、間違ってたらすみません。

 

まず、将棋の感想ですが、

Aperyは、指してにランダムを入れてるとのことですが、これは激しく裏目に出たと思います。

ランダムが発生する条件や、ランダムが許容する範囲は分からないのですが、

指し手の特徴から言って「ソフト特有のわざと最善手を外した手加減の手」と言う印象をつよく受けました。

 

それも一つではなく、いくつか感じました。

28手目 - 65銀

34手目 - 44角打

54手目 - 22飛

など。

 

特にそれを感じたのは24手目の44角です。(これにより、先手は無条件で歩を突けました)

どうもこれ、後手にとってはデメリットこそあれ、メリットがなかったようです。

敗着なのかどうかは分かりませんが、大きな敗因の一つだと思います。

 

さて、指し手をランダムにすると言うことはどうゆうことなのかを少し書きましょう。

まず、ソフト自身が思った「最善ではない」と言う手をわざと指すと言うことです。

これは、評価値による機械的な判断でおこなうことはとても難しいのです。

なにしろ最善ではない (わざと点が低い手を指す) のですから。

現在のほぼ全てのソフトは、人間と違い「総合評価点」と言うだた「1点のみの基準」により指し手を決定するので、

その内容については一切吟味できず、ソフト自身も意味が分かっていないのです。

 

ランダムを採用する理由としては、一直線に決め打ちしない、と言うメリットがあります。

これにより、毎回違った将棋が実現できます。

 

しかし、

A 「aもbも将棋として成立する」

B「分かりにくいが、aは成立し、bはギリギリ成立しない」

この時、Aの場合なら構わないのですが、

Bの時ランダムでわざとbが選択される可能性があるのです。

 

この時、人間はあらゆる基準や判断から。「AとB」を見分ける事が可能なことが多いです。

逆にソフトは、「AとB」を見分けるすべをほとんど持ちません。これは「評価値」と言う「1点のみ」の基準から指し手を決めるので、人間のような「あらゆる基準」を持たないからです。

(そう、ソフトはAとBの時点で見分けが付かないので、どこまでが定跡なのかな?と言う判断も付かず、ランダムのONとOFFを切り替えるタイミングを判断することも極めて難しいのです)。

 

さて、ランダムを多く採用すれば、わざと最善手と違う差し手を指し続けると言うことになります。

定跡内の(Aの)選択のような、aでもbでもどっちでもいい、と言うならそれでいいのですが、

ある程度戦いが近づいている中(Bのような状況の中)、わざと最善手と違う手を何度も指すのは、ソフトの形勢にとってかなりつらいことになります。

 

私の見たところによると、今回の対局はそれが発生したように見えました。

(Aperyの仕様は知らないので本当は違うのかもしれませんが、私にはそう見えました。ソフト特有のそうゆう手でした)。

 

 

さて、ではどうしてランダムとは言え、こんなに強いソフトが悪手や疑問手を連発することがあるのでしょうか?

 

その答えは「総当り基準」の検索法が大きく関わってきます。

将棋と言うのは、どんなにマシンが高速で、ある程度検索を枝狩りしても、

検索しきれないのが普通だからです。

 

いやコンピューターが数億盤面も考えれば検索できるでしょ?

って思う人も多いと思うかもしれませんが、純粋な総当り検索を採用すると、

たった数億盤面程度では無理の極みです。100億でも無理です。

と言うよりそこまで行くと単純な総当り検索は99.9999%以上が無駄な処理と言わざるを得ません。

(※ 完全な総当り検索10億盤面は、GPS最新版の3000万盤面検索より弱いです。GPSは激しく枝狩りされてますが、3000万でも無駄な検索の塊です)。

 

話を戻しまして、その時、わざと変な手を指しても、検索した範囲の中でごまかし続ける (損を先延ばしし続ける) ような状況が発生 (盤面上可能) だとすると、

具体的に検索範囲内に損が表面化してこないので、

「(人間から見て)わざと変な手指してもあんまり評価値さがらないじゃーん」

と言うことになるのです。

ソフト側は「じゃあランダムでちょっとくらい点の低い手指しても大丈夫だよねー」と言う事になるのです。

 

これは人間の感覚で言うと、すぐ気づく場合が多いです。

なぜなら、

損を先延ばしにしようとしてるのが実感できるからです。

人間はなんのために、どういう意味の手を指してるのか、と言うのを理解してから指します。

「このままだとやられちゃうからなんとかしないと」

と言う趣旨で指すのが人間です。

だから、具体的に損が実現する前の段階から「嫌な雰囲気、嫌な感覚」と言うのを

ビンビン感じるのです。

 

逆にコンピューターは、検索範囲内で損が実現してなければ、

当然「損をしてない点数」が算出されるわけで、

点数が下がってないから大丈夫なもんは大丈夫、と言う理由で指し手を決めます。

そこに将棋の内容や、指し手の内容に対する理解はないのです。

 

これは、どちらが正しいのか、と言うのは実際には誰にもわかりません。

なぜなら、ソフトにとっても人間にとっても「検索や読みの外側」だから、

それは実際にはどうなるか分からないのです。

でも「大雑把に考えてたぶん損」と言う考えを適用できるのが人間であって、

「明確な検索(読み)で実現しない限りは一切判断出来ません」と言うスタイルを適用できるのがソフトなのです。

 

これについて、どちらが将棋(指し手)にとっていいのかは、分かりません。

と言うより、コンピュータは大量処理を得意としているので、根本的な長所の違いの問題なのでしょう。

指し手を考えるときは、自分の長所である得意な方法で指し手を考えるのが良いと言うことなのでしょう。

 

そうゆう将棋に対する根本的な考え方が違うからこそ、

ソフトと人間では見つける手が違い、時にはソフトが良い手を発見し、

時には人間が良い手を指すわけです。

(手を見つけるまでの経路、そして良し悪しの基準が全然違うわけですね)。

ちなみに、たんいt評価値の「1点基準」でしか考えられないことについては、現在のソフトの大きな弱点だと思っています。

 

さて、話は長くなりましたが、

その「悪い癖」があからさまに出てしまったのが34手目の44角だったのではないだろうか、

と思っています。

 

 

 

では、話を戻します。

28手目の65銀についてです。

これはどうも、人間にとっては悪手のようで解説者から悪いと言われ続けてましたが、

冷静に棋譜だけを見ると「あり得る手」のようです。

 

一応将棋をしてない人にも説明すると、「指しにくい局面」と「将棋の優劣」は別にあります。

この「指しやすい」と「指しにくい」はコンピューターにはあまりそうゆう概念はなく、

どちらかと言うと人間特有の感覚です。

 

どうゆう時にそうゆうことが発生するかと言うと、色々あるのですがたとえば一例をあげると、

先手は少々間違っても形勢はほぼ影響はない、

しかし、後手は一つ間違うと形勢を大きく損ねる、

だけど後手が正しく指すと全くの互角である。

つまり後手が綱渡りの連続を強いられたとします。

もちろん人間の感覚だと「先手よし」です。

 

人間は感覚でも形勢を評価するので、

「指しやすい」と「有利」を混同してしまうことがあると言うことです。

(逆にソフトは「指しやすい」を基準に優劣の予測が出来ません)。

 

人間同士でも、持ち時間の長い対局や、研究局面などでは、

あまり惑わされることがないようです。

なので、今後タイトル戦などで65銀が出てきても不思議ではありません。

(ただしいくら形勢は互角と言っても、指しにくいものは指しにくいし、他にもいい手は一杯あるし、メリットがあるかと言われるとあまり多くないと思うので出てこない可能性のほうが高いかもしれません。将棋としてはあり得ても、公式戦ではあり得ないかもしれない手、と言う位置づけでしょうか)。

 

さて、 54手目 の22飛 についてです。

この将棋の、目に見える(棋譜として実現した)決定的な後手の損は、

62手目の77と金(龍を取った手)です。

これは、58手目に45角と出たので、攻め合いが確定し、

ここで、45角とせざるを得なかったのは、22飛のせいじゃないだろうか?

と言うのが私の考えです。

つまり、62手目に77と金にしないための分岐点まで戻すと、

54手目の22飛まで遡るのじゃないだろうか?と言うように考えています。

 

 

このようにソフトは、「形勢的に」成立するのか成立しないのか、

よく分からない微妙な手がたくさんあり、

なおかつ「一時的にちょろまかす」ような手もいっぱいあるとき、大きく検索を消耗し、

検索自体も足りなくなります。

これでも、完全に評価値に従った「最善手」を指す場合は、

ここまでこの問題が表面化することはありません。

 

こうゆう状態のとき、わざとランダムにより「評価値的な次善手」を指すと、変なことが発生しやすくなるということです。

(だいたい、わざと評価値的な次善手 を採用した場合、無意味な手や、わざわざやらなくてもいい手(44角打)のような手を、手と手の間に挟んでくるケースさえあるのです。ランダムの導入は考え物です)。

 

ここまで、第一局の内容と、私のソフトに対する見解でした。

ランダムどうこうは、私は本当はAperyの仕様を知らないので、間違ってるかもしれません。

が、直感的に私にはそのように見えました。

 

 

 

さて、終局付近のソフトの無駄な王手ですが、

これもこれで書くと長くなるのですが、

一言で言うとこれは「将棋に対する考え方」の問題です。

人間からすると、「めんどうくさい、不愉快」な手かもしれませんが、

それは人間から見てそうなのであって、ソフトから見ればそうではないと言うことです。

また、人間の都合は将棋自体には関係なく「めんどうくさい」と言うのは、

将棋盤外の都合だということです。

 

ソフトとしては、基本的には最短手数の勝利が美しくなり、

負ける場合は1手でも引き伸ばすことを良しとするケースが多いです。

これは詰め将棋の考え方に似てますね。

絶対に必ずではありませんが、どっちかと言うとソフトはそのような方針のもと、棋譜を作ります。