コンピュータ将棋が熱い!おもしろい!

電王戦FINAL

電王戦FINAL [1] というイベントが進行中です。棋士 vs. コンピュータの将棋対局です。 私はこれの第1局と第2局を見て、コンピュータ将棋の世界というのを初めて知りました。

第1局は「斎藤慎太郎 五段 vs Apery」でした。 結果は斎藤慎太郎五段の勝ち。 斎藤慎太郎五段の勝ちがほぼ確定してからのAperyの王手ラッシュは人間 vs. 人間の対局には見られない状況になったため、様々な意見が飛び交っています [2, 3] 。

第2局は「永瀬拓矢 六段 vs Selene」でした。 結果は永瀬拓矢六段の勝ち。人間側の2連勝です。 この対局では永瀬六段の角行の成らず(王手)と指したところでSeleneのアルゴリズムが想定外の動きをしました。 相手の角の自陣への成らずは局面として想定していなく、認識できずに別の手を指し王手放置でSeleneの反則負けという、なんだかこれまたコンピュータらしい内容でした [5, 6, 7]。

コンピュータ将棋は波乱しか起きないのか! 私はすっかり面白さに取り込まれてしまいました。

どうやらこのような波乱は今回に限ったことではなく、過去にも似たようなことが起きているらしい [8]。

ちなみにぐだぐだとこの記事の下書き書いているうちに第3局が終わってしまった。 第3局は「稲葉陽 七段 vs やねうら王」でした。 この対局はライブ中継で観戦することはできませんでしたが、結果はやねうら王(コンピュータ将棋)が勝ちました [9, 10, 11]。
コンピュータ将棋 1勝!おもしろい!展開!

[1] 将棋電王戦FINAL | ニコニコ動画, http://ex.nicovideo.jp/denou/final/
[2] 電王戦FINAL第1局観戦記 先崎学 | ニコニコニュース, http://news.nicovideo.jp/watch/nw1499999
[3] 「将棋電王戦FINAL 第1局 斎藤慎太郎五段 vs Apery」王手ラッシュ肯定論まとめ – Togetterまとめ, http://togetter.com/li/795234
[4] 2ch名人 平岡さん、コンピュータ将棋の敗勢局面での王手ラッシュについて持論を展開, http://i2chmeijin.blog.fc2.com/blog-entry-1908.html
[5] 将棋電王戦FINAL第2局で衝撃の結末 Seleneが永瀬六段の異例の指し手「角成らず」を認識できず反則負けに – ねとらぼ, http://nlab.itmedia.co.jp/nl/articles/1503/21/news033.html
[6] Seleneが反則負けしたようですが | やねうら王 公式サイト, http://yaneuraou.yaneu.com/2015/03/22/selene%E3%81%8C%E5%8F%8D%E5%89%87%E8%B2%A0%E3%81%91%E3%81%97%E3%81%9F%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%81%8C/
[7] 棋士はカワイイ! : 将棋電王戦FINAL第2局は永瀬六段がSeleneに鬼軍曹っぷりを見せ付ける, http://kishikawa.doorblog.jp/archives/43290118.html
[8] 王手飛車~将棋観戦ブログ 美学とは何か, http://gyan434.blog.fc2.com/blog-entry-108.html
[9] 電王戦FINAL第3局観戦記 船江恒平五段 | ニコニコニュース, http://news.nicovideo.jp/watch/nw1526038
[10] 電王戦 第三局の感想 | やねうら王 公式サイト, http://yaneuraou.yaneu.com/2015/03/30/%e9%9b%bb%e7%8e%8b%e6%88%a6-%e7%ac%ac%e4%b8%89%e5%b1%80%e3%81%ae%e6%84%9f%e6%83%b3/
[11] 電王戦 第三局のやねうら王の思考ログ公開しました | やねうら王 公式サイト, http://yaneuraou.yaneu.com/2015/04/02/%e9%9b%bb%e7%8e%8b%e6%88%a6-%e7%ac%ac%e4%b8%89%e5%b1%80%e3%81%ae%e3%82%84%e3%81%ad%e3%81%86%e3%82%89%e7%8e%8b%e3%81%ae%e6%80%9d%e8%80%83%e3%83%ad%e3%82%b0%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97/

コンピュータ将棋の思考

ところで、ひふみんことあの将棋ファン以外でも知ってる人は多いだろう現役最年長棋士 加藤一二三九段の言及を引用します。 [12] の2:05ぐらいから次のようなことを話しています。

