LogicalInSpace

将棋の日記

第2回 将棋電王戦 第2局

2013-03-31 08:00:55 | ネットソフト情報
2013/03/30(土)に、第2局が行われました。

先手:ponanza
後手:佐藤 慎一四段

141手にて、将棋ソフトのponanzaの勝ち

ニコニコ生放送を、朝から視聴をしていました。
佐藤四段は、将棋ソフトの評価関数を理解していない指し方の印象です。
佐藤四段の敗因は、将棋ソフトへの研究不足だと思います。

佐藤四段は、プロ棋士ならば、この手を選ぶという基準で、指し手を選んでいたようです。
プロ棋士ならば、この指す手を選ぶ基準では、すでにプロ棋士と互角以上の勝負が出来ることを、ponanza は示しました。

ついに、「この日が来てしまったのですね!」


私は、コンピューター将棋協会の滝沢会長のある言葉が印象に残りました。
「現在は、将棋ソフト同士で対戦して、これ以上、強くすることが出来ないのです。」
「プロ棋士の先生の方が、将棋ソフトを研究して、その弱点を示して欲しいです。」
将棋ソフトの開発者の方は、将棋が指せると言っても、強くてもアマ有段者です。
つまり、本当の意味ではプロ棋士の指し手を理解することが出来ない状態です。
プロ棋士の指し手を理解していないので、将棋ソフトの弱点を克服することは、開発者レベルでは、到底無理な話なんですね。
唯一、プロ棋士の指し手に近づいたのが、ボナンザの自動学習の評価関数です。

なので、開発者は、自動学習の評価関数の精度とプロ棋士と対戦して頂き、どの部分の精度に弱点があるのかを知る機会が、今回の電王戦だったのですね。


ponanzaの開発者の山本さんは、記者会見で、記者からの質問、「今後の将棋ソフトの課題は、ハード面ですか、ソフト面ですか」という質問がありました。
IT業界に詳しい方ならご存知ですが、現在の市販で販売されているPCは、「Core i7 の4コア(8スレッド)」より速いスペックを作ることは、ほとんど無理に等しいです。
なので、スパコンは1秒に「京」の計算が出来るといいますが、スパコンでも並列処理をして「京」の単位です。
ハード面は、最後に出てくるGPSのように、クラスタ構成(複数のPCにつないでする方法)以外は、強くすることが出来ません。

なので、山本さんは「ハード面よりソフト面のアルゴリズムや評価関数の精度を上げる必要がある」と答えました。
また、人の手で修正を加える部分のソフト面は、アルゴリズムや評価関数の部分になります。

開発者の山本さんは、プログラマーとしての立場を現状を踏まえて、答えています。


再度、滝沢会長の話から気がつかされたことは、開発者にとって、巨大化した評価関数は、開発者が簡単に修正出来るソースではないことです。
それは、改めて痛感させられました。


スカイプで「SwallowDragonさん」と将棋ソフトの話をしました。
Swallowさん「ロジカルさんは、どちらかというとプログラマー寄りの立場かと思っていました。」
私は、プログラマー寄りに見られていたのは、意外でした。
私は、「アマの将棋指し」と「プログラマー」の立場で中立な立場で書いていたからです。
第1局、第2局とも、私には、「プロ棋士が勝っても」「将棋ソフトが勝っても」、複雑な心境でしかありません。

純粋な将棋指しの方から見えれば、プログラマー寄りに見えると思います。
将棋を知らない、プログラマーから見えれば、将棋寄りに見えると思います。
私は、あくまでも中立な立場です。

Swallowさん「コンピューターの棋力は年を追うことに上昇してるってのは紛れもない事実ですね・・・」
これも素人が誤解している一面です。
実は逆で「将棋ソフトは、強くなっているのではなく、弱くならないです」
正確に言えば、将棋ソフトは、一度完成されたアルゴリズムや評価関数などは、弱くなることがないというのが、正確な認識です。
強くなっている印象があるかもしれませんが、正確には、将棋ソフトは弱くなることがないというのが実情です。
後は、アルゴリズムや評価関数の精度を、少しづつ修正を加えて、よりよいアルゴリズム、精度のよい評価関数として、プロ棋士に近づいたというのが実情です。

ロジカル「一番、将棋ソフトが飛躍的に強くなった理由は、別にあります。」
将棋ソフトが飛躍的に強くなった理由は、2つあります。
2006年のコンピューター将棋選手権でボナンザが優勝しました。
その理由は、開発者の保木さんにあります。
1つ目は、ボナンザは、自動学習の評価関数を採用して、初優勝したこと。
2つ目は、開発者の保木さんが、ソースコードをオープン化したことです。
「自動学習の評価関数」と「ソースコードのオープン化」が、将棋ソフトが飛躍的に強くなった理由です。

