将棋ソフト開発(仮)

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

電王戦Final - 第三局

依然としてPCが修復されていないのですが…。

対局は先手74飛の所から、コンピューターが激しく勝勢を主張し始めました。

対して、糸谷竜王以外のほとんどの棋士はそこまでの点差はないだろう、との見解でした。

 

読み倒して形成を判断する、大雑把に形成を判断する、

この両者には仕組み上と言うか原理上と言うか、

大きく形成判断内容が乖離することがあります。

 

これは前回にも書いたようにどちらが正しいと言うことではなくて、

局面思考の処理方法の問題です。

 

ちなみに糸谷竜王は今回に関わらず「人間としての形成判断」と「ソフトとしての形成判断」を

いつも切り分けて考えているふしがあるので、ソフトの判断に一概に反対はしなかったものと思います。(彼はいつもそうなので)。

 

 

それと、私が知っている限りの全てのソフトが出す点数は、局面の有利度数ではないです。

手を指す際の選別として数値の大小を取りたいだけで、「どの程度有利か」とはダイレクトに直結していません。

 

例えば、横歩の150点は有利にも不利にもならない些細な差ですが、

千日手ぎみの角換わりや矢倉だと 150点の差はかなりの有利を作れている可能性があります。

【これは局面の重みの差によります】

 

なので、よく「300点差なら別に…」と言うような解説がありますが、あれは根本的なところで点数の意味を間違って解釈してます。

何点だからどうだ、と言うような直接的な意味づけはされていません。

 

また、人間とソフトでは形成評価の判断法が違うのはもちろんのこと、表現法も違います。

さらには根本的なところで「良いの定義自体」が違うことが多いです。

例えば、人間が言う「やや有利」が、ソフトには+4000に見えることもあります。

これはどちらかが間違ってるとかじゃなくて「良いの意味自体」が違うこともあると言うことです。

(※ただし、人間とソフトの評価が大きく乖離した場合、統計的にはソフト側の評価が勝敗を暗示するケースが多いです)  

 

 

さて、今回私が個人的に興味があったのが、

ドワンゴ人工知能研究所所長の山川さんと糸谷竜王のお話です。

話の内容と言うよりは、話のジャンル的に、ですが。

(話の内容は人工知能や哲学などの基礎の部分にも届かない表面的なものでした)。

 

私は以前、人工知能についてほんの少し書いた事があります。

人口知能を作りたいが、人間 (またはその模倣) を作りたいわけではないと。

 

 

またどうも、糸谷さんは西洋哲学の考えを持つ事が多いようで、

自己の認識、心、自我(つまり内的要因)を基点とした外的要因の認識に興味を持ってるように見受けられました。

  (内→外への興味)。  

ただし、おそらく糸谷さんの見識はおそらく深く、必ずしもそれに固執しない考えも強く伝わってきました。

 

山川さんは、通常の理化学、すなわち外的要因から外的要因を理解(と言うより解析とその活用)を目的としてるように見受けられました。

(外→外への興味)

これは仕事も兼ねるのでそうなるのもやむなしと言うところなのでしょうか?

 

私の場合は、外的要因から構築される内的要因について一番興味があります。

(外→内への興味)

これはなんの役に立つかと言うと、おそらく人工知能のうち「もっとも誰の役にも立たない」考え方です。

これは、人工知能と言うより「人口生命」と言うジャンルに近くなる場合もあります。

 

ちなみに内的要因による内的要因の考察、と言うのは原理上存在しません。

(トートロジーのように、「ボール」を問う質問に対し「ボール」と回答され、理解したとみなす場合は別とします)。

 

 

 

さて、こうゆう話は将棋と関係あるの?と言われると微妙なラインです。

これは、人間が自分と言うものを理解していなくても将棋を覚える事ができるからです。

 

しかし将棋プログラミングとなると話は別です。

プログラミングは、きっちりとソースコードで将棋を指す仕組みを記述した上で、

人工知能を動かさなくてはならないからです。

