人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

ベイズネットワークのゲームへの応用

「ゲーム開発者のためのAI入門」って本にベイズ推定とベイズネットワーク(ベイジアンネットワークとか信念ネットワークとも呼ばれますね)をゲームに応用する方法が書いてあった。ゲーム領域が不確定な状況下にあるときにプレーヤー以外のキャラクター(NPC)を操作するためにはどうしたらいいかって話。一般的にNPCの動作はプロダクションルール(if-thenルール)だと思うけどそれだと行動が固定的になってしまうので確率論を取り入れましょうってこと。プレイヤーの動きに適応して予想外の行動取ったらおもしろそうですよね

ベイジアンネットワークをスクラッチから実装するのも何なので既存のライブラリがないか調べてみた。日本だと産総研の本村さんの作ったBayonetっていうツールがけっこう有名だけど、ソースが公開されていないし、自作プログラムへの組み込みは無理そう。

そこで海外に目を向けてみると

なんてのがいろいろ見つかった。BNTというのは有名らしいけど、Matlabなんて高価なもの持ってない・・・JavaBayes?Javaはちょっと・・・そんなわけで3つめのPythonで実装されたOpenBayesを調べてみた。さっそくOpenBayesのサイト見に行ったら、いきなり開発終了宣言されてた・・・

とは言え、学習や確率推論の基本アルゴリズムはすでに実装完了しているのでとっかかりとしてちょうどよいかも。ちょっとソースを読んで勉強してみたい。

ちなみにベイジアンネット関連のライブラリ・ツールの詳細なリストはBayesian Network (Wikipedia)を参照。けっこうたくさんある。

追記

MatlabはOctaveと高い互換性があるらしい。Octaveはフリーで手に入るのでBNTは動くかも。

関連リンク

ゲーム開発者のためのAI入門

ゲーム開発者のためのAI入門