172
人工知能によってプログラムを 有機化する(前篇) 三宅 陽一郎 (ゲームAI開発者) 2017.11.26 @CODEFES https://www.facebook.com/youichiro.miyake http://www.slideshare.net/youichiromiyake [email protected]

CODE FES 2017 講演資料

Embed Size (px)

Citation preview

Page 1: CODE FES 2017 講演資料

人工知能によってプログラムを有機化する(前篇)

三宅陽一郎

(ゲームAI開発者)

2017.11.26 @CODEFES

https://www.facebook.com/youichiro.miyakehttp://www.slideshare.net/youichiromiyake

[email protected]

Page 2: CODE FES 2017 講演資料

経歴

京都大学(数学) 大阪大学(原子核実験物理) 東京大学(エネルギー工学/人工知能)

Page 3: CODE FES 2017 講演資料

Works (2006-2016)

AI for Game Titles

Books

Page 4: CODE FES 2017 講演資料

©2016 SQUARE ENIX CO., LTD. All Rights Reserved.

• ThinkIT https://thinkit.co.jp/author/10026

• AI最前線の現場から【スクウェア・エニックス】

Page 5: CODE FES 2017 講演資料

参考文献

©2017 SQUARE ENIX CO., LTD. All Rights Reserved.

三宅陽一郎 「ディジタルゲームにおける人工知能技術の応用の現在」 (20ページ)(人工知能学会誌、2015/1号) (AI書庫から無料でDL可能 http://id.nii.ac.jp/1004/00001730/ )

Page 6: CODE FES 2017 講演資料

参考文献

©2017 SQUARE ENIX CO., LTD. All Rights Reserved.

三宅陽一郎 「大規模ゲームにおける人工知能 ─ファイナルファンタジーXV の実例をもとに─」(17ページ) (人工知能学会誌、2017 /2号) (AI書庫から無料でDL可能 http://id.nii.ac.jp/1004/00008567/ )

Page 7: CODE FES 2017 講演資料

前置き

• プログラムを支える構造はどこから来るか?

• 人工知能=概念の科学

Page 8: CODE FES 2017 講演資料

プログラムの断片

プログラムの断片

プログラムとプログラムをつなげるものは何か?

Page 9: CODE FES 2017 講演資料

プログラムの断片

プログラムの断片

有機的な概念構造

Page 10: CODE FES 2017 講演資料

プログラムの断片

プログラムの断片

有機的な概念構造

要素として何を扱うか?

Page 11: CODE FES 2017 講演資料

プログラムの断片

プログラムの断片

有機的な概念構造

要素として何を扱うか?

アーキテクチャ

Page 12: CODE FES 2017 講演資料

プログラムの断片

プログラムの断片

有機的な概念構造

要素として何を扱うか?

アーキテクチャ

要素その関係性それと包む有機的なアーキテクチャ

今日はこの3つをテーマにします。

Page 13: CODE FES 2017 講演資料

目次

• 第一章人工知能の作り方• 第二章ソフトウェアの構造• 第三章 人工知能へ• 第四章 知識構造• 第五章 ナビゲーションAI• 第六章 メタAI ゲーム全体の思考• 第七章 思考• 第八章 キャラクターAI(学習)• 第九章 プロシージャル技術(自動生成技術)• 第十章 思考の構造

Page 14: CODE FES 2017 講演資料

第一章人工知能の作り方

Page 15: CODE FES 2017 講演資料

このAIはどう作るか?

プレイヤーキャラクター

岩 地面

例として、次のようなキャラクターのAIをどう作るか考えてみよう。

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 16: CODE FES 2017 講演資料

このAIはどう組むか?

こういったAIをゲーム産業では「Scripted AI」と言

います。こういったAIはゲームデザイナーがスクリプト言語で書く場合多いため。

プレイヤー キャラクター

岩 地面

A B

(例)プレイヤーがAにいればBをうろうろする。

プレイヤーがBにいれば近づいて攻撃する。

http://septieme-ciel.air-nifty.com/nikubanare/2007/08/post_3c38.htmlhttp://dear-croa.d.dooo.jp/download/illust.html

http://piposozai.blog76.fc2.com/

Page 17: CODE FES 2017 講演資料

スクリプト

Scripted AI から自律型AIへの変化

ゲームデザイナーの頭の中 ゲームデザイナーの頭の中

知識 思考

Scripted AI 自律型 AI (Autonomous AI)http://piposozai.blog76.fc2.com/

Page 18: CODE FES 2017 講演資料

スクリプト

Scripted AI から自律型AIへの変化

ゲームデザイナーの頭の中 ゲームデザイナーの頭の中

知識 思考

Scripted AI 自律型 AI (Autonomous AI)

操り人形(Scripted AI)から、キャラクターが自分で考えて行動する自律型AI(Autonomous AI)になるためには、

ゲームデザイナーが頭の中で持っている知識と思考をAIに埋め込む必要がある。

Page 19: CODE FES 2017 講演資料

このAIはどう組むか?

プレイヤーキャラクター

岩 地面

地形データ(Way Points)

ステップ1:

AIにゲームステージの地形を認識させたい=地形のデータを与える。

AIは地形データによって、自分とプレイヤーの位置関係を知ることができる。

http://dear-croa.d.dooo.jp/download/illust.html

http://piposozai.blog76.fc2.com/

Page 20: CODE FES 2017 講演資料

このAIはどう組むか?

地形データ(Way Points)

AIは地形データによって、自分とプレイヤーの位置関係を知ることができる。(ネットワークグラフの問題に帰着)

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://dear-croa.d.dooo.jp/download/illust.html

http://piposozai.blog76.fc2.com/

Page 21: CODE FES 2017 講演資料

ナビゲーションAI

このAIはどう組むか?

プレイヤーキャラクター

岩 地面

ステップ2:

地形データをもとに考える思考を与える。

地形データを用いた思考

地形データ(Way Points)

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 22: CODE FES 2017 講演資料

このAIはどう組むか?

AIは地形データによって、自分とプレイヤーの位置関係を知ることができる。(ネットワークグラフの問題に帰着)

地形データ(Way Points)

地形データを用いた思考

最短経路を計算

http://dear-croa.d.dooo.jp/download/illust.html

http://piposozai.blog76.fc2.com/

Page 23: CODE FES 2017 講演資料

ナビゲーションAI

このAIはどう組むか?

地形データ(Way Points)

ここの点グループはお互いが見えている。

ここの点グループはお互いが見えている。

地形データを用いた思考

ネットワークグラフに可視判定の情報を埋め込む。

Page 24: CODE FES 2017 講演資料

このAIはどう組むか?

ナビゲーションAI

地形データ(Way Points)

ここの点グループはお互いが見えている。

ここの点グループはお互いが見えない。

地形データを用いた思考

ネットワークグラフに可視判定の情報を埋め込む。

Page 25: CODE FES 2017 講演資料

このAIはどう組むか?

ナビゲーションAI

地形データ(Way Points)

地形データを用いた思考

プレイヤーからキャラクターが見えていない。

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 26: CODE FES 2017 講演資料

このAIはどう組むか?

ナビゲーションAI

地形データ(Way Points)

地形データを用いた思考

プレイヤーから見つけて貰うためにプレイヤーからキャラクターが見えるように動く。

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 27: CODE FES 2017 講演資料

このAIはどう組むか?

プレイヤーからキャラクターが見えない位置に動く。

ナビゲーションAI

地形データ(Way Points)

地形データを用いた思考

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 28: CODE FES 2017 講演資料

ナビゲーションAI

このAIはどう組むか?

地形データ(Way Points)

攻撃する

意思決定思考

地形データを用いた思考

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 29: CODE FES 2017 講演資料

ナビゲーションAI

このAIはどう組むか?

地形データ(Way Points)

攻撃するか? 隠れるか? 牽制するか? を選ぶ思考。= 意思決定思考

意思決定思考

地形データを用いた思考

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 30: CODE FES 2017 講演資料

このAIはどう組むか?

プレイヤーキャラクター

岩 地面

地形データ(Way

Points)

これで、キャラクターを知能化することができた。

地形データを用いた思考

意思決定思考

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 31: CODE FES 2017 講演資料

AIを作る

人間

地形データ(Way

Points)

地形データを用いたロジック

オブジェクトを用いたロジック

http://piposozai.blog76.fc2.com/

Page 32: CODE FES 2017 講演資料

AIを作る

人間

地形データ(Way

Points)

地形データを用いたロジック

オブジェクトを用いたロジック

ここでキャラクターに知能を与えたプロセスを振り返ってみる。ステップ1: 知識を与えた。ステップ2: 知識の上で操作する思考を与えた。ステップ3: 自分の意志を決定する思考を与えた。

http://piposozai.blog76.fc2.com/

Page 33: CODE FES 2017 講演資料

知識 思考

AIを作る

人間

地形データ(Way

Points)

地形データを用いた思考

意思決定の思考

知識を(データ)表現する。(知識) 知識に基づいて思考する。(AI思考)

AI自身に「知識」と「知識の上の思考」を与えることが知能を作る基本。

http://piposozai.blog76.fc2.com/

Page 34: CODE FES 2017 講演資料

思考知識

AIを作る

人間

地形データ(Way

Points)

地形データを用いた思考

オブジェクトデータ

意思決定の思考

自分の身体データ

身体運動の

ロジック

知識を(データ)表現する。(知識) 知識に基づいて思考する。(AI思考)

http://piposozai.blog76.fc2.com/

「知識」と「その上の思考」をどんどん増やして行くことでAIは成長する。

Page 35: CODE FES 2017 講演資料

知能

思考知識

AIを作る

人間

地形データ(Way

Points)

地形データを用いた思考

オブジェクトデータ

意思決定の思考

自分の身体データ

身体運動の

ロジック

http://piposozai.blog76.fc2.com/

知能 = 知識 × 思考

Page 36: CODE FES 2017 講演資料

知能

思考知識

AIを作る

人間

地形データ(Way

Points)

地形データを用いた思考

オブジェクトデータ

意思決定の思考

自分の身体データ

身体運動の

ロジック

http://piposozai.blog76.fc2.com/

これでキャラクター自身が知能を持つことができた。キャラクターの持つ知能をキャラクターAIと言う。

Page 37: CODE FES 2017 講演資料

知能

思考知識

AIを作る

人間

地形データ(Way

Points)

地形データを用いた思考

オブジェクトデータ

意思決定の思考

自分の身体データ

身体運動の

ロジック

http://piposozai.blog76.fc2.com/

この例ではナビゲーションAIとキャラクターAIが連携していた。

Page 38: CODE FES 2017 講演資料
Page 39: CODE FES 2017 講演資料

目次

• 第一章人工知能の作り方• 第二章ソフトウェアの構造• 第三章 人工知能へ• 第四章 知識構造• 第五章 ナビゲーションAI• 第六章 メタAI ゲーム全体の思考• 第七章 思考• 第八章 キャラクターAI(学習)• 第九章 プロシージャル技術(自動生成技術)• 第十章 思考の構造

Page 40: CODE FES 2017 講演資料

第二章ソフトウェアの構造

Page 41: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

最小の人工知能の単位

独立に持つ

Page 42: CODE FES 2017 講演資料

知識 思考

最小の知能の単位

Page 43: CODE FES 2017 講演資料

知識

思考

最小の知能の単位階層型アーキテクチャ

Page 44: CODE FES 2017 講演資料

知識

思考

最小の知能の単位階層型アーキテクチャ

Page 45: CODE FES 2017 講演資料

ステート・マシン

ステート

ステート ステート

ステートマシン(有限状態マシン)

ステートに自分への命令、遷移条件に世界と自分の状況の変化を書く。ループ構造により、フィードバック構造はない。

Page 46: CODE FES 2017 講演資料

プレイヤーを待ち構えるAI

2体の敵キャラクターが哨戒していて、一人のプレイヤーが部屋に入って来る。

http://dear-croa.d.dooo.jp/download/illust.htmlhttp://piposozai.blog76.fc2.com/

Page 47: CODE FES 2017 講演資料

ステート・マシン

ステートマシン(有限状態マシン)

ステートに自分への命令、遷移条件に世界と自分の状況の変化を書く。ループ構造により、フィードバック構造はない。

待機

攻撃 パトロール

Page 48: CODE FES 2017 講演資料

警戒追跡

追いかける

攻撃する

威嚇攻撃

味方に指示

出口をかためる

味方を呼ぶ

味方がいないかつ戦闘範囲外

味方と合流

味方と合流

味方がいる

見失う

見える

見失う 見つける

巡回する

10秒経つ

物音を聴く

応答がきた

階層型ステート・マシン

Page 49: CODE FES 2017 講演資料

(例) Quake HFSM

Ⓒ2015 SQUARE ENIX CO., LTD. All Rights Reserved.

状態遷移図を用いる

http://ai-depot.com/FiniteStateMachines/FSM-Practical.html

Page 50: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

メタ思考

思考を選ぶ思考

Page 51: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

メタ思考

メタ思考アーキテクチャ

Page 52: CODE FES 2017 講演資料

IF ( 前置宣言文 ) then (後置宣言文)

ルールベース意思決定Rule-based Decision Making

ルール

ここでは、この形式の制御文をルールと言います。

もちろん、IF ( … IF (.... IF… ) ) ) のような入れ子構造の制御文もルールベースと呼びますが、

ルールベースと言えば、基本的には、ルールを一つの単位として、意思決定を行う、という意味です。

Page 53: CODE FES 2017 講演資料

推論エンジン

A B C D ET F F F FT T F F FT T F T F T T T T FT T T T TF T T T TF F F T T……………………………………………………………………………

T: True F: False

ID 0 : IF A THEN B

ID 1 : IF A && D THEN C

ID 3 : IF C THEN E

ID 4 : IF B THEN D

ID .. :

ID 4 : IF E THEN ~A

ルール内の条件部がtrueの時、そのルールが発火する(fired)すると言います。発火したルールの宣言文は true となり、またそれが別のルールを発火させます。

発火をくり返して、true/Falseが変化して行く様子

Page 54: CODE FES 2017 講演資料

ルール制御

ID 0 : IF …. THEN …

ID 1 : IF …. THEN …

ID 3 : IF …. THEN ….

ID 4 : IF …. THEN …

ID .. :

ID 4 : IF …. THEN …

Priority: 3

Priority: 1

Priority: 4

Priority: 5

Priority: 2

ルールに固定、あるいは変動プライオリティ(優先度)をつけて制御を行う。

あるいはランダムにルールをピックアップする場合もある。戦略思考、キャラクターの挙動などでよく使われる。

Priority: -

制御

ルール= IF (行動条件文 ) then (動作命令文)

Page 55: CODE FES 2017 講演資料

(例) ルール制御

ID 0 : IF …. THEN …

ID 1 : IF …. THEN …

ID 3 : IF …. THEN ….

ID 4 : IF …. THEN …

ID .. :

ID 5 : IF …. THEN …

Priority: 3

Priority: 1

Priority: 4

Priority: 5

Priority: 2

或いは、状況判断思考によってルールを振り分ける。戦略思考、キャラクターの挙動などでよく使われる。

Priority: -

制御思考

ルール= IF (行動条件文 ) then (動作命令文)

Page 56: CODE FES 2017 講演資料

応用可能性例

http://gomibako.symphonic-net.com/vote.cgi?genre=act_b&rating=9

ID 0 : IF (敵確認) THEN (逆方向)

ID 1 : IF (誰もいない) THEN (ランダムウォーク)

ID 2 : IF (フルーツ発見) THEN (フルーツゲット)

ID 3 : IF (パワー発見) THEN (パワーゲット)

ID 0 : IF (敵強い) THEN (サンダガ)

ID 1 : IF (自分弱い) THEN (弱い敵に攻撃)

ID 2 : IF (HP<20) THEN (ケアル)

ID 3 : IF (パワー発見) THEN (パワーゲット)

こうなっているというのではなくて、こういうふうに応用できる例

パックマンなど

RPGなど

Page 57: CODE FES 2017 講演資料

The Sims 3 における応用

街全体をソーシャルにシミュレーションして人との関係を楽しむゲーム。たくさんのAIを「人間らしく」制御しなければならない。特徴付けにプロダクションルールを採用。

Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The

Page 58: CODE FES 2017 講演資料

Sims3 における応用あらゆる相互作用を考慮

注目するエージェントの行動範囲だけを考慮

Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The

Page 59: CODE FES 2017 講演資料

データドリブンなプロダクション・ルール

プロダクションルール

Sims3 における応用

Richard Evans, "Modeling Individual Personalities in The Sims 3", GDC 2011http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The

Page 60: CODE FES 2017 講演資料

プロダクションルール

プロダクションルールは種類によってランク付けされていて、最もランクの高いルールが発火する。ルールが発火すると他のSimは、その特性を理解する。

データドリブンなプロダクション・ルール

Sims3 における応用

Page 61: CODE FES 2017 講演資料

ユーティリティ・ベース

• ユーティリティ・ベースは高度に抽象的な戦術決定の方法。

• 世界をモデル化し、評価すべき行動群の効用(ユーティリティ)を数値に還元する。

Page 62: CODE FES 2017 講演資料

The Sims シリーズのAIの作り方

人をダイナミクス(力学系、動的な数値の仕組み )として動かす。世界を動かす PeerAI(=キャラクターAI) を構築。

Sub

Peer

Meta

Meta

Peer

Sub

[原則] 周囲の対象に対する、あらゆる可能な行動から、ムード(幸せ) 係数を最大化する行動を選択する。

Sims (not under direct player control) choose what to do by selecting, from all of the

possible behaviors in all of the objects, the behavior that maximizes their current happiness.

Will Wright, AI: A Design Perspective (AIIDE 2005) http://www.aaai.org/Papers/AIIDE/2005/AIIDE05-041.ppt

Kenneth Forbus, Will Wright, “Some notes on programming objects in The Sims – Example”http://www.qrg.cs.northwestern.edu/papers/Files/Programming_Objects_in_The_Sims.pdf

Page 63: CODE FES 2017 講演資料

オブジェクトに仕込むデータ構造

Data (Class, Sate)

Graphics (sprites, z-

buffers) Animations (skeletal)

Sound Effects

Code (Edith)

-Main (object thread)

-External 1

-External 2

-External 3

パラメーター

グラフィックスアニメーション

サウンド

メインスレッド

いろいろなインタラクションの仕方

Ken Forbus, “Simulation and Modeling: Under the hood of The Sims” (NorthWerstern大学、講義資料) ※IEで見てください。

http://www.cs.northwestern.edu/%7Eforbus/c95-gd/lectures/The_Sims_Under_the_Hood_files/frame.htm

Kenneth Forbus, Will Wright, “Some notes on programming objects in The Sims – Example”http://www.qrg.cs.northwestern.edu/papers/Files/Programming_Objects_in_The_Sims.pdf

Page 64: CODE FES 2017 講演資料

The Sims における「モチーフ・エンジン」

Ken Forbus, “Simulation and Modeling: Under the hood of The Sims” (NorthWerstern University)

http://www.cs.northwestern.edu/%7Eforbus/c95-gd/lectures/The_Sims_Under_the_Hood_files/frame.htm

Data- Needs- Personality- Skills- Relationships Sloppy - Neat

Shy - OutgoingSerious - Playful

Lazy - ActiveMean - Nice

Physical- Hunger- Comfort- Hygiene- Bladder

Mental- Energy- Fun- Social- Room

Motive Engine

CookingMechanical

LogicBodyEtc.

AIの人格モデル

Page 65: CODE FES 2017 講演資料

最適(=最大効用)な行動を選択する

Hunger +20Comfort -12Hygiene -30Bladder -75Energy +80Fun +40Social +10Room - 60

Mood +18

Toilet

- Urinate (+40 Bladder)- Clean (+30 Room)- Unclog (+40 Room)

Mood +26

Bathtub

- Take Bath (+40 Hygiene) (+30 Comfort)

- Clean (+20 Room)

Mood +20

[原則] 周囲の対象に対する、あらゆる可能な行動から、総合的な効用 (=Mood) を最大化する行動を選択する。

Page 66: CODE FES 2017 講演資料

ムードの計算方法と各パラメーターのウェイトグラフ

Mood = W_Hunger(X_Hunger) * X_Hunger + W_Engergy(X_Energy) * X_Energy + …

-100 0 100 -100 0 100

-100 0 100 -100 0 100

-100 0 100 -100 0 100

-100 0 100 -100 0 100

W_Hunger W_Energy

W_Comfort W_Fun

W_HygieneW_Social

W_Bladder W_Room

Page 67: CODE FES 2017 講演資料

効用(Utility)の計算の仕方

W_Hunger

X_Hunger

W_Hunger(-80)

-80 60

W_Hunger(60)

Page 68: CODE FES 2017 講演資料

効用(Utility)の計算の仕方

W_Hunger

X_Hunger

W_Hunger(-80)

-80 60

W_Hunger(60)

Hunger degree at -80 =W_Hunger(-80)*(-80)

Hunger degree at 60 = W_Hunger(60)*(60)

Δ =W_Hunger(60)*(60) - W_Hunger(-80)*(-80)

Utility for hunger

Page 69: CODE FES 2017 講演資料

限界効用逓減の法則

X_Hunger

W_Hunger(-80)

-80 60

W_Hunger(60)

Δ(-80 → 60)=W_Hunger(60)*(60) - W_Hunger(-80)*(-80)

Δ (60→90) =W_Hunger(90)*(90) - W_Hunger(60)*(60)

90

W_Hunger(90)

Δ(-80 → 60) is much larger than Δ(60→90)

ある程度満たされたものを満たすより、満たされないものをある程度満たす方が大きな満足をもたらす

Utility for hunger

ビールは一杯目が一番おいしい

Page 70: CODE FES 2017 講演資料

The Sims のAIの原理

三宅陽一郎、「Spore におけるゲームAI技術とプロシージャル」 (DiGRA Japan 第14回 月例研究

http://digrajapan.org/?wpdmact=process&did=Ni5ob3RsaW5r

Ken Forbus, “Simulation and Modeling: Under the hood of The Sims” (NorthWerstern大学、講義資料)

http://www.cs.northwestern.edu/%7Eforbus/c95-gd/lectures/The_Sims_Under_the_Hood_files/frame.htm

Richard Evans, Modeling Individual Personalities in The Sims 3, GDC 2010 http://www.gdcvault.com/play/1012450/Modeling-Individual-Personalities-in-The

Page 71: CODE FES 2017 講演資料

The Sims 3 では、多くのムードや欲求が準備される。

行動 対象

GDC09 資料 http://www.gdcvault.com/play/1452/(307)-Breaking-the-Cookie-Cutter

Page 72: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

レイヤー

Page 73: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

レイヤー

レイヤード・アーキテクチャ

Page 74: CODE FES 2017 講演資料

The Quake III Arena Bothttp://www.kbs.twi.tudelft.nl/docs/MSc/2001/Waveren_Jean-Paul_van/thesis.pdf

Page 75: CODE FES 2017 講演資料

知識 思考

知識 思考

知識 思考

サブサンプション・アーキテクチャ

抑制・解放

抑制・解放

Page 76: CODE FES 2017 講演資料

サブサンプション・アーキテクチャ

Page 77: CODE FES 2017 講演資料

サブサンプション・アーキテクチャ

INPUT OUTPUT

Time

情報を抽象化

反射的

より抽象的思考

理論的思考

抽象的思考

アクションを生成

Page 78: CODE FES 2017 講演資料

古典: 中央集権型(Central domain)

すべての知的プロセスが順番に実行

サブサンプション : 並列 & 多層化

すべての知的プロセスが、並列に実行

Rodney Brooks, A robust layered control system for a mobile robotRobotics and Automation, IEEE Journal of (Volume:2 , Issue: 1 ) 1986

Page 79: CODE FES 2017 講演資料

Roomba (iRobot)

http://www.irobot.com/en/us/learn/home/roomba.aspx

Roomba はサブサンプション・アーキテクチャを持つ

Page 80: CODE FES 2017 講演資料

サブサンプション・アーキテクチャ

INPUT OUTPUT

Time

Reactive

R

ロボットは障害物をみつけとターン。

Page 81: CODE FES 2017 講演資料

サブサンプション・アーキテクチャ

INPUT OUTPUT

Time

Reactive

R

ロボットは崖を見つけると後退する.

Page 82: CODE FES 2017 講演資料

サブサンプション・アーキテクチャ

INPUT OUTPUT

Time

Reactive

More Abstract thinking

Abstract thinking

R ロボットは足音を聴くと、とりあえずストップする。

Page 83: CODE FES 2017 講演資料

Subsumption Architecture

INPUT OUTPUT

Time

Reactive

More Abstract thinking

Theoretical thinking

Abstract thinking

R

全部掃除が終わると、エネルギーステーションに戻る

Page 84: CODE FES 2017 講演資料

Subsumption Architecture

INPUT OUTPUT

Time

Reactive

More Abstract thinking

Theoretical thinking

Abstract thinking

サブサンプションをエージェント・アーキテクチャに適用。

情報を抽象化 アクションを生成

Page 85: CODE FES 2017 講演資料

目次

• 第一章人工知能の作り方• 第二章ソフトウェアの構造• 第三章 人工知能へ• 第四章 知識構造• 第五章 ナビゲーションAI• 第六章 メタAI ゲーム全体の思考• 第七章 思考• 第八章 キャラクターAI(学習)• 第九章 プロシージャル技術(自動生成技術)• 第十章 思考の構造

Page 86: CODE FES 2017 講演資料

第三章 人工知能へ

Page 87: CODE FES 2017 講演資料

世界

情報的・物質的循環

物質

物理的OUTPUT

代謝機能情報INPUTINFORMATION

OUTPUTINFORMATION

情報処理=情報代謝(つまり思考)

生理的代謝機能物理的INPUT

Page 88: CODE FES 2017 講演資料

キャラクターの知能を表現する

世界

http://piposozai.blog76.fc2.com/

Page 89: CODE FES 2017 講演資料

知能

身体

キャラクターを表現する

世界

記憶

Page 90: CODE FES 2017 講演資料

知能

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・物理

Page 91: CODE FES 2017 講演資料

知能

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

Page 92: CODE FES 2017 講演資料

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

Page 93: CODE FES 2017 講演資料

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・。物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

運動生成

Motion Making

Page 94: CODE FES 2017 講演資料

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

運動生成

Motion Making

身体・発話・

情報発信

エフェクター

Page 95: CODE FES 2017 講演資料

身体

エージェント・アーキテクチャ

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

運動生成

Motion Making

身体・発話・

情報発信

エフェクター

Page 96: CODE FES 2017 講演資料

身体

キャラクターを表現する

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

運動生成

Motion Making

身体・発話・

情報発信

エフェクター

エージェント・アーキテクチャ

インフォメーション・フロー(情報回廊)

Page 97: CODE FES 2017 講演資料

身体

世界

記憶五感

身体

言語

知識表現型

センサー・物理

知識生成

KnowledgeMaking

意思決定

DecisionMaking

運動生成

Motion Making

身体・発話・

情報発信

エフェクター

インフォメーション・フロー(情報回廊)

内部循環インフォメーション・フロー(情報回廊)

エージェント・アーキテクチャ

Page 98: CODE FES 2017 講演資料

世界 / データ群(Undifined)

センサーエフェクター

知能

エージェント・アーキテクチャ

Page 99: CODE FES 2017 講演資料

世界 / データ群(Undifined)

センサーエフェクター

知能

インフォメーション・フロー

エージェント・アーキテクチャ

Page 100: CODE FES 2017 講演資料

世界 / データ群(Undefined)

センサーエフェクター

インフォメーション・フロー

知識 思考

エージェント・アーキテクチャ

Page 101: CODE FES 2017 講演資料

世界 / データ群(Undefined)

センサーエフェクター

インフォメーション・フロー

エージェント・アーキテクチャ

Page 102: CODE FES 2017 講演資料

世界 / データ群(Undefined)

センサーエフェクター

インフォメーション・フロー

エージェント・アーキテクチャ

Page 103: CODE FES 2017 講演資料

目次

• 第一章人工知能の作り方• 第二章ソフトウェアの構造• 第三章 人工知能へ• 第四章 知識構造• 第五章 ナビゲーションAI• 第六章 メタAI ゲーム全体の思考• 第七章 思考• 第八章 キャラクターAI(学習)• 第九章 プロシージャル技術(自動生成技術)• 第十章 思考の構造

Page 104: CODE FES 2017 講演資料

第四章 知識構造

Page 105: CODE FES 2017 講演資料

描画データ

描画データ

http://piposozai.blog76.fc2.com/

Page 106: CODE FES 2017 講演資料

http://piposozai.blog76.fc2.com/

衝突モデル(当たりモデル)

キャラクター衝突データ

オブジェクト衝突データ

オブジェクト衝突データ

物理的インタラクション

Page 107: CODE FES 2017 講演資料

知識表現データ

知識表現データ

http://piposozai.blog76.fc2.com/

Page 108: CODE FES 2017 講演資料

http://piposozai.blog76.fc2.com/

知識表現データ

知識表現データ知識表現データ

知識表現データ

Page 109: CODE FES 2017 講演資料

知識表現データ

知識表現データ

知識表現データ

知識表現データ

情報の受け渡し (例)私は座標(2.1, 3.4, 5.6)にいる。薬草は体力を回復する

(例)私は座標(2.1, 3.4, 5.6)にいる。薬草は体力を回復する

(例)これは岩である。動かすことはできない。側の点に隠れることができる。

http://piposozai.blog76.fc2.com/

Page 110: CODE FES 2017 講演資料

知識表現・世界表現

仮想世界の知性=人工知能

WORLD

人工知能は生物のように世界をそのまま認識・解釈できるだろうか?

仮想世界の知性=人工知能

WORLD

AIが世界(物・事・空間など)を解釈できるように、世界をうまく情報表現する= 知識表現 (KR、Knowledge Representation)

知識表現(KR)

Page 111: CODE FES 2017 講演資料

ゲーム世界

世界をリアルタイムに解釈

知識表現と作用世界・知覚世界

AIはそのままでは理解できない。

http://piposozai.blog76.fc2.com/

Page 112: CODE FES 2017 講演資料

ゲーム世界

世界をリアルタイムに解釈

知識表現と作用世界・知覚世界

AIはそのままでは理解できない。

現在の人工知能のレベルは難しい

http://piposozai.blog76.fc2.com/

Page 113: CODE FES 2017 講演資料

ゲーム世界

知識表現

知識表現と作用世界・知覚世界

AIはそのままでは理解できない。

http://piposozai.blog76.fc2.com/

Page 114: CODE FES 2017 講演資料

ゲーム世界

知識表現

知識表現と作用世界・知覚世界

AIは知識表現を通して世界を見る。それはAIの主観を決定し、作用世界と知覚世界も決定する。

http://piposozai.blog76.fc2.com/

Page 115: CODE FES 2017 講演資料

ゲーム世界

知識表現

知識表現と作用世界・知覚世界

AIはそのままでは理解できない。

作用世界

知覚世界

AIは知識表現を通して世界を見る。それはAIの主観を決定し、作用世界と知覚世界も決定する。

AI

http://piposozai.blog76.fc2.com/

Page 116: CODE FES 2017 講演資料

いろいろな知識表現

事実表現(信頼度表現)

意味ネットワーク

敵表現リスト

依存グラフ ルールベース表現

世界表現

Griesemer,J, "The Illusion of Intelligence: The Integration of AI and Level Design in Halo", 2002 http://downloads.bungie.net/presentations/gdc02_jaime_griesemer.ppt

Page 117: CODE FES 2017 講演資料

世界表現(知識表現の一つ)

マップ全体に関わる知識表現を世界表現という(ウェイポイント、ナビメッシュを基本とする表現)

World Representation (WR)

(例) 8方向の可視距離の各ポイントに埋め込まれたウェイポイント群 (Killzone)

Straatman, R., Beij, A., Sterren, W.V.D., "Killzone's AI : Dynamic Procedural Combat Tactics", 2005 http://www.cgf-ai.com/docs/straatman_remco_killzone_ai.pdf

Page 118: CODE FES 2017 講演資料

知識表現・世界表現

知識表現

世界表現

Page 119: CODE FES 2017 講演資料

いろいろな世界表現

ナビメッシュ-ウェイポイント階層表現

LOS マップ

戦術マップクラスタリング

敵配位マップ テリトリー表現

Tactical Point System

Halo2Killzone

Killzone2Halo Assassin’s Creed

Left 4 Dead

Alex J. Champandard, Remco Straatman, Tim Verweij, "On the AI Strategy for KILLZONE 2's Bots”http://aigamedev.com/open/coverage/killzone2/

Damian Isla,"Building a Better Battle: HALO 3 AI Objectives",http://halo.bungie.net/inside/publications.aspx

Michael Booth, "The AI Systems of Left 4 Dead," Artificial Intelligence and Interactive Digital Entertainment Conference , http://www.valvesoftware.com/company/publications.html

Page 120: CODE FES 2017 講演資料

世界表現(知識表現の1つ)

マップ全体に関わる知識表現を世界表現という(ウェイポイント、ナビメッシュを基本とする表現)

World Representation (WR)

(例) 8方向の可視距離の各ポイントに埋め込まれたウェイポイント群 (Killzone)

Straatman, R., Beij, A., Sterren, W.V.D., "Killzone's AI : Dynamic Procedural Combat Tactics", 2005 http://www.cgf-ai.com/docs/straatman_remco_killzone_ai.pdf

Page 121: CODE FES 2017 講演資料

Halo2 :世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 122: CODE FES 2017 講演資料

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Halo2 :世界表現

Page 123: CODE FES 2017 講演資料

Halo2 :世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 124: CODE FES 2017 講演資料

Halo2 :世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 125: CODE FES 2017 講演資料

Halo2: 世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 126: CODE FES 2017 講演資料

Halo2: 世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 127: CODE FES 2017 講演資料

Halo2: 世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 128: CODE FES 2017 講演資料

Halo2: 世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 129: CODE FES 2017 講演資料

Halo2: 世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 130: CODE FES 2017 講演資料

Counter Strike : Navigation Mesh世界表現

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 131: CODE FES 2017 講演資料

知識表現・世界表現

知識表現

世界表現オブジェクト表現

Page 132: CODE FES 2017 講演資料

オブジェクト表現

レバー

ドアの知識表現

位置 x: 3.0 y:.10,0

レバーで開けることが出来る

壊して開けることが出来る

車の知識表現

位置 x: 3.0 y:.2,0

乗って動かすことが出来る。

時速80kmで動く。

レバーの知識表現

位置 x: 5.0 y:.5,0

引くが出来る。

(結果:ドアが開く)

ドア

ドアの知識表現位置 x:3.0 y:10.0

レバーを引くと開く(ルール)

レバーの知識表現位置 x:5.0 y:5.0

引くことができる(アフォーダンス).レバーを引くとドアが開く(ルール)

車の知識表現位置 x:3.0 y:2.0

運転することができる.最大速度: 80km

物に対する表現

Page 133: CODE FES 2017 講演資料

オブジェクト表現

これが車であるこの方向に押せば動く

Dude, Where's My Warthog: From Pathfinding to General Spatial Competence, D. Isla, Invited talk, Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2005 http://naimadgames.com/publications.html

Page 134: CODE FES 2017 講演資料

アフォーダンス

食べることができる

登ることができる

動かすことができる

http://piposozai.blog76.fc2.com/

Page 135: CODE FES 2017 講演資料

作用空間

アフォーダンス

食べることができる

登ることができる

動かすことができる

http://piposozai.blog76.fc2.com/

Page 136: CODE FES 2017 講演資料

アフォーダンス

歩くことができる

届く

押すことができる

http://piposozai.blog76.fc2.com/

Page 137: CODE FES 2017 講演資料

作用空間

アフォーダンス

歩くことができる

届く

押すことができる

http://piposozai.blog76.fc2.com/

Page 138: CODE FES 2017 講演資料

知識表現データ

知識表現データ

知識表現データ

知識表現データ

情報の受け渡し (例)私は座標(2.1, 3.4, 5.6)にいる。薬草は体力を回復する

(例)私は座標(2.1, 3.4, 5.6)にいる。薬草は体力を回復する

(例)これは岩である。動かすことはできない。側の点に隠れることができる。

http://piposozai.blog76.fc2.com/

Page 139: CODE FES 2017 講演資料

知識表現知識

表現

知性を豊かにするには?

知識表現知識

表現知識表現知識

表現知識表現知識

表現知識表現

知識表現

世界表現

知識表現・世界表現が思考の足場を与える。

不安定な足場では高い思考を積み上げることはできない。

思考

Page 140: CODE FES 2017 講演資料

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

知性を豊かにするには?

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

世界表現世界

表現世界表現世界

表現

知識表現・世界表現が思考の足場を与える。

Page 141: CODE FES 2017 講演資料

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

知性を豊かにするには?

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

知識表現知識

表現知識表現知識

表現

世界表現世界

表現世界表現世界

表現

思考思考

思考

知識表現・世界表現が思考の足場を与える。

Page 142: CODE FES 2017 講演資料

知識表現

知識表現に応じた思考

最小の知能の単位

Page 143: CODE FES 2017 講演資料

知識表現

知識表現に応じた思考

最小の知能の単位

人工知能技術

Page 144: CODE FES 2017 講演資料

世界 / データ群(Undefined)

センサーエフェクター

インフォメーション・フロー

知識表現

思考

エージェント・アーキテクチャ

Page 145: CODE FES 2017 講演資料

目次

• 第一章人工知能の作り方• 第二章ソフトウェアの構造• 第三章 人工知能へ• 第四章 知識構造• 第五章 ナビゲーションAI• 第六章 メタAI ゲーム全体の思考• 第七章 思考• 第八章 キャラクターAI(学習)• 第九章 プロシージャル技術(自動生成技術)• 第十章 思考の構造

Page 146: CODE FES 2017 講演資料

第五章 ナビゲーションAI

Page 147: CODE FES 2017 講演資料

ナビゲーション・データ

フリー素材屋Hoshino http://www.s-hoshino.com/

Page 148: CODE FES 2017 講演資料

ナビゲーション・データ

ウェイポイント・グラフ(点を要素とするネットワークグラフ)

ナビゲーションメッシュ・グラフ(三角形(凸角形)を要素とするネットワークグラフ)

歩くことができる。

フリー素材屋Hoshino http://www.s-hoshino.com/

Page 149: CODE FES 2017 講演資料

パス検索=ゲーム内で任意の2点間の経路をゲーム進行中に計算する技術

RTS – Pathfinding A*https://www.youtube.com/watch?v=95aHGzzNCY8

Page 150: CODE FES 2017 講演資料

ネットワーク上のグラフ検索法

M

F

L

B

A

O

P

D

C

G

S

V

H

QX

K

N

J

R

T

W

EI

U

Z

Y

54

6 3

7 23

B C

3

G

D E

3

2 24

L

3

3

5

5 J

F

出発点(S)を中心に、最も短い経路を形成して行く。Gにたどり着いたら終了。

各ノードの評価距離=出発点からの経路

ダイクストラ法

Page 151: CODE FES 2017 講演資料

ネットワーク上のグラフ検索法ダイクストラ法

M

F

L

B

A

O

P

D

C

G

S

V

H

QX

K

N

J

R

T

W

EI

U

Z

Y

54

6 3

7 23

B C

3

G

D E

3

2 24

L

3

3

5

5 J

F

出発点(S)を中心に、最も短い経路を形成して行く。Gにたどり着いたら終了。

各ノードの評価距離=出発点からの経路

Page 152: CODE FES 2017 講演資料

ネットワーク上のグラフ検索法A*法

M

F

L

B

A

O

P

D

C

G

S

V

H

QX

K

N

J

R

T

W

EI

U

Z

Y

54

6 3

7 23

B C

3

3

2 24 3

5

5

出発点(S)を中心に、そのノードまでの最も短い経路を形成して行く。Gにたどり着いたら終了。

ゴール地点がわかっている場合、現在のノードとゴールとの推定距離(ヒューリスティック距離)を想定して、トータル距離を取り、それが最少のノードを探索して行く。

各ノードの評価距離=出発点からの経路+ヒューリスティック距離

ヒューリスティック距離(普通ユークリッド距離を取る)

3+14.2 3+13.8

G H3 5+10.5 6+8.4

Page 153: CODE FES 2017 講演資料

ネットワーク上のグラフ検索法A*法

M

F

L

B

A

O

P

D

C

G

S

V

H

QX

K

N

J

R

T

W

EI

U

Z

Y

54

6 3

7 23

B C

3

3

2 24 3

5

5

出発点(S)を中心に、そのノードまでの最も短い経路を形成して行く。Gにたどり着いたら終了。

ゴール地点がわかっている場合、現在のノードとゴールとの推定距離(ヒューリスティック距離)を想定して、トータル距離を取り、それが最少のノードを探索して行く。

各ノードの評価距離=出発点からの経路+ヒューリスティック距離

ヒューリスティック距離(普通ユークリッド距離を取る)

3+14.2 3+13.8

G H3 5+10.5 6+8.4

Page 154: CODE FES 2017 講演資料

Counter Strike (2000)におけるナビメッシュ

The Official Counter-Strike Bothttp://aigamedev.com/insider/presentation/official-counter-strike-bot/

Page 155: CODE FES 2017 講演資料

Counter Strike (2000)におけるナビメッシュ

The Official Counter-Strike Bothttp://aigamedev.com/insider/presentation/official-counter-strike-bot/

Page 156: CODE FES 2017 講演資料

Counter Strike: Path Following (デモ)

The Official Counter-Strike Bothttp://aigamedev.com/insider/presentation/official-counter-strike-bot/

Page 157: CODE FES 2017 講演資料

Dragon Age : Way Point

Dragon Age pathfinding program put to the testhttps://www.youtube.com/watch?v=l7YQ5_Nbifo

Page 158: CODE FES 2017 講演資料

位置解析システム

Page 159: CODE FES 2017 講演資料

TPS (Tactical Point System)

• 戦術位置検索システム

• 目的に応じたポイントをその場で探し出す。

• CryEngineで発想され、2011年ぐらいから実装されている。

• Unreal Engine 4では、EQS(Evaluation Query System)で同じ機能がある。BehaviorTreeや、BluePrintから呼び出して使える。

Page 160: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

このような状況でAIは次にどこに行くべきか?を自分で考えさせたい。

Page 161: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

動的にポイントを生成します

Page 162: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

フィルター1:そもそも足場の悪い点を除外します。

Page 163: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

フィルター2:敵に近くのポイントも除外します

Page 164: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

フィルター3:味方に近くのポイントも除外します

Page 165: CODE FES 2017 講演資料

高台

野原

味方AI(現在位置)

フィルター4:残ったポイントの中で一番高い場所を選択します。

Page 166: CODE FES 2017 講演資料

TPS (Tactical Point System)

ゲーム中(ランタイム)に、グリッドか円形にポイントを生成。

条件を設定して要らないポイントをふるい落とす

条件を設定して要らないポイントをふるい落とす

残ったポイントを評価する

一点だけが残る

Page 167: CODE FES 2017 講演資料

(例)クエリー(Query)システム=問い合わせシステム

目的地

味方 味

味方

Query(最短パス)

Query(安全パス)

Query(味方合流パス)

Query(武器の届く、高台ポイント)

Page 168: CODE FES 2017 講演資料

ポイントを動的に配置して評価する

Page 169: CODE FES 2017 講演資料
Page 170: CODE FES 2017 講演資料
Page 171: CODE FES 2017 講演資料

Matthew Jack, Mika VehkalaSpaces in the Sandbox: Tactical Awareness in Open World Games (GDC2013)http://www.gdcvault.com/play/1018038/Spaces-in-the-Sandbox-Tactical

Page 172: CODE FES 2017 講演資料

世界 / データ群(Undefined)

センサーエフェクター

インフォメーション・フロー

知識表現

思考

エージェント・アーキテクチャ