合議アルゴリズムと文殊のページ


                                     電気通信大学 情報工学科 伊藤研究室
                                              伊藤毅志、小幡拓弥、塙雅織
                                             取り急ぎ、2009年5月3日公開開始!
                                                  (全般にまだまだ工事中、、、)

<新着情報>
11月7日 「文殊 with Bonanza」技術的解説のPPT (2009年11月6日公開)
第19回WCSC 「文殊」の全棋譜データ(合議の履歴を含む)(2009年6月30日公開)

第19回世界コンピュータ将棋選手権 「文殊」初出場第3位!(2009年5月5日)


1.合議とは

 「三人寄れば文殊の知恵」という諺がありますが、さまざまに違う意見を持った人が集まって、意思を決定
しなくてはならないことは、人間社会ではよくあります。一人で結論を出すよりも、みんなで意見を出し合っ
てその意見を集約することでより良い結論を導くことがければ、まさに「文殊の知恵」となります。しかし、逆に
「船頭多くして船山に登る」という諺のように、意見がまとまらずにうまくいかなくなってしまうこともありえます。
どちらになるかは、この多数の意見の中から、どうやって意見を決めていくのかにかかっていると言えます。
 ここでは、複数の意見をもとに一つの意見を集約することを「合議」と呼ぶことにします。

2.関連研究(3-hirnシステム)

 チェスの分野では、3-hirnシステムと呼ばれる合議に近い研究をしていました。2つのコンピュータプロ
グラムが出した2つの候補手を一人の強いプレーヤーが選択することによって、元の2つのコンピュータ
よりもレーティングにして200程度の棋力の向上が見られました。このことは、レベルの低いプレーヤー
の出すたくさんの候補手の中には良い手が含まれている可能性があることを示唆しています。要は、この
中から上手く手を選択すれば次の一手として、良い手が得られるということです。
 このたくさんの候補手の中から良い手を選ぶメカニズムを「合議アルゴリズム」と呼ぶことにします。
 しかしチェスのこれらの研究は、最終的な手の決定は「人間」が行うというものでした。我々の合議シス
テムではこれをコンピュータによって自動化することを目指しています。

3.単純多数決による合議

 当研究室では、2008年より、合議システムの研究を始めました。一言で「合議」と言っても、どうやって
複数の手の中から手を選ぶのが良いでしょう?色々な方法の中のもっとも簡単な例として、将棋(5五将棋)
を題材に単純多数決をするという方法から始めてみることにしました。思考アルゴリズムの違う複数のプログ
ラムに同じ局面を与え、得られた次の一手を多数決させて、最も多くの意見を集めた手を採用するというもの
です。(同数の場合は、その中から乱数で決めるか、リーダーを決めてその手を優先します。)
 塙は、5五将棋を題材に以下のような実験を行いました。当研究室の小幡が開発した5五将棋システム
「千分の壱里眼(第2回UEC杯5五将棋大会COM部門3位)」を探索手法や評価関数を色々と変化させて、
様々な条件で対戦させて、その効果を確かめました。すると、多数決による合議を行った場合、単体のプロ
グラムに対してすべて勝ち越すという効果が得られたのです!また、うまく条件を整えると単純多数決による
合議をした場合、しなかった場合に比べて6割から7割程度の勝率を上げることを確認しました。
 これは、5五将棋だけではなく普通の将棋でも調べてみなくてはなりません!市販ソフト(激指、棚瀬将
棋、AI将棋、Bonanza)を使って、手作業で単純多数決の合議をやってみました。するとここでも、5五将棋
と同様の結果が得られました。少なくとも合議をしないよりはした方が勝ち越す、ここでも6割以上の勝率を
収めることがわかってきたのです!!!
 この成果は、現在のところ、以下の発表しか行っていませんが、今後各学会で報告していく予定です。

*塙雅織、伊藤毅志:思考アルゴリズムにおける最適合議システム、第3回エンターテイメントと認知科学
シンポジウム予稿集より(2009.3).

