将棋ソフトにみるAI強化の手法 | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

将棋ソフトにみるAI強化の手法

前回「将棋ソフトにみるAIのアルゴリズム」の続きです。

近い将来様々なAIのサービスが登場すると思われますが、競合サービスAとBのAI、どちらが優れているのでしょうか?
私が企業ならばより成功へ導いてくれるコンサルAIに頼みたいものですし、
自動運転をする自動車なら事故を未然に防いでくれるし、事故にあっても最善の動きで搭乗者や歩行者の命を高い確率で守ってくれるAIであって欲しいものです。

今回は機械学習が既に一般的なコンピューター将棋の世界から、どのようにAIが改良されるのかご紹介していきます。

将棋ソフトの棋力の数値化

「ponanzaが2015年にレート3455を達成」等という風に4桁の数値で紹介されます。
また、様々な箇所で最新バージョンのソフトではレートが20上がりました等として紹介されています。
これは基本的に下記2つのサービスのどちらかのレーティングという数値が基準となっているようです。

  • 将棋倶楽部24: 無料でインターネット将棋が楽しめるサービス
  • Floodgate: コンピュータのための自動対戦サーバ

将棋倶楽部24レーティングイロレーティングを元に実装されています。

FloodgateレーティングはBradley-Terryモデルにもとづいているそうで将棋倶楽部24で採用しているレーティングよりは少しなだらかな勝率になるようです。

どちらもレーティングの差200で勝率75%、差400では勝率90%以上と評価されます。
相対的な差ですので、レーティング2800と3200の勝負では一見ちょっと頑張れば覆るように思えますが、その実力差はそもそも勝負として成立しない程かけ離れています。

将棋ソフトはどのくらいのペースで強くなっていっているのか?

最近では毎年レーティング+200程度のペースで伸びているようです。

その理由として、近年のコンピュータ将棋の急速な伸びの理由は?の記事では、
近年の機械学習のブームで誰でも簡単に機械学習が行えるようになってきたとあります。

また幾つかの強豪ソフトはGitHub上で公開されており、
強豪ソフトのアルゴリズムをそのまま引き継いで開発することが出来ます。
新しく参加したプログラマーが自分の思うようなアイデアを強豪ソフトに盛り込んでみて、強化に成功したら共有するといった形で貢献することができます。

3駒関係の限界

3駒関係の評価関数の限界についてという記事にて、Aperyの作者のである平岡氏の苦悩のTweetを拾って、やねうら王の作者であるやねうらお氏が解説しています。

統計データを元に盤面を静的な数値として評価しますので、それ自体に読みはありません。
現在の将棋ソフトの多数はルール上指せる手を全て指してみて評価関数の良いものから順番に幾つかの候補を手を繰り返す手法で、
現在の局面からn手進んだ未来の評価関数を見る事で読みを実現しています。

このアプローチで作られた将棋ソフトは既に一般的な棋士よりも強く、
一定の成果を上げることに成功したと言って間違いありません。
しかし、この統計データに頼り切ってニッチな局面を評価仕切れない欠点を突いた作戦も多数存在しています。

【 AWAKEの悲劇】4・ △2八角戦法登場の記事では、3駒の位置関係と駒の損得しか考えられない将棋ソフトの弱点を狙い撃ちにする作戦が判明して大騒ぎになりました。
また、稲庭将棋とよばれる将棋ソフトは、序盤駒損してまで成り込むという概念が弱い将棋ソフトの弱点を狙い打ちにして相手の時間切れを狙うという面白い戦法を採用しました。

これらの問題は将棋ソフトが更に強くなる事で自然と解消されるものですが、
いくら統計データや機械学習を採用しても、最終的にアルゴリズムの良し悪しによって決まります。

雑巾絞りとリセマラ

機械学習によりAIはどんどん学習して簡単に賢くなる?
調べていく内にどうやら簡単ではない事が分かってきました。

機械学習の魅力とワナという記事では、下記のような記載があります。
機械学習の適用で最も重要な作業の1つである特徴選択にある。特徴とは、機械学習に入力するデータ項目のことであり、この特徴をどう選ぶか、どう作るかによって機械学習の精度は大幅に変化する。
機械学習の手法や特徴の選択は試行錯誤を伴い、一般的に非常に時間がかかる。また、高度なノウハウや大規模な計算機環境が必要とされる場合も多い。

