2017年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

tweet

  • tweets

« ネット炎上の記録 | トップページ | フレンズたちに会える動物園の一覧 »

「浅い評価値を深い評価値に近づける学習法」誕生の背景

もうすぐ電王トーナメントです。私はコンピュータ将棋開発から手を引いてもう4年以上経ちまして、最新の技術動向はあまり追ってなかったのですが、最近どんなふうになってるのだろうかとふと思い、先日アピール文書をざっと眺めてみました。すると「浅い探索の評価値を深い探索の評価値に近づける学習法」が大流行しているようでちょっと驚きました。

これは2013年にNineDayFeverが始めた手法ですが、実はこのアイデアは、F研におけるNDF作者の金澤さんと私の会話から出てきたものです。このアイデアが誕生した時の様子を記しておきます。

以前にこのブログにも少し書きましたが(本ブログの14年2月~5月あたりのバックナンバーを参照)、2011年8月頃から12年3月初めにかけて、F研究所でコンピュータ将棋を(業務として)研究しよう、という動きがありました。これは12年3月に「やっぱりやらない」という結論になり、非常に短命に終わるのですが。

私はそれまで別部署で半導体のマーケティングをやっていたのが、11年11月から、業務としてコンピュータ将棋を研究するために研究所に移籍してきました。それまで研究所では将棋などやっておらず、私が所属するべき適切な部署はありませんでした。それで、研究所側で私をひっぱってきた(以前のブログ記事でいうところの)Gさんのいる部署にとりあえず入ることになりました。その部署の研究テーマとして新たにコンピュータ将棋をやることになったので、私の他にも、その部署の中で興味を持った有志の研究者数名がコンピュータ将棋を始めました。その中でいちばん強くコンピュータ将棋に興味を示したのが金澤さんでした。この時点では金澤さんをはじめ他の人たちもコンピュータ将棋のことはほとんど知らず、私が講師となってコンピュータ将棋概要の説明会をやったりしました。

とは言っても、私と彼ら新規参入者が一緒に何か研究したというほどではありません。私は12年1月までは第1回電王戦(対米長戦)の準備にかかりきりだったし、電王戦の後は今度は5月のWCSCに向けての開発で手いっぱいでした。新規参入者たちの研究的興味は主に機械学習で評価関数の精度を上げることでしたが、それはかなり時間がかかると予想され、WCSCまでに結果が出るとは思えません。なので私は、WCSCまではそちらに労力を取られたくなかったので、「5月までは基本私一人でWCSC向け開発に専念させてほしい。他の人たちの機械学習の試みには、自分は直接労力はさかないが、相談に乗ったりアイデア提供くらいはする」ということにさせてもらいました。そういうわけで、私は私で一人で作業する、他の人たちは機械学習をやる、ただし時々ミーティングをやってアイデアを議論したりする、という感じで進めていました。

他の人たちは機械学習については専門家ですが、コンピュータ将棋のことはほとんど分かっておらず、機械学習を利用して何ができるか、を模索している状態でした。少なくともこの時点では、将棋で勝つこと自体よりも、研究のネタ探しという意味合いの方が強かったです。研究所というところは、「研究のネタ探し」がけっこう重要かつ大変なのです。将棋に食いついてきたのも、「研究のネタになりそうだから」という面が大きかったはずです。

さて、そんなミーティングのうちの一つで、金澤さんが「そもそも評価値って何なんでしょうね?」みたいな問いを発してきました。後から思えばおそらくあまり深い意味はなく、何気なく言ってみただけだったのだろうとは思いますが、私は当時からこの点については持論がありまして、それをここぞとばかり説明し始めました。次のような内容でした:

コンピュータ将棋の2大要素として探索と評価が挙げられますが、このうちどちらがより本質的かというと、探索の方です。評価というのは、探索能力が十分あれば本来不要なものなのです。

仮に、探索が超優秀で、200手先を読めるソフトがあるとしましょう。するとこのソフトには、評価関数は必要ありません。盤面が詰みか否かだけ判定できればそれで十分。適当に(自分が詰まされないように)指しておいて、詰みが見つかったら即勝ちです。(もちろん、相手はそこまで読めない、という前提です。)

では、200手でなく100手読める、ならどうか?この場合、詰みまでは見つからないかもしれませんが、評価は駒得だけあればおそらく十分でしょう。100手読めれば圧倒的駒得になる手順が多くの局面で見つかり、自然と勝勢になっていくでしょう。

つまり探索が十分よければ、評価は要らない。評価関数というのは、アナログレコードやブラウン管TVと同様に、いずれは不要となる技術なのです。

以上、やや極端な言い方ではありますが、私は基本このように考えていました。だからこそ、2008-2012年あたり、他の皆がこぞって評価関数を工夫していた時に、探索をより強化するため、一人荒野を進む感じでFPGA化やクラスタ化をやっていたわけです。

