情報システム学会 メールマガジン 2013.5.25 No.08-02 [6]

連載 プロマネの現場から
第62回 第2回将棋電王戦・・プロ棋士がコンピュータに負けた日

蒼海憲治(大手SI企業・金融系プロジェクトマネージャ)

 『将棋界のいちばん長い日』に続いて、3月23日から4月20日までの毎土曜日、5週間にわたって、コンピュータ将棋と、現役プロ棋士が戦う第2回将棋電王戦が開かれました。昨年、第1回の電王戦では、故・米長邦雄さんがボンクラーズと対戦し、善戦したものの中盤以降にミスが出て敗れました。しかし、引退後9年経たれた後だったので、まだ現役棋士の不敗神話は続いていました。ところが、今回、第2局の佐藤慎一四段が、ponanzaに敗れ、史上初めてプロ棋士がコンピュータ将棋に負けたことが、新聞の一面に掲載されました。第3局以降、どの試合も大熱戦が繰り広げられましたが、残念ながらプロ棋士が勝つことはできませんでした。団体戦としての成績は、プロ棋士側から見ると、1勝3敗1分というものでした。すでに、プロ棋士の平均よりも、コンピュータ将棋の方が強くなったと感じる一方、この結果ほども、差はなかったと思っています。もし夕方に1時間の休憩があれば、逆の結果もありえた、と思っています。
 今回は、ドワンゴの動画配信サービスにより、ニコニコ生放送としてリアルタイムで、試合の模様と大盤解説を楽しむことができました。どの試合も50万人余りのファンが観戦した、ということも画期的なことだったと思っています。
 プロ棋士は、1時間の間に1000万手を読むという人もいるようですが、今回のコンピュータ将棋は、第1局の習甦が1秒間に千数百万手、第3局のツツカナが1秒間に3000万手、第5局のGPS将棋にいたっては、1秒間に2億5千万手以上という文字通り桁違いの読みの差がありました。それに加えて、コンピュータ将棋の特徴による強さが発揮されました。つまり、コンピュータは、疲れない、お腹減らない、のど乾かない、トイレにいかない、怒らない、怖れない、びびらない、あきらめない、そして、考えないところにあります。一見考えているようにみえても、決められたルールに基づいて計算するだけ、ひたすら膨大な計算をする、という点にあります。つまり、定跡のように過去事例に基づくものや、終盤や詰将棋のように可能性が絞られる中で網羅性を確保することについては、ミスをしない。この圧倒的な差に対して、プロ棋士が対抗した姿は、感動の連続であり、その中に、これからのコンピュータと人間との付き合い方も垣間見られたように思います。

 コンピュータ将棋のソフトの歴史は、実に40年になります。草創期から携わっていらっしゃる松原仁さんは、『コンピュータ将棋の進歩』(*1)の中で、当初は、将棋ソフトの研究は、普通の研究者のやることではないと見られ、とても厳しい状況にあったといわれています。欧米において、チェスが「人間の知性の象徴」であったのに対し、将棋は、たかがゲームと思われていたこと。そして、それ以上に、当時のコンピュータ将棋自身がとても弱すぎたことにあります。また、チェスと将棋、いずれが複雑であるかも、最初はわかっていませんでした。
 現在では、チェスの分岐数(ルール上指すことのできる数)は、一手当たり約35で、一局の手数は平均は85なので、場合の数は、35の80乗=10の120乗。将棋の場合、分岐数は、約80で、平均手数は約115なので、80の115乗=10の220乗。つまり、将棋の方がはるかに複雑であることがわかっています。
