このページの本文へ

「2年前からプロ棋士はもう勝てないとわかっていた」Ponanza開発者・山本氏が語るAIの未来

2017年07月19日 15時30分更新

文● 飯島範久 編集●ジサトライッペイ

  • この記事をはてなブックマークに追加
  • 本文印刷

将棋ソフトはもういいですよ(笑)

――電王戦は残念ながら今回で終わってしまいましたが、電王トーナメントのほうは続きます。山本さんは今後どうするんでしょう?

山本氏:もうそれはいいんじゃないですか(笑)?電王トーナメントはちょっと実装したいことがあったら試してみるかもしれませんが、もういいんじゃないかな。

電王戦は終了したが、電王トーナメントは続けられることが決定している。プロ棋士との対決はできなくなったが、賞金のために優勝を目指して参加する人もいるだろう。写真は昨年の電王トーナメント。

――世界コンピュータ将棋選手権も?

山本氏:いや、どっちも出るんですよ。Ponanzaが負けるさまを出すことは大事なことかなと思って。

――積極的に開発はしないけれど、出ることは出ますと。でもアスリートみたいに、そこに合わせて調整することはしないと。

山本氏:はい。命がもうあぶないので(笑)。楽しいときに勝ちました。

――今年の世界コンピュータ将棋選手権では新進気鋭の「elmo」(瀧澤誠氏が開発)に負けてしまいましたが、開発の方と何かお話しました?

山本氏:話ましたよ。基本的には、「Apery」と「やねうら王」のコングロマリット(異種類の統合)ですよね。もうやめてほしいそういうの(笑)。

――そういう統合とかができるんですね。

山本氏:今は混合させられるようにバイナリー間の互換があったりするんですよ。フォーマットまで共通化してきていて、いろんなものが。Ponanzaはなにも互換性がないけれど(笑)。

――ガラパゴス的な(笑)。

山本氏:なんかみんな共通フォーマットとか持っていて、へーっていう感じですね。いろいろなファイルに互換性があって、相互のやりとりが簡単になっていて。そういう時代ですか、みたいな(笑)。

――Ponanza包囲網ができつつあるわけですね。山本さんのブログでelmoと対戦させたら、6割ほど勝てると書かれていましたが。

山本氏:逆に言うと、6割しか勝てないというのが衝撃なんですよね。昔なら9割ぐらい勝てたので。あぁ、だいぶ追いつかれたなって感じです。

――そういう進化が見られるのって面白いですよね。Ponanzaが突出してきたときもスゴイって思いましたし。

山本氏:コンピューター将棋そのものは進化し続けているし、それどころか(開発する)人も増えたし、進化の速度そのものも速くなっています。進化の速度が変わらないのではなく、速くなってきているというのがヤバイですね。最近の流れを見ているとまだありそうですよね。CPUはムーアの法則に限界が来たと言われてますが、コンピューター将棋ソフトはまだまだ効いてますね。ただ、囲碁のほうがヤバイですが。

――どういう意味の“ヤバイ”ですか?

山本氏:囲碁は半年で(レーティングが)500点とか1000点とか上がっています。AlphaGoはたぶん1年で1000点ぐらい上がっていると思います。これは、優秀な人がいてお金もあって、といのもあるかもしれませんが、もう1つは囲碁というゲームの深さが支えてくれたんだと思いますね。

――まだまだ奥が深くて人間では読めない域が広いということ?

山本氏:囲碁においては、コンピューターってまだまだ底を知れない状況なのでしょう。それが強さの上昇に大きく結果的に寄与していると思います。

教えなくても合法手しか指さないディープラーニングの不思議

――Ponanzaは最近ディープラーニングも取り入れたんですよね。現在はアマのレベルだと、電王戦記者会見のときはおっしゃっていましたが。

山本氏:1回推論するとアマチュア有段レベルぐらいですね。

――ディープラーニングを使い出したのはいつからなんですか?

山本氏:2016年の電王トーナメントのあとですね。将棋でディープラーニングやってみようという試みは何度かありまして、PFN(Preferred Networks社)さんとの協力でいろいろありました。驚くべきポイントは2つあり、1つは囲碁と違ってディープラーニングしづらいと思っていたのが、圧倒的な合法手の数ですね。囲碁は極端な話、空白地に入れれば合法手なんです。もちろん、目を埋めないとかありますが。でも、将棋はそうではありません。一手一手違うし、王手になったら変わるし、そのあたりがスゴイ難しかったです。どうすればいいか悩んでいたんですが、ディープラーニングに合法手を入れる仕組みってそんなにカンタンではなくて、自明ではなかったんですね。

ディープラーニングは今までの学習機より、入力と出力の自由度はすごい高いのですが、自由自在にコントロールがきくわけじゃないんです。ヒントを与えることはできると思ったんですが。そこで1回諦めて、違うアプローチをしてみようと。将棋の手の数って4600パターンくらいしかないんですよ。fromとtoと成ったか成らないかって。そして、将棋盤を含めて4600の「クラス分け問題」にしたんです。画像があってそこに何が写っていますか、というディープラーニングでよく使われるシナリオです。将棋盤の画像を突っ込んで4600パターンの手にクラス分けしましょうというお題を与えました。

――その一手ごとに、これはいい悪いみたいな評価をつけたということですか?

