モリカトロン株式会社運営「エンターテインメント×AI」の最新情報をお届けするサイトです。

TAG LIST
ディープラーニング機械学習CGCGへの扉安藤幸央GANニューラルネットワーク月刊エンタメAIニュース強化学習三宅陽一郎音楽OpenAIモリカトロンAIラボインタビュー敵対的生成ネットワークQAスクウェア・エニックス河合律子シナリオNVIDIAFacebookキャラクターAIルールベースデバッグCEDEC2019プロシージャルDeepMind人工知能学会ビヘイビア・ツリーGoogleCEDEC2021CEDEC2020ゲームAI映画SIGGRAPH遺伝的アルゴリズム不完全情報ゲームメタAIナビゲーションAI森川幸人畳み込みニューラルネットワーク自然言語処理深層学習マイクロソフトAIと倫理グーグル自動生成GDC 2021GPT-3GDC 2019マルチエージェントVRボードゲームロボットStyleGANCNNVFXモリカトロンゲームプレイAIファッションアートHTN階層型タスクネットワークJSAI2020大内孝子TensorFlowMicrosoftイベントレポートテストプレイ水野勇太アニメーションガイスターNPCCLIPNFTtoio吉本幸記JSAI2021スポーツディープフェイクシムピープル汎用人工知能GDC Summereスポーツ対話型エージェントeSportsBLUE PROTOCOLシーマンAIアート小説DALL-EStyleGAN2AlphaZeroカメラ環世界中島秀之懐ゲーから辿るゲームAI技術史研究DARPAドローンシムシティAI美空ひばり手塚治虫Electronic Artsメタデータブロックチェーン通しプレイOpenAI Five本間翔太CM倫理ピクサーAdobeイーサリアム作曲中嶋謙互Amadeus CodeMicrosoft AzureアストロノーカキャリアナラティブAmazon音声認識ロボティクスPyTorchDQN眞鍋和子バンダイナムコスタジオUnity齊藤陽介マインクラフトお知らせサルでもわかる人工知能VAEUbisoftUbisoft La ForgeワークショップGenvid Technologies知識表現ウォッチドッグス レギオンIGDAどうぶつしょうぎジェイ・コウガミ音楽ストリーミングマシンラーニングクラウド斎藤由多加リトル・コンピュータ・ピープルコンピューティショナル・フォトグラフィーGPT-2完全情報ゲーム坂本洋典釜屋憲彦ウェイポイントパス検索藤澤仁生物学画像認識DeNA長谷洋平鴫原盛之masumi toyota宮路洋一TextWorldSIGGRAPH ASIAソニーGTC2021CycleGANフェイクニュースGPUALifeZork人工生命オルタナティヴ・マシンサウンドスケープMCS-AI動的連携モデルASBSマンガぱいどんTEZUKA2020ナビゲーションメッシュ松井俊浩スパーシャルAIマーケティングApex LegendsELIZANinjaコンピュータRPGアップルタウン物語KELDICメロディ言語ゲームTENTUPLAYLEFT 4 DEADMARVEL Future FightAstroタイムラプスEgo4Dバスキアバーチャルヒューマン日経イノベーション・ラボ敵対的強化学習階層型強化学習GOSU Data LabWANNGOSU Voice Assistant竹内将SenpAI.GGMobalytics馬淵浩希Cygames岡島学AWS Sagemaker映像セリア・ホデント形態素解析UXAWS Lambda誤字検出認知科学BERTゲームデザインSentencePieceLUMINOUS ENGINEプラチナエッグLuminous Productionsパターン・ランゲージ竹村也哉ちょまどボエダ・ゴティエビッグデータGOAPAdobe MAX 2021デジタルツインメタバース模倣学習NVIDIA OmniverseOmniverse AvatarFPSNVIDIA Rivaマルコフ決定過程NVIDIA MegatronNVIDIA Merlinスタンフォード大学NVIDIA Metropolisパラメータ設計テニスOmniverse Replicatorバランス調整レコメンドシステムNVIDIA DRIVE Sim協調フィルタリングNVIDIA Isaac Sim人狼知能テキサス大学軍事サイバーエージェントAlphaDogfight TrialsAI Messenger VoicebotエージェントシミュレーションOpenAI CodexStarCraft IIFuture of Life InstituteIntelLAIKARotomationドラゴンクエストライバルズ不確定ゲームDota 2モンテカルロ木探索ソーシャルゲームEmbeddingGTC2020NVIDIA MAXINE淡路滋ビデオ会議グリムノーツゴティエ・ボエダGautier Boeda階層的クラスタリングaiboJuliusSIETPRGバーチャル・ヒューマン・エージェントtoio SDK for Unityクーガー田中章愛石井敦銭起揚茂谷保伯MinecraftGDMC成沢理恵MITメディアラボ著作権マジック・リープMagic Leap OneMagendaノンファンジブルトークンDDSPサッカー里井大輝KaggleバスケットボールAssassin’s Creed OriginsSea of ThievesGEMS COMPANYmonoAI technologyアバター初音ミクOculus転移学習テストBaldur's Gate 3Candy Crush SagaSIGGRAPH ASIA 2020デバッギングBigGANMaterialGANリップシンキングRNNReBeL自動運転車VolvoRival Prakユービーアイソフト北尾まどかHALO将棋メタルギアソリッドVFSMナップサック問題汎用言語モデルSpotifyMITReplica StudioamuseChitrakar巡回セールスマン問題ジョルダン曲線5GMuZeroクラウドゲーミングRival Peak和田洋一リアリティ番組Stadiaジョンソン裕子MILEs対話エンジンインタラクティブ・ストリーミングインタラクティブ・メディアシーマン人工知能研究所Ludoゴブレット・ゴブラーズTransformerSIGGRAPH 2019ArtEmis絵画ARGROVERFAIRAIりんなチート検出オンラインカジノアップルRealFlowiPhoneシミュレーションDeep FluidsMeInGameAIGraphブレイン・コンピュータ・インタフェースBCILearning from Video予期知能ユクスキュルカント哲学ドラゴンクエストエージェントアーキテクチャPAIROCTOPATH TRAVELER西木康智OCTOPATH TRAVELER 大陸の覇者アルスエレクトロニカ2019StyleCLIPStyleRig逆転オセロニア奥村エルネスト純いただきストリート齋藤精一大森田不可止高橋智隆ロボユニザナック泉幸典仁井谷正充ロボコレ2019ぎゅわんぶらあ自己中心派Azure Machine Learning意思決定モデル脱出ゲームHybrid Reward ArchitectureウロチョロスSuper Phoenix理化学研究所Project Malmo教育Project PaidiaProject LookoutWatch ForBingLEFT ALIVE長谷川誠ジミ・ヘンドリックスBaby Xカート・コバーンロバート・ダウニー・Jr.エイミー・ワインハウスMagentaYouTubeダフト・パンクSFGlenn MarshallThe Age of A.I.Story2HallucinationレコメンデーションJukeboxテンセントSIFTDCGANMOBADANNCE人事ハーバード大学研修デューク大学mynet.aiローグライクゲームNetHack人工音声NeurIPS 2021はこだて未来大学プレイ動画ヒップホップサイレント映画NBA環境音現代アートエージェント粒子群最適化法進化差分法群知能下川大樹ウィル・ライト高津芳希大石真史BEiTレベルデザインDETRSporeAIボイスアクターデノイズ南カリフォルニア大学画像処理NVIDIA CanvasSentropyCPUDiscordCALMプログラミングソースコード生成GMAIシチズンデベロッパーTRPGGitHubウィザードリィMCN-AI連携モデルAI Dungeon西川善司並木幸介サムライスピリッツ森寅嘉ゼビウスSIGGRAPH 2021ストリートファイター半導体Topaz Video Enhance AI栗原聡DLSS山野辺一記NetEase大里飛鳥DynamixyzモーションキャプチャーU-Net13フェイズ構造アドベンチャーゲームADVXLandAGI手塚眞DEATH STRANDING不気味の谷Eric JohnsonOculus Questコジマプロダクション生体情報デシマエンジンインディーゲーム写真高橋ミレイ照明Maxim PeterJoshua Romoffハイパースケープ山崎陽斗深層強化学習立木創太バンダイナムコ研究所ミライ小町テスラGameGANELYZAパックマンTesla BotTesla AI Dayソサエティ5.0ELYZA DIGESTSIGGRAPH 2020バズグラフニュースタンテキ東芝DIB-R倉田宜典3D音声合成韻律射影広告韻律転移