その後、あまりに弱すぎたコンピュータ将棋は進歩を重ね続け、2005年6月、「激指(げきさし)」というソフトが、アマチュア将棋界の最高峰である第十八回アマチュア竜王戦全国大会に特別参加し、いきなり三連勝し、ベスト16になりました。この時点で、アマチュアのトップクラスに並んだといわれています。
 そして、2006年5月、世界コンピュータ選手権の優勝ソフトであったボナンザと、渡辺明竜王が戦います。熱戦の末、渡辺竜王が勝ちましたが、現役最強棋士をここまで苦しめたコンピュータ将棋恐るべし、との印象を強めた戦いになりました。
 ところで、この後、ボナンザを作った保木邦仁さんは、ボナンザの持つ最強の将棋アルゴリズムをオープンソースにします。以後のコンピュータ将棋は、みなボナンザをスタート時点にしてどんどん強くなっていきました。
 ボナンザに勝った当時、渡辺さんは、「でもいつの日か人間が完全に勝てなくなるということはあるんですかね。私が生きている間に。」とコメントされていましたが、今回の電王戦をみると、技術の進歩の速さが、人間の感覚に比べて、いかに速いかに驚いています。
 昨年、引退棋士とはいえ、名人位を獲得したこともある米長邦雄さんに勝ったことで、もしいま現役のプロ棋士とやらず、数年後に対局したとしたら、コンピュータ将棋が強くなり過ぎてしまった、という状況になっていたかもしれません。

 コンピュータ将棋がここまで強くなったのは、クラスタリング等ハードウェアの性能向上のおかげ、という印象が強いのですが、実際にはソフトウェア側の進歩の方がはるかに大きいといわれています。
 『人間に勝つコンピュータ将棋の作り方』(*3)によると、コンピュータ将棋におけるアルゴリズムは、大きく2つにより成り立っている、といいます。
 将棋を指すにあたって必要なのは、「読み」と「形勢判断」なのですが、これらに対応して、 前者は「探索」、後者は「評価関数」があります。
 「探索」においては、深く正確な読みを実現するために、いかに探索の中で深く読むべき指し手を絞るかが大切になります。また、「評価関数」の設定においては、局面判定のための評価関数のパラメータをいかに自動的にチューニングするかが大切になります。

 ある局面から手を読んでいく際は、ゲーム木の評価関数の助けを借りながら探索していきます。以前は、可能な手のうちから重要なものだけを一定数だけ読むようにし、それ以外は読まないようにするという前向き枝刈りというやり方をとっていたといいます。または、木の根本では広く読み、末端に行くほど狭く読むようにコントロールする先細り検索が主流でした。しかし、これでは読み落としが発生するため、現在では、すべての可能な手を読む全幅探索が主流となっています。最大最小戦略、ネガマックス法、αβ木探索などの手法を組み合わせることで、探索時間の短縮を図ります。つまり、最大最小戦略だけだと毎回枝分かれは平均80くらいありますが、αβ法を組み合わせることで、枝分かれは平均的にその平方根かそれより少し多いくらい、つまり10くらいまで絞り込むことができるようになる。さらに大事な手だけに絞ると、3〜5くらいなる、といいます。いずれにせよ、コンピュータ将棋は、力ずく探索、力ずくの計算法により、圧倒的な読みを行っています。

 また、局面の判断、「勝ち負け」の度合いを考えることを、評価関数と呼びます。そして、局面を判断するための評価関数の設定といっても、実は人間が行っている形勢の判断基準は、多様かつ繊細であり、時には曖昧であることがわかります。たとえば、ある局面を、駒が良く連絡していて陣形が手厚いと評価することもあれば、駒の連絡が重なり過ぎて陣形が重いと評価することもある。終盤であれば、人間であれば「自分の玉が危険になる状況は避けるように」と考えるところが、コンピュータは、「危険とは玉の二つ前の升に相手の銀がいることである」等の条件をいちいち具体化する必要があります。また、「一見危険だが詰みがない」ような局面の見極めも、「一見危険」の判定をどのような判断基準とするか、などなど考慮すべきことは無数にあるように思えます。
 大量の棋譜から、駒そのものの評価や位置関係の評価など、関数のパラメータを設定する必要があります。従来は、人間によるチューニングが大変だったのですが、現在は、オープンソースとなったBonanzaが採用した機械学習、自動学習をするようになっています。そして、Bonanzaのパラメータ数は、なんと「5000万程度」になっています。