まあそうは言ってももちろん、目先は100手読むことも到底不可能なので、実践的には評価関数は必要です。しかし、上のような極端な状況を想定することによって、質問の「評価関数とは何か」の答えは自ずと見えてきます。

つまり望ましい評価関数とは、「深く探索した時の詰みや駒得の確率を、探索せずに推定した値」であるべき、なのです。

…というような話をミーティングで力説した私でしたが、ここまで話してきて、そもそもの彼らの目的である「研究ネタ探し」を併せて考えると、自然にアイデアが浮かびます。それを彼らに言ってみました。「そういうわけだから、機械学習やるんだったら、深い探索の評価値に今の局面の評価値を近づけるように学習させてみたらどうですか?」これが、この学習法のアイデアが誕生した瞬間でした。

この時の金澤さんらの反応を実はあまりはっきり覚えていないのですが、少なくとも「おお、なるほど、そうか!」と天啓を得たように輝いていた…わけではなかったように思います。(何やこのおっさん、適当に思い付き言ってるだけちゃうんか…)とうさんくさそうな様子だっただろうか?まあとにかく、この場では「なるほどねぇ… まあもう少し考えてみます」みたいな感じで終わったのではなかったかと思います。

私の方も、「望ましい評価関数のあり方」まではその時より以前からずっと考えていたことでしたが、学習法については全くその場の思いつきで、自信があったわけでは全然ありません。ましてこれが数年後にコンピュータ将棋で主流の方法になる、なんてことは全く想像すらしていません。正直、彼らがこの方法を実際トライしてみるかどうかすら極めて怪しいと思っていました。

ちなみに、「深く探索できれば評価関数は簡単でよくなる」という趣旨の話は、私が考えついたわけではなく、たしか「コンピュータ将棋の進歩」シリーズのどこかに書いてあったはずです。鶴岡さんだったかな?(というか大元は(NDFでなく、金沢将棋の)金沢さん?)

私はこの当時既に、名人をもうすぐ越えられる、あとはクラスタだけやればよく、評価関数の改良はこれ以上は不要、と見切りをつけており、自分でこの先評価関数をいじる気は全くありませんでした。ただ、会社を巻き込んで業務としてやるようになった以上、他の人たちの研究のサポートはしなきゃいけない、だからこっちで自分が汗流す気はないけど、ネタ探しくらいは協力しないとなぁ、くらいの気持ちだった、というのが正直なところですw この話をした後も、「これでアイデアも出したし、当面の義務は果たしたかな」くらいに思っており、このミーティングの後、そんな話をしたことすらほとんど忘れていました。

そんな風に評価を軽視する立場から現在の評価関数の主流の手法が出てきたという事実は、やや皮肉なめぐり合わせにも思えます。しかしながらその一方、「深い探索の値に評価値を近づける」という発想が、「探索こそが絶対正義。評価はそのイミテーションに過ぎない」とする考え方と方向性が同じであることもまた明白かと思います。そしてこの手法が成功を収めているという事実は、この考え方の正しさを裏付けている、とも言えるでしょう。

その後F研の決定が変わり、将棋はやらないことになりました。金澤さんもこの後は個人の趣味としてやっていくことになりました。彼がその後将棋を続けていることくらいは知っていましたが、私の方はこの頃もう将棋とは距離を置いていたこともあり、あまり手法とか突っ込んだ話は聞きませんでした。ずっと後になってNDFがWCSCに出てこの手法を実装したと聞き、「え!あの時のアイデア、実際にやったの!?」とびっくりしたものです。

私が関わったのはほんとにいちばん最初のこのアイデア出しだけで、その後は金澤さんは私に質問したりすることもなく、全て独力で考えて実装しました。ですから、「1%のひらめきと99%の努力」という言葉がありますけれども、この学習法に関しては99%金澤さんの功績です。私の貢献度はせいぜい1%でしょう。ただ1%とはいえ、自分の出したアイデアが世の中に広まっていくのはやはり喜ばしいものです。

結論:NDFはワシが育てた(ドヤ顏)

この手法、アピール文書を見る限り、ponanza、浮かむ瀬(Apery)、やねうら王など、とても多くのソフトが採用しているようです。この手法を採用しているソフトはもう「伊藤チルドレン」と呼んでも差し支えないのではないかと思っています(煽ってるだけ)

« ネット炎上の記録 | トップページ | フレンズたちに会える動物園の一覧 »

将棋プロセサ」カテゴリの記事

コメント

伊藤チルドレンにこの電王トーナメントからなりましたw

伊藤ファミリーへようこそ!w

囲碁ソフト開発はどうなってる?

素人にも分かりやすい文章でさすがだと思いました

スマホでボナンザは可能なのだろうか。
また、その履歴は調べられは可能なのだろうか。

あれっ、ボナンザメソッドもTD(λ)もそういう発想なんだと思ってたけど

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/507007/67827647

この記事へのトラックバック一覧です: 「浅い評価値を深い評価値に近づける学習法」誕生の背景:

« ネット炎上の記録 | トップページ | フレンズたちに会える動物園の一覧 »