週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

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

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

第2期電王戦第2局姫路城での対局シーン。将棋界の最高峰である名人位の佐藤天彦九段が負けたことで、タイトル保持者でもコンピューター将棋ソフトには敵わないという認識となった。

 5月20日、兵庫県・姫路城で行なわれた第2期電王戦第2局で佐藤天彦名人に完全勝利したことで、日本将棋連盟もコンピューター将棋ソフトがプロ棋士のレベルを超えていると認めざるを得なくなった。電王戦は2012年に第1回が開催されたが、2015年には一度「FINAL」と銘打ったものの、同年に「叡王戦」という新棋戦を発足し、叡王戦の優勝者はコンピューター将棋の頂点を決める電王トーナメントの優勝者と電王戦として対局することになった。

 結局、2016年以降は1度もプロ棋士がコンピューター将棋ソフトに勝つことはできず、今後も勝てる見込みも低くなったということで、「役割は終えた」と主催するドワンゴの川上会長が終了宣言をした。ただ、叡王戦は34年ぶりにタイトル戦へ昇格することになり、これまで将棋界に貢献してきた努力が報われた。また、コンピューター将棋ソフトに対して一度は白旗をあげたものの、最近世間を賑わせている超新星の藤井聡太四段のようなコンピューター将棋で学習する世代も登場し、将棋界はますますおもしろくなっている。

 電王戦を振り返ってみると、実にさまざまな将棋ソフトが登場してきたと感じる。そのなかでも別格の存在感を示していたのが、やはり対人戦最強の将棋ソフト「Ponanza」だろう。Ponanzaは山本一成氏と下山晃氏が開発。世界コンピュータ将棋選手権で頭角を現わし、2013年に電王戦に参戦した。その後年々進化を重ねて、対プロ棋士には一度も負けることはなかった。

 そこで今回は開発者の山本一成氏に電王戦を振り返りつつ、将棋ソフト、人工知能、そして今後のことについてお話をうかがった。

2年前からもうプロ棋士が勝てる見込みはなくなっていた

――電王戦を振り返って、7連勝で終わりましたが、率直な感想を。

山本氏:最初の時は結構いい勝負だったけど、後半の2戦はもうだめですね(笑)。(将棋ソフトのほうが強くて)勝負になってないです。でも、2013年の時点ではプロ(棋士)レベルを突破していなかったことは間違いないです。

――最初の頃は、力が均衡していましたよね。

山本氏:2014年ぐらいから、「キツそうかな」って感じでしたね。はっきりと差がついたのは1年前の山崎隆之八段と戦ったあたりですね。そのころからは“強化学習”がちゃんと十分できるようになってきて。強化学習というのは、自分で自分を強くする行為ですね。そこから新戦法が生まれたりして、プロの将棋の知識を逸脱し始めました。もうそうなると(プロ棋士は)勝てないかな、という印象ですね。以前は、“教師あり学習”といって、プロの手を学習することがベースにありました。そこから何年も強化学習をがんばってやってきたので、それがきちんと結実したのがちょうど2年ぐらい前でしょう。

――自己対戦は“教師なし学習”になるんですか?教師あり学習で強くなったモノどうしの対戦になるんですか?

山本氏:教師あり学習の反対語って教師なし学習じゃないんですよ。教師なし学習って別の意味があって、現実世界ではあまり対応するものがないんですが、例えば「動物の絵がここに1000枚ぐらいあります。この動物を100種類に分けてください」みたいな問題が教師なし学習ですね。専門的には、皆さんが想像する教師あり学習と、そこから発展する強化学習があって、教師なし学習はちょっと用語が違いますね。

――なるほど、教師あり学習から強化学習になって強くなったと。それが2年ぐらい前。

山本氏:そうですね、調整はもうずっと前からやっていたのですが、ちゃんとうまくいくようになったのが2年ぐらい前ですね。

――最初のころはデータセンターを使って対局していましたが、その当時は処理能力を重視していたのでしょうか?

