瀧澤武信ほか著「人間に勝つコンピュータ将棋の作り方」は、コンピュータ将棋がプロ棋士に挑戦できるほどの力量をつけるまでの、その進歩の歴史を記したものである。私は駒の動かし方くらいしか分からない、将棋に関してはほとんど素人であるが、本書は素人レベルでも十分楽しめる読み物になっている。本書の後半には、コンピュータ将棋がプロ棋士に勝利した一番について、棋譜を交えた解説がついているのだが、さすがにこのあたりはある程度棋譜を読める人でないと面白さは半減するのかもしれない。チェスの世界では、1997年にIBMのDeepBlueが世界チャンピオンに勝利したことが有名であるが、将棋のプログラムはまだそのレベルにはない。それでもプロ4段程度の実力はあるらしい。(注)チェスと将棋のアルゴリズムは、最大最小戦略による探索と、局面の形勢を判断をする評価関数を組み合わせるという点でよく似ているが、将棋の場合は持ち駒が発生するという点がチェスよりも複雑である。将棋のプログラムのアルゴリズムは、主に「探索」と「評価関数」から構成されている。これを人間の思考と対比すると、「探索」は「読み」に、「評価関数」は「大局観」や「盤面の有利不利の判断」に該当する。探索は、1手先を読む、2手先を読む、3手先を読む、・・・・という具合に読みの深さが増すほどゲーム木が大きくなり、探索に掛かるコンピューターの負荷(CPUやメモリー資源の負荷)も大きくなる。そこで、ゲーム木のなかで探索が不要な部分(評価が不要な木の枝)の枝を刈り取り、探索する範囲を少しでも狭めてCPUパワーの消費(=探索時間)を減らす工夫が必要になる。次に、評価関数は、盤面の有利不利を判断する数式である。駒の価値と損得、駒の動き、玉の危険度などを数式化して形勢を判断する。この数式のパラメーターを当初は人間が調整していた。ここがプログラマーの腕の見せ所だったわけだが、そこには自ずと限界がある。そこに、2006年、Bonanzaという「機械学習」を組み込んだコンピューター将棋が登場する。Bonanzaは、評価関数のパラメーターをコンピュータ自身が学習して調整する。機械学習の学習法は、教師付き学習と呼ばれるもので、プロの棋士により指された約5万の棋譜を使用して、プログラムがプロ棋士と同じ手を指すように評価関数を調整する。機械学習の登場で、評価関数のパラメーターの数も増やすことが可能となり、いまやパラメータの数は5,000万個もあるそうだ。コンピューター将棋にも棋風があるというのが面白い。Bonanzaは非常に攻撃的で、強引に見える手順で一方的に押し切ることがしばしばある。激指はBonanzaやGPS将棋に比べると受身に回ることが多く、相手の攻めを呼び込んで受け切るのは得意中の得意である。YSSは人間に近い指し方をするそうである。本書の佳境は2010年に行われた、コンピューター将棋「あから2010」と女流王将との対局である。コンピューター将棋が誕生して以来35年にして初めて、公開の場でプロの棋士に勝った一番である。この「あから2010」のアーキテクチャが面白い。あから2010は、「激指」、「YSS」、「GPS将棋」、「Bonanza」、4製品の合議制を採用している。4つの製品が決定を下した次の差し手に対して、合議サーバが最終的に次の一手を決定する。ゲーム木の探索を高速、効率化するために、分散並列型のアーキテクチャを採用している。合議制と分散並列アーキテクチャを採用することで、勝率を高め、探索性能を上げ、且つ耐障害性も高める狙いである。このように力を付けてきたコンピュータ将棋であるが、まだ人間にかなわない部分がある。それは、序盤から終盤までの構想力、創造力である。コンピューター将棋は序盤を苦手としているようである(逆に終盤はめっぽう強い)。コンピューター将棋の中核技術の1つである評価関数は、先に記したように機械学習によりパラメータをチューニングしている訳であるが、この学習の基になっているのはプロの棋士の棋譜である。(注2)・・・技術的な面でも興味は尽きない。(注)2015年4月追記プロの棋士とコンピューター将棋の対戦である電王戦が、2012年(第1回)~2015年(第4回:FINAL)まで行われた。第1回から第3回まではコンピューター将棋が勝利しており、いまやコンピューター将棋の力量はプロ棋士を超えるレベルになったといえそうだ。これは、CPUの高速化やメモリー容量の増加が進み、機械的な探索(読み)の深さと効率が増したことが大きな要因に見える(もちろんプログラムの進化もあろうが)。電王戦第4回(FINAL)はプロ棋士が3勝2敗でコンピューター将棋に勝った。プロ棋士の勝因は、対戦相手であるソフトウェアの事前研究により、ソフトウェアの欠陥(バグ)や弱点を突いたからだと思われる。第2局は、コンピュータ将棋Seleneがソフトウェアのバグで反則負けを喫した(プロ棋士が「不成」で王手をかける奇手に出たのに対し、Seleneは王手を放置して別の手を指す反則を犯した)。プログラムにバグはつきものであるが、コンピュータ将棋も例外ではなかったわけだ。本書が出版された頃から比べてコンピューター将棋は随分と進化したように見えるが、AI(人工知能)の本質的な部分(コンピューターは構想力や創造力において人間よりも劣っている)は変わっていないようだ。2017年5月追記5月21日朝日新聞デジタルに「名人、AIに連敗」という記事が出ている。「将棋の棋士と人工知能(AI)が戦う第2期電王戦二番勝負(ドワンゴ主催)の第2局が20日、兵庫県姫路市の姫路城で行われ、佐藤天彦名人(29)がPONANZA(ポナンザ)に敗れた。追記2015年の追記以降、AI(人工知能)は第3次ブームを迎え、AIに関する書籍や記事を沢山目にするようになった。最初に本書を読んだときに疑問に思った、コンピュータ将棋(機械学習)のデバッグのやり方が、日経コンピュータの連載記事(2017年3月30日号)に載っていた。「機械学習のデバッグは、一般のプログラムとは異なり、機械的に実行できるような方法論が確立していない。運任せか、明文化できない経験をベースにデバッグするしかないのが実情である。「機械学習のデバッグの難しさは、一般的なプログラムのようにプログラムの挙動をたどりながら発見できない点である。何をもってバグとするか、の基準すらない。このあたりはプログラマーの腕の見せ所なのだろうが、機械学習が何を学習したのか分からない点(ブラックボックス化している点)に根本原因があるのだろうと想像する。ニューラルネットワークのパラメータの初期値の選択も、経験と勘と試行の繰り返しに依存しているそうだ。そのようなわけで、現状では人間(スキルを持ったプログラマー)の出番はまだまだあるようだ(裏を返せば現状のレベルでは、AIに頼り切るのは危険であると感じた次第)。2019年1月追記2018年12月、グーグル傘下のディープマインド社が開発した「アルファゼロ」が、チェス、将棋、囲碁で、それぞれ最強とされていた既存のソフトに勝利した。アルファゼロは強化学習(教師なし学習)を採用しており、ルールのみを教えれば後は自己対戦により学習するとされる。これは、教師あり学習が、大量の棋譜を読み込ませて学習させるのとは全く異なるアプローチである。同じアルゴリズムで、チェス、将棋、囲碁の三つとも強くなったという点も興味深い。将棋の世界では、プログラムの差し手を人間が参考にして研究するという時代になりつつあるようだ。「あから2010」登場から8年、AIの力量は人間を超えた(人間とコンピュータが将棋を競う時代は終わった)と言えそうだ。