インタビュー
電王戦,なんで勝てたんですか?――「ゲーマーはもっと経営者を目指すべき!」第15回は,「BM98」を開発した伝説的なプログラマー・やねうらお氏がゲスト
連載第15回めとなる,ドワンゴ・川上量生氏との対談企画「ゲーマーはもっと経営者を目指すべき!」。今回は,1990年代後半にネット上で一大ブームとなった「BM98」の開発者として知られ,最近では,ドワンゴが主催するコンピューター将棋大会「将棋電王トーナメント」(以下,電王トーナメント)でめざましい活躍を見せる,プログラマーのやねうらお氏がゲストです。
5歳からプログラミングを始め,学生時代はゲームの解析を趣味としていたというやねうらお氏ですが,そんな氏が「BM98」の開発に至った経緯,あるいは電王トーナメントへの参加を決めたいきさつなど,さまざまなことについて語ってもらいました。また,一時期にはリアルの人生よりもウエイトが大きかったという「ラグナロクオンライン」についての話や,アーケードゲームの全国スコアラーだった時代の話など,ゲーマー向けの話題も盛りだくさんです。いつものように,雑談混じりの堅苦しくない内容ですので,通勤/通学の途中で,あるいはお昼休みに,ぜひご一読ください。
関連記事:
ドコモがアップルになれなかった理由とは――iモード開発の舞台裏が語られる「ゲーマーはもっと経営者を目指すべき!」第14回は,絵文字の生みの親・バンダイナムコゲームスの栗田穣崇氏がゲスト
津田大介の“本性”を見た!――ジャーナリスト津田大介氏がゲストの「ゲーマーはもっと経営者を目指すべき!」第13回
将棋電王トーナメントでまさかの4位入賞。彗星のごとく現われたやねうらお氏
やねうらお氏:
今日はほんとにありがとうございます。僕なんかを呼んで頂いて……(苦笑)
川上氏:
いやなんか,単純に面白そうだなと思って(笑)
やねうらお氏:
川上会長の名刺がいただけるとか,マジで感激です。ちなみに,この名刺,六本木のキャバクラで見せたりするとVIP待遇にしてもらえたりするんですか?
川上氏:
もらえません(笑)
それにしても,お会いできて本当に嬉しいです。電王トーナメントで勝てたおかげで,こんな対談にも呼んで頂けたんですよね。今回,電王トーナメントに出場して,本当に良かったと思います。
ちなみに,コンピューター将棋では一般的に先手番のほうが勝率が高いのですが,今回の電王トーナメントではやねうら王,なんと11局中10局が先手番という脅威の先手率だったんです。もしかしたら川上会長が「やねさんが,出てきてるじゃないか」ということで手心を加えていただいているのかなと内心思ってたんですが(笑)
川上氏:
そんなことしないですよ。だって,やねうらおさんって,電王トーナメントに挑むにあたって「やね裏定跡(※1)」だとか,「やね裏学習メソッド(※2)」だとか,わけわかんないことばっかり言ってたじゃないですか。
※1:やねうらお氏が提唱する,対コンピューター将棋用の定跡。具体的には,コンピューター将棋のハマりパターンを詰みの局面までインプットし,それにハマればどんな強豪ソフトだろうとまさに一発KOできるというもの
※2:やねうらお氏が提唱する,一局ごとにコンピューターが局後に検討し自動的に進化していく学習手法
やねうらお氏:
いや,あれは僕の中では,単に厨二設定って感じで。とりあえず「何かにつけて裏,裏って言っておこう」みたいな。「裏番長」とか「裏ワールド」みたいな感じだったんですけどね。
川上氏:
そう,厨二っぽいですよね。いきなりネタに走ってて,技の名前で勝負してるから。だから僕は「この人はないだろうな」って正直思ってました。それに,将棋ソフトの開発も電王トーナメントが発表されてから本格的に始めたとか,そんな話でしたよね?
やねうらお氏:
ベースとなる部分は3年前に作ったものなんですけど,そこにやね裏定跡とやね裏学習メソッドを追加するだけだから2〜3日あれば出来るかと思ってたんです。ところが,いざ電王トーナメントのエントリーが完了して3年前に書いたソースコードを引っ張りだしてきたら,当時,大改造しようと決意してソースコードを一から書きなおしている最中の状態でした。 エントリーした時点では,すでに建ってる家をリフォームするだけくらいの感覚で考えていたんですけど,実際に取り組んでみたら,家は完全に解体された状態で「瓦礫だけしかないやん。いまから家を建てるところからやるのか!」と。このせいで,開発ではエライ目に遭いましたけども。
川上氏:
もう,なんかね,いろんな意味で舐めてるのかと(笑)
4Gamer:
それがまさかの4位入賞ですからねぇ。
やねうらお氏:
ずっとPCを立ち上げっぱなしで棋譜を解析させていたり,ソフトの開発にはかなり電気代を使ってしまっているので,せめてそれだけも回収したいなと思って。遊ぶ金欲しさ,もとい,電気代欲しさで参加させて頂きました。
川上氏:
でも,今回の電王トーナメントは,やねうらおさんが彗星のごとく現われてくれたおかげで,とても盛り上がりました。本当にありがとうございます。
4Gamer:
やねうらおさんは,それまで他のコンピューター将棋大会に出場したことはなかったんですか?
やねうらお氏:
ああ,実は世界コンピュータ選手権に1度だけエントリーしたことがあるんですよ。参加費が1万円で,それを払ってエントリーしたんですけど。でも,当時ちょうど仕事が忙しくなって,最終的に出場自体はキャンセルしたんですね。そうしたら,1万円は返ってこなかったんですが,ちょうど世界コンピュータ選手権の記念すべき第20回目の年だったらしく,参加賞として記念の盾だけが送られてきて。「この盾が1万円か……もう来ねえよヽ(`Д´)ノ ウワァァン!!」みたいな感じで(笑)
川上氏:
エントリーまではしたことあるんですね。
やねうらお氏:
はい。しかし,他のコンピューター将棋の大会は,自前でPCを用意しないといけなくて,そこで勝つためには,性能のよい高価なPCを自前で持ち込む必要があります。場合によっては自分でスポンサーを口説いて何台ものマシンを借りたり,大学のPCを何十,何百台使ったりと。近年ではたくさんのPCを何らかの手段で用意できないと優勝はないというパワーゲームの様相を呈していて,将棋ソフト本来の強さとは関係のないところで勝負がつくという側面があります。だから,一開発者からすると,それはちょっと面白くないなって気持ちもあって,あんまり他の大会に出ようって気持ちにはなれなかったんです。
川上氏:
なるほどねぇ。
やねうらお氏:
その点,電王トーナメントは参加費も要りませんし,しかもPCまで用意してもらえて,賞金まで出る。こんな良い条件はないですよ! だから電王トーナメントみたいなのができたら,コンピューター将棋の開発者は,もうみんな電王トーナメントの方にしか出なくなるんじゃないかな?くらいに私は思ってたんですけど,案外そうでもなくて,逆に驚きました。
むしろ,他の開発者の方に聞いたら「やねさんも当然,世界コンピュータ選手権にも出るんでしょう? 世界コンピュータ選手権でも共に闘いましょう!」みたいなことを言われて。私がポカーンとしていると「あ,賞金がないから出ないんですか。やねさんは守銭奴ですからねー」みたいにボロクソ言われて(苦笑)
一同:
(笑)
そうですねぇ。僕らは電王トーナメントってものを,「世界コンピュータ将棋選手権」とは別に作らせて頂きましたけれど,僕の中では,800台のPCをつなげたやり方っていうのも,それはそれで技術的には大きなチャレンジだろうし面白いとは思うんです。でも,やっぱり純粋にプログラムの強さを競い合う方がいいんじゃないかって思いはありました。
4Gamer:
それで使うPCのスペックにレギュレーションがあったんですね。
川上氏:
うん。でも,それだけじゃなくて,もう一つ思ったのは“再現性”って大事なんじゃないかってこと。例えば,あの時最強を誇った将棋ソフトが,未来ではどういう位置づけになるのかとか。あるいは,人間がまったく勝てなかった伝説的な将棋ソフトに,後に天才棋士が現われて勝つだとか。そういうのがドラマになると思うんですよね。
やねうらお氏:
なるほど。
川上氏:
だから,クラスタ処理とかも面白いとは思うし,ドワンゴでサーバーを何台も用意してやれなくもないとは思うんですけど,それでも条件を揃えて再現性を持たすってのは残していきたいなと思ってます。
コンピューター将棋の今
4Gamer:
しかし,急ごしらえの将棋ソフトでも,長年研究されてきたソフト群に勝てるものなんですか? 素人目線で見てると,そのへんが凄く不思議なんですけれど。
川上氏:
そうだよね。なんで勝てたんですか。
やねうらお氏:
やねうら王の場合,対戦相手が殴りかかってくるときにバナナの皮で勝手に転んで気づいたら自分が勝ってた――みたいな感じでしたので,自分でもなんで勝てたのかよくわかりません(笑) ただ,最近は「GPS将棋」や「Bonanza」のようなそこそこ強い将棋ソフトのソースコードが公開されているので新たに参入する人たちにとって,昔ほどハードルは高くないかなと思います。
川上氏:
でも年々,プログラム(将棋ソフト)自体も改良されて強くなっているんですよね? そういう競争があるなかで,途中から割って入るのは難しくないんですか?
えーっと,確かに将棋ソフトはここ数年で飛躍的に強くなっているんですが,それって実は,コンピューターチェスの「Stockfish」っていう,オープンソースのプログラムがありまして。その探索エンジン部分をパクって……もとい参考にしたおかげだったりもするんですね。また最近は,指し手の良し悪しを決める評価関数(※)のパラメータも,棋譜を用いた機械学習によって求めるっていうのが主流になっていまして。そのアルゴリズムも公開されているんです。ですから,そういうのを参考にしつつ,後は細かい調整に手を入れて改良していけば,スタートラインに立つこと自体は割と簡単なんです。
※局面の形勢判断をコンピューターで行うための関数
川上氏:
あの,近年の将棋ソフトがどういう形で作られているのか,その辺の構造ってちょっと教えて頂いてもいいですか。最近は,みんな「Bonanza(※)」をベースにしていたり,探索エンジンに「Stockfish」を使ってるって話は良く聞くんですけど。
※カナダ在住だった日本人の化学者・保木邦仁氏が開発した将棋ソフト。コンピューターチェスで用いられていた手法を将棋に応用したらどうなるか?という発想で開発された。また,従来は職人的な手動調整が求められた駒関係の評価関数のパラメーターを,機械学習によって調整するという部分で,将棋ソフト界に革命をもたらした。ちなみにソフトウェア開発当時,保木自身は,将棋についてはルールぐらいしか知らなかったという
やねうらお氏:
そうですね。今回の電王トーナメントの出場チームで,「Stockfish」を参考にしてないチームは,私のやねうら王を除いてなかったと思います。少なくとも上位8チームは,私以外の全員が参考にしていたんじゃないですか。
凄い単純な話,評価関数部分を「Bonanza」,探索部分を「Stockfish」にするだけでも,「Bonanza」そのものより一回り強くなるんですよ。つまり現状は,オープンソースの「Bonanza」と「Stockfish」をくっつけるだけでも相当強い将棋プログラムが出来てしまう。なので,そこそこの将棋ソフトを作るまでのハードルはむしろ低くなったと思います。
ただ,「Stockfish」は将棋ではなくチェスのソフトですから,この探索のほうが従来のコンピューター将棋の探索部よりも優れているという話であれば,いままでのコンピューター将棋の開発の歴史はなんだったんだって話にもなるし,コンピューター将棋のアルゴリズムの進化って意味では,むしろ停滞してると言えなくもないです。もちろん,本当にちゃんと研究している人達からしたら,「いやいや,違う方法もあるんだ」とかあるんでしょうけどね。
川上氏:
「激指(げきさし)」とかは,独自のアルゴリズムを使ってるんですか?
やねうらお氏:
「激指」は,実現確率探索という探索アルゴリズムで一世を風靡したのですが,商用ソフトで,ソースコードが公開されていないので,現在,そのへんがどうなっているのか実態は外部からはよく分からないですね。「激指」の開発者の方たちが昔からStockfishのソースコードを相当読んでいることは発表論文などからわかるのですが,激指にどの程度Stockfishのソースコードが取り込まれているのかは謎です。
ともかく,近年の将棋ソフトは,「Bonanza」と「Stockfish」をベースに,あるいはそれらを参考にしつつ,評価関数の調整や高速化の処理など,細かいチューニングで差別化を図っているって感じだと思います。もっとも,評価関数部分にはいろいろなテクニックや理論があって,Bonanzaとは違う,独自の計算方式で動かしてるソフトもありますね。「習甦(しゅうそ)」さんとか。
川上氏:
なるほどねぇ。
コンピューター将棋の基本理論って?
川上氏:
あの,もう一つ教えて欲しいんですけど,機械学習で評価関数を作るのって,具体的にはどういう仕組みになっているんですか?
やねうらお氏:
評価関数のパラメータ自体は,Bonanzaメソッドで調整できるのですが,評価関数をどういう形に設計するかという問題があります。現在では,パラメータの調整はBonanzaメソッドに任せれば誰がやっても同じような値に収束しますから,他のソフトと差別化するには,評価関数をどういう形にするかということのほうが,より切実な問題なんです。
ちなみに機械学習で一番主流なのは,Bonanzaに代表されるような「3駒関係」といって,王を一つ以上含む三駒の位置関係を用いる方法ですね。分かりやすいパターンだと,例えば,王と銀と歩がこの位置関係にあるとしますよね。この形は評価が,先手から見てかなりマイナスの点数になるんですよ。
4Gamer:
なんでですか?
やねうらお氏:
銀がバックできない形だからですね。銀の退路を歩が塞いでいるので,銀が王の近くに引き寄せて使えない以上,守り駒としても機能しにくく,そのため先手にとってマイナスの点数がついていると考えられます。で,このように3駒関係っていうのは,王の位置を「K」,他の任意の駒を「P」という関数で表現していて,Kは王の盤上の位置を,Pは王以外の任意の駒を現わしています。その組み合わせで評価の点数が変わるって仕組みです。
川上氏:
任意の駒(P)っていうのは,自分の駒のみを指すんですか?
やねうらお氏:
いや,相手の駒も含めます。さらに,Bonanzaの場合は持ち駒もPと見なすので,例えば「歩を5枚持ってる」っていうのも,1個のPとして考えるんです。
そうやって全部のパターンを考えていくと,だいたい3駒の配置の組み合わせっていうのは,一つのPあたり1000通りくらいありまして。さらに,王の位置を示す盤面のマス目は81通りですから……K×P×Pのすべての組み合わせは81×1000×1000通りあるみたいな,そういうイメージなんですけど。
そうやって割り出した3駒関係の値をどう使うんですか?
やねうらお氏:
これを全部足すだけです。盤面上にある任意の3駒関係のスコアを足し合わせた数値が,その局面の評価値になります。
川上氏:
あ,全部を足してるんですか。
やねうらお氏:
そうです。単純に足しています。いわゆる線形和ですね。ここが,単純な加算で本当にいいのかという議論はあります。
川上氏:
なるほどぉ。
4Gamer:
コンピューター将棋って,序盤が苦手みたいな話もありますけど,その辺って序盤だとあまりに可能性が広すぎて,計算が間に合わない(深く読めない)からだったりするんですか?
やねうらお氏:
それは,よくある誤解でして,実は序盤のほうがかなり深くまで読めています。何故かと言いますと,序盤は手駒を持っていないことがほとんどですから,駒を打つ手がないんですね。例えば,初手では30通りしかありません。しかし手駒に銀が加わると,銀を打つ手が生まれ,王手が絡まない局面では,空いているマスにならどこでも打てますからそれだけで50通りぐらいになる。将棋の手駒は全部で7種類ありますから,7種類の手駒すべてを持っていればそれだけで300通りぐらいの指し手の可能性が生まれます。つまり,序盤より終盤のほうが1局面の可能な指し手の数が圧倒的に多いんです。この理由から,序盤では30手ぐらい読めるソフトでも,終盤では20手ぐらいしか読めないのです。
4Gamer:
でも,じゃあ「コンピューター将棋は序盤が苦手」って言説はどこから来たものなんだろう。
やねうらお氏:
コンピューターの将棋が人間の序盤,終盤と比較したときに,なぜ序盤のほうが相対的に終盤より弱いのかと言いますと,序盤では,「詰み」が絡みませんから仮に30手先まで読んだとしても,その末端局面で形勢の良し悪しを判断するために評価関数を使う必要があるんです。評価関数を使って,「だいたい先手のほうがいいだろう,点数で言うとプラス200点だろう」みたいな曖昧な判断をせざるを得ないのですが,この評価関数の質が,人間の判断より極めて精度が悪いんですね。
逆に終盤ですと,「詰み」が絡む部分では評価関数を呼び出さずに,「詰み」と判定できますし,この詰みの判定はバグがない限り100%正しいので。このときに限り,コンピューターが1秒間に何百万局面も探索しているという強みが生きるわけです。
川上氏:
いや,超面白いですねぇ!
4Gamer:
ちなみに,その銀が後ろに下がれない場合は評価がマイナス××になるだとか,そこの計算式はどうやって設定したものなんですか?
やねうらお氏:
そこはBonanzaメソッド,すなわち,棋譜からの学習ですね。この辺がBonanzaメソッドの面白いところで。プロの先生が指した棋譜から,この形はあまり出てこないとか,この形を避けるような指し手をしてる場合――要するに「これはアカンやつや」と判断して。この形はマイナスだって評価になるんです。
4Gamer:
じゃあ,昔の将棋ソフトのような,開発者がアルゴリズムの評価パラメータを泥臭く調整する――みたいなことはもうしなくなってるんですか?
大枠の部分ではそうなんですけれど,評価関数自体に“穴”はいろいろありまして。さきほどBonanzaでは,3駒関係を線形和で計算していると言いましたが,とくにその部分に“穴”があります。
例えば,桂馬で金と銀が両方取れる局面とかってあるじゃないですか。これ,3駒関係で評価すると,「自玉×自分の桂馬×敵の銀」「自玉×自分の桂馬×敵の金」の2つのパターンの点数が単純に足し合わされるので,重複してプラスしている状態になったりする。でも,実際はどちらか片方しか取れないわけだから,評価としては,「片方だけ足しておく方が正しいんじゃないか?」とか,「金と銀のうち,価値の高いほうだけを足しておくのが正しいんじゃないか?」だとか,「いやいや,相手の手番だと価値の高いほうを逃げすので,低いほうの価値を足しておくのが正しいんじゃないか?」だとか。「それなら手番も考慮して…」みたいな,いろんな改良が考えられるんですよ。
4Gamer:
なるほど。
やねうらお氏:
この桂馬による両取り一つ例にとっても,いろんな改良方法が考えられますが,いずれにしてもこのようなケースでは,単純に足すのはまずいことがわかります。この場合,4駒関係で計算すれば,3駒関係で点数を単純に足し算でやっていることにより起こる問題は回避できます。今回の電王トーナメントに出場した「N4S」とかは,4駒関係を主体にされているようです。
ところが,盤上の任意の4駒の組み合わせは,盤上の任意の3駒の組み合わせよりはるかに多いので,評価関数の計算に時間がかかりすぎて探索速度が落ち,ソフトとしての棋力はかえって弱くなるようです。そんなこともあってか,現状のBonanza系のソフトは,3駒関係の線形和という評価関数の精度の粗さを読みの絶対量で補うという方向性で進化しています。
川上氏:
いやー,なんかコンピューター将棋の仕組みがだいぶ理解できた気がする!
やねうらお氏:
っていうか,こんなマニアックな話を,4Gamerさんでやっていいんでしょうか……(苦笑)
- 関連タイトル:
ラグナロクオンライン
- この記事のURL:
キーワード
(C)Gravity Co., Ltd. & Lee MyoungJin(studio DTDS). All rights reserved.
(C)GungHo Online Entertainment, Inc. All Rights Reserved.