電王戦第4局 ツツカナと森下九段の観戦記

4/5(土)小田原城で先手ツツカナと後手森下九段の対局が行われた。二人の紹介についてはこの記事を参考にしてみてください。この記事では早速将棋の内容を見ていこう。ちなみに本局はリアルタイムで番組を見れてないので、記事の内容の精度がかなり自信がないです。その点ご了承ください。

ツツカナ、森下九段共に矢倉を趣向して、悩ましい序盤の変化が幾つかあったが、いかにも森下九段が好きそうな手厚い陣形となった(第1図)。プロ棋士の方に聞いたのだが、第1図はありそうで、それほど実戦例が多くないそうだ。

f:id:ponanza:20140407023305p:plain

第1図 善悪はともかく後手の森下九段は自身の将棋人生を表すかのような手厚い矢倉に

 

4筋、5筋を中心に長い長い中盤が始まります。こういった押し引きが矢倉の醍醐味と言えます。しかし遠山先生のブログでの以下の記述でもあるように、長い長い中盤をコンピュータとねじり合う将棋を勝つのはものすごく大変というイメージがあります。

この一局は今後の対コンピュータ戦に於いて、エポックメイキングとなる可能性があります。第1・2局のような揉み合いより、一気に勝負がつくスプリント勝負に持ち込んだ方がいいのかもしれません。

しかしきっとこれが森下流なのでしょう。なにより観戦者達にとって見ていてとてもおもしろい展開です。局面が激しく動いて第2図、森下九段の△4七金でツツカナの▲4六銀が少し受けにくそうですが、ここでなんと▲2八角打、コンピュータの不倒流な指し手が感じられます。

f:id:ponanza:20140407025122p:plain

第2図 銀を助けるためとは言え、まさかの角打!Ponanza的にはさすがに後手良し(後手+314点)と見ている

 

戦いが進み、第3図にここからの指し手がまさに二人しかわからない手順で、△5八歩成、▲同金、△3八金、▲5七金となった。善悪は私には分からないが、以下△2八金、▲同飛、△9四歩と本譜は進んだことを考えるに、後手は第3図で△9四歩とついたほうが含みが多いように見えるので、若干誤算があったように見える。Ponanzaの評価値的にも先手-300点から先手+300点くらいに遷移している

f:id:ponanza:20140407030020p:plain

第3図 後手は切り札の△5八歩成をしたが、その後でじっと△9四歩とつくなら切り札は残したかったような・・

 

局面は進んで第4図、ツツカナが指した▲7八玉、この手は後手の端攻めから逃げたり、角打ちの隙を消した柔らかい指し手。ちなみに豊島先生も絶賛

f:id:ponanza:20140407031131p:plain

 第4図 ツツカナが人間らしいと言われることも納得できる指し手、ちなみにPonanzaは▲7八金打一択(笑)

 

そこから少し進み、第5図、ここでツツカナの指し手は▲4四金打、正直下手そうな一手である。森下九段も会見で「この手ならなんとかなる」といった趣旨のことを言っていたが、まさにそんな感じのする感触の悪い手だ。しかし、もちろんのこと、この指し手は何億局面近く読んだ膨大な読みに支えられた手なのだ、そんなに単純な悪手のはずはない。

f:id:ponanza:20140407032052p:plain

第5図 正直相当感触の悪い手。ちなみにPonanzaも▲4四金打を推す

 

以下も営々とツツカナと森下九段が指したのだが、最後はツツカナの鮮やかな詰めろ飛車取りが決め手となり、ツツカナの勝利となった。長い長い中盤が続く将棋はコンピュータの膨大な読みの量が生きやすく、人間側辛いかなという印象があったのだが、本局もその印象を強める感触だ。しかし本局の押したり引いたりがある将棋は将棋ファンとして非常に見ていて楽しい将棋なのは間違いない。

 終局後の記者会見で森下九段は人間側は継盤を用意したいとおっしゃっていた。私個人としては、相手の思考の邪魔にならない限り(もちろん継盤を置いても、コンピュータの思考は乱れません)、自身の思考のレヴェルを高めることを良いことだとおもうのだが、どうなのだろうか?

最後に一言。記者会見の場、人間側が負けてしまった時、将棋プログラマ側が少し居づらい部分があります、森下九段が明るく振る舞ってくださったのことは見ていてすごくありがたいと思いました。この場を借りて勝手ながら感謝を。

電王ponanzaに勝てたらノートパソコンプレゼント! の感想

「電王ponanzaとドスパラなんば店で対局し、勝利できたらノートPCをプレゼント!」という企画を斎藤慎太郎五段と私で昨日はしていきました。最初は挑戦者がまさかの五人しか集まらないというとんでもない状況だったのですが、ゲストでアマ強豪の今泉さんや中川さんが来てくれたこともあって、私としては斎藤五段と六時間とても面白く喋れました。皆様もよかったらぜひ見てください

 f:id:ponanza:20140407201239p:plain