(人工知能は将棋を指す際、自己 (人工知能) に対する理解は必要ありませんが、その理解はプログラマー側が担保する必要があります)。

特に、以前書いた (私が作っているような) 将棋ソフトを作るとなるとなおさらです。

 

 

で、将棋に関わらずプログラミング自体はもちろん哲学への理解はあまり必要ないのですが、

扱う情報に煩雑性が帯びるほど、その整理に理論的な解釈、さらにそれをまとめる論理的な解釈が必要となります。

 

将棋の場合「究極的には」煩雑性はないのですが、

その扱う膨大な処理容量によりわざわざ「煩雑的な思考」を取らざるを得ない場合があります。

 

その煩雑的な思考を使用する際たる将棋プレイヤーが「人間」です。

逆に、Bonanza系統のソフトは、意図的に煩雑性を発生させないように、

 「究極的な」総当り検索を基準にシンプルに問題を解決するように試みます。

 

GPSは、作業可能な範囲、または効率的に稼動すると判断された範囲で、

積極的に煩雑性を取り入れているようです。

私の場合は、さらに煩雑的な思考を論理的整合をもって綺麗にまとめ、効率的に処理を進める考えを持っています。

(この辺がプログラマーにとって手法が分かれるところであり、面白いところでもあると思っています)。

 

そして、それが人工知能と言う分野に直結するのです。

究極的にシンプルに作り上げた動作も人工知能に分類されますが、

煩雑性を持たせた上で論理的にまとめる手順は、まず人間の能 (脳じゃないよ) を研究することでもあります。

 

なぜなら、論理はヒトの内部的都合により発生したもので、

論理的な仕組みを組み込むためには、

それに対する理解、研究、解析が先に必要となるからです。

 

※論理はヒトのいない世界には落ちていないし、

仮に人間より高度な論理的能力を持った宇宙人がいたとしても、人間の論理とは形式的な整合性がとれないため人間には扱えません。

論理とはヒトが自己にとって内的な合理性と整合性をとるために、内的に発生している形式なのです。

(似たような話では、以前宇宙人は将棋と言うゲームを理解できないと言う話もしましたね)。

 

別の言い方をすれば、プログラマーは「意図的に」将棋を指せる宇宙人を作らなくては (産まなくては) ならないのです。

意図的にと言うことは、その宇宙人や、人間が内的に発生させ続ける論理構造に対し、

プログラマー側の理解がなければならないと言うことです。

  宇宙人なら、指し手の意味もある程度理解してくれるし、持将棋の指し分けももっと合理的にやってくれるでしょう、きっと。  

これが人工知能と哲学の結びつきです。

 

 

 

さて、究極的にシンプルなプログラムを作る場合はどうするのでしょうか。

これは論理はほぼ必要なく、必要なのはひたすら理論です。

bonanzaタイプを始め、多くの将棋ソフトはこれに近い物です。(なお完全なシンプルタイプはありません)

 

本当の究極的なプログラムでは、プログラムと言うよりもハードウェアが問題を解決します。

また、本当の意味で問題を解決出来るのは、理論上では唯一このプログラムのみです。

さらに、プログラミングが最も簡略化され、プログラマーが実現しやすいのもこの手法です。

 

ただし、動作が不完全な場合、見当違いの解出しやすいのもこのプログラムの特徴ですし、

資源を最も非合理的に消費するのもこのプログラムです。

そしてまた事実上、莫大な情報量を目の前に、それを完全に作動させる資源と時間は存在しません。

 

 

これは、どちらのプログラムが優れていると言う問題ではなくて、

単なるプログラマーの好みの問題です。

 

例えば私は、莫大な情報量を目の前に、

処理速度と回転数を上昇させて問題を解決するよりも、

処理速度を落とす引き換えに、それ以上に合理的手順を踏み、問題を早期に解決することを好みます。

なので私のプログラムは人工知能と密接に関わりがあります。

 

 

ところで、こんなに長く書いておいて

外的要因から構築される内的要因

の話はしませんでした。

これは将棋には関係がないのですが、機会があれば書こうかな、と思います。