※ この記事は、コンピュータ将棋 Advent Calendar 2016の21日目の記事です。小説風にフィクションとして書きますので内容の正確性は一切保証しません。ちなみにタイトルの「振り返った体で書く」の「体」は「テイ」と読んでください。「からだ」ではありません。
『Paradise Lost』
人工知能が人間の知能に匹敵するレベルにまで到達した2045年現在においてもいまだ信じ難いことであるが、人工知能がまだ自我すら持たない段階において、将棋ソフトは人類の将棋指しのトップ集団と肩を並べていた。将棋のような比較的難度の高いレクリエーショナルゲームをいかにして当時の天才プログラマー達が攻略して行ったのかについてはもっと注目をされて然りだろう。
まあ、実際のところ、彼らが天才プログラマーなのかどうかは怪しいところであるが…。おっと、これはあとで消そう。本稿は、まだ第一稿だ。気軽に書いていく。
お前は誰かって?私は情報理論に関する歴史学者である。とは言っても、2045年現在においては従来人間が行っていた仕事の大半を人工知能が代替するようになったため、このような職しか人類には残されていないわけであるが。
さて話をコンピューター将棋の歴史に戻そう。
今日に至るまで、長きに亘り紡がれたコンピューター将棋史のなかで、最も栄華を誇る時期が2016年であることは疑いの余地がない。現存する記録によれば、これはAperyのオープンソース化に端を発するものであり、その直後、彗星の如く現れた魔女の異名を持つSilent Majorityの台頭にある。
まあ、そうは言っても、2016年当時にオープンソースだった将棋ソフトはStockfishというチェスのソフトの探索部の丸パクリに近く…おっとこの文章もあとで消さねばならんな。
程なくして、やねうら王がAperyのKPPT型同評価関数ファイルの読み込みに対応したことにより、たぬき、読み太、Qhapaqなどのチルドレン系と呼ばれる強豪ソフトもまた同じ土俵に立つことになった。開発者達は、探索部の改良や定跡部の改良など自分の得意分野において切磋琢磨し、AperyのKPPT型評価関数を中心とした楽園が自然と誕生した。
しかし、彼らがその楽園を追放されるのは思いの外に早かった。その翌年2017年から、それぞれのソフトが、さらなる進化を追い求め、従来のKPPT型評価関数から、KKPT型、そして禁断の果実とも言われるPPAP型に手を出すなどして独自の道を歩みだしたからだ。これを契機にエコシステムは次第に崩壊し、ソフトの棋力の急速な向上と引き換えに、コミュニティがゆるやかに衰退していったというのは史実の通りである。
ここでは、当時、禁忌とされたKPPT型評価関数の高速化テクニックについて最新の研究の成果を記す。当時にもしこの高速化テクニックが知られていたらKPPT型評価関数の時代がそのあともしばらくは存続し、いまとは異なる未来が訪れたかも知れない。しかし、歴史に“もし”は無い。当時知られていなかったという事実もまたその後の歴史からすれば必然の積み重ねにすぎない。
本題に戻ろう。言うまでもなく2016年当時にも、KPPT型評価関数の差分計算のテクニックは知られていた。以下の二つの電子的な記録がその証左である。
30分でBonanzaの評価関数の要点を話します!
KPP差分計算の高速化(bonasseの功罪について)
ところが、この計算をさらに高速化出来ることは当時、知られていなかった。唯一気づいていたとされるのは、やねうら王[2013]の開発者だと言われているが、そのソースコードのリファクタリングの際の不幸な事故により、永遠に失われてしまった。
オープンソース化されたやねうら王[2015〜]にも「そのうち実装すればいいか…」とやねうら王の作者は思っていたようだが、彼のいい加減で自堕落な性格が災いして、ついぞ実装しなかったことにより、その手法については今日に至るまで公式な形では伝承されてはいない。
しかし、我々は、人間の知性を超えたとされるスーパーコンピューターHAGETAKAを用いた解析により、次のようなアルゴリズムであったと推定した。
いま、
PHash(PawnHash) : 歩の位置関係によるZobrist Hash
NPHash(NonPawnHash) : 王を除く歩以外の駒の位置関係によるZobrist Hash
とする。
このとき、局面のHash Key = PHash ^ NPHash
※ ^ は、bit単位のxorだとする。
PHashとNPHashは指し手に基づく盤面の更新処理(do_move)で計算しておく。
ΣKPPのPPの組み合わせは以下の3種類に大別できるが、1),2)はPHash、NPHashを用いたhash tableの値を利用できる。
1) Pawn-Pawn
2) Pawn-NonPawn , NonPawn-Pawn
3) NonPawn-NonPawn
例えば、PHashが一致するkeyがhash tableに登録されていた場合、ΣKPPのPP=Pawn-Pawnのケースを計算せずに済み、ΣKPPの1/4程度の計算時間を省略することが出来る。NPHashについても同様である。最大でΣKPPの1/2の計算を省略出来るのである。
アルゴリズム的には以上である。
30年近く昔の人類がこのような技術をすでに発見していたことに驚きを隠せないが、やねうら王の開発者は何を隠そう、その後、誰もが知ることとなるやねうらお、その人であるから、彼がスーパーコンピューターHAGETAKAに匹敵する知性の持ち主であったとしても何ら不思議ではない。
ちなみに、彼は、「将棋ソフトは、評価関数のテーブルサイズを2倍にするごとにR50(Rは棋力の数値指標)上げることが出来る」という「メモリ2倍でR50上がるんるんの法則」(通称『あがるんるん』)を2018年に発表し、2045年現在に至るまでそれは覆されていない。
季節外れに発生した大型台風が農作物に甚大な被害を及ぼすが如く、周りに壊滅的な被害を与えながら衝動のまま突き進み、しかし燦然と輝く記録を樹立しつつ時代をあまりにも早く駆け抜けたやねうらお。残念なことに彼の偉業のすべてを語るにはこの余白はあまりに狭すぎる。
いつも楽しくブログ拝見しております。(読んでわかるところだけ;)2045年にプロ棋士と将棋界はどうなっているのでしょうかね。来年の電王戦で天彦名人vs Ponanza戦で何か一区切りになる感じも有るし。天彦さんなら一発入れられるかもという期待も残しつつ、そうならなかったらソフト開発者の皆さまのモチベーションが維持できるのか心配です。目標が完全解析と言うところまで行ってしまうと、まだ100年くらい?掛るのでしょうか?とかいろいろ考えてしまいます。藤井聡太4段も3段時にソフト研究を始めたことでまた急に強くなったとか。彼よりもっと若い(&プロ志望の)小学生達は最初からソフト研究で育って、将来、千田6段の勉強方法は未熟だとか言い出すかも。。。取りとめもないコメントで失礼しました。今日は羽生3冠のAI講演聞きに行ってきます。あと以前に教えていただいた谷川会長の「将棋に勝つ考え方」も中古ネットで無事買えました。あと保木先生の論文を最近読みだしているのですが、全然分からない;英語だし。
> あと保木先生の論文を最近読みだしているのですが、全然分からない;英語だし。
Bonanzaの公式サイトの一番下にあるGPWでの発表資料、日本語ですけどそれとは違う論文を?
GPW発表資料のpptスライドは見たのですが、そのページの上の方に書いてあったLarge-Scale Optimization for Evaluation Functions with Minimax Searchという論文をダウンロードしてみました。
ああ、あの金子先生との共著の本格的なやつですね…。(←ちらっとしか読んでません)
PPAP型、が激しく気になります・・・
これです。これでわかる人にはわかるはず…。
https://twitter.com/yaneuraou/status/801775812395442176
読み終わったら、メイリオがすごくきれいなフォントに見えるようになっててワロタw
たまには手書きフォントも面白いでしょ。
無茶苦茶読みにくかったです(^ω^ )
ワハハ。来年は読みやすくします。
言質取りましたからね。
2018年のやねさんに期待です。
その間も期待です。
ところで、メイリオってこんなにきれいでしたっけ。
「あがるんるん」は、2018年に私が実証しなくとも、誰もが正しいと気づくでしょう…。もうヒントは十分書きましたし…。