プロ棋士に連勝!将棋ソフト「Ponanza」はなぜここまで強いのかの2ページ目の冒頭で、
ponanzaの開発者である山本氏は「計算資源が足りない。どこかに落ちてないかな」という発言しており、たまたまさくらインターネットの須藤氏が「貸しましょうか?」と応じた事から快進撃が始まりました。
また、やねうらお氏も自身のブログで1台100万以上のPCを何台も購入し、計算資源に当てているそうです。

現在の将棋ソフトはパラメータを微調整しては何十億の局面を覚えさせて、既存ソフトより強いか弱いかを実際に対局させてみて判別するようです。
同じ棋譜を読み込ませても強さが変動する現状はまるで悪夢です。
この現状を「雑巾絞り」「リセマラ」と定義しているようです。

開発者達の工夫

やねうら王ライブラリ VS Aperyライブラリでは、一般的なパソコンでも1日前後で学習が完了するような仕組みを公開してくださっていますし、
機械学習が完了した将棋ソフト同士で何十局も高速で指すフレームワーク等も開発しています。
限られた計算リソースの中で最大の結果を出す為の工夫をされています。

DeepLearning を使ってはどうか?

実際に作ってみた開発者の記事が下記です。
Deep Learningを用いた将棋プログラムGunyanzaを公開しました
一からしっかり動作する将棋ソフトを組み上げる時点でグニャラくんさんの技術力の高さが伺えるものの、どうもちょっとやそっとの努力では強い将棋ソフトに仕上がる事はなさそうです。
そのコメントでは「盤面の状態が組み合わせ爆発している。結果、意味ある評価値を持つ状態の集合が全ての状態に対して少なすぎるので、ほとんど全ての状態で全く学習していない。駒に価値を与えるとか、評価の与え方を緩くしないと」という詳しい方の意見もあります。

囲碁ソフトがプロ棋士に勝利したようですという記事のコメント欄で、
強豪将棋ソフト「やねうら王」の開発者、やねうらお氏は下記のように語っています。
「将棋の評価関数は囲碁に比べるとすこぶる設計しやすくて、計算効率もいまのところDeepLearningでやるよりは2,3桁ぐらい効率がいいので…。」

DeepLearning の効率を調べてみる

AlphaGo対李世ドル – Wikipediaによると、
「李との対局に使用されるAlphaGoのバージョンは、樊麾との対局と同等のコンピュータパワー(1,202 CPU、176 GPU)を使う」とありました。
1202/32=37.5625ということで、GoogleのクラウドサーバーでCPU32コアのマシンを38台借りると、月額$31,207.50と表示されました。
実際にはこれにGPUが乗っかってくるので想像も付きませんが、毎月の利用料金だけで最低400万以上もするスーパーコンピュータだったのです。

確かに囲碁はチェスや将棋に比べると別次元に1手の自由度が高い為、
囲碁のプロ棋士を打ち負かすソフトは不可能、もしくは後何十年も掛かるのではないかと言われていましたが、化物PCでその何十年かの溝を力押しで埋めた形です。

李世ドル氏の敗北は人間の敗北だという風に報道されていますが、そんな恐ろしい化物マシンに戦いを挑み、
1勝を勝ち取った李世ドル氏の囲碁の腕前を褒め称えるべきですし、そこまでのスーパーコンピューターを何年間も走らせて学習してまだまだ足りない囲碁の奥深さに恐れるべきでしょう。

ということで比較対象としては分からず仕舞いですが、もう少し囲碁ソフトのアルゴリズムが発達すればもっと小規模なマシンでプロ棋士と互角に戦える気がします。
どうもある程度問題定義が出来る分野に於いてDeepLerningは効率が悪いようです。

まとめ

いかがでしたでしょうか?

棋士も様々な棋譜を盤面に並べて検討してみたり、
序盤の研究に時間を割いて牙を磨いていますが、
将棋ソフトの開発者も寝る間を惜しんで様々な観点を将棋ソフトに注ぎ込んで改善しているのです。

DeepLerningは夢のようなAIのように語られる事がありますが、
その効率はお世辞にも良いものとは言えず、結局は計算リソースをつぎ込みながら地道に開発を重ねる必要がありました。

以上、「将棋ソフトにみるAI強化の手法」でした。
最後まで読んでいただきありがとうございました。