4.文殊の誕生(合議システム with Bonanza)

 この研究には、Bonanzaの保木さんは、早くから注目してくださっていました。我々の実験結果には、
興味を持っていただいていて、Bonanzaをこのシステムへ提供することを惜しまなかったのです。
 ただ、合議をするには、複数のシステムが必要です。Bonanzaひとつでは、合議にならないからです。
そこで、我々はBonanzaの評価関数に乱数を加えて、複数のプログラムを作るという方法を考案しまし
た。手っ取り早く複数のプログラムを作るには、それが最も簡単です。
 

 文殊の基本構造は上図の通りです。Bonanzaの思考ルーティンをベースに評価関数に正規乱数を
加えてバラつかせたN個のシステムを作って、単純多数決を行わせています。

 そこで問題になるのは、どのような乱数の大きさで何個ぐらいの合議を行ったら効果的になるのか
ということです。メイン開発者の小幡は、様々な条件で勝率の比較を繰り返して調べています。

 Bonanzaは、我々の合議実験が始まる前からソースコードの公開、ライブラリ化の計画があったよう
で、昨年急に公開されることとなりました。

 その公開を受けて、Bonanzaを用いた合議システム「文殊」が生まれたのです。現在のところ、文殊は
Bonanzaの思考ルーティンを使っていますが、この合議のアイディアは別にBonanzaだけではなく、どの
思考ルーティンでも使えるはずです。これを使って、色々なシステムを合議していくシステムを作ろうと
考えています。

5.文殊の技術的工夫

 一つ目の工夫点は上述の乱数の大きさと個体数の最適バランスをとることです。これには、様々な
実験を繰り返して、最適なバランス値を求めました。第19回世界コンピュータ将棋選手権では、8コア
マシンを3台繋いで、4コアに1Bonanzaを割り振り、4コア×6個の合議を実現しています。
 二つ目の工夫は、予測読みをどうするかということです。今大会のシステムでは、すべてのプログラム
に次の一手とその次の手を生成させるようにしていています。そして、合議で選ばれた手の次の手を
見て、さらに合議を行って予測手を決めています。これを元にすべてのマシンに予測読みをさせるという
手法を用いています。
 その他には、6つのうち5つ以上の意見の一致が見られない場合には、探索の延長を3段階延長する
などの細かい工夫もしています。
 その結果、2009年5月大会開始直前では、大会の対戦条件とは異なりますが、実験上では、通常の
Bonanzaに対して、6割程度勝ち越すというところまでチューンアップすることに成功しています。

6.単純多数決の特徴

 単純多数決を用いた合議システムには以下のような利点と欠点が考えられています。

<利点>
・合議(単純多数決)させると、何らかの効果がある。
  →同程度のレベルのシステムであれば、今まで調べたすべてのシステムでは、合議させれば合議
   させないよりも少なくとも5割以上の勝率になった。負け越さないというのは、少なくとも悪影響が
   無いという意味では、面白い。
・アルゴリズムが簡単であり、並列化が容易である。
・一つのプログラムでは悪手を選ぶ可能性があるところ、複数のシステムで打ちけることができる。
  →これが、勝率アップにつながっているのでないかと思われる。

<欠点>
・すべてのプログラムが個々で思考時間を決められない。
・一つのプログラムが見つけた絶妙手を、それに気づかない他の多くのプログラムが否定してしまう
可能性がある。

7.今後の課題

 Bonanzaを使ったこの合議システムの改良としては、まだデータ数が十分でないので、最適な個数
と乱数のバランスについて結論が出ていない状態です。さらにデータを取って、最適な合議バランス
を見つけていく必要があります。これだけでもかなりの実験データを集める必要がありそうです。
 他には、評価値を用いて個々のシステムの重みを変えるなどの手法も考えられます。たとえば、
不利な局面では、楽天的な読みをしているシステムの手を優先することで、もしかすると勝負手のよ
うな手を選択できるかも知れません。
 色々な工夫が考えられますが、まだ、研究は緒に就いたばかりです。この方法の有効性が示され
れば、これを機に多くの研究が花開くことを期待しています。