【CEDEC2021】NPCとのインタラクティブな対話を実現するGOAPと感情生成パイプライン

2021.11.12ゲーム

【CEDEC2021】NPCとのインタラクティブな対話を実現するGOAPと感情生成パイプライン

スクウェア・エニックスのボエダ・ゴティエ氏がキャラクターAIに関する2つのセッション「キャラクターAIを成長させるためのGOAP意思決定システム」と「NPCもプランナーも開発者にも心がある!感情システムをゲーム制作に!」に登壇しました。いずれのセッションでも、プレイヤーとキャラクターAIの相互的なコミュニケーションを実現し、新たなゲームデザインの鍵となる技術が紹介されました。

GOAPをキャラクターAIに活用する

キャラクターAIの行動を制御するものとしてプランニング技術があります。目的を達成するためにアクションリストを作成し、リスト(候補)から状況に応じて選択することでキャラクターをゴールに導くというものです。そのひとつに、GOAP(Goal Oriented Action Planning)があります。特徴として、ゴールから開始しそれを達成するまでの計画を立てる、バックワードプランニングという手法を採ります。これは主にエネミーAIの戦闘時の行動制御によく使われている技術です。

スクウェア・エニックスのAIチームでは、このGOAPをアバターAI、コンパニオンAIといったキャラクターAIに活用することで、キャラクターの内面の変化を表現したり、物語の語り部として動かすことができないかというチャレンジを行っています。このセッションでは、技術デモとして進めている「WONDER」プロジェクトを通して、GOAPを活用したキャラクターの育成について、その可能性が示されました。

