物事を分解して理解することには、限界がある
—— 5月に開催された世界コンピュータ将棋選手権では、CPU1029基にGPU88基を使ったと聞きましたが、そのマシンはぜんぶデータセンターにあるんですよね。そういう大規模なシステムって、かえって大変なことも多いんじゃないんですか?
山本一成(以下、山本) そうなんですよ。たとえば、「これの処理、よろしく」とサーバに指示を投げるじゃないですか。そのサーバはなんと北海道の石狩にあってですね……。
—— 遠い(笑)。
山本 特別に1Gbpsの超高速回線を用意してもらって、データが大きいから局面の画像を10%に圧縮して送ったりしていたんですが、局面の数が多いと回線詰まるし、もうほんとに大変でした(笑)。ネットワークプログラミングは初心者なので、ほんとにわけがわからなかった……。
—— そうか、山本さん、そんな新しいことにも挑戦してたんですね。すごいな。だってこれまでのポナンザではやらなかったことですよね。
山本 つらかったですよー。昨年10月の電王トーナメントが終わってから、今年の世界コンピュータ将棋選手権まで、ディープラーニングとクラスタ化しかしてませんでした。今回始めてGPUも使ってるので、CPUとGPUの協調をうまくやるのも大変だったし。
—— クラスタ化というのは、複数のマシンをまとめて一つのことを並列に処理するということですよね。
山本 そう、クラスタ化もこれまでなかなかうまくいってなかったんですよね。そもそも、将棋プログラムはコンピュータの処理速度が速ければ速いほど勝率が上がるので、戦力があればあるほどよかったのですが、複数のコア(CPUの頭脳部分)で並列に一つの処理をするのが難しい。
シェフと料理の関係を考えるとわかりやすいんですけど、1人前の料理をつくるのに2人で協力してやったら、1人のときより速く作れそうですよね。でも、それが4人になったら? 16人になったら?と考えていくと、人数、つまりコアが増える分だけ効率的でなくなってしまっていたんです。リソースはあるのに、うまく使えない。今回のコンピュータ将棋選手権で使ったCPUは1029基で、その一つひとつに88コアとかが入ってますからね。
—— もうほとんど、スーパーコンピュータですね。その大量のコアを、どうやって効率的に並列化したんですか?
山本 効果的だったのが、ここ3年くらいで発見されたLazy Smpという手法です。『人工知能はどのようにして「名人」を超えたのか?』には「怠惰な並列化」と書いています。これは、シェフの例えで言うと、みんなバラバラに競い合って1人前の料理を作って、一番早くできた料理を採用するみたいなものです。バラバラとはいえ、たまたま発見できた良い情報などは全体で共有するんですけどね。このへんが「レイジー(怠惰な)」と表現される所以なのかと。で、最新のポナンザに導入したeXtreme Lazy Smpはそれをネットワーク環境に拡張し、将棋の局面を探索した結果を複数のマシンで非同期・相互に共有するんです。
—— うーん、それ、なんでうまくいくのかよくわからないですね。
山本 そうなんですよ。それがこの手法の、唯一、最大の弱点ですね。直感に反している。
—— 本にかかれていた「黒魔術」という表現がぴったりですね。直感に反していてなんか気持ち悪いから採用しない、という開発者もいるんでしょうか。
山本 いると思いますよ。でも、採用したほうが強くなるんですよ。これからは、こういう手法が増えていくと思います。「物事を分解し、細部の構造を理解すると、全体を理解できる」という還元主義の考え方が、通用しない場面が増えていくでしょう。
そもそもね、人間ってあんまり賢くないんですよ。よく、人間が短期記憶で記憶できるのは7個までとか言われてるじゃないですか。じつは、そもそも7すら覚えられなくて4±1までらしいですけど。そうなると我々は、100変数の処理なんて、到底理解できないんですよ。人間が複雑なことをそのまま理解したいと思うのは、わりと傲慢な考え方だと思っています。
—— コンピュータ囲碁の棋譜を見ていても、そう思いますね。あまりに全局的に物事を見ていて、人間にはもう理解できません。人間は、部分ごとに「こういうかたちになったらいいな」という小さな目標を設定して打つけれど、コンピュータは全体で勝つことを考えている。
将棋プログラムを強くするために、いちばん大切なこと
—— 少し話を戻すんですが、ディープラーニングによるオーダリングだけでも将棋って指せるんですね。将棋プログラムは手を読み進める「探索」と、局面がいいかどうか判断する「評価」でできているものだと思っていました。