賢明な人々はすぐに、適切なフィルタリングとランキングのアルゴリズムがあれば、この3層構造で極めてインテリジェントに見える動作が可能であることに気付きました。さらに1歩進めると、検索アルゴリズムはある種のゲームに非常に優れていると考えられます。
例えば三目並べを考えます。単純なアルゴリズムで、有効な全ての手をリストアップしたデータプールを構築できます。これが1層目です。次に、対戦中に2層目のフィルターを使用して、盤面の現在の状態を含む全ての有効なゲームに対するプールを照会します。最後に、3層目のランキングエンジンが、勝利をもたらす手を選択します。これで次の一手が分かります。
IBMはこの構造をさらに複雑な方法で使用し、クイズ番組「Jeopardy!」で優勝したコンピューティングシステム「Watson」を構築しました。「Jeopardy!」はほぼ型通りのゲームであり検索と類似点が多いため、Watson が3層モデルにかなり一致しているのも当然です。
1層目では、人間の専門家がWebページの幾つかのカテゴリ(Wikipedia全体など)を選択し、Watsonに入力して大規模データプールに取り込みました。また、ヒントから得たキーワードの存在とヒントの構造の意味解析に基づいて候補ページを選択できる、2番目のフィルタリング層を構築しました。
ヒントは「フランスの第10代国王」のように、あるカテゴリの特定のインスタンスを探すためのものかもしれません。あるいは、語呂合わせを表しているかもしれません。最後にフィルターから得た一連の候補情報に、ヒントとの一致度合いのランクが付けられます。
テレビで放映された「Jeopardy!」では、Watsonの設計者がルールを作成できなかった数種類のヒントを除いて、Watsonが2人の歴代チャンピオンを負かしました。勝利したWatsonが突出した規模を持っていないことを示すために述べると、Watsonは、2500台を超えるサーバでApache Unstructured Information Management ArchitectureとHadoopを実行していたに過ぎませんでした。今日の基準では決して大きなシステムではありません。
従来のゲームの多くが、別の課題を抱えています。チェスには三目並べとよく似たアプローチを使用できますが、考えられるあらゆるチェスの対戦を1つのデータセットに生成することは不可能です。1997年の再戦で世界チャンピオンのGary Kasparov氏を最終的に負かしたIBMのチェス対戦システムであるDeep Blueは、仮想的な三目並べマシンと同じ階層構造を持っています。しかし、Deep Blueは、考えられる手の膨大なデータセットではなく、専用ハードウェアを使用して現在の局面から考えられる手をオンザフライで生成します。これがオンデマンドの1層目です。
Deep Blueは指し手を生成するたび、ルールに合ったそれ以降の全ての手を打って評価しました。システムのマスターCPUで動作するソフトウェアが、考えられる次の四手の手順を1000個程度生成して評価しました。その後、ポカでないことが明らかな手順がシステムの残りのCPUにマッピングされました(Kasparov氏に勝利した 1997年版のDeep Blueは、それぞれに16個のチェス処理用ASICを取り付けたRS/6000 CPU を30 個搭載していました)各CPUは割り当てられた手順から始めてさらに四手を続けて生成し、新しい手順を1つずつ評価しました。Deep Blueは、考えられる次の八手の手順を全て確認したことになります。
その八手をソフトウェアで解析することにより、IBMのチェス専門家は対戦中でもアルゴリズムを変更できました。早く適応することにより、ソフトウェアは対戦が終わるまで特に有望な手順に従うことができました。数百万個あると思われる八手の手順の残りがハードウェアのチェスチップにディスパッチされ、別の四手が打たれて解析されました。最後に、十二手の全手順のスコアと完全な通し打ちがいわゆる3層目で比較され、メインCPUがスコアの最も高い手順から次の手を選択しました。
Copyright © ITmedia, Inc. All Rights Reserved.