Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ゲームAIの中の数学(下)

2,761 views

Published on

ゲームの人工知能の中に潜む数学を順番に解説します。
(上)(下)編からなります。

(上)
https://www.slideshare.net/youichiromiyake/ai-75435950

1.  迷路とデータ構造と数学
2.  ダンジョン自動生成のアルゴリズム
3.  ナビゲーションAIとグラフ上の数学
4.  位置解析システムとフィルタリング
5.  力学系と意識の理論
6.  シミュレーションベースと動的計画法
7.  強化学習と格闘ゲーム
8.  ユーティリティとキャラクターの生理と心理
9.  知能方程式とゲームAIの本質
10. 統計学習とユーザーの癖の抽出
11.  ランクシステムと正規分布
12.  遺伝的アルゴリズムとキャラクターたちの進化
13.  ニューラルネットワークとキャラクターの学習
14.  ディープラーニングと囲碁AI
15.  ニューロエボリューションとバトルロワイヤル
16.  影響マップと勢力図
17.  プロシージャル技術とレベル自動生成
18.  グラフィクス自動生成とフラクタル
19.  街自動生成とL-ツリー
20.  Sporeとプロシージャル技術
21.  EVE ONLINE と拡散律速凝集シミュレーション

Published in: Education
  • Be the first to comment

