読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



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

ゲームAI 機械学習

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

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

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

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

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

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

追記

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

関連リンク

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

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