LogicalInSpace

将棋の日記

森下九段から指導対局の思い出

2013-10-10 20:31:32 | ネットソフト情報
第3回電王戦に森下九段が出場することが決定しました。

私がプロ棋士から指導対局をして頂いた方は、森下九段のみです。
茨城県のアマ竜王戦の県大会の審判でお越しして下さいました。
当時のアマ竜王戦の運用の方が、私の将棋道場の主席さんでした。
主席さんから、私が高校の将棋部の部長をしていたので、数人、アマ竜王戦のお手伝いをしました。

その時、森下九段が指導対局をして頂きました。
当時は、アマ二段だったので、二枚落ちが普通だと思いますが、私が2級時代にアマ高段者から駒落ちで教えて頂いたのは、飛車落ちだったので、森下九段に飛車落ちで教えて頂きました。
はっきり完敗でした。
細かい棋譜手順は忘れていますが、3筋と7筋を絡めて攻めた記憶があります。
しかし、森下九段からは、7筋の攻めはしない方が良かったと簡単な感想戦で指導して頂きました。

電王戦で森下九段に勝って欲しいと思います。
お金もないし、プロ棋士のパイプもないので、何も出来ませんけど。
将棋プログラムの対策のお手伝いが出来たらいいなぁと思います。

電王戦第3回は、1番で森下九段(名人戦挑戦者の経験者)を応援しています。

第3回 電王戦 統一マシン

2013-10-07 16:30:12 | ネットソフト情報
第3回 電王戦の統一マシンのスペックについて

Intel Core i7-3970X Extreme Edition(3.5GHz)の6コア(12スレッド)
メモリー16GB

これは、去年と今年のコンピューター将棋選手権の「ツツカナ」、「習甦」、「激指」と同じか、少し良くなっているスペックです。

純粋にソフトのレベルを比較するには、適しているスペックです。

クラスタ構成は、あれば特別なんですよ。

電王戦後の将棋ソフトについて

2013-05-11 11:17:10 | ネットソフト情報
色々な方のブログで将棋ソフトの記事を拝見させて頂いています。
将棋世界でも、全5局とも棋譜付きで解説がされています。
将棋倶楽部24でも、将棋ソフトのponanzaが対局をしています。
色々な意味で反響があるようです。

5月3日~5日には、第23回世界コンピューター将棋選手権が行われました。
結果は、優勝:Bonanza、準優勝:ponanza、3位:GPS将棋 でした。

他の方のブログをみる限りでは、プログラマー寄りではなくて、将棋ファンとしての記事が中心でした。
やはり、将棋ファンとしては、プロ棋士に勝って欲しいと思っていた方が大半だったようです。
しかし、現実の結果は、プロ棋士に勝ちこす結果となりました。


私の記事の「第2回 電王戦 第4局」では、かなり誤解をされていると思いました。
私は、客観的な内容を書いたのですが、客観的な内容が「中傷」、「批難」と読まれた方がいたことは残念です。
私は自分で業務用のプログラムを書いた経験上で、客観的に中立として書きました。

第2回 将棋電王戦(総括)

2013-04-20 21:25:44 | ネットソフト情報
毎週の土曜日に電王戦を、ニコニコ生放送で見るのが恒例になりました。
将棋ソフト側から見て、3勝1敗1分となりました。

全5局を通じて、将棋ソフトが現役のプロ棋士に勝つまでなったのか?
という印象を改めて感じました。

つまり、それだけ評価関数の精度が上がったのだと思います。


また反面、ハードの進歩が社会的な背景があったと思います。
ソフトの技術面よりは、ハードの進歩の方が強い印象です。

つまりどういう事かと言いますと、マルチコアのCPU、メモリーの増設のハード面が10年前とは違って、格段と増したことです。
もう少し細かく言いますと、マルチコア用のコーディング技術、メモリーを自由に使えるコーディング(配列を自由に使えること)によるハード面に合わせたソフト面の技術の進歩があることです。

CPUがマルチコアになったので、クラスタ構成でも読み数が、増えることも可能にしたことです。