図1 WONDERではプレイヤーはガイド役として、キャラクターAIの成長を助ける

例えば「お腹がいっぱい」な状態になる目的を達成するために「プリンを食べる」、あるいは「りんごを食べる」という選択肢があり、それぞれ、プリンを食べるためには「プリンを作る」、プリンを作るために「レシピを読む」というプラン、りんごを食べるために「リンゴを取りに行く」というプランを立てます。

キャラクターAIは周囲の状況により自分で判断して行動するわけですが、プレイヤーはガイド役としてキャラクターAIのその選択が正しいか否か答えを与えて、育てていきます。WONDERでは、GOAPだけでなく次のような技術を実装し、キャラクターAIを成長させることを目指します。

  1. スマートオブジェクト:アイテムが持つ情報からアクションを生成する
  2. ラーニングコンポーネント(ユーティリティベース):キャラクターAIに行動を学習させる
  3. 知識の継承システム:意識モデルをさらに深める
図2 GOAPはバックワードプランニングでゴールからプランニングする

スマートオブジェクト

WONDERでは、キャラクターがアクションを選択するとき、キャラクターが目的を達成するためにフローを考えるとき、キャラクターが会話するために話題を探すとき、キャラクターが未知のアイテムと出会うときに、スマートオブジェクトが使われています。

スマートオブジェクトに対して、サイズ、耐久度、重さ、形、持ち方、回復値、タグ情報などのパラメーターを持たせ、それぞれの値により、その状態で実行可能なアクションリストを生成します。例えば、図3では「リンゴ」に対して「食べる」「踏む」「投げる」「持ち上げる」「蹴る」というアクションが生成されました。

図3 スマートオブジェクト(リンゴのアクションリスト)

ラーニング

プレイヤーはキャラクターAIの行動を褒めたり叱ったりすることによって、アイテムをどのように使うかをキャラクターAIに伝えます。キャラクターAIはそれを自分の記憶領域に記憶することで学習します。学習の結果、それ以降の行動が変化します。