現在のコンピュータ将棋は、この「探索」、「評価関数」のアルゴリズムをベースに、複数台のマシンによって強くするための「クラスタリング」の手法と、複数の思考エンジンを用意して、エンジン間の合議(多数決)によって指し手を決める「合議制」という手法などが組み合わされています。

 この圧倒的なコンピュータ将棋に対して、プロ棋士・・人間側はいかにして戦えばよいのか?

 答えが1つしかない局面では、コンピュータ将棋の速さは圧倒的です。詰みのあるなしが読みに入ってくる終盤や、一直線に深く読む必要のある中盤、定跡データベースの整理されている序盤も、ミスの少ないコンピュータを人間が圧倒することは困難です。

 そのため、
 ・序盤からの超急戦、大乱戦は避ける。
 ・定跡が整備されていない、駒組みで優位に立てる戦形に誘導する。いわゆる力戦型に持ち込む。
 ・有利になったら、局面を単純化させる。
 ・寄せにくい中段玉の形を作るだけで勝つ確率はアップする。
 ・不利になっても入玉を狙える時は、あきらめず上部脱出路確保に注力する。
 ・コンピュータは駒得重視なので、大駒や金銀を囮にして、入玉を狙う。

 以上は、『人間に勝つコンピュータ将棋の作り方』(*3)でも紹介されている開発者目線でのコンピュータ将棋の弱点を踏まえた対策でした。
 これに加えて、昨年、ボンクラーズとの対局を前に、米長邦雄さんが実行したことが、『われ敗れたり―コンピュータ棋戦のすべてを語る』(*4)にあります。
 プロ棋士を引退後、9年たった米長さんが、「どうすれば将棋が強くなるか」という原点に立ち戻って考えたこと。

 それは意外なことに、詰将棋を解くことでした。

 アマチュアの初段か二段ぐらいのレベルであれば、人に教わり、参考書から学び、何度も実戦を繰り返せばよい。でも、プロ棋士になる、タイトルをとるためには、こうした方法論の多くは無駄になるだけでなく、むしろ害になる。なぜなら、対局場には、アドバイスをしてくれる人もいないし、参考書も持ち込めない。自分と将棋盤以外、何もないところで戦うから。

 ≪実際問題として、将棋盤の前で必要なのは、目から入ってくる情報、
  耳から入る情報ではなく、自分の頭の中の思考だけなのです。
  外から入ってくる情報すべてを捨て去って、自分の頭だけで考える能力。
  それが、プロ棋士に求められる力なのです。≫(*4)

 そして、そのためのトレーニングの一つが、詰将棋を解く、ということ。決して答えは見ない。答えを見ると、「自分の力で解けた」と錯覚してしまう。自分の頭で解いてはじめて自分の力となる。この究極のアナログ思考が、プロ棋士が将棋を指すことの本質である、といいます。

  詰将棋に加えて、体調を整えていくこと。具体的には、体重を適正にするため、対局日までに5キロ落とし、体調、体力を万全に持っていくことでした。これが、コンピュータ将棋と対峙するにあたっての米長さんの方針でした。

 そのため、米長さんは、詰将棋を一生懸命解き脳に汗をかく、という地道なトレーニングを続けた、といいます。

 この頭と体のトレーニングの上で、次のような戦い方を目指しました。

 1秒間に、数千万手読むコンピュータ将棋に対して、人間側がコンピュータ将棋以上に手を読むのではなく、コンピュータ将棋に手を「読ませない」指し方をすること。
 コンピュータ将棋は、駒の位置などによって評価関数による形勢判断を行っていますが、大局観などを評価するところが弱い。だから、 コンピュータ将棋の点数は高いが、つまりコンピュータ将棋自身は優位になっていると思っているが、人間から見て、大局観的に勝っている状況を作ること。

