人間に勝つコンピュータ将棋の作り方
瀧澤武信ほか著「人間に勝つコンピュータ将棋の作り方」は、コンピュータ将棋がプロ棋士に挑戦できるほどの力量をつけるまでの、その進歩の歴史を記したものである。 私は駒の動かし方くらいしか分からない、将棋に関してはほとんど素人であるが、本書は素人レベルでも十分楽しめる読み物になっている。本書の後半には、コンピュータ将棋がプロ棋士に勝利した一番について、棋譜を交えた解説がついているのだが、さすがにこのあたりはある程度棋譜を読める人でないと面白さは半減するのかもしれない。 チェスの世界では、1997年にIBMのDeepBlueが世界チャンピオンに勝利したことが有名であるが、将棋のプログラムはまだそのレベルにはない。それでもプロ4段程度の実力はあるらしい。(注) チェスと将棋のアルゴリズムは、最大最小戦略による探索と、局面の形勢を判断をする評価関数を組み合わせるという点でよく似ているが、将棋の場合は持ち駒が発生するという点がチェスよりも複雑である。 将棋のプログラムのアルゴリズムは、主に「探索」と「評価関数」から構成されている。 これを人間の思考と対比すると、「探索」は「読み」に、「評価関数」は「大局観」や「盤面の有利不利の判断」に該当する。探索は、1手先を読む、2手先を読む、3手先を読む、・・・・という具合に読みの深さが増すほどゲーム木が大きくなり、探索に掛かるコンピューターの負荷(CPUやメモリー資源の負荷)も大きくなる。 そこで、ゲーム木のなかで探索が不要な部分(評価が不要な木の枝)の枝を刈り取り、探索する範囲を少しでも狭めてCPUパワーの消費(=探索時間)を減らす工夫が必要になる。 次に、評価関数は、盤面の有利不利を判断する数式である。駒の価値と損得、駒の動き、玉の危険度などを数式化して形勢を判断する。この数式のパラメーターを当初は人間が調整していた。ここがプログラマーの腕の見せ所だったわけだが、そこには自ずと限界がある。 そこに、2006年、Bonanzaという「機械学習」を組み込んだコンピューター将棋が登場する。 Bonanzaは、評価関数のパラメーターをコンピュータ自身が学習して調整する。機械学習の学習法は、教師付き学習と呼ばれるもので、プロの棋士により指された約5万の棋譜を使用して、プログラムがプロ棋士と同じ手を指すように評価関数を調整する。 機械学習の登場で、評価関数のパラメーターの数も増やすことが可能となり、いまやパラメータの数は5,000万個もあるそうだ。 本書では代表的なコンピュータ将棋の製品として、「激指」、「YSS」、「GPS将棋」、「Bonanza」、「文殊」、「習甦」が紹介されている。そしてコンピューター将棋にも棋風があるというのが面白い。 Bonanzaは非常に攻撃的で、強引に見える手順で一方的に押し切ることがしばしばある。激指はBonanzaやGPS将棋に比べると受身に回ることが多く、相手の攻めを呼び込んで受け切るのは得意中の得意である。そしてYSSは人間に近い指し方をするそうである。 本書の佳境は2010年に行われた、コンピューター将棋「あから2010」と女流王将との対局である。 コンピューター将棋が誕生して以来35年にして初めて、公開の場でプロの棋士に勝った一番である。 この「あから2010」のアーキテクチャが面白い。あから2010は、「激指」、「YSS」、「GPS将棋」、「Bonanza」、4製品の合議制を採用している。 すなわち、4つの製品が決定を下した次の差し手に対して、合議サーバが最終的に次の一手を決定する。 また、ゲーム木の探索を高速、効率化するために、分散並列型のアーキテクチャを採用している。 合議制と分散並列アーキテクチャを採用することで、勝率を高め、探索性能を上げ、且つ耐障害性も高める狙いである。 このように力を付けてきたコンピュータ将棋であるが、まだ人間にかなわない部分がある。それは、序盤から終盤までの構想力、創造力である。特にコンピューター将棋は序盤を苦手としているようである(逆に終盤はめっぽう強い)。 コンピューター将棋の中核技術の1つである評価関数は、先に記したように機械学習によりパラメータをチューニングしている訳であるが、この学習の基になっているのはプロの棋士の棋譜である。このような学習方式で人間(プロの棋士)を超えることが可能なのだろうか? 合議制を採用すると、なぜ単体よりも勝率が上がるのだろうか? 機械学習をはじめとしたソフトウェアのアルゴリズムにバグ(欠陥)があると、意図しない差し手を選択する可能性があると思われるが、どのようにデバッグ(テスト)しているのだろうか? (注2)・・・技術的な面でも興味は尽きない。 |
(注)2015年4月追記 |
2017年5月追記 |
(注2) |
2019年1月追記 |