キャラクターAIはどのようにアイテムを使えばいいか知りません。知識(経験)によってアクションを選択(推測)しますが、それが正しいアクションとは限りません。例えば、図4では「ゴムボール」のアクションとして「蹴る」が一番高い確率となっています。ところがキャラクターAIが「投げる」を選択し、プレイヤーから褒められると、投げるを選択する確率が高くなります。このように学習をしていきます。

図4 キャラクターAIは経験によって行動を学習する

プレイヤーの評価と確率の関係は、実行したアクションが褒められた場合に+20%、叱られた場合に-20%、どちらでもない場合は特に変更なし、となります。最終的に正規化を行い、アクションリストに反映します。

知識の継承

今回の肝と言えるのが、この知識の継承システムです。これは未知のアイテムをどのように使用すればいいのかを記憶にある使用済みアイテムから推測するというものです。使用済みアイテムと未知アイテムについて「形状」「持ち手」「持つ場所」を比較し、スコアを出します。既存のアイテムのうち一番スコアが高いものが未知のアイテムと最も似ていることになり、そのアクション選択確率を未知のアイテムに継承します。

例えば図5では、未知のアイテムに対し、緑の瓶が100%ですので、緑の瓶のアクション選択確率を継承します。未知のアイテムのアクション確率にそれぞれ緑の瓶のアクション確率を加えて正規化して、継承は完了です。

図5(1/2)最も似ているアイテムのアクション確率を未知のアイテムに継承する
図5(2/2)最も似ているアイテムのアクション確率を未知のアイテムに継承する

また、上記の技術に加え、物語の中でキャラクターAIが自然に振る舞えるよう、WONDERではGOAPが拡張されています。

GOAPの拡張

キャラクターAIの振る舞いをより自然に見せるために、GOAPを拡張し、複数の事前条件、動的な編集処理に対応できるようにします。例えば、「お腹がいっぱい」という目的を達成するために「リンゴを食べる」というプランがあります。この時に「リンゴを食べる」というアクションの事後条件を「お腹がいっぱい」とすると、事前条件は「リンゴを持つ」になります。同時に、「リンゴを持つ」は次のアクション(=リンゴを取りに行く)の事後条件となります。そして「リンゴを取りに行く」の事前条件は「リンゴがある」です。

図6 アクションにおける事前条件と事後条件

WONDERでは次のようにプランニングをしていきます。例えば次の図7では、キャラクターのお腹はペコペコです。リンゴを食べるにはどうすればいいかをキャラクターAIは考えます。シーンの中にはいくつかのアイテムがあるし、木までは行けるはずだし、色々な可能性があります。

目的(=お腹がいっぱい)を達成するために「リンゴを食べる」、その事前条件である「リンゴを持つ」を達成するためにリンゴを取りに行くアクションを選択します。しかし、リンゴは木の上にあり、「リンゴが地面の上にある」という条件を達成する必要があります。そこから連想して「リンゴが落ちる」という特別なアクションが生成されます。そして、「リンゴが落ちる」の事前条件(=木が揺れる)を達成するために「木を揺らす」アクションを行います。すると、「お腹がいっぱい」という目的を達成することができます。このように、GOAPの拡張により複雑な計画を立てることが可能です。

図7「お腹がいっぱい」というゴールに至るアクション

さらに、このGOAPの拡張によってもっと正確なゲームステートの定義ができるようになります。変数としてインタラクション、アイテム、キャラクターを用いて、プランニングを実行する前に現在のステートの定義を行います。アイテムでインタラクションをマスターしたプレイヤーがいて、お腹がいっぱい、性格は協調性、気分はルンルン気分、というように具体的に今のゲームステートを定義し、その情報をGOAPが利用するという形です。これは、GOAPの実行が遅くなるという欠点もありますが、多くの利点があります。

1つにプランの選択です。GOAPを実行後、複数のプランが存在した場合に一番コストの低いプランを選択します。図8の例では、「プリンを食べる」「プリンを作る」「プリンのレシピを読む」というアクションのコストは「6」で2位と設定されています。それに対し、「リンゴを食べる」「リンゴを取りに行く」のコストは「5」で1位、より低いコストのプランが選択されるという具合です。

図8 低いコストのプランを選択