[12] 【将棋】 名棋の泉 第5回 対局編(前編) 【ひふみん】 – ニコニコ動画:GINZA, http://www.nicovideo.jp/watch/sm4613418

ある局面で、読む価値のある手はだいたい5通りぐらいありますけども、ABCDEとあって、Aについて50手ぐらい先ずーっと自分の指す手と相手の指す手をお互い整理していって、1時間2時間考えた時には300手ぐらい読んでますけども…。 加藤一二三九段

なんか一瞬、コンピュータにとって余裕そうに聞こえる。 しかしこれは爆発的な計算量のトラップで、ちょっと計算してみるとすぐに無理ゲーなことがわかってしまう。

そもそも人間は直感的に局面を評価できます。
一方、コンピュータは直感という感性は持ちあわせていなく、評価値という指標を用いて局面がどちらが優勢か判断しなければなりません。 評価値は評価関数で本当に基礎的で原始的な部分から積み上げられるように計算されます。 コンピュータ将棋のアルゴリズムの基本は局面をノードとし初期局面をルートとしたゲーム木を構築し、評価関数で局面の評価値を計算して探索することで勝ちを目指します [13]。
この部分で人間の思考とコンピュータの思考でかなり違いが生まれる部分です(ここで人間の思考とは何かを突き詰めて考えることは避けます、あくまで直感的にです)。

将棋のようなボードゲームをコンピュータサイエンス(ゲーム理論)の用語で完全情報ゲームといいます。
私がこのブログでよくテーマにするルービックキューブのような一人用のパズルとはプレイヤーが2人いるという点でちょっと違っています。
ただ、将棋AIのアルゴリズムのアイデアはゲーム木を構築するという点で非常にそっくりです。

[13] 【コンピュータ将棋の基礎】, http://homepage2.nifty.com/kakinoki_y/kiso.htm

例えば、Ponanza は [14] によると1秒で700,0000局面のノードを展開できると言われています。 これから逆算すると、例えば1時間で先ほど述べたひふみんの読みを再現しようとすると、1局面での分岐がどのくらいになったらいいのか求めることができます。
$x^{50} = 7000000 \cdot 60 \cdot 60$
これを Wolfram Alpha [15] で計算すると、$x \approx 1.61$ になります。

つまり、1つの局面で平均1.61分岐ぐらいに抑えないと、加藤一二三九段の読みは再現できなということを意味しています。 枝刈りや打ち切りでこの数字はもう少し増えるかもしれませんが、そう大きく増えないでしょう。 評価関数の改良、うまく局面の整合性のとれた類似化やノードの併合等で木の量を減らして、計算量を減らしてこの数字に近づけなければ、コンピュータは神武以来の天才になれません。
いやいやコンピュータ将棋アルゴリズム開発者は大変な仕事をこなします。棋士の頭が良すぎです。

第1局で健闘したAperyがオープンソースとして公開して話題になっています [16]。
コンピュータは今までの人間の棋譜を学習して、最近は棋士とほぼ対等に戦えるようになって勝てるようになってきました。 それに対し棋士は対策をしてコンピュータに勝つ方法を編み出しました。 その内容はまだ幼いけど、人間とコンピュータが切磋琢磨して成長してるというのが感動的と感じます。

第4, 5局が控えています。 私は将棋については初心者中の初心者だけど、アルゴリズムを研究する者の端くれとして今後の対局が非常に楽しみです。

[14] コンピュータ将棋のよくある誤解(その2) – 山本一成とPonanzaの大冒険, http://ponanza.hatenadiary.jp/entry/2014/03/30/220216
[15] Wolfram|Alpha: Computational Knowledge Engine, https://www.wolframalpha.com/
[16] Apery のログ、実行ファイル、ソースコード – buoyance, http://d.hatena.ne.jp/hiraoka64/20150316/1426509711

なんかこれを考えているうちにルービックキューブを完全情報ゲームとして遊ぶことはできないか思い始めてきた。
2人対戦型のルービックキューブである。
例えば、交互に行ってずつ回転させて先に揃えた方が勝ちとか。
でもこれはなかなか勝負がつかないか。

この記事をシェアする:Tweet about this on TwitterShare on FacebookShare on Google+Share on TumblrEmail this to someone

コメントを残す

名前を入力しなくてもコメント投稿可能です (匿名ユーザとして表示されます)。