1つ勘違いしないで欲しいことは、ソースコードの著作権は、保木さん自身にあります。
ソースコードを非公開、公開する権利は、開発者(保木さん自身)にあることです。
別に非公開にする権利も、開発者にはあります。

Swallowさん「激指3をCPUの低いソフトと高いソフトとで比較してもええ、それが全くのウソっていう。」
Swallowさん「真偽的にもやっぱり嘘みたいなんですが」
市販のソフトで、遅いCPU、速いCPU を比較しても、変わらないと思っているようです。
ロジカル「CPUの速いPCだと、強さは変わりますよ。 ただし、条件付きですよ。」
この条件付きの部分が、分からないようなんですね。

「CPUが速いソフトだと、5手先の局面まで、すべて読みます。」
「しかし、CPUが遅いソフトだと、5手先の局面を、読む場合もあり、読めない場合もあります。」
「この読めない場合の話なんですよ。」
「将棋ソフトが、30秒だと仮定すると、5手先が読める場合と、読めない場合があります。」
「その読めない場合の話なんですよ。」

また、「並列処理プログラム」でも差が出てきます。
以前は、シングルコア(CPU が1つ)でした。 現在は、マルチコア(CPU が複数)です。
プログラムでも、「シングルコア向け」と「マルチコア向け」のコーディングの2種類が存在します。
昔の将棋ソフトは、「シングルコア向け」だったので、現在のPCにインストールしても1つのCPUしか動かないようになっています。
シングルコアで、3.0GHz のPC と、4コアで、2.8GHz の PC では、違いが出てくることになります。
シングルコア向けのコーディングであれば、シングルコアのPC が速くなります。
マルチコア向けのコーディングであれば、4コアのPC が速くなります。
※補足:クラスタ構成は、この考えに基づいて、PCの性能を上げています。

Swallowさんと私のやり取りですが、私としてはプログラマーでは常識だったので、意外でしたが、Swallowさんの素朴な疑問は、他の方も同じように思っているのではないかと思いました。

電王戦の第1局(初手から)

2013-03-24 19:53:08 | ネットソフト情報
電王戦の棋譜を初手から終局までを見ました。

7手目の▲2二角成より定跡から外れました。
8手目以降は、習甦の評価関数から手を選ぶことになります。

15手目の▲9六歩に対しては、16手目は△9四歩でなく、△6三銀でした。
結論から言えば、習甦は終盤の局面で不利になる変化まで読まないといけません。
数手後の局面(αβカット)の評価値を見るハズなので、習甦は局面を打ちきって、△9四歩より△6三銀の方が点数が高いと判断したと思います。
おそらく定跡形であれば、受けたと思いますが、先手から角交換して定跡形ではなかったので、受けなかったと思います。

15手目から19手後の局面で仕掛けています。
結果論からすると19手後の評価値から△9四歩と△6三銀の比較して手を選ぶことになります。
話を単純化すると、3の19乗は約12億手(1,162,261,467手)を読むことになります。

そして、19手後の34手目の局面です。
34手目の△6五桂は、人であれば仕掛けが成立しているかしないかを判断すると思います。
これも、数手後の局面(αβカット)の評価値を見ていると思います。
これも結果論ですが、60手目の△6七金の局面では、34手目から見ると16手後の局面です。
また話を単純化すると、3の16乗は約4300万手(43,046,721手)を読むことのなります。
また、60手目の局面は(飛・銀)と(金・歩・歩)の交換と、先手歩切れの局面です。
後手が指しやすいと評価関数は判断したと思います。

そして、12手後の72手目の局面です。
72手目の△4一金は、人が指すにはさすがに変調ですが、後手が指す手がないと評価関数は予想しなかったでしょう。
先手が手が困ると評価関数は判断しているように思えました。

90手目の▲4二同竜の局面から、終局の113手目の局面です。
23手目に先手が勝ちと判断するには、習甦には難しいと思います。
これも話を単純化すると、3の23乗は約940億手(94,143,178,827手)を読まないといけないことになります。


将棋ソフトが「億」の単位で読んでいることは、分かってもらえると思います。
評価関数が「億」の単位で判断していることが分かると思います。
将棋ソフトの開発者の大変さが分かると思います。

第2回 将棋電王戦 第1局

2013-03-23 19:08:13 | ネットソフト情報
第2回 将棋電王戦 第1局をニコニコ生中継で観戦していました。
先手:阿部四段
後手:習甦(しゅうそ)

解説によると、先手から角換わりの将棋だったようです。