さらに、問題解決におけるキャラクターの心理状態を表すためにGOAPの各アクションは動的なコスト計算関数を持ちます。例えば、キャラクターは「プリンが好き」で「脚が痛い(疲れた)」状態であれば、「プリンを食べる」ほうが順位が上がります。疲れたからリンゴを取りに行くのはちょっと面倒なアクションになる、つまり、それによってコストが上がります。

図9 キャラクターの心理状態をコスト計算に加味する

このように拡張することでGOAPの技術をエネミーAI以外、他の多くのケースに広く使用することができるということになります。

感情生成パイプラインでNPCの感情を表現する

感情生成パイプラインはCEDEC2019でも、その成果が発表されています。感情生成パイプラインによって、NPCをより意識的に、表現的に、より生き生きと表現することが可能となります。CEDEC2021では、その感情生成パイプラインのWONDERプロジェクトへの導入事例が紹介されました。

WONDERの理念は「神は賽を振らない」こと。つまりAIを使ったゲームデザインは、すべての意思決定は可能な限り自然で、意味があり、エージェントの成長を可能にするものでなければならないということです。そのため、感情や気分を表現したり、個性を表現する感情パイプラインを持つことはプロジェクトにとって自然な選択だったのです。

まず、ここで用いる「感情」「気分」「性格」の定義は次のとおりです。それぞれ、セリフや表情、アニメーションの変化につながります。

  1. 感情:短期的な影響を受け、時間とともに急速に変化するもの[ex. 喜び、苦痛、恐怖]
  2. 気分:長期的な影響を受け、ゆっくりとスムーズに変化するもの[ex. 活力的であったり、落ち込んでいる、落胆的気分]
  3. 性格:時間経過で変化しない、エージェントの個性を定義するもの[ex. 好奇心、内気、怠惰]

感情モジュール「inspired OCCモデル」

感情生成パイプラインの感情モジュール(OCCモデル)では24の感情がサポートされていますが、WONDERで用いる「inspired OCCモデル」はそのうちの上部、10の感情をサポートするものです。

図10(1/2)OCCモデルとinspired OCCモデル
図10(2/2)OCCモデルとinspired OCCモデル

ゲームイベントを分析し、それがエージェントにとって良いものか良くないものかを判断します。例えばボールを当てられたら「消極的なイベント」、美味しいケーキを食べたら「積極的なイベント」というように判別し、それによって感情を生成していきます。「ボールが当たったせいで窓が割れた」や「雨のせいで服装が濡れた」といったイベントの結果から想起する感情(期待、恐れ、喜び、悲しみ)、イベントに対するエージェントのアクション(自己=自尊心、羞恥心、他のエージェント=称賛、非称賛)、オブジェクトの見た目に対する感情(好き、嫌い)など、最終的に10個の感情をサポートしています。

例えばプレイヤーがバットでボールを打った場合、それを見ているエージェントにとっては、プレイヤーが成功したのでうれしいという積極的なイベントとなり、プレイヤーに対して称賛という感情を生成します。あるいは、そのボールのせいで窓が割れた場合、消極的なイベントとなってしまい悲しみなどネガティブな感情を生成します。このように、イベントに応じて感情が生成されていくというわけです。

こうした感情を性格や気分とブレンドして、アニメーションや会話で表現します。このモデルの適用性は高く、作りたい体験にそれぞれ適用することが可能です。イベントから予想できるなら、期待や恐れという感情を生成することができます。未知のアイテムに対するフラグとして「慣れた見た目なのか不慣れな見た目なのか」を立てたり、プレイヤーや他のエージェントとのインタラクションに対する関連性を鍵にしたり、感情を追加することも可能です。

具体的には、感情はゲームイベントによって、3つのパラメーター(種類、期間、強度)で定義されます。たとえば図11では、種類が「EAT_FOOD」(エージェントのアクション)で、強度の計算式は食べているアイテムの好き嫌いによって変わります。もし嫌いな食べ物だった場合などでネガティブな値になると消極的なイベントと判断されます。

図11 感情の定義

