31 March, 2018

「人工知能の作り方 ―「おもしろい」ゲームAIはいかにして動くのか」を読んで

人工知能の作り方 ―「おもしろい」ゲームAIはいかにして動くのかを読んで面白かった部分のメモと感想。
image

各章メモ

1章 知能って何だろう

前半は「知能」を様々な角度から定義している「自分の内部と外部の境界にあるもので、内部を守るものである」 「体と環境も関係を取り持つもの」、「生き物に共通する性質である」、「宇宙の対義語」、「言葉を操り、記憶と推論の能力を有するもの (西洋の人工知能の大きな流れ)」 「環境に適応させながら体を目的に向かって運動させるもの (上記のの反対)」など。
後半はゲームの知能の歴史について記述されている。 初期のゲームでは知能というよりギミックのレベルであり、2Dゲームから3Dゲームへの変化によりAIの方向性に違いが出てくる。 日本では「ゲームデザインの工夫によりAIの役割を絞り込み作りこむ」、海外では「環境を認識するようなAI作りをしていた」という違いもあるが、 それらのノウハウを業界全体で共有するという方向性が日本には欠けていた。他律型AIではスケールが大きくなると対応できなくなるので、 ウェイポイントデータなどの知識表現をキャラクターに与え、「知識x思考」で自律的に判断するAIを作成することが重要。

2章 知性を表現する手法 ~ ゲームAI 基礎概念

AIを表現する簡易的なモデルについて書かれている。 グラフィックスの進化に伴い現実感のない行動をするキャラクターに対して違和感を感じる「不気味の谷」を超えるために、 人間の当たり前をAIができるように作りこまなければならない。例では、NPCなどの「キャラクターAI」に加え、 キャラクターAIのサポートを行う「ナビゲーションAI」、ゲームの流れを作る「メタAI」の3つのAI連携、「メタ思考」・「メタ知識」の連携、ブラックボードアーキテクチャの応用等について。

3章 人工知能の根底にあるもの ~ AIの根本概念

「フレーム」を人間が定義することでAIは世界をとらえることができ、問題を解くことができるがフレームを伸縮させることはできない。 実際の世界は「無限の情報」、「連続的」、「状態が流動的に変化する」という特徴をもっており、全体の中化から最適解を選択するのではなく、想像する力がAIには必要である。

4章 キャラクターの意志はどう決められるか ~ 意思決定のアルゴリズム

ゲームでは人間がどのようなプロセスで意思決定をしているかということについて、ゲームでで使われる7つのモデルがまとめられている。 それぞれのモデルには得意・不得意な状況があり、「対局を判定」 > 「具体的な行動を決定」をそれぞれ別のモデルで行うなど複数のモデルを組み合わせて解決する。 ここで紹介されているのはあくまでコンセプトであり、実際にはこれらを深く掘り下げていったアルゴリズムが使われている。

5章 ゲームAIは世界をどう認識するか ~ ゲームAI基礎概念(深部)

AIは物や出来事に対する「知識表現」を通して世界を認識することができる。 空間を理解する場合は、空間の特徴的な点を結ぶ「ウェイポイント・グラフ」、三角形ごとに地形の情報を持たせる「ナビゲーション・グラフ」を使ったりする。 AIどおしで情報をやりとする決まりを決めておく「メッセージング」、また、団体では直接情報をやりとりせずに「レイノルズの群れアルゴリズム」を用いて一定の距離内に存在するAIの情報をもとに行動を決定したりする。

6章 成長するAI ~ 学術・ゲームにおける共通概念

AIが学習する方法ついて書かれている。1AIの学習では、情報とその信頼度を使い情報を調整して保持する方法があり、 AIが織りなす社会的な側面ではそれぞれのAI関係をグラフにした「ソーシャル・ネットワーク・グラフ」を使って情報を伝達していく。 後半は、自らを現在の環境に最適な状態とする適応、行動とその結果から次の行動を調整する学習、 複数の学習したAIからより優位なAIどうしを交叉させて次の世代を生み出す進化を行うことでAIが成長していくことが説明されている。 ニューラルネットワークはゲームを作成する側が調整することが難しいため、実際のゲームでは余り採用されていないらしい。

7章 身体とAI ~ 身体感覚をつなぐインターフェース

キャラクターAIの知能は体抜きに作るのは不可能であり、知能には「自分の行動と世界の変化を同時に想像できる」こと、「ある程度、想像通りに身体を動かせる」ことが求められる。 自身の「内部状態」、環境の「外部状態」、物に対しての「アフォーダンス」をもとに行動を決定していく。さらに、環境側からキャラクターを制御するような、 環境とキャラクターが相互に情報をやりとりし機能を実現する「分散人工知能」で機能を実現していく。

8章 集団の知能を表現するテクニック ~ 群衆AIの技術

モブ(群衆)が自然に行動しているように見せる技術について書かれている。 街の群衆を表現する例を使って、プレイヤーの距離と密度、イベント発生点と距離による群衆の行動、LODとAIの詳細度などについて述べられている。 その他は、セルベース、階層型チームプランニング、合議制アルゴリズム、トークンを使ったターゲティング、プレイヤーレベルに合わせたスロットによる配置など。

9章 人間らしさの作り方 ~ ゲームを面白くするためのAI

NPC等の「キャラクターAI」、地形・レベルの自動生成技術「プロシージャル」、それらをいつ配置するかを判断する「メタAI」が組み合わせることで 質の高いゲームの自動生成がかのうとなるので、これからはこれらをブラッシュアップしていくことで全体な質を高められる。

感想

ゲーム開発者はゲームAIをどのように考えており、設計・実装しているのかが気になったのでこの本を読んだ。
最近はニューラルネットワークなどの機械学習が話題となっており、その結果得られたものがAIであると錯覚してしまっていたが、 この本を読んで、人工知能を通して知能とはなんであるかということを探求することから始まり、改めてAIがどういうものであるか、どのように作られているかを認識できたことが大きい。
「不気味の谷」についてはゲームをプレイしているときにもよく感じていたことで、いかに違和感をプレイヤーに感じさせないことがゲームAIでは重要だと思う。 それについて、近年のゲームで使われているAIコンセプト・モデル・テクニックだったりがたくさん学べてよかった。群衆のLODについてグラフィックだけでなくAIの行動にも適応されているテクニックが特に面白かった。

別だけど、以下はゲームAIをどのように学習させているかや、ボットの置き換えだけでなくデバッグ用やプロシージャルなど様々な場所で使われているという話。

author r-tamura
r-tamura
Web関連多めのソフトウェアエンジニアです。