ゲームAIの中の数学(下)

  1. 1. ゲームAIの中の数学(下) 三宅 陽一郎 三宅陽一郎@miyayou 2017.4.24 https://www.facebook.com/youichiro.miyake http://www.slideshare.net/youichiromiyake y.m.4160@gmail.com
  2. 2. 目次 第一部 ゲームAIと人工生命 第二部 ゲームAIの中の数学
  3. 3. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  4. 4. 5. 力学系と意識の理論
  5. 5. http://www.math.sci.osaka- u.ac.jp/~sumi/cpxdyn11meeting.html http://www.c.u- tokyo.ac.jp/guidance/depart03.html 力学系=変数とその発展(主に差分方程式や微分方程式による) 力学系
  6. 6. 谷淳 • 1981年に早稲田大学理工学部機械工学科を卒業。 • 千代田化工建設株式会社にてプラント配管設計。 • スタンフォード大学、ミシガン大学 人工知能(修士号) • ソニーコンピューターサイエンス研究所 • 理化学研究所 脳科学研究センター 動的認知行動研究チーム チームリーダー • KAIST 教授 認知ロボットの実験から考える「自己」とは? ~理研の谷淳氏が東京財団「VCASI」で講演 http://robot.watch.impress.co.jp/docs/news/20091217_336516.html
  7. 7. 主体と客体(谷淳) 谷淳、「力学系に基づく構成論的な認知の理解」、脳・身体性・ロボット-知能の創発をめざして (インテリジェンス・ダイナミクス 1) 土井 利忠 (編纂) 、 丸善出版、2012
  8. 8. 主体と客体(谷淳) • この図では、まず仮に主体と客体という二項対立 の構造を想定してみる。客体環境からボトムアップ するセンソリの流れを主体はある構えを持ちトップ ダウン的に予測し解釈しようとする。両者の相互作 用を経て認識が成立し、行為が生成される。 谷淳、「力学系に基づく構成論的な認知の理解」、Springer 心と環境は溶け合っている 身体と環境も溶け合っている Chaotic
  9. 9. 主体と客体(谷淳) • 認識の結果は主体の内部を変化させ、また生成された行為 は環境を変化させる。この相互作用を通して、主体から出発 したトップダウンの流れと客体から出発したボトムアップの流 れは分離不可能になり、もはや主体と客体といった区別は 無意味になる。この時に初めて、古典的な認知論で想定さ れてきた、客体として操作される表象と、それを操作する主 体といった構図からも自由になれるのである。 • いかにこのような相互作用の場を構築するか、本文では筆 者らが行ってきた一連の認知ロボット実験について解説しな がら、本問題について議論していく。 • 谷淳、「力学系に基づく構成論的な認知の理解」、Springer
  10. 10. 主体と客体(谷淳) 谷淳、「力学系に基づく構成論的な認知の理解」、脳・身体性・ロボット-知能の創発をめざして (インテリジェンス・ダイナミクス 1) 土井 利忠 (編纂) 、 丸善出版、2012 自己判断をフィードバックループのように、ニューラルネットワークの入力に再帰入力 することで、センサーの情報と自分の予測情報を同時にインプットする力学系が発生する。 これによって自己と客体を混合する力学系が発生する。
  11. 11. 主体と客体(谷淳) 谷淳、「力学系に基づく構成論的な認知の理解」、脳・身体性・ロボット-知能の創発をめざして (インテリジェンス・ダイナミクス 1) 土井 利忠 (編纂) 、 丸善出版、2012
  12. 12. ∞意味の起源
  13. 13. ∞意味の起源
  14. 14. ∞意味の起源 知能(主体)
  15. 15. ∞意味の起源 意識
  16. 16. サブサンプション・アーキテクチャ(ロドニー・ブルックス) INPUT OUTPUT 時間 情報抽象度 反射的に行動 少し場合ごとに対応 抽象的に思考 理論的に考える 言語化のプロセス = 自意識の構築化 Subsumpution Architecture 運動の実現のプロセス = 身体運動の生成 主体(知能) 意識
  17. 17. ∞意味の起源 自我 外部からの流れと主体的な流れの交わるポイントで意識が形成される
  18. 18. ∞意味の起源 実際はさまざまな反射的な思考が、主導権を争っている 自我
  19. 19. ∞意味の起源 そのインタレース(競合的状況)の上に自我がある 自我
  20. 20. 意識の持続性 現在の思考 意 識 意 識 下 潜在的に活動しつつ待機している思考 =それぞれ問題設定が違う (フレームが違う) 短い時間
  21. 21. 意識の持続性 現在の思考 常にあらゆる想定される事態について 分散して思考している=いつでも主導権を 握ろうとしている。 意 識 意 識 下
  22. 22. 意識の持続性 意 識 長い時間
  23. 23. 意識の持続性 現在の思考 意 識 現在の思考 持続的意識
  24. 24. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  25. 25. 6. シミュレーションベースと動的計画法
  26. 26. シミュレーション・ベース • シミュレーションは、ここではエージェントの想 像のこと。 • 問題を定式化できない場合、実際に頭の中 で動かしてみることを意味する。 • ゲームの場合は、実際にゲームのルール・原 理に従って運動させてみる。
  27. 27. シミュレーション・ベース ※イメージです。 要所、要所のシミュレーション結果を実際の世界の状況と比較して、 フィードバックをかける。
  28. 28. シミュレーション・ベース ジャンプするシミュレーションを行うことで、成功するジャンプを見出して実行する。
  29. 29. Warfarmeにおける壁面移動 Daniel Brewer, “The Living AI in Warframe’s Procedural Space Ships” (Game AI Conference 2014) ※登録が必要なサイトです http://archives.nucl.ai/recording/the-living-ai-in-warframes-procedural-space-ships/ プレイヤー AI プレイヤーが「ジャンプ・壁面走り・ジャンプ」したデータから 学習して、AIがそのデータをもとに同じ動きをする。 ジャンプ 壁面走り ジャンプ
  30. 30. シミュレーション・ベース 加速・減速など自由な軌道を描けるAIが、複雑な地形を通過するときに、 複数の運動シミュレーションを走らすことで、もっともエレガントな軌道を見出す。
  31. 31. Armored Core V における空中移動 岡村 信幸, ARMORED CORE Vのパス検索 (CEDEC 2011) https://cedil.cesa.or.jp/cedil_sessions/view/593 START GOAL
  32. 32. Armored Core V における空中移動 岡村 信幸, ARMORED CORE Vのパス検索 (CEDEC 2011) https://cedil.cesa.or.jp/cedil_sessions/view/593 START GOAL
  33. 33. Armored Core V における空中移動 岡村 信幸, ARMORED CORE Vのパス検索 (CEDEC 2011) https://cedil.cesa.or.jp/cedil_sessions/view/593 START GOAL 動的計画法によるパス検索
  34. 34. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  35. 35. 7. 強化学習と格闘ゲーム
  36. 36. 強化学習とは? 行動選択 =ポリシー (π) 環境(Env) 行動(a) 状態(S) 報酬 報酬 関数 環境のモデルはよくわからない。 でも、行動をして、それに対する結果(=報酬)が環境から返って来る。 その報酬から、現在の状態と行動の評価を見直して、 行動選択の方針を変えて行くことを強化学習という。
  37. 37. 強化学習 (例)マルチバンディッド問題 スロット マシン ルーレット マシン フラッシュ マシン AI
  38. 38. 強化学習(例) スロット マシン ルーレット マシン フラッシュ マシン AI π : どのマシンで賭けをするか? a_0:アクション a_1:アクション a_2:アクション R_0 : 報酬 R_1:報酬 R_2:報酬 強化学習 (例)マルチバンディッド問題
  39. 39. 強化学習(例) スロット マシン ルーレット マシン フラッシュ マシン AI π : どのマシンで賭けをするか? a_0:アクション a_1:アクション a_2:アクション R_0 : 報酬 R_1:報酬 R_2:報酬 最初から、どのマシンに賭けていいか、わからない。 少しずつ賭けつつ、どのマシンからの報酬が良いかを判断しながら、 賭けを続ける。 =強化学習 環境と自分のアクションのインタラクションを見ながら、 随時、行動を決定する基準を変えて行くこと。 強化学習 (例)マルチバンディッド問題
  40. 40. 強化学習(例) スロット マシン ルーレット マシン フラッシュ マシン AI π : どのマシンで賭けをするか? a_0:アクション a_1:アクション a_2:アクション R_0 : 報酬 R_1:報酬 R_2:報酬 π : 最初はどのマシンにも同じ確率 1/3 で賭ける。 でも、最初100ドルずつ賭けた時の報酬が、50ドル、20ドル、30ドル だったとしたら? π : どのように変化させるか? 例えば、 5:2:3 など。 強化学習 (例)マルチバンディッド問題
  41. 41. 強化学習 行動選択 =ポリシー (π) 環境(Env) 行動(a) 状態(S) 報酬 報酬 関数 環境のモデルはよくわからない。 でも、行動をして、それに対する結果(=報酬)が環境から返って来る。 その報酬から、現在の状態と行動の評価を見直して、 行動選択の方針を変えて行くことを強化学習という。
  42. 42. 強化学習(例) 強化学習 (例)格闘ゲーム キック パン チ 波動 R_0 : 報酬=ダメージ
  43. 43. 強化学習 (例)格闘ゲームTaoFeng におけるキャラクター学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx
  44. 44. 強化学習 (例)格闘ゲームTaoFeng におけるキャラクター学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx Microsoft Research Playing Machines: Machine Learning Applications in Computer Games http://research.microsoft.com/en-us/projects/mlgames2008/ Video Games and Artificial Intelligence http://research.microsoft.com/en-us/projects/ijcaiigames/
  45. 45. 強化学習 (例)格闘ゲームTaoFeng におけるキャラクター学習 実際は、AIの状態(距離など)に対してアクションが学習される。 多くの技(攻撃20種類、防御10種類ほど)が強化学習される。 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx
  46. 46. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  47. 47. 8. ユーティリティと キャラクターの生理と心理
  48. 48. ユーティリティ・ベース • ユーティリティ・ベースは高度に抽象的な戦術 決定の方法です。 • 世界をモデル化し、評価すべき行動群の効用 (ユーティリティ)を数値に還元します。
  49. 49. Ⓒ2014 SQUARE ENIX CO., LTD. All Rights Reserved. The Sims のAIの原理 三宅陽一郎、「Spore におけるゲームAI技術とプロシージャル」 (DiGRA Japan 第14回 月例研究 http://www.digrajapan.org/modules/mydownloads/images/study/20080704.pdf 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
  50. 50. 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
  51. 51. オブジェクトに仕込むデータ構造 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
  52. 52. NPCに仕込むデータ構造 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
  53. 53. Hunger +20 Comfort -12 Hygiene -30 Bladder -75 Energy +80 Fun +40 Social +10 Room -60 Mood +18 Toilet -Urinate (+40 Bladder) -Clean (+30 Room) -Unclog (+40 Room) Bathtub -Take Bath(+40 Hygiene) (+30 Comfort) -Clean (+20 Room) Mood +26 Mood +20 [原則] 周囲の対象に対する、あらゆる可能な行動から、 Happiness (ここではMood) 係数を最大化する行動を選択する。 最適な行動を選択する
  54. 54. Moodの計算のためのウエイト Mood = W_Hunger(X_Hunger) * X_Hunger + W_Engergy(X_Energy) * X_Energy + … w_ w_ w_ w_ w_ w_ w_ w_ = Mood (-100..+100) (ウエイト=Moodへどれぐらい貢献するか)
  55. 55. 効用(Utility)の計算の仕方 W_Hunger関数 X_Hunger W_Hunger(-80) -80 60 W_Hunger(60)
  56. 56. 効用(Utility)の計算の仕方 W_Hunger関数 X_Hunger W_Hunger(-80) -80 60 W_Hunger(60) -80の時の食事欲求 = W_Hunger(-80)*(-80) 60の時の食事欲求 = W_Hunger(60)*(60) Δ(変化分)=W_Hunger(60)*(60) - W_Hunger(-80)*(-80)
  57. 57. 効用(Utility)の計算の仕方 W_Hunger関数 X_Hunger W_Hunger(-80) -80 60 W_Hunger(60) -80の時の食事欲求 = W_Hunger(-80)*(-80) 60の時の食事欲求 = W_Hunger(60)*(60) Δ(変化分)=W_Hunger(60)*(60) - W_Hunger(-80)*(-80) 効用 効用
  58. 58. 限界効用逓減の法則 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) の方が Δ(60→90) より圧倒的に大きい ある程度満たされたものを満たすより、 満たされないものをある程度満たす方が大きな満足をもたらす 効用 ビールは一杯目が一番おいしい
  59. 59. The Sims 3 では、多くのムードや欲求が準備される。 行動 対象 GDC09 資料 http://www.gdcvault.com/play/1452/(307)-Breaking-the-Cookie-Cutter
  60. 60. 並木 幸介 [CEDEC]ぽかぽかアイルー村における、アフォーダンス指向のAI事例。AIに多様な振 る舞いをさせる手法 http://cedil.cesa.or.jp/session/detail/697
  61. 61. アフォーダンスとユーティリティ 並木 幸介 [CEDEC]ぽかぽかアイルー村における、アフォーダンス指向のAI事例。AIに多様な振 る舞いをさせる手法 http://cedil.cesa.or.jp/session/detail/697
  62. 62. アフォーダンスとユーティリティ 並木 幸介 [CEDEC]ぽかぽかアイルー村における、アフォーダンス指向のAI事例。AIに多様な振 る舞いをさせる手法 http://cedil.cesa.or.jp/session/detail/697
  63. 63. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  64. 64. 9. 知能方程式とゲームAIの本質
  65. 65. 知能方程式 ユーザーの知的体験 = ユーザーの心理 x キャラクターの賢さ 人工知能
  66. 66. 知能方程式 ユーザーの知的体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況
  67. 67. 知能方程式 http://mmorpg18.com/real/raiderz/ モンスターと「あと一撃で戦闘不能」な時に会うのと、 モンスターと「HPがまんたん」の時に出会うのでは、心理が違う。
  68. 68. 知能方程式 ユーザーの体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況 ユーザーを追い込む
  69. 69. 知能方程式 好きなキャラクタ-に言われるのと、 どうでもいいキャラクターに言われるのは違う。 あり がと http://www.jp.playstation.com/software/title/jp0571npjj00313_000000000000000001.html
  70. 70. 知能方程式 ユーザーの体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況 ユーザーを追い込む ユーザーを心理を引き出す
  71. 71. 知能方程式 ユーザーの体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況 状況を作り出すことで、 ユーザーを追い込む ユーザーの心理を引き出す ゲームデザイナーの仕事
  72. 72. キャラクターのリアリティ • ユーザーから何を引き出すか? ゲームの状況 ユーザー ユーザーか ら引き出す もの キャラクター の リアリティ
  73. 73. 知能方程式 ユーザーの体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況 ユーザーを追い込む ユーザーを心理を引き出す =状況を作り出す ゲームデザイナーの仕事 エンジニアの仕事
  74. 74. 知能方程式 人工知能 = 知識 x 思考 考えるゲームを知識として 表現すること ユーザーの体験 = ユーザーの心理 x キャラクターの賢さ 人工知能ゲームの状況
  75. 75. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  76. 76. 10. 統計学習とユーザーの癖の抽出
  77. 77. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx
  78. 78. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx
  79. 79. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 • 揺らぎ • ライン – コーナーやそのコンビネーションに対し て、どれぐらいスムーズに車をガイドするか。 • コーナーへの突入スピードとブレーキを踏むタイ ミングと。保守的か過激か。 • コーナーの頂点にどれぐらい近づくか、どれぐら いの速度でそこを抜けるか? • コーナーを抜ける時のスピードとコーナーを回る 時のスピード。 Drivatar がプレイヤーのコントロールから学習するもの Microsoft Research Drivatar™ in Forza Motorsport http://research.microsoft.com/en-us/projects/drivatar/forza.aspx
  80. 80. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx プレイヤーの特性を解析する 特徴となる数値をドライブモデルに渡す
  81. 81. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx レーシングラインを事前に構築する。生成というよりテーブルから組み合わせる。
  82. 82. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx レーシングラインを事前に構築する。生成というよりテーブルから組み合わせる。
  83. 83. 機械学習 (例)FORZA MOTORSPORT におけるドライビング学習 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx レーシングラインに沿わせるのではなく、理想とする位置とスピードから コントローラーの制御を計算して、物理制御によって車を運転する。
  84. 84. Forza motorsports (EA) Jeffrey Schlimmer, "Drivatar and Machine Learning Racing Skills in the Forza Series" http://archives.nucl.ai/recording/drivatar-and-machine-learning-racing-skills-in-the-forza-series/
  85. 85. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  86. 86. 11. ランクシステムと正規分布
  87. 87. 機械学習 (例) Halo®3におけるオンライン・マッチング・システム Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx
  88. 88. 機械学習 (例) Halo®3におけるオンライン・マッチング・システム • TrusSkill =プレイヤーの強さを正規分布の中 央値と標準偏差として扱う。 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx μ : 中央値 σ: 標準偏差
  89. 89. 機械学習 (例) Halo®3におけるオンライン・マッチング・システム • TrusSkill =プレイヤーの強さを正規分布の中 央値と標準偏差として扱う。 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx μ : 中央値 σ: 標準偏差 その人の強さを表す その人の強さの正確さを示す。 100回やってこのランクの人と 1000回やってこのランクの人では 1000回の人の方が正確 =標準偏差が小さい
  90. 90. 機械学習 (例) Halo®3におけるオンライン・マッチング・システム • スキル 𝜇 𝐴, 𝜎𝐴 のプレイヤーと、スキル 𝜇 𝐵, 𝜎 𝐵 のプレイヤーが マッチングする確率は、 Ralf Herbrich, Thore Graepel, Joaquin Quiñonero Candela Applied Games Group,Microsoft Research Cambridge "Forza, Halo, Xbox Live The Magic of Research in Microsoft Products" http://research.microsoft.com/en-us/projects/drivatar/ukstudentday.pptx μ : 中央値 σ: 標準偏差 𝑒 − (𝜇 𝐴−𝜇 𝐵)2 2𝐶2 𝑑 (𝑑 = 2𝛽2 𝑐 )
  91. 91. 機械学習 (例) Halo®3におけるオンライン・マッチング・システム 2人が対戦して勝ったとき、負けた時の中央値、標準偏差の変化 知能と情報 : 日本知能情報ファジィ学会誌: journal of Japan Society for Fuzzy Theory and Intelligent Informatics 22(6), 745-756, 2010-12-15 日本知能情報ファジィ学会 「オンラインゲームにおける人工知能・. プロシージャル技術の応用」 http://igda.sakura.ne.jp/sblo_files/ai-igdajp/image/JSFTII_22-6_online20game_Miyake.pdf
  92. 92. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  93. 93. 12. 遺伝的アルゴリズムと キャラクターたちの進化
  94. 94. 遺伝的アルゴリズムの応用 集団を一定の方向に進化させる方法 最初の世代 新世代(100~世代後) … 世代を経て進化させる 1つの世代が次の世代を交配によって産み出す
  95. 95. 遺伝的アルゴリズムの仕組み 遺伝子 遺伝子 次世代 親① 親② 母集団から優秀な親を 2体ピックアップ 遺伝子を掛け合わせる 次世代の子供を産み出す (selection) (crossover) (production) 現世代 このサイクルをくり返すことで世代を進めて、望ましい集団を産み出す 遺伝子 遺伝子
  96. 96. (例)① GA Racer 遺伝的アルゴリズムによって、遠くまで到達できるレーサーを作成する。 最初はここまでしか たどり着けないが… だんだんと遠くまで、 たどりつけるようにする。 Mat Buckland, "Building Better Genetic Algorithm", 11.4., AI Game Programming Wisdom 2 (CD-ROMにソースコードと実行ファイルがあります) 最初の世代 新世代(100~世代後)
  97. 97. ②シミュレーションとNPCの評価 NPCが生きるゲーム世界の中で、実際に一定時間動作させるなどし て、製作者がNPCに望む目標に対する評価値(達成値)をつける。 順位 評価値 1位 86.3 2位 78.4 3位 75.3 ..… … 100位 38.2 ゲーム製作者の意図を反映する評価関数を作る (例) 強いNPCを作りたければ、評価値=0.7*撃破数+0.3* 残りHP 取り合えず生き延びることできるNPCなら、 評価値=生存時間 ゲーム世界 敵 敵 敵 君はこの世界でどれだけ僕が求めるに相応しいのだ? 遺伝子を評価するのではなく、その遺伝子を持つ個体が、 世界でどれだけ優秀であるかを測る。
  98. 98. 評価値から適応度を計算する 順位 評価値 1位 86.3 2位 78.4 3位 75.3 ..… … 100位 38.2 順位 適応度 1位 9.32 2位 8.83 3位 7.81 ..… … 100位 0.02 評価値から、その個体の環境に対する適応度を計算する。 評価値が大きいほど、適応度は大きくなるようにしておく。 評価値とは、その環境で達成した行為の点数のこと。 適応度とは、環境にどれぐらい対応しているかを表す。 両者の対応関係は、比例関係にあるならどう作ってもよい。 (例) 同じでいいや。 適応度 = 評価値 上位の点数は、差に意味がないから 適応度= log (評価値/100 ) など。
  99. 99. (例)④アストロノーカ 最初はすぐに罠にかかるが、 だんだんと罠にかからないようになる MuuMuu, PlayStation®用ソフト「アストロノーカ」(Enix, 1998) http://dlgames.square-enix.com/jp/psga/2008/astronoka/ http://www.muumuu.com/product.html 新世代(5~世代後)最初の世代 野菜 食べたい 世界最高峰の遺伝的アルゴリズムを使ったゲーム (AIをどうゲームに使うか、という手本のようなゲーム)
  100. 100. どういうゲーム? 珍しい野菜を育てる しかしバブーが野菜を食べに来る トラップを仕掛けて野菜を守れ! MuuMuu, PlayStation®用ソフト「アストロノーカ」(Enix, 1998) 高値で取引、そして野菜コンテストで優勝! http://dlgames.square-enix.com/jp/psga/2008/astronoka/ http://www.muumuu.com/product.html
  101. 101. 森川幸人, 「テレビゲームへの人工知能技術の利用」, 人工知能学会誌vol.14 No.2 1999-3 http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-iapp-7.pdf http://www.1101.com/morikawa/1999-04-10.html に準拠します。 以下の解説は 詳細は以下の資料へ
  102. 102. (例)アストロノーカ MuuMuu, プレイステーション用ソフト「アストロノーカ」(Enix, 1998) http://www.muumuu.com/games/astro/
  103. 103. 全体の流れ http://www.muumuu.com/data/2003_cedec.ppt 森川幸人, 赤尾容子, 「アリの知恵はゲームを救えるか?」,CEDEC2003
  104. 104. 全体の流れ トラップを配置する 1日の始まり トラップバトル開始 トラップバトル終了 トラップ成績算出 各個体の成績算出 順位を決定 下位2体を削除 適応度に応じて親を選択 子供2体を生成 新しい世代を生成 規定世代に達した? 1日の終了 世代交代数を修正 突然変異率を修正
  105. 105. 4-① 初期の個体集合を生成 個体を多数(GAにはある程度の母数が必要)用意し、 各NPCに遺伝子コードを設定し、初期値を設定する。 56x8=448ビット 遺伝子身長 耐性_快光線腕力 脚力 耐性_かかし体重 1.87 6.85 16.25 25.03 25.03 16.25 6.85 1.87 0 1 2 3 4 5 6 7 [各ビットの重み] [バブーの属性(総計56)]
  106. 106. 4-②シミュレーションとNPCの評価 トラップを奥へと通り抜けることができるほど、 評価点が高くなる。 適応度 =成績+TB時間*0.3+エンジョイ*0.5+トラップ点+安全点+HP*0.5 要した時間 トラップに対する耐性 http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-iapp-7.pdf
  107. 107. ゲームシステムとしての工夫 全体の適応度の平均値 1日の適応度の伸び 世代交代数 工夫その① 遺伝的アルゴリズムは集団に対するアルゴリズム 一体のトラップバトルの裏で他の20体も同じトラップバトルをして、 全体として世代交代をさせている。 工夫その② 遺伝的アルゴリズムは進化のスピードがプレイヤーに体感させるには遅い プレイヤーには「1世代の変化」と言っているが、 実はだいたい1日5世代分進化させている。 工夫その③ プレイヤーから見て 毎日、同じ適応度の 上昇になるように、 世代交代数を調整している
  108. 108. 第2期③ニューラルネットワークと遺伝的アルゴリズム 遺伝的アルゴリズムとニューラルネットワークが ゲームAIの視野の中に入って来た。
  109. 109. (例)決して多くない 1996年 BATTLECRUISER: 3000AD (3000AD) 1997年 がんばれ森川君2号 (muumuu) 2000年 Colin McRae Rally 2.0 (Codemasters) 2001年 Black & White (Lionhead Studio) 遺伝的アルゴリズム ニューラルネットワーク 1998年 アストロノーカ (muumuu)
  110. 110. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  111. 111. 13. ニューラルネットワークと キャラクターの学習
  112. 112. ニューラルネットを理解しよう① 基本思想 コネクショ二ズム(結合主義) 知性とは脳の活動によって産まれるのだ。 知性とは脳は100億以上の ニューロン(神経素子)の結合である。 だったら、ニューロン(のモデル)を用いた 回路(ニューラルネットワーク)によって 知能を作ることが可能ではないか! (since 1943) http://www.sanko-junyaku.co.jp/product/bio/catalog/nhc_animal/rat-neuronal-3striatum.html ニューラルネットだけで知性の機能を 全て再現してみよう!
  113. 113. 神経素子(ニューロン)とは? 入力 入力 入力 出力 入力 この中にはイオン(電解,Na+,K+) 溶液が入っていて、入力によって電圧が 高まると出力する仕組みになっています。 100mVぐらい ニューラルネットワーク内シグナル伝達スピード 100(m/sec) … 案外遅い http://www.brain.riken.go.jp/jp/aware/neurons.html
  114. 114. ニューラルネットを理解しよう② 基本原理 http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html 医学的知識 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html モデル化 数学的モデル ニューロン 人工ニューロン 入出力関係のグラフ 入出力関係の関数(シグモイド関数)
  115. 115. ニューラルネットを理解しよう② 数学的原理 http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html 医学的知識 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html モデル化 数学的モデル ニューロン 人工ニューロン 入出力関係のグラフ 入出力関係の関数(シグモイド関数) ニューラルネットワーク (ニューロンをつなげたもの) 道具はこれで全て。これで何ができるだろう?
  116. 116. ニューラルネットを理解しよう② 基本原理 http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html 医学的知識 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html モデル化 数学的モデル ニューロン 人工ニューロン 入出力関係のグラフ 入出力関係の関数(シグモイド関数) ニューラルネットワーク (ニューロンをつなげたもの) 道具はこれで全て。これで何ができるだろう? 一旦、モデル化 したら、元に なったモデルは ひとまず忘れて よいのです。
  117. 117. ニューラルネットを理解しよう③ 数学的原理 数学的モデル 入力信号 =繋がっている ニューロンからやっ て来ます ウエイト(重み) =各ニューロン間の結合の強さ 「入力信号x重み」+「バイアス」(初期電位、適当な小さな値) 出力信号 (0~1の間) バイアスをうまく調整して、 このセンシティブな領域に入力が集中するように 調整しよう!(ニューラルネットの技術的なコツ)
  118. 118. ニューラルネットを理解しよう③ 数学的原理 数学的モデル 階層型ニューラルネットワーク … 一方向にニューロンをつなげたもの 入力層 隠れ層 出力層 重み 重み 最初に定義するもの=ウエイト(重み) 、バイアス とりあえず全ての結合を定義しておく(ニューロン間の重みを0にすれば切れる) 数値の組み が入ります 数値の組み が出ます これは3層の例だけど、 何層つなげてもよい 一旦定義してから変えることができないもの…全体の構造 変えることができるもの…ウエイト(重み)
  119. 119. ニューラルネットを理解しよう④ 学習 数学的モデル 数値の組み が入ります 階層型ニューラルネットで学習とは、ある入力に対して特定の出 力(学習信号)になるようにウエイトを変化させることを言います。 学習信号 実際の信号 誤差信号 ① 手動で少しずつ勘を頼りに変えて行く。 まず無理 ② えらい人が考えた方法を使ってみる。 誤差伝播法 伝播する 誤差信号 伝播する 誤差信号 どうやって?
  120. 120. ニューラルネットを理解しよう④ 学習 数学的モデル 数値の組み が入ります 教師信号と実際の出力の差を、ウエイトを調整する ことで、縮めて行く。 学習信号 実際の信号 誤差信号 伝播する 誤差信号 伝播する 誤差信号 ニューラルネットの出力側から、誤差分を、後ろ側に分担して 負担するように、後ろのニューロンへ、そのニューロンが 詰める大きさを含んだ情報を伝播して行く。 誤差逆伝播法(Back Propagation Method)
  121. 121. ここで、誤差逆伝播法の技術的解説です。 やや煩雑なので、 まずは、サンプルプログラムなどを動かしてみてから 理解するのがよいと思います。
  122. 122. 誤差逆伝播法を習得しよう① 「入力層3、隠れ層6、出力層2」なら全部で30個のウエイトがある。 各ウエイトを、ほんの少しずつ変化させて行きます(逐次的近似法)。 W+ΔW これを、同じ教師信号を使って何度もくり返すことで、だんだんと 教師信号に近い出力を出させるようにします。 基本的な考え方 w1+Δw1 w0+Δw0 w2+Δw2 では、一体どれぐらい変えればいいのだろうか?
  123. 123. 誤差逆伝播法を習得しよう② 最速降下法 変数を操作して、出力を目標値に近付ける方法。 w の関数 F(w) を F0 に逐次的に近似するには、 として、 十分に小さい数 αによって、 w を w + Δw としながら近付ける。 Δw = ー α× w R   2 0 ))(( FwFR 
  124. 124. 誤差逆伝播法を習得しよう② ΔW ΔW w ① とりあえず少しずつずつ進みましょう。(小さい数αを用意。適当なスケール) ② 傾斜のきついところは最下点より遠いので大胆に進んでしまいましょう。 ③ 最下点近くは、傾斜が緩いはずなので、ゆっくり進みましょう。 ΔW = ーα× w R   ΔW Y0 2 0 ))(( YwYR  最速降下法
  125. 125. 誤差逆伝播法を習得しよう③ ΔW = ーα× 2 0 ))(( YwYR  最速降下法 w R   学習信号(T) 実際の信号(Out) 誤差信号(Error) ΔW = ーα× w R   2/))(( 2 TwOutR  ニューラルネットの場合(出力層につい て) W+ΔW Input  OutOutInputErrorW  1**   )1(1**)(  nWOutOutInputErrornW  教師信号 慣性項 (解の振動を抑える) ΔW(n)とΔW(n-1)が 異符号なら、振れ幅を 小さくするから。 1step 前の 変化分
  126. 126. 誤差逆伝播法を習得しよう③ ΔW = ーα× 2 0 ))(( YwYR  最速降下法 w R   ΔW = ーα× w R   2 ))(( TwOutR  ニューラルネットの場合(出力層でない場合) W+ΔW Input   )1()(*1**)(   nWwOutOutInputnW i i  教師信号 Output 教師信号 教師信号 教師信号 W0 W1 W2 慣性項 (解の振動を抑える) 1step 前の 変化分
  127. 127. 誤差伝播法解説おわり (ここはニューラルネットで唯一難解な部分です。 幾つかの参考書を読まれることをお勧めします。)
  128. 128. ニューラルネットを理解しよう④ 学習 数学的モデル 数値の組み が入ります 教師信号と実際の出力の差を、ウエイトを調整する ことで、縮めて行く。 学習信号 実際の信号 誤差信号 伝播する 誤差信号 伝播する 誤差信号 一つの学習信号に対して、誤差伝播法を何度もくり返して ウエイトを変化させて収束させ、。学習信号を出力できるようにします。
  129. 129. 二つの人工知能 IF (s_collison==true) register_all(s_star); assign_edge(); assign_vertex(); mix_all(); シンボルによる人工知能 (シンボリズム)) ニューラルネットによる人工知能 (コネクショニズム) IBM ワトソン など AlphaGo など http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html
  130. 130. ニューラルネットを理解しよう① 基本思想 コネクショ二ズム(結合主義) 知性とは脳の活動によって産まれるのだ。 知性とは脳は100億以上の ニューロン(神経素子)の結合である。 だったら、ニューロン(のモデル)を用いた 回路(ニューラルネットワーク)によって 知能を作ることが可能ではないか! (since 1943) http://www.sanko-junyaku.co.jp/product/bio/catalog/nhc_animal/rat-neuronal-3striatum.html ニューラルネットだけで知性の機能を 全て再現してみよう!
  131. 131. 神経素子(ニューロン)とは? 入力 入力 入力 出力 入力 この中にはイオン(電解,Na+,K+) 溶液が入っていて、入力によって電圧が 高まると出力する仕組みになっています。 100mVぐらい ニューラルネットワーク内シグナル伝達スピード 100(m/sec) … 案外遅い http://www.brain.riken.go.jp/jp/aware/neurons.html
  132. 132. ニューラルネットを理解しよう② 数学的原理 http://www.pri.kyoto-u.ac.jp/brain/brain/11/index-11.html 医学的知識 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/sozai/ai.html モデル化 数学的モデル ニューロン 人工ニューロン 入出力関係のグラフ 入出力関係の関数(シグモイド関数) ニューラルネットワーク (ニューロンをつなげたもの) 道具はこれで全て。これで何ができるだろう?
  133. 133. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  134. 134. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  135. 135. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  136. 136. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  137. 137. 出力 入力 (DPS=Damage per second) Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  138. 138. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  139. 139. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  140. 140. Neural Networks in Supreme Commander 2 (GDC 2012) Michael Robbins (Gas Powered Games) http://www.gdcvault.com/play/1015406/Off-the-Beaten-Path-Non http://www.gdcvault.com/play/1015667/Off-the-Beaten-Path-Non ニューラルネットワークの応用
  141. 141. ニューラルネットワークの応用 Black & White (Lionhead,2000) クリーチャーを育てていくゲーム。 クリーチャーは自律的に行動するが、 訓練によって学習させることができる。 http://www.youtube.com/watch?v=2t9ULyYGN-s http://www.lionhead.com/games/black-white/ http://www.4gamer.net/games/001/G000163/
  142. 142. Belief – Desire – Intention モデル Desire (Perceptrons) Opinions (Decision Trees) Beliefs (Attribute List) Intention Overall Plan (Goal, Main Object) Attack enemy town Specific Plan (Goal, Object List) Throw stone at house Primitive Action List Walk towards stone, Pick it up, Walk towards house, Aim at house, Throw stone at house Richard Evans, “Varieties of Learning”, 11.2, AI Programming Wisdom
  143. 143. Belief – Desire – Intention モデル Desire (Perceptrons) Opinions (Decision Trees) Beliefs (Attribute List) Richard Evans, “Varieties of Learning”, 11.2, AI Programming Wisdom Low Energy Source =0.2 Weight =0.8 Value = Source*Weight = 0.16 Tasty Food Source =0.4 Weight =0.2 Value = Source*Weight = 0.08 Unhappiness Source =0.7 Weight =0.2 Value = Source*Weight = 0.14 ∑ 0.16+0.08+0.14 Threshold (0~1の値に 変換) hunger Desire(お腹すいた度)欲求を決定する 対象を決定する それぞれの対象の 固有の情報 他にも いろいろな 欲求を計算 Hunger Compassion Attack(戦いたい) Help ニューラルネットワークの応用 Black & White (Lionhead,2000)
  144. 144. Belief – Desire – Intention モデル Desire (Perceptrons) Opinions (Decision Trees) Beliefs (Attribute List) 戦いたい? +0.9 -0.2 味方敵 +0.4 +0.1 -0.3 小さい 大きい中 ニューラルネットワークの応用 Black & White (Lionhead,2000) Richard Evans, “Varieties of Learning”, 11.2, AI Programming Wisdom http://piposozai.blog76.fc2.com/
  145. 145. Belief – Desire – Intention モデル Desire (Perceptrons) Opinions (Decision Trees) Beliefs (Attribute List) Intention Overall Plan (Goal, Main Object) Attack enemy town Specific Plan (Goal, Object List) Throw stone at house Primitive Action List Walk towards stone, Pick it up, Walk towards house, Aim at house, Throw stone at house Richard Evans, “Varieties of Learning”, 11.2, AI Programming Wisdom 何に対して何を行うか決定 特定の行動を決定 詳細な行動 ニューラルネットワークの応用 Black & White (Lionhead,2000)
  146. 146. Belief – Desire – Intention モデル Desire (Perceptrons) Opinions (Decision Trees) Beliefs (Attribute List) Intention Overall Plan (Goal, Main Object) Attack enemy town Specific Plan (Goal, Object List) Throw stone at house Primitive Action List Walk towards stone, Pick it up, Walk towards house, Aim at house, Throw stone at house 何に対して何を行うか決定 特定の行動を決定 詳細な行動 「何に対して何をするか」悩んでいる。 ニューラルネットワークの応用 Black & White (Lionhead,2000) Richard Evans, “Varieties of Learning”, 11.2, AI Programming Wisdom 14:35-
  147. 147. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  148. 148. 14. ディープラーニングと囲碁AI
  149. 149. AlphaGO 膨大な棋譜のデータ (人間では多過ぎて 読めない) この棋譜を そっくり打てる ように学習する 自己対戦して 棋譜を貯める この棋譜を そっくり打てる ように学習する AlphaGO
  150. 150. Deep Q-Learning Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller (DeepMind Technologies) Playing Atari with Deep Reinforcement Learning http://www.cs.toronto.edu/~vmnih/docs/dqn.pdf 画面を入力 操作はあらかじめ教える スコアによる強化学習
  151. 151. 深階層ニューラルネットワーク http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html ニューラルネットワーク=信号(波形)処理だけで知能を作る。
  152. 152. 岡野原大輔「一般向けのDeep Learning」 http://www.slideshare.net/pfi/deep-learning-22350063 Deep Learning = 多層型ニューラルネットワーク
  153. 153. Yurie Oka「実装ディープラーニング」 http://www.slideshare.net/yurieoka37/ss-28152060 階層型ニューラルネット+階層型学習
  154. 154. 学習過程解析 Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller (DeepMind Technologies) Playing Atari with Deep Reinforcement Learning http://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
  155. 155. • Pπ ロールアウトポリシー(ロールアウトで討つ手を決める。 Pπ(a|s) sという状態でaを討つ確率) • Pσ Supervised Learning Network プロの討つ手からその 手を討つ確率を決める。Pσ(a|s)sという状態でaを討つ確 率。 • Pρ 強化学習ネットワーク。Pρ(学習済み)に初期化。 • Vθ(s’) 局面の状態 S’ を見たときに、勝敗の確率を予測 する関数。つまり、勝つか、負けるかを返します。
  156. 156. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  157. 157. 15. ニューロエボリューションと バトルロワイヤル
  158. 158. ⑤ニューラルネットワークの構造が進化させる 「NEAT」の技術 Mat Buckland, Chapter 11, AI techniques for game programming, Premier Press, 2002 (実行ファイルとソースコードがCD-ROMにあります) これまでニューラルネットは、最初に構造を定義した後は変化しなかった。 動的にニューラルネットの構造を変化させる技術 Neuron Evoluation of Augmenting Topologies (NEAT)
  159. 159. NEAT 回路の構成を遺伝子コードで表現する。 Weight: 1.2 From: 1 To: 3 Enabled: Y Recurrent: N Innovation: 1 Weight: -3 From: 1 To: 4 Enabled: Y Recurrent: N Innovation: 6 Weight: 0.7 From: 2 To: 4 Enabled: Y Recurrent: N Innovation: 2 Weight: -2.1 From: 3 To: 4 Enabled: Y Recurrent: N Innovation: 6 Weight: 1.1 From: 3 To: 5 Enabled: N Recurrent: N Innovation: 3 Weight: 0.8 From: 4 To: 5 Enabled: Y Recurrent: N Innovation: 4 Weight: -1 From: 5 To: 3 Enabled: Y Recurrent: Y Innovation: 7 ID: 1 Type: Input ID: 2 Type: Input ID: 3 Type: hidden ID: 4 Type: hidden ID: 5 Type: Output 2 1 4 3 5 つなぎ方を定義する遺伝子 ニューロンを定義する遺伝子 入力 出力
  160. 160. NEAT 回路の構成を遺伝子コードで表現する。 Weight: 1.2 From: 1 To: 3 Enabled: Y Recurrent: N Innovation: 1 Weight: -3 From: 1 To: 4 Enabled: Y Recurrent: N Innovation: 6 Weight: 0.7 From: 2 To: 4 Enabled: Y Recurrent: N Innovation: 2 Weight: -2.1 From: 3 To: 4 Enabled: Y Recurrent: N Innovation: 6 Weight: 1.1 From: 3 To: 5 Enabled: N Recurrent: N Innovation: 3 Weight: 0.8 From: 4 To: 5 Enabled: Y Recurrent: N Innovation: 4 Weight: -1 From: 5 To: 3 Enabled: Y Recurrent: Y Innovation: 7 ID: 1 Type: Input ID: 2 Type: Input ID: 3 Type: hidden ID: 4 Type: hidden ID: 5 Type: Output 2 1 4 3 5 リンク(つなぎ方)を定義する遺伝子 ニューロンを定義する遺伝子 Innovation ID によってリンク、ニュー ロンを全遺伝子共通の管理する。 無効 入力 出力
  161. 161. NEATにおける交叉 親1 2 1 7 3 4 1 1->4 2 2->4 3 3->4 6 3->7 7 7->4 12 1->7 1 1->4 2 2->4 3 3->4 4 2->5 5 5->4 8 5->9 9 9->4 15 3->9 親2 2 1 3 95 4 Innovation ID ID順に並べます。 1 1->4 2 2->4 3 3->4 1 1->4 2 2->4 3 3->4 4 2->5 5 5->4 6 3->7 7 7->4 8 5->9 9 9->4 12 1->7 15 3->9 交 叉 4 2->5 5 5->4 8 5->9 9 9->4 15 3->9 1 1->4 2 2->4 3 3->4
  162. 162. NEATにおける交叉 親1 2 1 7 3 4 1 1->4 2 2->4 3 3->4 6 3->7 7 7->4 12 1->7 1 1->4 2 2->4 3 3->4 4 2->5 5 5->4 8 5->9 9 9->4 15 3->9 親2 2 1 3 95 4 Innovation ID 交 叉 2 1 3 95 4 4 2->5 5 5->4 8 5->9 9 9->4 15 3->9 1 1->4 2 2->4 3 3->4 子供=新しいニューラルネットワーク
  163. 163. 第3世代 第929世代 第1368世代 左は俯瞰図(赤は衝突してしまってい る) 右は適応度ベスト4のニューラルネット
  164. 164. ⑥リアルタイム「NEAT」を使ったシミュレーションゲーム 「 NERO 」 Neural Networks Research Group, Department of Computer Sciences, University of Texas at Austin, Neuro-Evolving Robotic Operatives, http://www.nerogame.org/, (ゲームがあります) ①rtNEAT(リアルタイムNEAT)システムの上で、ユーザーが兵士を訓練する。 ②訓練させた兵士同士を対戦させる。
  165. 165. 「 NERO 」 敵察知レーダー 左/右 前/後ろ オブジェクトへ の距離 ターゲットオン 兵士のニューラルネット 敵LOFセンサー (射線) バイアス 射撃 初期状態
  166. 166. 「 NERO ver2.0」 敵察知レーダー 左/右 前/後ろ オブジェクトへ の距離 ターゲットオン 兵士のニューラルネット 敵LOFセンサー (射線) バイアス 射撃 NEAT によって 発展して行く
  167. 167. 全体の仕組み リアルタイムシミュレーション 兵士が一人死ぬ 適応度の高い2親を選んで 遺伝子を交叉させて、新しい 兵士を作る ゲーム内で活動させて成績を見ることで、だんだんと 優秀な個体だけを残して、新しい個体を生成して行く。
  168. 168. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 反復的に試行を重ねて徐々に賢くなる  最初はランダムな行動  バトルのシミュレーションを繰り返す中で「学習」し  徐々に有効な行動を選択できるようになっていく 遺伝的アルゴリズム 強化学習
  169. 169. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  「遺伝」を模したアルゴリズム  遺伝子の交叉、突然変異、環境適応による淘汰  適応度の低い個体を淘汰し、優れた個体を次の世代へ  交叉・突然変異などを繰り返して最適解に近づけていく 第N世代 ニューラルネットワーク x 遺伝的アルゴリズム 第1世代 第2世代 突然変異 交叉
  170. 170. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. プロトタイプ
  171. 171. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  172. 172. 16. 影響マップと勢力図
  173. 173. Influence Map(影響マップ) http://www.fdaw.unimaas.nl/education/4.5GAI/slides/Influence%20Maps.ppt 0,2 0,4 0,6 0,4 0,2 0,0 0,4 0,6 0,8 0,6 0,4 0,2 0,6 0,8 1,0 0,8 0,6 0,4 0,4 0,6 0,8 0,6 0,4 0,2 0,2 0,4 0,6 0,4 0,2 0,0 0,0 0,2 0,4 0,2 0,0 0,0 セル分割されたマップに、問題とする性質の評価値を 記録して行く方法 (例)①占有度
  174. 174. Influence Map(影響マップ) http://www.fdaw.unimaas.nl/education/4.5GAI/slides/Influence%20Maps.ppt セル分割されたマップに、問題とする性質の評価値を 記録して行く方法 (例)①占有度 ② 通過可能確率 0,2 0,4 0,6 0,4 0,2 0,0 0,4 0,6 0,8 0,6 0,4 0,2 0,6 0,8 1,0 0,8 0,6 0,4 0,4 0,6 0,8 0,6 0,4 0,2 0,2 0,4 0,6 0,4 0,2 0,0 0,0 0,2 0,4 0,2 0,0 0,0
  175. 175. Influence Map(影響マップ) http://www.fdaw.unimaas.nl/education/4.5GAI/slides/Influence%20Maps.ppt 0,2 0,4 0,6 0,4 0,2 0,0 0,4 0,6 0,8 0,6 0,4 0,2 0,6 0,8 1,0 0,8 0,6 0,4 0,4 0,6 0,8 0,6 0,4 0,2 0,2 0,4 0,6 0,4 0,2 0,0 0,0 0,2 0,4 0,2 0,0 0,0 (例)様々なIMから計算して戦略的な位置取りを計算する 0,50 0,75 0,75 1,00 0,75 0,50 0,75 1,00 1,00 1,00 0,75 0,50 0,75 1,00 0,75 0,75 0,50 0,25 0,75 1,00 0,75 0,50 0,25 0,00 0,75 1,00 0,75 0,50 0,25 0,00 0,75 1,00 0,75 0,50 0,25 0,00 4 6 8 8 8 8 6 4 2 0 -1 -2 -4 -4 -4 -2 4 6 8 8 8 8 4 2 1 0 -2 -4 -4 -2 4 6 8 8 8 6 3 1 0 -2 -4 -4 -4 -2 4 6 8 8 8 6 6 4 1 0 -2 -4 -4 -2 2 4 6 8 6 6 4 4 0 -1 -2 -4 -4 -4 -2 1 2 4 6 6 4 2 2 -4 -5 -3 -3 -4 -4 -2 -1 3 3 3 3 4 2 2 0 -4 -5 -5 -8 -8 -6 -4 -2 3 3 2 2 2 0 -2 -4 -8 -10 -10 -8 -4 -2 3 3 3 2 2 1 0 -4 -8 -10 -10 -8 -8 -4 -2 2 2 2 2 1 1 0 -3 -8 -10 -10 -8 -8 -4 -2 1 1 1 1 0 0 -2 -4 -8 -8 -8 -8 -8 -8 -8 -8 0 0 0 0 0 -1 -1 -2 -5 -6 -6 -6 -8 -8 -8 0 0 0 0 -1 -2 -2 -2 -4 -4 -4 -6 -8 -8 -8 -8 0 0 0 0 -1 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 0 0 0 0 -1 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
  176. 176. Age of Empire(AOE)における利用例 AOEはタイルベースの RTS(リアルタイムストラテジー) マップは毎回、自動生成
  177. 177. Age of Empire(AOE)における利用例① Figure 3: Influence map around gold mines. 1.0 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 金鉱=アトラクター (吸引源) AIに金鉱の発掘小屋を適切な位置に置かせるには? = 金鉱に近いが、近すぎてはいけないところに置く -1.0 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 防壁=デトラクター (排斥源) 金鉱の回りのタイル(仮想的)防壁を置いて、 近すぎも遠すぎもしない点に最高点のタイルが来るようにする = 自動位置検出 金鉱発掘小屋の最適位置自動検出
  178. 178. Age of Empire(AOE)における利用例② 1.0 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 高い場所=アトラクター (吸引源) 兵士を街からなるべく遠く、高台の場所に置かせたい = 高い場所(アトラクター)、家がある(デトラクター)とする -1.0 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 家がある場所=デトラクター (排斥源) 兵隊の配置の最適位置自動検出
  179. 179. Age of Empire(AOE)における利用例③ この排斥源が与えるコストをパス検索のコストとすると、 「なるべく遠ったことにない敵の基地からみつかりにくいパス」 を見つけることが出来る。 -1.0 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 -0.6 既知の敵のビル、以前通ったルート = デトラクタ (排斥源) 兵隊の配置の最適位置自動検出
  180. 180. SimCity における影響マップの利用 第一層 道路や鉄道、要素の大きさ要 素間の関係をシミュレーション 第二層 「人口密度」「交通渋滞」「環境 汚染度」「ランドバリュー」「犯 罪発生率」をシミュレーション 第三層 地形の影響をシミュレーション 第四層 「人口増加率」「消防署」「警察 署」「消防署の影響」「警察署 の影響」をシミュレーション Crime = Pop. Density^2 - Land Value - Police Effect Land Value = Distance[Zonetype] + Terrain + Transport “AI: A Desing Perspective” AIIDE 2005 http://www.aiide.org/aiide2005/talks/index.htm l http://thesims.ea.com/us/will/ 多摩 豊,角川書店, 1990 「ウィル・ライトが明かすシムシティーのすべて」,
  181. 181. Killzone 2 における影響マップ ボット、砲塔、死亡ポイントの情報を反映させる さまざまな意思決定に用いる
  182. 182. Killzone 2 における戦略的パス検索 スカッド毎にコストと影響マップを使って戦略パスを見出す
  183. 183. Killzone 2 における戦略的パス検索 スカッド毎にコストと影響マップを使って戦略パスを見出す
  184. 184. Killzone 2 における戦略的パス検索 スカッド毎にコストと影響マップを使って戦略パスを見出す
  185. 185. Killzone 2 における戦略的パス検索 スカッド毎にコストと影響マップを使って戦略パスを見出す 安全 危険
  186. 186. Killzone 2 における戦略的パス検索 スカッド毎にコストと影響マップを使って戦略パスを見出す
  187. 187. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  188. 188. 17. プロシージャル技術と レベル自動生成
  189. 189. プロシージャル技術 ゲームAI技術 AI技術 プロシージャル 技術 コンテンツ自動生成技術 (PCG, Procedural Contents Generation )
  190. 190. Rogue (1980)のレベル生成法 Rect[0] Rect[0] Rect[1] Rect[0] Rect[1] Rect[2] Rect[3] http://racanhack.sourceforge.jp/rhdoc/intromaze.html
  191. 191. Rogue (1980)のダンジョン生成法 Rect[0] Rect[0] Rect[1] Rect[0] Rect[1] Rect[2] Rect[3] このようにアセット(ゲームのデータ)をツールなどを通して製作するのではなく、 プログラムで作ることを「プロシージャル・コンテンツ・ジェネレーション」(PCG)と言う。 http://racanhack.sourceforge.jp/rhdoc/intromaze.html
  192. 192. ブラウン運動 ロバート・ブラウン博士によって、1827年に発見された現象。 微粒が媒質(液体)の中で行う不規則な運動。 アインシュタイン博士によって、熱運動する媒質の不規則な 衝突によって引き起こされると説明された。 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95
  193. 193. ブラウン運動から地形生成 ロバート・ブラウン博士によって、1827年に発見された現象。 微粒が媒質(液体)の中で行う不規則な運動。 アインシュタイン博士によって、熱運動する媒質の不規則な 衝突によって引き起こされると説明された。 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95 宮田一乗「プロシージャル技術の動向」(CEDEC 2008)
  194. 194. ブラウン運動から地形生成 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95 https://www.youtube.com/watch?v=m4JDNzwFZFI
  195. 195. ブラウン運動から地形生成 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95 http://www.kenmusgrave.com
  196. 196. ブラウン運動から地形生成 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E9%81%8B%E5%8B%95 http://www.kenmusgrave.com
  197. 197. Elite (1980, BBC) 宇宙を自動生成 https://en.wikipedia.org/wiki/Elite_(video_game)
  198. 198. トルネコの大冒険(チュンソフト、1993) • ダンジョンを自動生成する(rougue)。 https://en.wikipedia.org/wiki/Rogue_(video_game)
  199. 199. NO MAN’S SKY (Hello Games, 2016) http://www.no-mans-sky.com/ 宇宙、星系、太陽系、惑星を自動生成する。
  200. 200. FarCry2 におけるプロシージャル技術 50km四方のマップを作る オブジェクト(草木)&アニメーションデータを自動生成
  201. 201. FarCry2 (Dunia Engine ) デモ 草原自動生成 時間システム 樹木自動生成 動的天候システム 動的天候システム http://www.farcry2-hq.com/downloads,18,dunia-engine-nr1.htm https://www.youtube.com/watch?v=FI3oR6vqn1Q
  202. 202. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  203. 203. 18. グラフィクス自動生成とフラクタル 次世代ゲームにおける自動生成技術 https://www.slideshare.net/youichiromiyake/ss-51549802
  204. 204. グラフィックス自動生成 I. 地形自動生成 II. 植物自動生成 III. 雲自動生成
  205. 205. プロシージャルの歴史: CG1980 フラクタル・イメージ 地形自動生成 植物自動生成 雲自動生成 フラクタル 幾何学 1975 SIGGRAPH 1987 フラクタル幾何学を基礎とした プロシージャルなモデル生成 テクスチャ自動生成 3Dモデル生成 1997,2002 パリン・ノイズ 2Dモデル生成 1988 20031994 20001990 Terragen natFX MAX SpeedTree Pro FX
  206. 206. フラクタルの思想 http://www.mt.crimea.com/climb/red_stone.htm
  207. 207. フラクタルの思想 http://www.geocities.jp/tsushimanaika/_gl_images_/200605062144000.jpg
  208. 208. フラクタルの思想 自然のパターンというのは、 同じ模様がスケールを変えてくり返されている http://www.mt.crimea.com/climb/red_stone.htm http://image.blog.livedoor.jp/haglofsstore/imgs/5/8/58234b04.jpghttp://www.geocities.jp/tsushimanaika/_gl_images_/200605062144000.jpg
  209. 209. フラクタルの思想 自然のパターンというのは、 同じ模様がスケールを変えてくり返されている http://weblog.seki.net/image/20070118_0008_b.jpg
  210. 210. フラクタルの思想 自然のパターンというのは、 同じ模様がスケールを変えてくり返されている http://blog.so-net.ne.jp/photo-library/archive/c40380796
  211. 211. フラクタルの思想 自然のパターンというのは、 同じ模様がスケールを変えてくり返されている 同じ模様をスケールを変えて重ねれば 自然のオブジェクトに見えるはずだ http://wwwitblpg.kansai.jaea.go.jp/itblpg/resource/Fractal/topics/fractal_topics01.html
  212. 212. フラクタルの思想 自然のパターンというのは、 同じ模様がスケールを変えてくり返されている 同じ模様をスケールを変えて重ねれば 自然のオブジェクトに見えるはずだ フラクタルによるグラフィクス生成 http://en.wikipedia.org/wiki/Fractal
  213. 213. グラフィックス自動生成 I. 地形自動生成 II. 植物自動生成 III. 雲自動生成
  214. 214. 地形自動生成 中点変位法 h h/2 h/4 h/4 h/8 h/8 スケーリングに応じて、振れ幅を変えていく フラクタルイメージ―理論とプログラミング (ハードカバー) ハインツ・オットー パイトゲン(編集), ディートマー ザウペ(編集), 山口 昌哉(翻訳) シュプリンガー・フェアラーク東京 (1990/08) 中点変位法によるフラクタル曲線の描画, http://nis-lab.is.s.u-tokyo.ac.jp/~hasimoto/applet/CG/FractalLine.html
  215. 215. 地形自動生成 Jacob Olsen, Realtime Procedural Terrain Generation http://oddlabs.com/download/terrain_generation.pdf 2次元中点変位法 ボロノイ図 ノイズ法(濃い=低い、白い=高い) + =
  216. 216. Ken Musgrave http://www.kenmusgrave.com/
  217. 217. Terragen(Planetside Software) 風景、自動生成生成ソフト http://www.planetside.co.uk/terragen/ 海外のゲームや映画の背景として利用されている
  218. 218. 文字列からの地形自動生成 Darwinia(Introversion Software) (1) 4人で製作 (2) ベッドルーム・プログラマー2人 (3) グラフィッカー 0人 (4) 2006年 Independent game festival 大賞 技術情報 未公開 Introversion Software, "Procedural Content Generation", GameCareerGuide.com, 2007 小さなプロダクションでも プロシージャルを使うことで 質の高い大きなゲームを 作ることができる可能性を 知らしめて、英語圏の ゲーム関係者に衝撃と注目 を集めている 4gamers(体験版):http://www.4gamer.net/patch/demo/darwinia/darwinia.shtml
  219. 219. Age of Empires III における地形自動生成 西川善司, 「3DゲームファンのためのAGE OF EMPIRESエンジン講座(後編)こだわりの影生成と算術合成 されるディテール、次回作はXbox2?」, GAME Watch, 2005
  220. 220. References (1) Jacob Olsen,Realtime Procedural Terrain Generation http://oddlabs.com/download/terrain_generation.pdf (2) Ken Musgrave http://www.kenmusgrave.com (3) Terragen(Planetside Software) http://www.planetside.co.uk/terragen (4) Introversion Software, "Procedural Content Generation", GameCareerGuide.com, 2007 http://www.gamecareerguide.com/features/336/procedural_content_.php (5)西川善司, 「3DゲームファンのためのAGE OF EMPIRESエンジン講座(後 編)こだわりの影生成と算術合成されるディテール、次回作はXbox2?」, GAME Watch, 2005 http://watch.impress.co.jp/game%2Fdocs/20050313/aoe3.htm Figures on the pages are from these references.
  221. 221. グラフィックス自動生成 I. 地形自動生成 II. 植物自動生成 III. 雲自動生成
  222. 222. 植物自動生成 Since 1968 A. Lindenmayer L-system 文法規則 構成要素 F,+,-,[,] 規則 F F[-F]F[+F][F] F 0世代 1世代 F[-F]F[+F][F] F[-F]F[+F][F][- F[-F]F[+F][F]] F[-F]F[+F][F][+ F[-F]F[+F][F]][F[-F]F[+F][F]] 2世代 F - まっすぐ進む + 30度左回転 ー 30度右回転 []内は個別のスタック 解釈 研究分野としては 人工生命、CGにまたがる
  223. 223. 植物自動生成 Since 1968 A. Lindenmayer L-system 文法規則 構成要素 F,+,-,[,] 規則 F-> F[-F]F[+F][F] F 0世代 1世代 F[-F]F[+F][F] 2世代 3世代 4世代 5世代 Simulating plant growth by Marco Grubert http://www.acm.org/crossroads/xrds8-2/plantsim.html
  224. 224. The Sketch L-System: Global Control of Tree Modeling Using Free-form Strokes Takashi Ijiri, Shigeru Owada, Takeo Igarashi. The Sketch L-System: Global Control of Tree Modeling Using Free-form Strokes http://www-ui.is.s.u-tokyo.ac.jp/~ijiri/SketchLSystem/index.html L-system を用いて簡単な操作で木のモデルを作成するツール
  225. 225. デモ The Sketch L-system SG06_SketchLSystem Takashi Ijiri, Shigeru Owada, Takeo Igarashi. The Sketch L-System: Global Control of Tree Modeling Using Free-form Strokes http://www-ui.is.s.u-tokyo.ac.jp/~ijiri/SketchLSystem/index.html
  226. 226. 発展:確率的 L-system 構成要素 F,+,-,[,] 規則 F -> F[+F]F[-F]F 0.33 F -> F[+F]F 0.33 F -> F[-F] 0.33 植物以外に使えないだろうか? じっと見る Simulating plant growth by Marco Grubert http://www.acm.org/crossroads/xrds8-2/plantsim.html 規則を変えればいろいろな模様が自動的に生成される
  227. 227. L-system によるダンジョン自動生成(三宅案) variables : X Y F constants : + − start : FX rules : (X → X+YF+),(Y → -FX-Y) angle : 90° http://en.wikipedia.org/wiki/L-system
  228. 228. L-system による街の自動生成 City Engine(central pictures) Yoav I H Parish, Pascal Müller http://www.centralpictures.com/ce/tp/paper.pdf http://www.centralpictures.com/ce/ George Kelly, Hugh McCabe, A Survey of Procedural Techniques for City Generation http://www.gamesitb.com/SurveyProcedural.pdf
  229. 229. L-system による街の自動生成 City Engine(central pictures) Yoav I H Parish, Pascal Müller http://www.centralpictures.com/ce/tp/paper.pdf
  230. 230. 自動生成マップ Introversion Software, "Procedural Content Generation", GameCareerGuide.com, 2007
  231. 231. 技術者に大切なこと 一つのプロシージャル技術は、 一つの用途だけでなく、 自分のアイデア一つでいろいろな応用ができる
  232. 232. References (1) Simulating plant growth by Marco Grubert http://www.acm.org/crossroads/xrds8-2/plantsim.html (2) L-System Wiki http://en.wikipedia.org/wiki/L-system (3) The Sketch L-System: Global Control of Tree Modeling Using Free-form Strokes http://www-ui.is.s.utokyo.ac.jp/~ijiri/SketchLSystem/index.html (4) Yoav I H Parish, Pascal Müller http://www.centralpictures.com/ce/tp/paper.pdf (5) City Engine(central pictures) http://www.centralpictures.com/ce/ (6) George Kelly, Hugh McCabe, A Survey of Procedural Techniques for City Generation http://www.gamesitb.com/SurveyProcedural.pdf Figures on following pages are from these references.
  233. 233. グラフィックス自動生成 I. 地形自動生成 II. 植物自動生成 III. 雲自動生成
  234. 234. 雲の自動生成 雲テクスチャー自動生成 雲の3Dモデル自動生成 いろいろなツール上の生成を通して、 よく使われている。 これから 背景として利用 オブジェクト Volumetric procedural model
  235. 235. 雲の自動生成 雲テクスチャー自動生成 Cloud Cover http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Kim Pallister,Generating Procedural Clouds in real time on 3D HW http://www.intel.com/cd/ids/developer/asmo-na/eng/segments/games/20534.htm?page=11 基本方針 2次元のノイズを作りましょう (0~1の値に応じて 塗り分けている) If value is < 0.5 blue If value is > 0.5, blend blue to white 値が大きいところは青く、 小さいところは、値に応じて 白と青を混ぜた色を塗る どんなノイズがよいのだろう? 自然界にあるノイズパターンって何だろう?
  236. 236. パリン・ノイズ Perlin Noise 階層的な分解能の波長を足し合わせて作るノイズ 2倍ずつ細かくなっています = result Perlin Noise, http://freespace.virgin.net/hugo.elias/models/m_perlin.htm
  237. 237. 変化する雲の作り方 Kim Pallister, Generating Procedural Clouds in real time on 3D HW http://www.intel.com/cd/ids/developer/asmo-na/eng/segments/games/20534.htm?page=5
  238. 238. 雲の自動生成 基本方針 雲の3Dモデル自動生成 1 9 22 9 17 9 4 )( 2 2 4 4 6 6  R r R r R r rFcub Wyvill’s standard cublic function ある点を中心とした密度を ピクセルボックス毎に計算     i cubiimplcit qpFwpDensity )( エレメントごとに足し合わせる David S. Ebert ,Volumetric Procedural Implicit Functions, http://www.csee.umbc.edu/~ebert/cloud F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley, David S. Ebert, “Texturing & Modeling: A Procedural Approach 第3版”, Morgan Kaufmann Series in Computer Graphics and Geometric Modeling, 2002
  239. 239. David S. Ebert ,Volumetric Procedural Implicit Functions, http://www.csee.umbc.edu/~ebert/cloud
  240. 240. Microsoft Flight Simulator 2004 Mark.J.Harris,REALISTIC CLOUD ILLUMINATION http://www.markmark.net/clouds/index.htm ビルボードからの様々なレンダリング効果を重ねてリアリティーのある空を再現 (Skywork、GDCで発表)
  241. 241. Microsoft Flight Simulator 2004 Niniane Wang ,Realistic and Fast Cloud Rendering http://jgt.akpeters.com/papers/Wang04/ Mark Harris の方法を発展させる
  242. 242. Microsoft Flight Simulator 2004 8つのリング状の背景とビルボードによる写し込み Niniane Wang ,Realistic and Fast Cloud Rendering http://jgt.akpeters.com/papers/Wang04/
  243. 243. デモ Microsoft Flight Simulator 2004 Niniane Wang ,Realistic and Fast Cloud Rendering http://jgt.akpeters.com/papers/Wang04/
  244. 244. References (1) hugo.elias Cloud Cover http://freespace.virgin.net/hugo.elias/models/m_clouds.htm (2) Kim Pallister,Generating Procedural Clouds in real time on 3D HW http://www.intel.com/cd/ids/developer/asmo- na/eng/segments/games/20534.htm?page=11 (3) David S. Ebert ,Volumetric Procedural Implicit Functions http://www.csee.umbc.edu/~ebert/cloud (4) Mark.J.Harris,REALISTIC CLOUD ILLUMINATION http://www.markmark.net/clouds/index.htm (5) Niniane Wang ,Realistic and Fast Cloud Rendering http://jgt.akpeters.com/papers/Wang04/ (6) Perlin Noise, http://freespace.virgin.net/hugo.elias/models/m_perlin.htm Figures on the pages are from these references.
  245. 245. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  246. 246. 19. 街自動生成とL-TREE
  247. 247. The City Engine Pascal Mueller The CityEngine, http://www.vision.ee.ethz.ch/~pmueller/wiki/CityEngine/Front 文法システムによる街生成
  248. 248. 自動生成マップ Introversion Software, "Procedural Content Generation", GameCareerGuide.com, 2007
  249. 249. 街生成 この分野も、ダンジョン自動生成と同じく 多数の手法が存在する。 しかし、ダンジョン自動生成と違うところは、 非常に多くの研究がされていること。 興味がある方は、英語の文献を含めて 調査して頂くとよい。
  250. 250. 第二部 ゲームAIの中の数学 目次 1. 迷路とデータ構造と数学 2. ダンジョン自動生成のアルゴリズム 3. ナビゲーションAIとグラフ上の数学 4. 位置解析システムとフィルタリング 5. 力学系と意識の理論 6. シミュレーションベースと動的計画法 7. 強化学習と格闘ゲーム 8. ユーティリティとキャラクターの生理と心理 9. 知能方程式とゲームAIの本質 10. 統計学習とユーザーの癖の抽出 11. ランクシステムと正規分布 12. 遺伝的アルゴリズムとキャラクターたちの進化 13. ニューラルネットワークとキャラクターの学習 14. ディープラーニングと囲碁AI 15. ニューロエボリューションとバトルロワイヤル 16. 影響マップと勢力図 17. プロシージャル技術とレベル自動生成 18. グラフィクス自動生成とフラクタル 19. 街自動生成とL-ツリー 20. Sporeとプロシージャル技術 21. EVE ONLINE と拡散律速凝集シミュレーション
  251. 251. 20. SPOREとプロシージャル技術 SporeにおけるゲームAI技術とプロシージャル:ウィル・ライトのゲームAI論 (DLして読んでください) https://www.slideshare.net/youichiromiyake/sporeaiai
  252. 252. Spore とはどんなゲーム? 自分だけの宇宙を作って行くゲーム 単細胞フェーズ http://www.4gamer.net/news/history/2006.05/20060511195155detail.html 集団行動フェーズ ギャラクティックフェーズ 生物、建物、惑星、主要なものは 全てユーザーが生成可能
  253. 253. (1) モデル生成 ① モデルは「リゴブロック」と呼ばれるパーツからなる ② 「リゴブロック」はマウスによって制御ポイントを動かして 変形することができる 正式なモデル ランタイム・モデル パラメーターに沿った アニメーションを製作 ハンドル ユーザーはマウスで コントロールポイントを動かすことで、 モデルを変形する(頂点を直接操作 しているわけではない) Lydia Choy, Ryan Ingram, Ocean Quigley, Brian Sharp, Andrew Willmott Rigblocks: Player-Deformable Objects, http://www.cs.cmu.edu/~ajw/s2007
  254. 254. (2)テクスチャ生成 細かすぎない シンプルすぎない ユーザーが選ぶ uv uv Henry Goffin, Grue, Chris Hecker, Ocean Quigley, Shalin Shodhan, Andrew Willmott, Player-Driven Procedural Texturing, http://www.cs.cmu.edu/~ajw/s2007
  255. 255. (3) 星を創る Andrew Willmott,Creating Spherical Worlds, http://www.cs.cmu.edu/~ajw/s2007
  256. 256. 表面テクスチャ、法線マップ カラーマップ 法線マップ 射影 (ヤコビ行列) 惑星の表面はブラシで凹凸を つけることが出来る Andrew Willmott,Creating Spherical Worlds, http://www.cs.cmu.edu/~ajw/s2007
  257. 257. (4) 惑星表面に植物を植える Andrew Willmott,Creating Spherical Worlds, http://www.cs.cmu.edu/~ajw/s2007
  258. 258. ハルトン・シークエンス ハルトン・シークエンス ① ベースとなる素数を一つ選ぶ。例えば2 ② その素数で、(0,1)区間を選んだ素数の数に分割する ③ 分けた区間をさらに素数の数に分割する。 ここでは(0、1/2)(1/2,1)をさらに2分割する 0 1 2 1 4 1 4 3 1/2 , 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, ….. 1次元ハルトン・シークエンス (1/2,1/3), (1/4,) 1/3 , 1/9, 2/9, 4/9, 5/9, 2/3, 7/9, 8/9, …..
  259. 259. ハルトン・シークエンス ハルトン・シークエンス 1/2 , 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, ….. 2次元ハルトン・シークエンス (1/2,1/3), (1/4,1/9), (3/4,2/9), (1/8,4/9) …. 1/3 , 1/9, 2/9, 4/9, 5/9, 2/3, 7/9, 8/9, ….. 1次元ハルトン・シークエンス 大きい素数を使わなければだいたい均等に分布する 実際は、割り算をビットシフト演算に変えた 高速な Incremental Halton Sequence を使う
  260. 260. 20 100 500 Andrew Willmott,Creating Spherical Worlds, http://www.cs.cmu.edu/~ajw/s2007

×