昔は、データベースの世界でも、プロッピーに収めるためにメモリーまでも計算に入れてコーディングをしていたと話もあります。
現在は、メモリーの増設があるので、メモリー管理は、そんなに細かく管理する必要がないです。

また、スパコンではどうなの? とコメントがありましたけど。
クラスタ構成をすれば、スパコンに近い環境を作れるので、それ程は変わらないと思います。

プロ棋士は、将棋ソフトの開発者に負けたという印象が強いと思いますが、私はハードの進歩が、それを可能にしたと改めて思いました。
ハード面で強く成れることは、お金を払えば強くなることと同じことになります。


個人的には、今後の課題はソフト面の改善だと思いますので、同じマシンを使って、対戦させる必要があると思います。


また、プロ棋士に勝てる将棋ソフトであれば、将棋ソフトの定跡を作成することも可能ではないかと思いました。

第2回 将棋電王戦 第5局

2013-04-20 21:20:12 | ネットソフト情報
2013/4/20(土)に、第5局が行われました。

先手:三浦八段
後手:GPS将棋

GPS将棋の勝ち

アマチュア的に見て、三浦八段に特別な悪手はなかったように思いました。
個人的に気になったのは、▲4六角としてから、▲6八角としたのは、1手損しているのではないか?
と疑問に感じました。

それだけ、GPS将棋の評価関数の精度が良かったと思いました。


トップにも書いてある通り
※無名のコメント(Unknown)は、申し訳ありませんが削除させて頂きます。
===== 2013/04/21 PM3:00 削除 =====
しかしながら、丁寧に解説をして下さったので、文章をそのまま残しておこう思います。
===== ここから =====
68としたのは後手が端歩をついたからです
ここは矢倉の弱点なので普通こんなに早くつきません
なので咎めようと角を引いたのですが
その瞬間に後手から攻められました

先手としてはどこかで間合いを測って端から攻めないといけなかったのですが
GPSが隙を作らなかったので相手だと難しかったみたいですね
それでもGPSのログを見ると、攻め合いにいけるチャンスはあったようですので、人間の読み負けかもしれません
===== ここまで =====

名前を残して下さいますよう、お願い致します。

私からのレスです。
棋譜をご覧になっているようなので、細かい部分の解説は省きます。
確かに、△1四歩を咎めて、▲6八角としたことは、理解が出来ます。
しかしながら、通常の脇システムでも、端の歩関係は、勝敗に決する程、大きい局面と、小さい局面の両極端になると思います。
本譜の手順は、△1四歩、▲1六歩です。
しかし、脇システムで9筋の端歩を突かないで、1筋を▲1六歩、△1四歩とする指し方もあると思いました。
そうすると、類似型になるので、▲6八角が1手損するのではないかという意味です。
脇システムは、プロの実践譜も少なく、私も矢倉は指しますが、脇システムはごく数局ぐらいしか指さないので、細かな定跡までは把握はしていません。
定跡として、▲6八角なのか?
または、プロの感覚で△1四歩には▲6八角なのか?
そのどちらかなのかは、私には分かりませんが、▲4六角⇒▲6八角は始めて見る手だったので、1手損をしている感覚になりました。

第2回 将棋電王戦 第4局

2013-04-13 23:22:24 | ネットソフト情報
2013/4/13(土)に、第4局が行われました。

先手:Puella α
後手:塚田九段

持将棋より引き分け

将棋ファンは、プロ棋士が勝って欲しいという期待があったので、塚田九段に対する応援があったため、将棋ファンは感動しました。

ただ私は、将棋ソフトのPuella αが持将棋対策のプログラミングをしていないこと自体が、プログラミングのバグです。
プログラマーの世界では、バグとは、3種類あります。
1)コード上のアルゴリズムのバグ
2)仕様上(各部品のコードの連携)のバグ
3)コード上のバグはないけど、期待通り動かないバグ

Puella αが優勢を築いて、そのまま勝ちきれないで、持将棋より引き分けは、3)によるバグです。

バグがある中で、プロ棋士に挑戦すること自体が無謀としか言えないでしょう。