参考

この動画を書きおこしてくださった方のブログが面白かったので

斎藤慎太郎五段「森下システム」を語る (1)

斎藤慎太郎五段「森下システム」を語る (2)

斎藤慎太郎五段「森下システム」を語る (3)

斎藤慎太郎五段「森下システム」を語る (4)

斎藤慎太郎五段「森下システム」を語る (5)

Ponanzaの現在の課題 (1) コンピュータの持ち時間の使い方について

斎藤慎太郎五段が語る「第3回電王戦 豊島将之七段 - YSS戦」

山本一成氏が語る「コンピュータの中盤の強さ」

Ponanzaの現在の課題 (2) 不成の問題

Ponanzaの現在の課題 (3) 銀ばさみの理解

マルチコアは皆さんが思っているようなマルチコアか?

コンピュータ将棋を理解する上で、大事なことの一つにマルチコアというのがあります。皆さんのお手元のPCや最近ではスマホも当たり前のようにマルチコアになってきています。ところで皆さんがマルチコアと言っているものはどんなものなんでしょうか?

CPUというのは、コンピュータにとって頭脳と言えるものです。下の画像はCPUの一種類インテルCorei7です。皆さんはこういうものが幾つか繋がってマルチコアとなっていると想像してませんか?

f:id:ponanza:20140407212302j:plain

CPU Corei7 画像のものは4コアCPU こちらより画像を引用

 

実はこの中にすべてのコアが含まれているます。中の画像を説明付きの画像を見てみましょう。中にCore(コア)と書かれた部分が4つ見られると思います。4コアと言われていても、別々に分かれているわけでもなく同じ基板上にプリントされているわけですね。

f:id:ponanza:20140407212817j:plain

 内部アーキテクチャ 共有メモリ(L3キャッシュ)が意外と大きい こちらより画像を引用

 

10年位前からCPUはマルチコアが進んでいて、その理由はここで述べられているように以下のものである。

ダイナミック電力も漏れ電流によるリーク電力もおおむねトランジスタ数に比例して増加する。前に述べたように、トランジスタの増加に対する性能改善効果は飽和してきており、トランジスタを多く必要とするアーキテクチャの複雑化は、電力が増える割には性能の改善が小さく効率が悪くなってきた。このため、プロセサコアを複雑化するより、その分のトランジスタでプロセサコアを複数個作ってしまおうという方向になってきた。

ちょっと何言っているかわからないと思いますが。大雑把にいうと1コアの性能向上が限界が近づいた来たなか、ハードウェアの業界の人達は複数コアにすることで限界を突破しようとしているという状態です。

しかしマルチコアでいいコトばかりではありません。俗に言うフリーランチの終焉です。

 ただし、ヘテロジニアスマルチコアへの変化には痛みが伴う。それはソフトウェア面だ。ヘテロジニアスマルチコア化によって、ソフトウェア開発の労力が激増する可能性があるからだ。ヘテロジニアスマルチコアは、ハードウェア側の痛みを、ソフトウェア側に持って来るアプローチと考えることもできる。 これまで、CPUはシングルコアの性能を高める方向で来た。そのことは、ソフトウェアにとってはタダ飯食いと同じことだったという。つまり、ソフトウェア側は何もしなくても、CPUが進化するにつれて同じコードがより速く走るようになったからだ。ソフトウェアは、増えるパフォーマンスをどんどん食べればよいだけだった。ころが、CPUベンダーがマルチコアにターンしたため、状況が変わってしまった。汎用CPUコアのシングルスレッド性能は、現状ではもはや急激には伸びてゆかない。その代わり、マルチコア化によりマルチスレッド性能が急激に上がって行く。そのため、ソフトウェア開発者はCPUのパフォーマンスを活かそうとすると、ソフトウェア側を根底から切り替えて行かなければならない。特に、ヘテロジニアスマルチコアになると、対応が非常に重要となる。CellやAMD CPU+GPUの場合は、演算コアであるSPEやShaderで走るコードを書けば非常に高いパフォーマンスが得られるが、そうしない限り大きな性能アップは得られない。これまでと違って、パフォーマンスアップはタダではなく、代価を払わなければならない。フリーランチは終わってしまったというわけだ。

今までは、CPU性能向上にともなって、プログラマは勝手にプログラムが高速化(フリーランチ)できたのですが、マルチコアはプログラマの負担を激増させます。とりわけ単純な並列化ができない(コンピュータ将棋含)問題でのプログラマの負担はかなり強烈です。はっきり言って、現在でもかなりの数のプログラマが多くの問題で上手に並列化をさせることができていません。

コンピュータ将棋プログラムでマルチコアやマルチプロセス、あるいはクラスタ化について議論をしている人が多数いますが、残念ながら並列化がどういうものか正確に認識している人が少ないと感じています。このエントリはその誤解を解く一助になれば幸いです。