ところで、コンピュータ将棋のことを調べていると、開発者目線でのコメントも多数あり、システム構築と同様の苦労も垣間見られ、共感するところが多いです。

 ≪将棋プログラムの開発は地道な作業の積み重ねである。

  ・・新しい手法を何か思いついて、それによって棋力が飛躍的に伸びるという
  場面もないことはないのだが、それ以上に、細かいロジックの改良や
  地道な速度向上の積み重ねが開発の時間の大部分を占める。≫(鶴岡慶雅「激指」)(*3)

 ≪強い将棋プログラムを作るコツは楽しく開発を続けることであり、

そのためには、まず何よりもプログラムを小規模に保つことである。≫(金子知適「GPS将棋」)(*3)

 合議を行うためには、計算機クラスタで探索を分担するために、プロトコルによるプログラム同士の会話が必要となる。

 ≪もし通信やメッセージの解釈で失敗すると、いくら将棋が強くてもシステムは
  動作しないため、この部分での不良は許されない。≫(*3)

 コンピュータ将棋の改良にあたってのリグレッション対策について。

 ≪・・プログラムに対してある修正を行った場合、その修正によってプログラムが意図どおり強くなっている、あるいは少なくとも弱くはなってはいないということを正確に評価する必要があるのだが、これが非常に難しい。≫(鶴岡慶雅「激指」)(*2)

 リグレッション・テストとして対局数は100程度では足りず、激指においては、普段3000局程度の自己対戦により勝率を評価している。しかし、そのためには、対局時の探索はかなり浅くなるため、その結果をそのまま信用してよいかという問題がある。また、自己対戦だけでは、本当の棋力向上を意味しないため、floodgateのようなコンピュータ将棋の対戦場を利用することも必要になってくる、といいます。

 数年後、コンピュータ将棋がさらに強くなった後のことを想像するのに、1997年にチェスの名人ガルリ・カスパロフが、ディープブルーに負けた後の現在のチェスの世界がどうなったのかが参考になると思います(*5)。
 現在の世界最強のチェス・プレイヤーは、実はコンピュータではありません。もちろん、人間ではありません。フリースタイル・トーナメントでは、人間とコンピュータの組合せに制限はなく、その結果は、最高の人間でもなく、最高のコンピュータでもなくなっており、最強なのは、コンピュータを使った人間のチームになっています。
 その中でも、「弱い人間+マシン+よりよいプロセス」が、「強い人間」や「マシン」、「強い人間+マシン+お粗末なプロセス」に勝っています。

 最後に、コンピュータ将棋の開発者である橋本剛さんと、米長さんの言葉を紹介したいと思います。

 ≪コンピュータ対人間も人間対人間の熱い勝負であり、コンピュータが勝ったらぜひ
「偉大な、人間の勝利」だと思っていただきたい。≫(橋本剛)(*3)

 まだ、この言葉が素直に自分の腹に落ちていないのですが、そう思える世界になればと思っています。

 ≪職人芸という言葉があります。
どれほど優れた機械であっても、手作りにはかなわない、ということがある。
逆にいえば、手作りの尊さを忘れたときに、人間は機械に敗れます。≫(米長邦雄)(*4)

(*1)松原仁「コンピュータ将棋の進歩」共立出版 1996年刊
(*2)松原仁『コンピュータ将棋の進歩 6 -プロ棋士に並ぶ-』共立出版 2012年刊
(*3)『人間に勝つコンピュータ将棋の作り方』瀧澤武信、著・編集 技術評論社 2012年刊
(*4)米長邦雄『われ敗れたり―コンピュータ棋戦のすべてを語る』中央公論新社 2012年刊
(*5)エリク・ブリニョルフソン、アンドリュー・マカフィー『機械との競争』村井章子・訳 日経BP社 2013年刊