山本氏:本番のクラスタ化(対局時に複数のマシンを接続して処理を分散させること)ってどういうことかと言うと、もうちょっと強くなるんですよ。ちょっと強くなるけど、それよりもずっと大事なことは事前の学習ですね。例えば、「AlphaGo」が柯潔(かけつ)九段(中国の世界最強囲碁棋士)と対局しましたが、AlphaGoはシングルマシンでした。クラスタ化したほうがいいかもしれないけどトラブルを恐れたのかもしれないですね。

でも事前の学習は膨大な計算リソースが要ります。これはほかの分野でも言えることで、例えば「ディープラーニング」だと学習はすごいコストだけど「推論」(インファレンス)そのもの、つまり写真があってそこに猫がいるかどうかを当てるみたいな学習はスゴイ大変ですけれど、学習した結果を実際に使う推論の時は、ずっと小さい計算でできます。まぁ、それでも大きな計算なんですけど。機械学習をするのと実際に運用するのとでは、機械学習するときのほうがずっと巨大なコストかかります。

2013年の第2回電王戦のときは、まだ使用するマシンの規制がなかったので、ノートPCで参戦するソフトもあれば、ネットワークで接続したデータセンターを活用したり、700台近いマシンをクラスタ接続して戦ったりとさまざまだった。

――最初のころからどんどんと進化させていったわけですが、進化のポイントは?

山本氏:やっぱりプロの教師から逸脱して自分で知識を獲得するようになってきたところが一番大きいでしょう。ただ、LazySMP(怠惰な並列化)といった探索の知識もやっぱり大事なんですね。これもおもしろい話があって、評価することと探索することは、ちょうど車の両輪みたいな関係で、片方が良くてもダメだし、両方良くなければならない。今、評価のレベルが上がってきたので、評価のレベルが正確になると、より大胆な枝刈りが可能になってきます。この評価を軸にして、評価値が悪かったら、ここから先を読む必要がなくなります。評価が正しいからより強くできるという効果がありますね。

人工知能(AI)って黒魔術化してるんです

――当初からメディアは将棋ソフトに対して「人工知能」と表現していましたが、最初からそういうわけではなかったですよね。

山本氏:例えば、ドラクエの初期の敵キャラはAIですか?

――敵の動きもそうですが、シリーズ4作目に「AI戦闘」搭載なんてうたっていましたよね。

山本氏:私は直接知らないのですが、そういう話がありました。よくある話は人工知能って、ちょっと秘密が明かされてしまうと、「そんなのは人工知能じゃなくて、記憶や計算じゃないか」って言われるんですね。でも当時のドラクエは、当時の開発者が一所懸命頑張って作ったはずです。将棋は、普通に考えると計算なんですけど、どうやって計算問題に落とし込むかって、全然自明じゃないんですよね。そもそも今の人工知能の最先端は、基本的に単純な計算力や記憶力だけで解決できる問題ではないんです。将棋も普通に考えると全然計算するようなことに落とし込めるとは思えない。将棋の局面の良し悪しをどう計算に落とし込めばいいかわからない。もっとよくわからないのが、何を計算すればいいのか、本当に全然想像もつかないですよね。でもコンピューターは計算と記憶しかないんです。

――どなただったか「AIか否かはすごく難しい問題。なんらかの命令に対する答えを出すものじゃなくて、その命令に対して賢い答えや振る舞いをする、人間の想像を超えてくるようなものがAIだと私は思う」と語っていました。

山本氏:おもしろいですね。そういう意味だったら、将棋プログラムは間違いなく賢い振る舞いをしているし、プログラマーを超えるような結論を打ち返してきますよね。

――確かに、こう指したら、こう返すだろうと予測できるわけでもなく、完全にコンピューターが意思を持って指しているという感はありますよね。

山本氏:そうですね、僕はよく言ってますが、今の人工知能は黒魔術化しているんです。つまり、自分が作ったコードやテクニックが、どうして良い結果を及ぼすのか、真の意味ではなかなかわからない時代になっているんです。真の意味でわからないということは、つまり方程式を解くようにわかるような話をしていないし、直感的にわかるような話でも必ずしもないという時代になってきています。特にディープラーニングの世界では、ものすごい謎なテクニックがいっぱい出てきていて、それが何を意味しているのかなんとなくわかりますが、実際にはあんまりわかっていないですね。たまたまうまくいった、みたいな感じです。

