サイトへ戻る

理解の補助線006 ゲームの中のAI(4)

経済学の効用関数が使われていた!

アルゴリズムの基礎を理解する(その4)ユティリティベースAI

· AI

このシリーズのあらすじ

先日Facebookでこのブログを紹介させていただいたところ、1週間で約100人の方の新たな読者をお迎えすることになった。(ありがとうございます)

そこで新たにアクセス頂いた方々のため、このシリーズで私が何を目指しているかを最初に簡単に触れておくことにしたい。

このシリーズでは日本が世界の最先端をゆくゲームソフトの世界でどうAIが使われているかを、この世界の第一人者の一人、三宅洋一郎氏の代表的な入門書「人工知能の作り方」を読み解きながら、その理解を私の設定するゲーム(ここではサーカスの綱渡り)を例にしながら、設計の極意を楽しみながら理解していくことを狙っている。 

それはAIによる判断・意志決定はどこまで可能か

このシリーズを書くきっかけは武藤先生のScienceに掲載された記事での規制の科学(Regulatory Science)の記事を読んでからだ。関心のある方はそれも合わせてみていただきたい。

 Science記事を読む 004 Regulation Scienceの最先端を覗く

AIによる判断の可能性を追っかけていく中で、AIの中でのルール化や法律分野のエキスパートシステム等をみてきたが、AI分野でのルール化を理解する上で、ゲームの世界でAIの中のルール化がどう使われているかを見ていきたい。

そう、人間にはルールづくりAIには判断をさせる という社会を想定した場合に、どこまで

AIの世界でのルールを取り込めるか、そのヒントをゲームの世界でのAIに求めているわけである。