どのような評価関数なのかを注目していました。
序盤の▲9六歩に、将棋ソフトが受けなかったのが、評価関数の弱点になりましたね。
中盤の▲6六歩が見えていなかったのかなと思いました。
△6五桂から手を打ちきっている印象でした。
終盤の△4一金、△1二玉が将棋ソフトの独特の評価関数だと思いました。

角換わりの将棋なので、結果的に大差でしたが、内容的には現役プロ棋士に近い部分を感じました。
自動学習の評価関数は、まだ完成されていない部分もあると思いました。


記者会見で、習甦のスペックは、2012年5月のコンピューター将棋選手権と同じスペックです。
CPU「Xeon E5-2678W(3.1GHz,8コア,16スレッド)」
メモリ「16GB」
OS「Windows7」
プログラム言語「C++」

他にはOSは「Linux」、プログラム言語は「C言語」などがあります。

<評価関数とは>
私は次のように考えています。
プログラム用語で言えば、「多分木(ノード)」、「αβカット」、「駒の価値の点」などを総合的に判断して、点数化しているのが評価関数です。
人間で言う所の読み、形勢判断(駒の損得、駒の効率、玉の固さ、手番)が、将棋ソフトの独特な部分が、評価関数だと思っています。
「多分木」とは、読みの枝分かれ。
「αβカット」とは、数手後の局面の点数化による形勢判断。
「駒の価値の点数」とは、駒の損得、駒の効率。
ニコニコ生放送では、点数だけが表示されていましたが、点数だけが評価関数ではないと思います。


残りの4局も、各将棋ソフトがどのような評価関数になっているのかが、個人的には注目です。

電王戦について

2013-03-18 22:52:13 | プロ棋界情報
プロ棋士5人対最強将棋ソフトの電王戦が行われる予定です。

遠山五段が、電王戦について述べています。

私は、将棋ソフトの評価関数対策が、最重要な課題だと思います。
評価関数は完成されていないと思います。 今でも発展途上の未開発の分野のはずです。

評価関数をどのように捉えるのか?
プロ棋士は、それをどのように理解をするのかにかかっています。

個人的には、練習用の将棋ソフトを相手に、駒落ちをすれば分かり易いのではと思う。
平手は、序盤の定跡の蓄積が沢山あるので、将棋ソフトの棋力の部分が分かりづらいと思います。
プロ棋士が上手、将棋ソフトが上手などで、練習で指して見ると将棋ソフトの棋力が分かると思います。

つまり、将棋ソフトの指し手がどのような手を選ぶのかを知ることが重要な対策ではないでしょうか?
それは、駒落ちの将棋ソフトの指し手の選び方を知るのが、一番分かり易い方法ではないかと思います。

将棋ソフトは、未知の局面から詰みの手前(必至まで)は、すべて評価関数によって選んでいるからです。
最近は、評価関数の精度が上がったのが一番の要因ですが、まだまだ、発展途上のはずです。
つまり、評価関数で全ての手について最善手を選んでいる訳ではないはずです。
平手でも、駒落ちでも、使う評価関数は同じです。

私は、プロ棋士が、将棋ソフトの評価関数対策を、どのくらいしているのかによって、勝敗は分かれると思います。
プロ棋士が評価関数対策をきちんとすれば、5連勝は出来ると思います。
プロ棋士が評価関数対策をしなければ、2勝3敗の可能性もあると思います。
将棋ソフトも時間があれば、手をたくさん読めるといいますが、評価関数の間で読み点は変わりないです。
だから、時間が長い短いはあまり関係がないと思います。

現在は、ボナンザのオープンソースによって、将棋ソフトの各開発者がそれぞれ工夫をしていることが基本です。
米長永世棋聖の2手目の△6二玉は、評価関数対策の1つとしては、作戦としてはあります。
しかし、評価関数対策としては、最善の作戦策とは言えないでしょう。

後は、練習の将棋ソフトより本番の将棋ソフトは、評価関数が異なるので、予想外の手が来ることを想定する必要があります。

私は、プロ棋士の評価関数対策をどのようにしているのかに興味があります。

※2013/3/19(火)の午後5時半頃、無名(Unknown)の方から来ましたが、無名でしたので「コメント」を削除しました。

渡辺竜王の活躍

2013-03-18 22:45:03 | 棋士個人情報
渡辺竜王のファンとしては、活躍をしていることは、嬉しい限りです。

王将を佐藤王将から4勝1敗で奪取をしました。(実は詳しい棋譜はまだ見てません。)
NHK杯を対羽生三冠に勝ち、NHK杯を初優勝しました。(棋譜は、テレビで見ました。)

現在は、棋王戦を郷田棋王を相手に、2勝1敗で向えています。
渡辺竜王が三冠の可能性もあります。