――研究で成功したときって、たまたまうまくいったというケースが多いですよね。

山本氏:前世紀の科学ではあまり扱わなかった。ただ工学の世界は昔からそうだったと聞いていて、例えば鉄鋼炉の中では難しい何かが起こっているけど、鉄鉱石という鉄が多く含まれた石と炭素とかを、熱い反射炉の中に突っ込んだらなぜか鉄ができる。だけどシミュレーションかけてもよくわからず、なぜかこうすることでできるみたいな話です。工学というのはうまくいくことが大事で理解することは二の次ですよね。人工知能や今のすべての科学は、そういう方向に進んでいます。逆に言うとキレイな数理で解けるような問題って、だいぶ解決されてしまったのかもしれません。

――開発者が100%理解して、進んでする分野というわけではないのですね。山本さんご自身は、自分のPonanzaについてどのくらい理解されていますか?

山本氏:3割くらいじゃないですか(笑)?すごいたくさん探索した時の挙動の予想とか、あるいは評価関数の次元が高い、高次元のものの予想というのは、人間の直感を上回りますね。だいたい我々は3次元ぐらいしかわかんないです。なので、あまりわかっていないというのが本当のところですね。統計を取ると実験を100本重ねて成功するのが2%なんですよ。これってあんまりわかってないからですよね(笑)。

さまざまな知識が必要なところが将棋ソフト開発のおもしろいとこ

――強くしていったときに一番苦労したところはどういうところですか。

山本氏:最初のころは素直に強くなっていくんです。なぜなら過去の文献を漁るだけでも、それを取り込んで理解して書けば強くなれたんですが、だんだんしんどくなってきます。強くすることそのもの以上に、強くなったことの確認のコストのほうが高いんですね。今の将棋プログラムは強くなったことの確認に、かなりのリソースを割かれています。

――具体的にはどう確認されているんですか?

山本氏:以前のソフトと改良したと思っているソフトを戦わせて、統計的にちゃんと優位に強くなっているか、ということをしています。正規分布で3σ(シグマ)とか。でも、これが裏切られたりするんですよ。例えば、100本改良して1本成功すると、2σだと何もないのにうまくいっちゃう例があるんですよ。これは危ないですよね。たくさん回数をやった時に、それがいいか悪いかという数学があるらしくて調べたんですけど難しくて。まったく同じものでも100回やるとふつうに2σを外れて、ということは起こるので、「おいおい危ないぞ統計」とか思っています。

――単にプログラムが書けても数学の知識がないとやっぱりできないことってあるんですね。

山本氏:だから将棋プログラムのいい点かつ面白い点というのは、いろんなレイヤーの知識やいろんなレイヤーの賢さが求められるところです。何か特別に秀でていればいいっていうわけにはいきません。そこが面白いところですね。

――山本さんは将棋の棋力が結構高かった系の開発者ですよね。ほかの開発者のなかには、プログラミング技術が相当高いというタイプの開発者もいます。

山本氏:そうですね。でも大事なことは総合力なので(笑)。あまり将棋が強いことも直接何かあるわけでもないですし、プログラミングができることもあまり大したことではないんですよ。もちろん、できるに越したことはありませんが、別にそれが勝負を決定づけるわけでもありません。

――でも処理効率がいいってこともありますよね。

山本氏:もちろん、筋トレも必要ですけど、特に短距離走というわけでもないんですよね。でも将棋が強くても、あまり価値がなくて、自分が知っている知識をプログラム化することって、ほとんどできていないので。つまり将棋のことを知っていると思っても、どういうふうに将棋のことを理解しているのか言葉にできないんです。言い換えると、我々は歩けるけど、二足型歩行ロボットを作るのは、たぶんできないですよね。「歩く」ってどういうことか、わかっていますが言葉にはできません。言葉にならないと、プログラムにはなかなかできないんですよ。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう