スクウェア・エニックス AIアカデミー第2回「キャラクターの持つ知能」感想

 

第一回の感想はこちら

 

第2回の要約:

 第2回ではキャラクターAIの基礎となる、意思決定について取り上げた。

 

 生物は生きるために未来の色んなところを創っていかなければならない。高等な生物になるほど目的ポリシーなどを創ることが必要になる。そうでなければ単なる反射に過ぎない。


 1980年代から発展したエージェント・アーキテクチャからすると、この意思決定の流れは大きく分けて2つある。1つは単なる外部刺激に対する反応(=reactiveな意思決定)の流れ、そしてもう1つは記憶を再解釈するなど外部刺激を必要としない思考(=非reactiveな意思決定)の流れである。後者は見逃されることが多いが、実はほとんどの意思決定のプロセスは高等な生物であればあるほど思考など頭の中だけで回っている。心の中の整理状態を更新することも一つの立派な意思決定である。

 

 また、生物は意思決定の結果も外部刺激として入手する。意思決定が世界に与えた結果は解釈され、また次の意思決定の材料として使われる。その点で意思決定は、世界の記述のされ方と不可分である。


 このような、入ってきた情報が変換されて別の情報として生まれ、またそれが入ってきて変換されて、といった循環をインフォメーションフロー(情報回廊)と呼ぶ。この回廊のパターンは無限に思えるほど存在しているため、例えばゴミと電源のことだけ考える掃除ロボット、作業のことだけ考える工場ロボットなどのようにいくつかの回廊だけが実装されている(フレーム問題の解決)。

 

 では意思決定の実装はゲームAIに限ればどうなっているか?構成最小単位で分けると主に7つの構成法があるが、特にステートベースAIビヘイビアベースAIを取り上げる(両方ともリアクティブな意思決定である)。


 ステートベースAIは制約のないグラフ構造であり、00年代前半まではゲーム開発の主流だった。しかしステートを追加したときの変更とデバッグが困難だった。


 04年にデバッグ容易なビヘイビアベースAIが提唱されてからはそちらが主流となっている。ステートベースAIにいくつかの制約を追加したビヘイビアベースAIは、AIの表現力と可読性を両立させた。

 

 ゲーム開発においてAIの問題は、大学の研究のように問題を確実に・より正確に解くAIを作ることが目的ではなく、いかに多人数によるゲーム製作というワークフローの中にAI作りを無理なく取り込むか、が最重要課題である。ビヘイビアベースAIはステートベースAIの弱点を補う形で現状のゲーム開発のワークフローに取り込まれている。

 

 人工知能の観点で考えれば、知能を持つ生物の主観的世界が現在ゲーム業界のキャラクターAIでは、それら7つの方法で工学的に構成されているということになる。

 

 


 

 

第二回目全体について

第2回目は、第1回目に説明した3つのAIのうちの1つ、キャラクターAIに関する講義とワークショップが行われた。前回とは異なる机の配置とワークショップ用マシンが用意されており、1時間強の講義、15分の休憩(質疑応答)、1時間半程度のワークショップという流れで進められた。

 

講義について 

 抽象的で分かりにくいかもしれませんが、という枕詞が何度も入ったが、聞き方としてはそんな気はしなかった。例も豊富だった上、小さいAIを実装した経験が役に立った。話を聞きながら「ああ、あのコード部分ってそういう意味を持っていたのか」と、暗黙知から形式知に整理できた。あとは個人的に意思決定というテーマを考える機会がよくあったからかもしれない(人工知能ではないが)。

 

 ただ「創造による解決」だけは何を指しているのかが理解できなかった。(開発者に)予期されていなかった入力を取り込んで、予期されていなかった計算をして、予期されていなかった(優れた)出力をする、という状況を指すのだろうか?

類義語としては「洞察」「発見」あたりだろうか。

 

 第一回目よりも資料の権利関係に気を遣っている様子だった(同日にSNKプレイモアとの訴訟問題が出たことも影響してるのだろうと勝手な邪推)。ゲーム画面で載せれれば理解しやすいのだろうがまあ仕方ない。それよりもスクウェア自体の過去作品で使われていたであろうAIが全く例に出てこないのが気になる。FF12ガンビットとかドラクエガンガンいこうぜみたいなのはルールベースAIの典型例だと思うが一切触れられなかった。三宅氏がFFの初期から関わっている人物ではないから、ということも関係しているだろうが、他に何か理由があるのだろうか。例として出てくるのは普段縁のないHaloとかFPSみたいなのが多い。

 

 

ワークショップ( Luminous Studio によるAI作成体験 ) について 

 ワークショップでは今回は、スクウェア内製のAI Graph Editorなるソフトを触ることができた。これはどうやらスクウェアゲームエンジンLuminous StudioのGUIフロントエンドの一つのようだった。

 操作は非常に直感的で、10分程度の説明を経たらもうAIの基礎が組めるほどだ。全体のカラースキームなども美しく、単なる社内用ソフトに留まらない価値を感じた。

 

 AI Graph Editorでは、ステートベースAIやビヘイビアベースAIの記法である有限状態オートマトンやビヘイビアツリーが作成できる。別の参加者の話ではビヘイビアツリーはUnityなどにもプラグインとして存在するようだが、調べてみたところGUIのデザインやパーツの用語名などはけっこう違っていた。

 

 いちばん驚いたのは、ビヘイビアツリーの作成過程でSequence制御子(後続するノードを上から順に実行する)に後続する2つのノードの画面上での位置を入れ替えると、それだけで実行順序が変わるというところだった。何の事はない、恐らくy座標を比較しているだけなのだろうが、しかし状態機械を考えている際に「ルートが最左にある配置において、上下に意味をもたせる」という発想は僕にはなかった。自分がたまに研究で用いている(全く別の分野での)グラフGUIエディタは、並列で配置されたノードについて実行順序は全く保証されていない。

 

これはコードの次元で考えている人間の発想ではない。

不特定多数が関わるゲーム開発の現場で考えている人間の発想である。

 

こういう細部にも使いやすさの差が出るのかと一人感心していた。

 

 

 何度も繰り返すが非常に直感的な操作だった。僕は有限オートマトン - Wikipedia みたいな5つ組として授業で習い、NFAからDFAの変換アルゴリズムなどの抽象さに超苦労していたため、これは数学に魂を売った人間しか扱えないものだと思い込んでいた。ビヘイビアAIのように特殊な制限のついた木で、適切な図示のもとで考えると一般人に扱える程度までAI構築は簡単になる、というのは眼から鱗だった。

 

 ゲームとは、状態マシンの化け物である。一方でバイトのマニュアルに載っているようなフローチャート(お客様が入ってきたら「いらっしゃいませ」)を理解できない人はまずいない。あのレベル近辺にまで落とし込んでいた。ここまでツールとしての難易度が落ちれば、本来の仕事に集中できるだろう。

 

 ちなみにうちの研究室の内製ソフトはデザインなどほぼ気にされていないし、裏ワザみたいな操作が多くて泣ける。

 

 

 

AIアカデミー第2回に関するレポートは以上です。

 

なお次回の第三回目には僕は私用で参加できないため、

どなたかレポを書いて頂けると嬉しいです。

 

 

 

以下は個人的な整理です。

 

 

 

講義内容から外れた考察(読書について)

 

 三宅さんの意思決定の講義を聞きながら僕がふと考えたのは、読書のことだった。

 

 

 読書は効用関数の最大化問題とみなせるという仮説を立てた。

 

 

 僕は幼い頃から、読書というものが死ぬほど苦手だった。どうしても最後まで読めない。1章や2章集中して読んだり、音読すること自体に苦手はないのだが、通して読むということができない。

 

 次にルールが分からない。何をしたら「◯◯読んだよ」と言えるのか、その一種の勝利宣言をするための勝利条件が何なのか分からない。頁の最初から最後までめくったら勝ちというなら、本屋でパラパラ捲るのも読書になるだろうし、一字一句読まなきゃ駄目というなら、僕は今までの生涯で十数冊程度しか読んだことがないことになる。

 

 そして、読書が成功(人工知能的に言えば、目的の達成)について致命的に大事であることも分かっている。死ぬほど読み込んだ例としての一つは高校数学Aの教科書だろう。中間試験で42/100というクラス平均点を遥かに下回る点を取ったため、ページ数すら音読する勢いで丁寧に読むことを続けたら、最終的に数学は何とかなった。 あのときは、事前の努力が足りなかった訳ではなく、読み方を間違えていた。(具体的に言えば、例題を読み飛ばしていた。高校数学の教科書において例題を読み飛ばすのは自殺行為である。なぜなら、定義から自分が読み取れた以上のことがそこで起きており、それを知らないと定義の必要な意味が読めていないからである。)

 

