ゲームのための人工知能研究

@myuiくんの紹介で「安藤ケンサク」というゲームを知る。

安藤ケンサク - Wii

安藤ケンサク - Wii

Google 検索を用いて検索単語のヒット数を競ったりするゲームらしい。ちなみに名前は「AND 検索」から来ているらしい。べ、別にオヤジギャグ好きだから取り上げるんじゃないんだからね!

内容はおいておいて、開発者へのインタビューがおもしろい。少し引用。(「岩田」というのは任天堂現社長である)

岩田
ふつう、ゲームをつくるときは、自分たち自身ですごく汗をかきながら設定をつくり、技を決め、みたいなことをするのですが、今回のソフトのデータは全部Googleさんのサーバのなかにありますので、そこから好きなデータを選んで、それをゲームに活用するだけでいいという、そういう目論みが最初にはあったわけですよね。

[...]

西村
すぐにできるので、ということでしたのでそのつもりだったんですが・・・。
岩田
「すぐできるので」と言って、3年もたってしまった。

[...]

西村
はい。新しいモードのアイデアがいくら面白そうなものであっても、そこで期待するような単語が出てこなければ遊んでみて面白くないということが、実際につくって触ることでようやくわかったんです。そこで、その当時入れていた4000語をさまざまな属性に分類することにしました。たとえば「車」や「ガソリン」は同じ属性に分類したりとか。
岩田
その作業は人力で行ったんですか?
征矢
基本的には人力です。3〜40人のスタッフで判断するようにしました。
岩田
そもそもGoogleさんのような検索エンジンはすべてのことが自動で行われることがポイントで、このソフトもそれに倣ってつくられるはずだったのに、けっきょくは人力に頼るしかなくなってしまったということですね。
征矢
はい。ですから、ものすごく巨大な象に立ち向かうまさにアリのようでした。

結局これは1万語ほどの辞書ができたらしいのだが、ゲームソフト1本作るのに30-40人かけて1万語の辞書を作るという、なんと手間がかかったソフトだなぁ、という感想……。どこかで人手を入れないと外に出せるクオリティにならないのは当然としても、全部やるのは大変。これ、最初から自然言語処理関係の人が手伝えばもっとかかる手間は違ったような気がする。

油井
ただ、それぞれの主観で分類したものでしたので、最後にはやっぱり違和感が残ってしまいました。ところが運がいいことに、日本語処理のシステムに詳しいプログラマーさんがたまたま見つかり、その方から、日本語変換にはキョウキ性というのがあるのでそれを使ってみたらという提案を受けたんです。
岩田
キョウキ性ですか?
油井
共に起こると書きます。
岩田
「共起性」(※6)ですね。2つの言葉が共に起こるということで、つまり、同時に検索される割合が高いもの同士に分類する、そのようなアルゴリズムが使われているんですね。

※6
「共起性」=2つの言葉が同時に出現する割合のことで、2つの言葉の関連性の強さを表す。

油井
はい。日本語処理の世界では、一般的な言葉のようなのですが、そのプログラムを使って、それまでに入れたデータを全部並べ替えてみたんです。すると違和感のないものになったんです。

ということで、単なる共起の問題でも、自然言語処理の素養があるかどうかで手間がだいぶ違う。たまたま自然言語処理を応用したゲームだから役に立ったとはいえ、自然言語処理の知識もまんざら捨てたものではないと思う。

ここまでが前振りで、本論はIHARA Note の人工知能に関するお話。こちらも長いが引用してみる。

ゲーム開発の人が言っていたことなのだが、ゲームAIというのは基本的には今も手作業(俗に「職人芸」といわれている)でおこなわれているのだそうである。ストリートファイター2なども、対com戦になると動きが単調になるのはそのせいのようである。また、私が勝手に連想したのはドラゴンクエスト4のクリフトのザラキ連発だった。そのゲーム開発の人は、ゲームのAIの自動生成(手作業ではない)を日本の大学にがんばってほしいそうである。この分野は西欧諸国に比べると圧倒的に進みが遅いそうである。「ゲーム一つ一つに関してのAI生成は比較的できる。でも、様々なゲームに共通する自動AI生成の枠組みがほしい」とのことである。ここにも切実なニーズがあるのだと、新鮮だった。

なにを持って「おもしろい」とか「人間くさい」というのかが難しいのだが、確かにゲームのAI (パラメータ調整)を人手ではなく自動にやってほしい、という欲求はありそうに思う。「安藤ケンサク」も結局ほとんど人手になってしまったが、自然言語処理人工知能のテクニックを使えば、全部人手を排除することはできなくても、労力を大幅に軽減させることはできるだろうし……。とはいえ、共通の自動AI生成のフレームワーク、と言えるほどのものを作るのは大変かもしれず。

一応本もあって

実例で学ぶゲームAIプログラミング

実例で学ぶゲームAIプログラミング

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

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

といった本もあるし、特に後者は「格闘ゲームの当たり予想」とか「鍵がかかっている宝箱に罠がかけられている確率を求め、NPCに宝箱を開けるかどうかを判断させる(Amazon の書評から引用)」とか、ありそうな事例ベースで書かれているので分かりやすい。日本はゲーム先進国だと思うのだが、どうもあまり体系的にゲームが作られている気がしないので、あるとき足下を救われるのではないかと危惧している。(海外で受けるゲームはアクションものばかりだと馬鹿にしていられるのも今のうちで)

人工知能(自然言語処理)も、いろんな分野で必要とされていても、なかなか実用化までこぎつけるものはない。検索エンジンは実用的に非常に成功した稀な事例だと思うし、機械の自動制御なんかも人工知能の応用分野的には成功しているのだろうが、人工知能研究も第2第3の検索エンジンに続くような画期的なアプリケーションがあるとよいのだけど(自分が知らないだけ?)。いつまでも「ウェブ」ではかっこわるいし(もちろん、これだけ花開いたものをしっかり使うのも大事)、じゃあ百年来の悲願のドラえもん(鉄腕アトムでもいい)を作りましょうか、というわけにもいかないだろうし、その間(もしくは全然違うところ)に未開拓の土地があるといいのだけどなぁ。