ゲームAIラウンドテーブル・オン・ツイッター第28回 「行動の一貫性とはなにか」
しかし行動一般というのはとても広いものです。誰が、いつ、どこで、何を... という単純な場合もありますが、複雑な事象の中で行動を定義することは簡単な問題ではありません。「行動の記述」(action description)の問題は実装と結びついた問題です #gameai_rt28
2012-11-03 22:44:33ゲーム環境を認識し、人工知能は頭脳の中で、置かれた状況(時間、空間、複雑度)の中で、行動を生成して行きます。こういった機能を広義で「意思決定」(Decision Making)と言います。 #gameai_rt28
2012-11-03 22:50:01その行動の記述は単層の場合もあれば、複層の場合もあり、形式は WEBDBの記事でも書いたように、「ルールベース」「ビヘイビアベース」「ゴールベース」「ステートベース」... と様々です。 #gameai_rt28
2012-11-03 22:50:32とにかく、(人工)知能は与えられた環境の中で、行動を生成して行きます。さて、今回のテーマはここからです。 #gameai_rt28
2012-11-03 22:51:03人工知能が生み出した「行動」は、残念ながら、最後まで実行できるとは限りません。例えば、暗い城の中で剣劇をするゲームの敵AIを考えてみましょう。 #gameai_rt28
2012-11-03 22:52:20AIは「プレイヤーに向かって走り込み」「1m以内になったらジャンプして」「抜刀し」「プレイヤーを頭上から切り込む」というプランを作ったとします。この行動を実行する中で、プレイヤーとの距離が縮めることができなければ、後半の行動をすることはできません。 #gameai_rt28
2012-11-03 22:54:32つまり、ここで一つ「行動のプランが長ければ行動を一貫することは難しい」と言うことができます。つまり長期プランは変化に対して脆弱性を常に持ち合わせています。これが「行動の一貫性」の問題の一つです。 #gameai_rt28
2012-11-03 22:55:31では、逆に、そんな長いプランを作らずに、その場その場で、「近づく」「切り込む」「バリィする」「横に跳ぶ」という行動を取るようにすればどうでしょうか?確かに、こうであれば、瞬時に実行できることを実行するわけですから、実行が可能です。 #gameai_rt28
2012-11-03 22:57:10こういったAIを反射型(reactive AI )と言います。 しかし、反射型AIは、そもそも行動に一貫性がありません。小さいスケールの短い時間の行動を、偶発的に繋いでいるだけでは、いくら行動を積み重ねても、そこには一貫性がないのです。 #gameai_rt28
2012-11-03 22:58:12さて、ここまで来ると、今日のテーマが明らかになったと思います。「長いプランを作れば行動の一貫性がどこかで阻害される」「偶発的な短い行動だけをつないでいれば行動の一貫性はない」。では、AIに「一貫した行動」を実現させるためにはどうしたらいいでしょうか? #gameai_rt28
2012-11-03 22:59:32これが今回の議題です。ここからは自由討論になります。当分自分も話を進めていますので自由に意見をツイートしてください。ルールが2つあります。(1)他人の意見に遠慮なく意見を返すこと。(2)意見は否定でなく批判的・創造的であること、です。よろしくお願いします #gameai_rt28
2012-11-03 23:01:17議論はツイッターの特性を利用して、並行して複数進めて頂いて大丈夫です。それでは、よろしくお願いします。 #gameai_rt28
2012-11-03 23:01:53長期目標の中の組み替えを可能にする。その内側の中期目標の中の組み替えを可能にする。短期目標の積み重ねから評価点を作り、達成しやすい目標に入れ替えを行う。ゆらぎを含まない構造なら。 #gameai_rt28
2012-11-03 23:02:39さて、例えば、こんな状況を考えてみましょう。部屋の中の三匹のモンスターがいます。回復アイテムが部屋の隅にあります。こういった状況でキャラクターに一貫した行動を取らせたい、とします。 #gameai_rt28
2012-11-03 23:03:09まず「一貫している」と思わせるバックボーンが必要な感じはします。それは…例えばキャラクタに設定されている性格とか。プランが阻害されてリプランすることになっても、このバックボーンからずれなければ一貫性は保たれているように感じると思います。 #gameai_rt28
2012-11-03 23:03:59まず、三匹のどのモンスターをやっつけるか、という問題を考えてみましょう。一番簡単なアルゴリズムは、一匹を選んで攻撃し続けることです。これは一見一貫性があるように見えますが、背中から他の二体に攻撃され続けて戦闘不能になってしまうかもしれません。 #gameai_rt28
2012-11-03 23:04:35では、そもそも行動の一貫性とは何なのか?そこで、AIが、知能が一貫性を持っているとはどういうことなのでしょうか? #gameai_rt28
2012-11-03 23:05:04第1所感としては、剣士AI君が「何の為に戦っているのか?」にポイントがあるとおもいます。略奪のための戦いと、城を防衛するための戦いでは、ドクトリンがかなり変わってくるかと。 #gameai_rt28
2012-11-03 23:05:47そのAIにとっての常識的な対応が成されているように「見える」事が、一貫性ではないか。 #gameai_rt28
2012-11-03 23:06:17「一貫性」の定義がちょっと気になります。単純に一つのプランの実行に対して一貫性を保つのか、それとももっと戦略的、目的的な一貫性なんでしょうか?(例えばドラクエのいのちだいじ)とか #gameai_rt28
2012-11-03 23:06:21反射を階層にするのはどうでしょう?マクロなレベルでは「プレイヤーに反撃する」という反射で可能な行動をリスト化し、ミクロレベルではそのリスト内から可能な反射行動を選ぶとか? #gameai_rt28
2012-11-03 23:06:47