読書について最高の解など見つかるはずがない。

 

ただ何か指標を定めて、
その読後の効果について最大化を図ることはできるはずだ、
と講義を聞きながら考えていた。
本も世界の一部に過ぎないのだから。

 

仮に読書を「どれくらい満足したか(楽しかったか、役に立ったか、時間が潰せたか)」を表す数値を返す効用関数について、それを最大にするような将棋風に言えば「次の1手」を探す問題だと捉えてみる。

すると次の1手とは、以下のどれかだ(ここでは小説は除くとする)。

 

  1. 読む( 理解したかをチェックする?それとも単に流し読みする? )
  2. 読み飛ばす( どこまで? )
  3. 目次に戻る( 何のために? )
  4. メモを取る( 紙に?エバーノートに? , 目的は感想?引用?図示整理? )
  5. 付箋を貼る・ページの角を折る( 何のために? )
  6. 感想を書く( ブクログ?読書メータ?アマゾン?日記? )
  7. 友人と感想を交換する( 誰と? )
  8. 人に贈るとしたら誰がいいかを考える
  9. 別の本(辞書含む)を持ち出して記述を比較する
  10. 読み直す( 何行前から? , 何を理解するために? , どの段階で読み直すのを諦める? )
  11. 図表の参照先に飛ぶ( その図を手元ですぐ参照できるように別に表示させる? )
  12. 思考する( どの記述について?あるいは読んできた部分の全体について? )
  13. 推測する( 本全体を?章全体を? )
  14. その他

 

上記のように、読書における「1手」(合法手)は限りなく多い。
加えて時間制限(締切や飽きるまでの平均時間)も大抵は厳しい。
制限時間内に最大化を図ることが難しい、ものすごく難しいゲームだと思う。

 

 だから、たいていの人(僕含む)は、形式化を意識しなくても読めるような本、「かんたんな本」を読む。 著名学者の間で取り交わされた手紙、前提知識が必要な数学書とかは「ボスキャラ」に当たる。 僕はボスキャラを倒せるほど強くない。 今はこの問題を手で解く練習をしている段階である。

 

 それと大事なのは、書かれていることに対して必ずしもそれを実行する必要がないということだ(フレーム問題の解決)。 「図3から分かるのは」と書いてあっても、もし自分の効用関数が告げるなら図3なんて見なくて良いし、自社製品の宣伝が書かれていたらネットで★1の下馬評を探す、なんて風にしてもいい。大学生になるまで、こういう切り捨てができなかった。この考え方はUtility-based Agentsの設計思想に似ていると思う。効用関数さえ定まっていれば、世界を全て探索する必要はないのだ。

 

この問題は、読書法を再考する上で非常に重要となる。

僕の仮説としては、実は1.読む ではなく9.別の本(辞書含む)を持ち出して記述を比較する が自分の効用関数にとっては最適なのではないかと考えている。自分は辞書の記述を比較するのが好きであり、どちらかと言えば一冊読み通すよりそちらのほうが楽に満足感が得られる。

 

 現代は多様化した。ビジネスマンが新幹線の移動中に1時間で読んでホームのゴミ箱に捨てる本と、2000年前から読み継がれてきた本では読書が違う。読書と呼ばれる行為体系が、もう少しその内実の面から用語の再整理が行われてもいいのではないだろうか。読書を意思決定の問題として捉えることは、その一助になる気がした。