そもそも、将棋ソフトは人工知能も含めて、開発されています。
人工知能に欠陥があれば、何を目的に、将棋ソフト開発をしているのでしょうか?

ロジカルは、今回の棋譜は、将棋ソフトの最悪の棋譜に思えます。

オセロのプログラミング

2013-04-07 06:05:57 | ネットソフト情報
「将棋ソフトのプログラミング」と「オセロのプログラミング」は、とても近い部分があります。

C++言語ですが、「オセロのプログラミング」のサイトをご紹介します。

これは、「C++言語(Visual C++)」で書かれたソースコードです。
簡単な「オセロのプログラミング」でも、これだけ複雑なソースコードを書きます。

「将棋ソフトのプログラミング」の基本的な考え方は、「オセロのプログラミング」と差ほど変わらない部分があります。

このオセロソフトは、私も見よう見まねで作ったことがあります。
もちろん、きちんと動きましたよ。

オセロの「評価関数」と「α-β法」は、将棋ソフトの基本的な考え方のアルゴリズムになります。
つまり、将棋ソフトの原型ですね。

第2回 将棋電王戦 第3局

2013-04-06 22:01:32 | ネットソフト情報
2013/4/6(土)に、第3局が行われました。

先手:船江五段
後手:ツツカナ

将棋ソフトのツツカナの勝ち

将棋ソフトが勝利して、皆さんはどんなお気持ちですか?
個人的には、複雑な心境です。


今日は、プログラマー寄りのブログの記事にしたいと思います。

プロ棋士を相手に2勝という事実は、将棋ソフトの評価関数がプロ棋士と互角以上の戦いが出来ることが証明したことになります。

プロ棋士は、将棋人生をかけて目の前の1局の将棋を対局する。
その重みを、改めて知ることを再認識をしました。

日本将棋連盟が主催なので、どうしても将棋の話題になることは、仕方ないのですが。
プログラマーのことに触れる機会が少ないと個人的には思います。

プログラマーの努力に敬意を表するという言い方をしますが、何に敬意を示すのでしょうか?
プロ棋士は、奨励会に入って将棋のプロを目指します。 なので、1手1手に将棋人生をかけて指します。
プロ棋士には、1手1手の読みの積み重ねに敬意を表すると思います。

将棋ソフトの分野は、人工知能、ゲームプログラムという分野になります。
私は、データベースのプログラマーでしたので、分野は異なります。
でも、プログラマーにとっては、1行1行のソースコードに敬意を表すことになります。

よく、将棋ソフトだと「人間vsソフト」や「人間vs人間」という言い方がありますが、あまりそういう表現は好きではありません。
よくプログラマーは、デジタルのイメージがありますが、本当はアナログの世界なんです。
えっ! と思うかもしれませんが、本当なのです。

例えば次の計算をプログラムをして見ましょう。
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

<C言語>
int Num;
int Sum;

Num = 0;
Sum = 0;

for(Num = 1; Num <= 10; Num++) {
  Sum = Sum + Num;
}

printf("%d\n", Sum);

こういう風に、1行1行のアナログのように考えて書くソースコードが、プログラマーという人間なんです。
プログラマーは、コンピューターを媒体にした、プログラムの表現がソースコードなのです。

私は、記者会見を聞いて、少し残念な事があります。
プロ棋士にも棋風があります。
また、将棋ソフトの開発者の個性があります。
プロ棋士ならば、将棋を見ればどんな棋風なのかは分かります。
しかし、将棋ソフトの特徴は、他の将棋ソフトと比べて、どんな点に特徴がありますか?
5つの将棋ソフトが出ていますが、開発者の個性の部分を聞いていないのですね。
それが少し残念です。


今回の将棋は、プロ棋士ならばこう指す手が、将棋ソフトの評価関数がまさった感じです。
プロ棋士が評価関数の弱点を突いた指し方ではなかった印象です。

また、優勢を築いても、油断をしてはならないです。
それは、評価関数で悪くなる変化を指さないように設定されているからです。
ある意味では、ねばり強い指し方をすると思います。

第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手)を読まないといけないことになります。


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