山本氏:そうですね、Ponanzaの自己対戦から5億ペアぐらい用意して局面とし、合法手の情報は何も入っていないのですが、この局面はこうなってとか、この局面はこの手だけとか入れておきました。そうすると、任意の局面を与えても、まず合法手が返ってくるようになったんです。ディープラーニングが一番いいと思った手は、まず合法手ですね。これのスゴイ点は、二歩(歩のある筋にもう一枚歩を打つ)を教えていないのに二歩をしないんですよ。「なんでやろ?」って(笑)。

――ずっとやっていても、二歩が発生しないということですか?

山本氏:これは悪魔の証明系なので、完全にないとは言えないし、ひょっとしたら指す場面もあるかもしれない。あるいは、複雑な王手のときに、うっかり利きを見落とす可能性はあるかもしれないですけど、まず基本的には大丈夫です。もし実用段階にするのであればPonanzaでフィルタリングすればいいので、そこは別に問題はないのですが、驚くべきことはルールを教えていないのに、局面と手さえあげれば、ちゃんと合法手を返せるということですね。これはヤバイですね。プログラマーである僕の直感を大きく逸脱しています。よくわからないからやってみたら、まさか成功するとはという話です。

――ここからどのように発展させているんですか?

山本氏:まだその段階なんですが、すでに従来のPonanzaの手は57%以上当てられるようになってきていて、推論を1ms以下にしたときに出てくる手が、すでにアマ有段レベルになっています。これ自体はPonanzaより効率がいいですね。つまり、Ponanzaを1ms以下で探索させたものよりは強いです。

ディープラーニング版は読んでいないの意味とは

――電王戦の会見では0手、つまり読んでいないけど指せるという意味はどういうことなんですか?

山本氏:画像を入れたら4600のクラス分けになっていて、クラスの中で一番確率が高いものは、合法手になっているというのが現状なんですね。実はそれ以上でもそれ以下でもなくて、ディープラーニング中がモヤモヤした何か、それが今ある最先端のディープラーニングの中身でもいいですし、実際使っているのはもう少し凝ったものなんですが、この中身がどうであれ、ちゃんと手が出力されます。

Ponanza以外の実装も出てきていて、みなさんちゃんと良い手が返ってくるようなディープラーニング機を作れています。ただ、ディープラーニングとPonanzaそのものを組み合わせるとなると、どう組み合わせればいいかわからなくて不完全ですね。基本的にいい手から先に読む(オーダリング)と将棋プログラムって強くなれるので、GPUにお願いしておいて、よかった手をオーダリングし直してもらっている、ということをひたすらしてもらったんですけど、ディープランニング+Ponanza対Ponanzaの勝率が6割ぐらいしか出なくて。ちょっと改善途中かなって感じです。

――基本0手でやるということは、このパターンというのがあるからこの手、つまりいちいち探索していないということですよね。

山本氏:何も読んでいないということです。このパターンだったらこのパターンとか言っちゃって言いのかな。

――すでにある答えを引き出しているということですよね。

山本氏:大事なことは、丸暗記をしているわけではないんですよ。

――1回毎に計算はしているということですか?

山本氏:もちろんもちろん、GPUでは毎秒2000ぐらいしか推論できないから、そんなに軽い計算ではないですよ。

――ということは、読んでいるということですよね?計算をしているので。

山本氏:それを読んでいると言うんですか?それは人間の考え方で読んでるとは言わないと思うんですが(笑)。

――でもそれで判断はしているということですよね。

山本氏:それをなんという日本語にするかは、私はわからないですが、とにかく局面を突っ込んで、現象を言っているだけですよ。行列計算とそれに付随する何かとほかの計算をすると、なんか指し手が返ってきます。それを「読む」と解釈するかどうかは、私にはわかりません。つまり、細部を見ても私にはその意味がわからないですし、その計算の部分部分を切り取られて言っても、そこが何であるか私にはわからないし、誰もわからないです。

――それがCPUである場合と違うというのは、CPUは本気で探索しているから読んでいる。

山本氏:Ponanzaは基本的に全部の手を展開して、そこの末端の評価関数を読んで、そのあと枝刈りとかしていくんですが、基本的にはこの組み合わせだけです。

――それは、人間の思考パターンとかなり似通った計算が行なわれていて、そのフローというのは「読んでいる」にふさわしいと感じているということですね。

山本氏:読んでいるというのは、次の局面を生成している、その次の局面も生成しているんですけど、このディープラーニングの中には、どこにも次の局面を予想するというか、少なくとも次の局面を作ってはいないので。

――ということは、何度か対局していて、同じ局面が現われたら次の一手は同じ手になるということですか?

山本氏:基本的には、同じ手が一番いいよと返してきます。おそらく、過去の手順を入れたほうが良さそうなんですよね。こういう手順でこういう局面になったと入れたほうが、精度が上がると思います。

――今はそこまでやれていないわけですね。

山本氏:過去の手順を入れる意味はなんなの、という話ですけれど。ただ、囲碁のほうはそういうこともやっています。少なくともAlphaGoの論文上では、過去8手どういう手順でこの局面に到達したかという情報は入ってますね。それがどういう意味なのかという話はあるんですけど。

Alpha Goは、すべて論文として公開されていて、学習方法などが情報として共有されている。

注目ニュース

ASCII倶楽部

最新記事

ASCII.jpメール アキバマガジン

クルマ情報byASCII

ピックアップ