アイテムの「好き/嫌い」については、感情が最初に生成されるときに行われます。例えばエージェントがフェンスに触れて感電した場合に悲しみという感情が生成され、その際「フェンス」というアイテムにネガティブなアフェクトを追加されます。つまり、次にフェンスを見ると嫌な感情になるというわけです。ちなみに、アフェクトは「強度」と「記憶に残る時間」の2つのパラメーターを持ち、値によっては”時間が経つと悪い経験を忘れていく”といった表現も可能です。

気分モジュール「PAD」

気分モジュールとしてはPADモデルが使われています。P(Pleasure)は快、どれほど良い気持ちか、A(Arousal)は興奮、感情がどれほど激しいのか、D(Dominance)は自分の感情をどれだけコントロールできるかを3次元の空間で表します。

この空間の中に感情モジュールで定義された感情が配置されているというイメージです。赤で示すポイントがデフォルトの気分で、最初は真ん中にありますが、感情が生成されるときに移動しています。パラメーターには「感情」「強度」「時間」があり、強度の値が高いと移動するスピードが速くなります。

図12(1/2)PADモデル
図12(2/2)PADモデル

これは気分によって有効なゴールや可能なアクションが異なるなど、意思決定に影響を与えることができ、ベースとなるボディアニメーションのバリエーション変化も可能です。また、気分によって音声を変化させることも可能です。この部分はTsugi合同会社と協力して進めた部分で、PADの値によって音声が変化します。

図13 PADによる音声の調整

ただ、PADモデルは3次元空間のため膨大な表現のバリエーションがあることが利点ですが、デバッグとバランスが難しいという弱点もあり、WONDERではP(Pleasure)とD(Dominance)の2次元空間を採用しています。

図14 WONDERにおけるPAD

性格モジュール

性格モジュールはユーティリティパラメーター(怠惰、好奇心、正直、従順など)で構成される、非常にシンプルなモデルです。ベースとなるボディアニメーションやアクションなどのバリエーションを使ったり、話し方で表現します。気分と同様に、性格によって有効なゴールや可能なアクションを変えることができます。

重要なのは「どこに表現するか」「何に影響を与えるか」を設定することです。例えば、WONDERでは8つの性格パラメーター「明るさ」「自立心」「情熱」「プライド」「ロジカル」「モラル」「やさしさ」「協調性」を用いています。そして、性格はアニメーション、話し方、意思決定に影響を及ぼします。

ただ、アニメーションに関しては、8つの性格パラメーター×4つの気分+ベースで33のアニメーションを作成することになってしまうため、4つの性格(わんぱくこぞう、ワルガキ、おくびょうもの、マジメくん)を作り、×4つの気分+ベースで17のアニメーションを作成しています。

図15 性格モジュールのパラメーター

デバッグツールとして「気分ヒートマップ」や「性格履歴」「感情履歴」、あるいは「感情全体情報」を用いて、細かな調整も可能となっているとのことです。

これまでのプレイヤーとキャラクターのコミュニケーションは、プレイヤーからキャラクターへの一方向のものでしたが、今回ご紹介した技術が実装してキャラクターの内面を作り込むことで、プレイヤーとキャラクターの間の相互的なコミュニケーションが少しずつ実現されています。新たなゲーム性をもたらす鍵として注目の高まる分野です。

Writer:大内孝子

RELATED ARTICLE関連記事

AIを”嘘つき”に育てるために:「すごろくや祭」AIゲーム対戦ブースレポート

2019.8.13ゲーム

AIを”嘘つき”に育てるために:「すごろくや祭」AIゲーム対戦ブースレポート

仁井谷正充氏に訊く『ザナック』にAIが導入された理由:懐ゲーから辿るゲームAI技術史vol.2

2020.5.27ゲーム

仁井谷正充氏に訊く『ザナック』にAIが導入された理由:懐ゲーから辿るゲームAI技...

AI時代の死生観とアイデンティティはどこへ向かうのか?:藤澤仁氏×森川幸人氏対談(後編)

2019.10.11ゲーム

AI時代の死生観とアイデンティティはどこへ向かうのか?:藤澤仁氏×森川幸人氏対談...

RANKING注目の記事はこちら