三宅氏の説明では、今までのゲームの中のキャラクターの意思決定には大きく7つのアルゴリズムが活用されているという。そのまとめ方に沿って今まで①ルールAI、②ステートAI、③ビヘイビアAIと書いてきて、今日は4つ目のユティリティAIである。(三宅氏の著書では6番目に出てくるが、皆さんに早くこのユティリティAIをお伝えしたく急遽先に取り上げることとした

なぜ先かというと、経済理論で出てくる効用関数がしっかり組み込まれているからだ!

いやあ、知らなかった。ゲームの中とは言え意思決定のメカニズムとして使いこなしている。

その中身を見ていこう。

ユティリティベースAIとは 

見返りから行動を決定するメカニズムのこと

三宅陽一郎氏「人工知能の作り方」P164より引用・抜粋

数ある行動の選択の中で、たった一つ、その行動に駆り立てるものは何でしょう? 情熱・お金・名誉・・・、もちろんそういったこともあるでしょう。(ゲームの中の意志決定で使用される)ユティリティ・ベースの考え方では、それは「効用」、見返りである、と考えます。」

見返りと聞いて何が返ってくるかと期待することは人により千差万別であり、

「ユティリティベースAI」は、そうした見返りを元に行動を決定する思考を抽象化・一般化したもの」と三宅氏は定義する。

リスク・リターンの物差しとしての効用関数

デジタルゲームの世界では、(経済活動同様)リスクとリターンの考え方の大前提として

「高いリスクを冒して成功した場合には、高いリターン(見返り)がある」

ということが暗黙のデザインになっている。

そのため、ゲームの参加者はより難しいミッションに向かってゲームを進めたくなるインセンティブがそこに発生するわけである。

例えば、怪獣を相手に戦うウルトラマンのゲームがあったとすると

・ウルトラマンの体力があと1しか残っていないときに、その1を使って戦って相手の体力をゼロにして倒せしても1ポイントしかもらえない怪獣と戦うより、100ポイントもらえる怪獣と戦う方が、はるかに見返りは高くなる という考え方がまさにこの物差しである。

式で書くと

   効用=(見返りのポイント)÷(相手の体力)

と表現できる。

またウルトラマンは一回の変身で地上に3分間しか滞在できないという設定になっているから

できるだけ早い時間で怪獣を倒したほうが、より高いポイントがもらえるような物差しも作れそうだ。

これも式で書くと

   効用=(怪獣を倒すための最大許容時間3分)ー(怪獣を倒した達成時間)

という感じになるだろう。

このような式のことを効用関数と呼ぶ。これは経済学の専門用語である。

経済学や実際の経済活動の中では効用関数そのものは使用されていないが、このゲームの世界では(限られた世界ではあるものの)きちんと数値化できているところがすごい!

ただし、実際のゲーム開発の現場では、効用関数とは言っておらず

・効用関数とは言わずに評価関数

・この効用の数値のことを評価値

と呼んでいるようだ。(今度ゲーム開発者達と飲む時にこの言葉を使ってみよう)

ゲームの中での効用関数の使われ方は大きく2タイプ

日頃たくさんのゲームを楽しんでおられる方々には当たり前の話かもしれないが、

この見返り・効用の物差しの作り方に一般論はなく、ゲームによって様々な形がある。

それこそがゲームの中のキャラクターの個性の設計につながる大きな要素である。

ただし、RPG(ロール・プレーイング・ゲーム)では、大きく分けると以下の2つのタイプに分類・整理できるようである。

(1)戦うことで見返りが増える効用関数

    効用=相手へのダメージ

(2)回復魔法

    効用=自分の体力(スコア残高)ー相手の体力(スコア残高)

この基本型に、時間と距離と能力を組み合わせて、様々な物差しが作られることになる。

三宅氏が著書で提示する効用関数の例(P166より抜粋)

オンラインのアクションゲームでAIが4人のプレーヤーに囲まれたとしましょう。

AIは4人のうち、1人のプレーヤーを倒す必要があるとしましょう。

(プレーヤーの数を減らして優位に立たなければいけないため)

しかし、どのプレーヤーを倒せばいいのでしょうか?

考えるべき要素としては、まず自分から敵までの距離、そして相手の残り体力です(攻撃力はほぼ互角とみなした場合)。一番近くて弱っている敵から倒すのが優先だと考えます。

その時、各プレーヤーに対する評価関数

=α(掛け目)× (相手への距離)+β(掛け目)× (相手の残り体力)

が最も低い敵を倒すことを選べばm」条件に敵う相手を攻撃することができるでしょう。

αやβは係数(掛け目)でその要素がどれくらい重要かを示す割合です。

サーカスの例で効用関数を作って見る

さて、説明が長くなったが、このシリーズでは、それぞれのAIの考え方を説明したあと、最後に

私が設定したゲームの事例でそのアルゴリズムを考えて見るところまでやっているので、

もう少しお付き合いいただきたい。

このテーマの写真でもあげたように、サーカスの綱渡りを取り上げている。内容を再掲したい。

ゲームのストーリーの設定(前回の再掲)

舞台は名物サーカス団のサーカス小屋である。大きなテントが張られていて、満員の観客、スポットライトは大きな円形のステージを照らしていて、左右に高いポールが立っている。

2つのポールにはロープが渡っている。

サーカス団のスター男性は、今、右のはしごを登って行く。大きな観客の歓声と小太鼓の音が始まる。さあ、柱の上につくと観客に手を振り一礼。

ロープの上をそのまま歩いて、無事左の柱に着けば得点が入る。落ちれば、得点はマイナス。

ゲームの始まりである。

第一ステージ 簡単な小手調べで何も持たずにただロープの上を歩くだけ。

       クリアすれば第2ステージへ 

第2ステージ 長い棒を持ってバランスを取りながらロープを歩く高得点

第3ステージ 棒を持って自転車の上に乗る、さらに高得点

       (写真はまさにこの第3ステージ)

アンコール  一番難しい、美女を一人担いで自転車で渡る

サーカスの綱渡りで効用関数を設計してみる

さてさて、作ってみよう。サーカスのスターはこのゲームの中でどんな見返りを期待していることになるだろうか?

・相手と戦うゲームではないので、まず通常のRPGにあるような相手のダメージではない。

・各ステージのクリアは、ロープを無事渡りきることで設定できるので、これも違う。

すると、より高いポイントをもらえるためのリスク・リターン、そのものの設計が必要になることに気づく。やってみよう。

3つ設定できそうだ。

 ・各ステージごとに手に持つ棒や自転車や美女を持ち上げるリスクと、それによるスコアアップ

 ・持ち時間の設定というリスクと、実際の達成時間による差分

 ・ジャンプする(高さや時間)ことでのリスクと、バランスを取り戻すまでの時間

※実際のゲームではこのような設計の後で、それぞれを戦略として、どの選択をするかを選ぶ作業を自動で行われるが、今回はその部分の説明(効用曲線の話や限界効用逓減の法則)は省略します。

(おまけ)The Simsというゲームの中での効用関数の紹介

人間の総合幸福度をモノサシにしたゲーム

2000年に出たMaxisから出たThe Simsというゲームを知っているだろうか?

三宅氏がこの章で紹介する究極の効用関数があったので最後に触れておこう。(P167)

街中で自立して生活する人々が各キャラクターで、それぞれが内部に生理パラメータを持っていて

・空腹度(食べる)

・排泄度(トイレに行く)

・寂しくない度(ひとと話す)

・きれい満足度(お風呂を洗う、掃除する)

・楽しめている度(エンタテイメントや仕事)

・快適度(睡眠の度合い)

・体力

それぞれのキャラクターの状態により、その効用は変わってきます。

例えば、

お腹が空いている人から見て、食べ物に対して食べる行為の効用が高くなり

眠い人はベットに行きたい効用が高くなる といった具合です。

これを足し合わせて、総合幸福度という効用関数の集合体(効用曲線)を求めます。

限られた24時間の中で、街の人々はそれぞれの効用を最大化させる形の選択をするものの

同じことを続けているとだんだんつまらなくなる(限界効用逓減の法則)も再現されている

優れものである。

わかったこと

・ゲームのAIメカニズムの4つ目として、ユティリティAIを見てきた。

ゲームの中のキャラクターの行動の意思決定(行動選択)として、リスクとリターンを数値化することで行動を選択するメカニズムがあることがわかった。

・驚いたのは、経済学の世界ではとかく理論としての説明や、株式ポートフォリオの理論の中で活用されている期待値(ここでは効用・評価値)とリスクによる経済学の中の効用の考え方が、キャラクターの個性を描き出すために使用されていることである。

・この延長に何があるか、デジタル社会がより浸透する世界が拡大する中で、それぞれの人の嗜好や行動がパターン化された場合、その全体を総和が世界全体の効用曲線的なものとして表現される可能性もあるかもしれない。そうした全体と個々人の関係はどう表現されるのだろうか?

仮に上で紹介したThe Simsというゲーム上で、社会全体の選択という形である政策が実行された場合に最終的に人々の効用はどう変化するのか?そんなことを考えてみるとこういうゲームを見る目も変わってくるかもしれない。

キャラクターの個性を表現するためのアルゴリズムが、最終的には全体最適の中でどう結果を出すか、今度考えて見たい。多分、このテーマは脳による認識の考え方を合わせて見なければならないだろう。

物差しが途中で変わるゲームを作って見ては?

ここまで考えてくると色々浮かんでくる。何かのきっかけで、キャラクターの目指す効用が変わるようなゲームはできないだろうか?ゲームの中でステージがクリアされるようなレベルではなく

そもそもの考え方を変えてしまうような経験をさせて、別の道を生きてゆくようなゲーム。

それはもう小説の世界か? 

いやぁ、DEEPですねぇ。

今回もアクセス頂きありがとうございました。