$30 off During Our Annual Pro Sale. View Details »

人工知能とシュミレーション (とR) - ビギニング/Artificial Intelligence, Simulation, and R: Beginning

S-Katagiri
August 01, 2020

人工知能とシュミレーション (とR) - ビギニング/Artificial Intelligence, Simulation, and R: Beginning

ハイパーリンクがあるためなるべくpdfファイルとしてダウンロードしてご覧ください

中途半端なとこで引きに入っているので続編にご期待下さい
(いつになるかは未定)

S-Katagiri

August 01, 2020
Tweet

More Decks by S-Katagiri

Other Decks in Technology

Transcript

  1. 人工知能とシュミレーション (と R) -
    ビギニング
    ill-identified (Katagiri, Satoshi)
    2020-08-01
    1

    View Slide

  2. 前置き
    導入
    最も簡単なシミュレーション
    これはゲームではないが, ゲーム理論である
    まとめ
    2

    View Slide

  3. 前置き

    View Slide

  4. 自己紹介
    • 粗相を繰り返す男
    • 片桐智志 (Katagiri, Satoshi)
    • 業界 3 年目のピチピチ新米機械学習エンジニアです
    (裏声)
    • Twitter アカウント:@ill-identified
    • 個人ブログ
    • 主語の大きな話が好き
    •『計量経済学と機械学習の関係』(Tokyo.R #80, 文書)
    •『経済学と反事実分析』(Tokyo.R #83, 文書)
    • たまにお役立ち情報を書く
    •『マルコフ連鎖モンテカルロ法の実践ガイド 2: ラン
    クプロット他』
    •『機械学習による確率推定とカリブレーション』
    3

    View Slide

  5. [AD] 求人とインターン
    • Web 広告の会社でやっている, こういう人材が欲し

    • 機械学習に自信のある人
    • 大歓迎
    • 機械学習に拘らず数理的に問題解決できる人

    • 締め切りを守れる人
    • お前の勝ちだ
    • 応募フォームはここ
    • (仕事では Python 使うことが多いです)
    • インターン募集
    • 最近はリモートインターンの対応も進めている
    • 詳細はここ
    4

    View Slide

  6. [AD] rmdja パッケージについて
    • このスライドは R Markdown と日本語対応フォー
    マットパッケージ rmdja で作成
    • rmdja
    • rmarkdown でスライドを pdf で出力するフォーマ
    ットパッケージを作った
    • L
    A
    TEX 使い慣れている人はこれでどんどん発表資料を
    作りましょう
    5

    View Slide

  7. 導入

    View Slide

  8. ソードアート・オンラインという作品がある
    6

    View Slide

  9. ソードアート・オンライン (SAO) とは何か
    • ゲームオーバー = 死の VR ゲームに閉じ込められる
    話 (アインクラッド編)
    • 今回問題にする「アリシゼーション編」は少し違う
    • 仮想世界に閉じ込められるのは同じ
    • 今この話のアニメが放送されている
    7

    View Slide

  10. SAO アリシゼーション世界の基本設定
    • « 人工フラクトライト » という AI が開発される (以
    下, 単に AI)
    •「ルール違反ができる AI」へのブレークスルー目的
    • 仮想世界 « アンダーワールド »(以下, UW) で AI を
    育成し, 文明が形成されている
    • AI は « 禁忌目録 » という法律を自ら生み出す
    • 現状の AI は法に忠実すぎる
    • « 禁忌目録 » を破る AI を求めている
    • 注: 設定を確認したのは 9-18 巻
    • アニメその他のメディアでの追加設定はフォローで
    きていない可能性
    8

    View Slide

  11. そんなシミュレーションを再現できるか?
    • 個人 PC では再現不可能
    • 国家予算規模の量子コンピュータクラスタが存在す
    る設定
    • AI たちは現実と遜色ない世界でシミュレーションさ
    れている
    • シミュレーションのシミュレーションなら可能
    9

    View Slide

  12. シミュレーションとは
    • 現実にありえない状況の実験をできるのがシミュレ
    ーション
    • 重要なのは前提が正しいかどうかではなく「前提か
    ら結果までのロジックが適切かどうか」
    • Tokyo.R #84 『新型コロナウイルスとシミュレーシ
    ョンの話』
    • シュミレーション?
    • ただの趣味です
    • 世間がデータサイエンス =ML か DL になって食傷気
    味だから気分転換
    • なぜコロナウイルスの話で続けなかった?
    • 趣味です
    10

    View Slide

  13. シミュレーションと R
    • そもそも一口に言っても応用分野は多岐にわたる
    • 私も「シミュレーションの歴史」の専門家ではない
    • NetLogo Logo, StarLogo の後継
    • nlrx: R 経由で動かすパッケージ
    • spaDES: 地理・空間的なシミュレーション用パッケ
    ージ
    • R に限定しなければさらに多種のソフトが存在
    • 今回はどれも使わない
    11

    View Slide

  14. 最も簡単なシミュレーション

    View Slide

  15. 単純な動学モデルを考える
    • マクロな結果だけを考える
    • AI 個々の挙動は要約される
    • AI の内的な動きは無視する
    • AI の内部構造は解明が進んでいないという設定
    • 行動最適化問題として定式化するのが難しい
    12

    View Slide

  16. 原作の設定を拾う
    • 作中では (いずれも第 10 巻 2:2 章)
    • 16 体の AI を最初に育てた
    • 300 年分のシミュレーションで 8 万人にまで増加
    • 自然災害や戦争もないので寿命以外での死亡が皆無
    • そもそも殺人事件がまず起こらない
    整合騎士三十一名のうち、禁忌を犯して連行された者
    が半数 vol. 12, ch. 7:1
    • 300 年間のシミュレーションでブレークスルー (候
    補) はこれが全てと仮定
    13

    View Slide

  17. シミュレーションの設定
    • 人工変動は指数増加を仮定
    • (): 人口
    • 微小かつ一定の確率で AI ブレークスルーが起こると
    仮定 (二項分布)
    • (): AI ブレークスルー発生数
    • 禁忌目録違反指数 = Rebelling Index
    ̇
    () = ()
    () ∼ Binom((), )
    • ドットは時間微分
    ̇
    () ∶= ()/
    14

    View Slide

  18. 解説
    • 人口増加は線型常微分方程式
    • 指数関数になる
    • いわゆるマルサス法則 (厳密には違う)
    • ブレークスルー発生数は確率依存
    • 二項分布なので期待値は × ()
    • シミュレーションを 100 回繰り返してゆらぎ確認
    15

    View Slide

  19. パラメータの設定
    • ブレークスルー発生率は作中の実績反映
    • 300 年間で 15 人
    • 人口増加パラメータ も作中の実績反映
    • 300 年で 16 人から 8 万人に増えるように決定
    16

    View Slide

  20. シミュレーションの実装
    • 人口変動は常微分方程式
    • deSolve パッケージで計算
    • ブレークスルー方程式は静的
    • 人口変動計算後にまとめて計算
    exponential <- function(t, y, params){
    with(as.list(c(params, y)),
    {dN <- beta * N; return(list(N = dN))})}
    population <- ode(y = c(N = 16), times = times,
    func = exponential,
    parms = list(beta = beta)) %>%
    as.data.frame %>% as_tibble %>%
    mutate(date = seq(ymd("0001/1/1"), by = "1 day",
    mutate(N = round(N)) 17

    View Slide

  21. シミュレーション結果
    人口 (N)
    ブレークスルー累計 (R)
    0 100 200 300
    0,0
    5,0
    10,0
    15,0
    20,0
    25,0
    0
    20 000
    40 000
    60 000
    80 000
    人界暦(年)
    ブレークスルー累計 (R) 人口 (N)
    18

    View Slide

  22. 結果の考察
    • () は乱数に依存するため当然ながら試行ごとに
    ばらつきあり
    • 300 年経過した時点で概ね期待値と実績が一致
    19

    View Slide

  23. あんまり面白くないですね
    20

    View Slide

  24. これはゲームではないが, ゲーム理論
    である

    View Slide

  25. なにが面白くないか
    1.「シミュレーション」をするまでもなく結果が自明
    • ほとんどが代数的に求められる
    2. 人工知能の進化の可能性に対する洞察が皆無
    • 事実の追認しかしていない
    • 原因と結果の関連性を導くことが本領
    • 参考: AI と構造推定の比較 [2, 3]
    • 結果がモデルとデータのどちらに由来するか知るこ
    とが重要
    • 以前の発表でも少しだけ言及
    21

    View Slide

  26. 設定をより深く掘り下げる 1
    • AI にも 2 種類いる
    •「法の範囲内なら何をやってもいい」利己的 AI
    •「法以外にも守るものがある」利他的 AI
    • 利己的 AI はブレークスルーしないと仮定
    • 利己的 AI は我欲が強く貴族階級を形成した
    • AI は上位者の命令に逆らえない
    皇帝が四人もいたり、爵士と称する貴族が千人以上も
    存在する vol. 11, ch. 6:3
    利他的/利己的 AI 別の人口増加を考えたシミュレー
    ション
    22

    View Slide

  27. ロトカ-ヴォルテラ方程式の性質
    • 2 群の人口の相互作用をモデル化
    • 食物連鎖の安定性を表現
    • 設定次第で 2 通りの結末
    • 互いに増減を繰り返す (共存)
    • ゼロや無限大に発散する (絶滅)
    • つまり永続的増加なし
    • だいぶ初歩的な教科書 [1]
    ̇

    =




    ̇

    =




    23

    View Slide

  28. LV 方程式の解の例
    • https://rpubs.com/gregnishihara/2898 と同
    じ設定
    0
    50
    100
    150
    0 10 20 30 40 50
    time
    個体数
    被捕食者 捕食者
    24

    View Slide

  29. LV 方程式の応用
    • AI 人口を 2 分割
    • 利他的 (altruistic) AI 人口 =
    () ≃ 平民階級
    • 利己的 (selfish) AI 人口 =
    () ≃ 貴族階級
    • LV 方程式の被捕食者と捕食者に見立てる
    • 前近代的な搾取構造があるという描写
    • 本当に取って食うわけではない
    • やや無理のある仮定
    • 作中の研究者たちは人口動態も分析してないことに
    • 1 時点の人口だけではパラメータ不定
    25

    View Slide

  30. 実装
    • これも deSolve で計算可能
    • 参考: https://rpubs.com/gregnishihara/2898
    lv <- function(t, y, param) {
    with(as.list(c(y, param)), {
    dN_A = beta_A * N_A - gamma_A * N_A * N_S
    dN_S = gamma_S * N_S * N_A - beta_S * N_S
    return(list(c(dN_A, dN_S)))
    })
    }
    26

    View Slide

  31. 2 グループの人口動態
    0
    20 000
    40 000
    60 000
    200 300 400
    人界暦(年)
    人口
    NA
    NS
    図 3: LV 方程式での 2 群の人口変化比較
    27

    View Slide

  32. 考察
    • 貴族階級が増えすぎると経済負担により双方の人口
    減少
    • 分かりにくいが最後再び人口増加に転じている
    • 指数的な変化のため, 貴族階級も短期間で急増する
    • そんな柔軟な制度なのか?
    • 帳尻合わせのパラメータの
    カリブレーション
    手動調整は放置
    28

    View Slide

  33. 設定をより深く掘り下げる 2
    • AI あるいは人間どうしの相互作用が重視される原作
    •「意志の強さ」が物質に反映される世界
    • しかしマクロ視点で表現するのは難しい
    • 一旦以下のモデルでお茶を濁す
    Δ
    =




    Δ
    =




    Δ
    ∼ binom(
    , )
    29

    View Slide

  34. 実装
    • 確率を含めるので deSolve では解きづらい
    • 差分方程式で解く
    • for ループなので Rcpp とか cpp11 とか使うべき?
    set.seed(42)
    df <- tibble(time = times, N_A = NA, N_S = NA, N_R
    df$N_A[1] <- 1114; df$N_S[1] <- 4; df$N_R[1] <- 0
    for(t in times[-1]){
    df$N_A[t] <- with(df, (1 +beta_A) * N_A[t-1] - ga
    df$N_S[t] <- with(df, gamma_S * N_S[t-1] * N_A[t-
    df$N_R[t] <- with(df, N_R[t-1] + rbinom(n = 1, si
    }
    30

    View Slide

  35. 結果
    N_S
    N_R
    N_A
    200 300 400
    0
    20 000
    40 000
    60 000
    5,0
    10,0
    0
    2 000
    4 000
    6 000
    8 000
    人界暦(年)
    人口
    NA
    NS
    図 4: LV 方程式での 2 群の人口変化比較
    31

    View Slide

  36. • あんまり変わらないですね
    32

    View Slide

  37. まとめ

    View Slide

  38. 反省
    • なんか斬新なことをやりたかった
    • 人口動学/数理生物学の基本的なモデルを適用しただ
    けだった
    • 時間不足
    • 真面目にやるならば, 感度分析をはじめ, いろいろな
    結果の安定性の検証が必要
    • シミュレーション = ライフゲーム/セルオートマトン
    • 人によってはそういうミクロな挙動を観察するイメ
    ージ?
    • 本当はそっちをオチに持って行きたかった
    • 時間不足…
    • 次回は再び「実用的な話」にする予定
    • 気分次第でしないかもしれない
    33

    View Slide

  39. 参考文献

    View Slide

  40. [1] Burghes, D. N. and M. S. Borrie (1990) Modelling with
    Differential Equations, New York u.a: Ellis Horwood
    Limited, (均田高夫・大町比佐栄訳,
    『微分方程式で数学モデ
    ルを作ろう』
    ,日本評論社,1990 年).
    [2] Igami, Mitsuru (2018) “Artificial Intelligence as
    Structural Estimation: Economic Interpretations of
    Deep Blue, Bonanza, and AlphaGo,” March, arXiv:
    1710.10967.
    [3] (2020) “Artificial Intelligence as Structural
    Estimation: Deep Blue, Bonanza, and AlphaGo,” The
    Econometrics Journal, p. utaa005, March, DOI:
    10.1093/ectj/utaa005.
    34

    View Slide

  41. [4] КавахараРеки (2019) 『Sword Art Online. Tом 15
    Алисизация. Вторжение』
    ,Истари Комикс,
    Moscow,А. Соловьев 訳.
    [5] 川原礫 (2012a) 『ソードアート・オンライン 10 アリシゼー
    ション・ランニング』
    ,アスキー・メディアワークス,東京.
    [6] (2012b) 『ソードアート・オンライン 11 アリシゼー
    ション・ターニング』
    ,アスキー・メディアワークス,東京.
    [7] (2012c) 『ソードアート・オンライン 9 アリシゼーシ
    ョン・ビギニング』
    ,アスキー・メディアワークス,東京.
    [8] (2013a) 『ソードアート・オンライン 12 アリシゼー
    ション・ライジング』
    ,アスキー・メディアワークス,東京.
    35

    View Slide

  42. [9] (2013b) 『ソードアート・オンライン 13 アリシゼー
    ション・ディバイディング』
    ,アスキー・メディアワークス,
    東京.
    [10] (2014a) 『ソードアート・オンライン 14 アリシゼー
    ション・ユナイティング』
    ,株式会社 KADOKAWA,東京.
    [11] (2014b) 『ソードアート・オンライン 15 アリシゼー
    ション・インベーディング』
    ,株式会社 KADOKAWA,東京.
    [12] (2015) 『ソードアート・オンライン 16 アリシゼーシ
    ョン・エクスプローディング』
    ,株式会社 KADOKAWA,東京.
    [13] (2016a) 『ソードアート・オンライン 17 アリシゼー
    ション・アウェイクニング』
    ,株式会社 KADOKAWA,東京.
    [14] (2016b) 『ソードアート・オンライン 18 アリシゼー
    ション・ラスティング』
    ,株式会社 KADOKAWA,東京.
    36

    View Slide