Download - kggk2
![Page 1: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/1.jpg)
コンピュータは
スーパーマリオ
をクリアできるか? -最適化問題入門-
@gzfVFYm
![Page 2: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/2.jpg)
簡単な自己紹介
• 数理統計をやっている.
• 理論好き.
• プログラムを書くのは苦手.
• ゼミ充(首が回らない)
(宣伝)春休みは解析系のゼミも運営しています.
![Page 3: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/3.jpg)
どうやってマリオをクリアするか?
![Page 4: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/4.jpg)
マリオの話は後で…
(最初はちょっと真面目な話.)
と いきたいところですが…
![Page 5: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/5.jpg)
今日の話の内容
• 関数最適化
– 関数最適化とは?
– 最適化で何ができる?
• 遺伝的アルゴリズム
– 遺伝的アルゴリズムとは
– コンピュータにマリオをクリアさせよう
– 他の応用例
![Page 6: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/6.jpg)
関数最適化入門 前半
![Page 7: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/7.jpg)
Q.最適化って何ですか
A.最大(小)値を求めることです
もっというと、最大(小)値を取る条件を求めることです
![Page 8: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/8.jpg)
中学でやったはず
の最小値を求めなさい.
より最小値は1
![Page 9: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/9.jpg)
あったあった 昔やったなぁ…
と思えなかった人も大丈夫(多分)
![Page 10: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/10.jpg)
Q.何の役に立つんですか
A. 一生食べるのに困らないレベルで 死ぬほど役に立つ.
![Page 11: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/11.jpg)
例えば!
事故率=f(作業時間)
事故率最小にすればいいですね!
⇒工場管理.
![Page 12: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/12.jpg)
さっきやってたこと:
という関数から
事故率最小の作業時間を計算
事故率=f(作業時間)
![Page 13: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/13.jpg)
抽象的に考える
A=f(B)
という関数から
最大のA(とそのときのB)を計算
![Page 14: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/14.jpg)
「最適化」はたくさんの問題を解決する
• 将棋のプログラムも, 最適化が使える.
f(指し手)を最大化すればよい.
王手できる確率=f(指し手)
![Page 15: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/15.jpg)
「最適化」はたくさんの問題を解決する
• 「路線検索」も最適化が使える.
かかる時間=f(ルート)
値段=g(ルート)
f(ルート)最小化で最短ルート.
g(ルート)最小化で最安値.
![Page 16: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/16.jpg)
「最適化」はたくさんの問題を解決する
• 「おすすめユーザーの表示」
仲良さそう度=f(相手)
f(相手)が大きい相手を表示.
![Page 17: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/17.jpg)
「最適化」はたくさんの問題を解決する
• 「問題を解く」操作も最適化が使える.
色がおかしい場所の数 = f(回し方)
f(回し方)=0なる回し方を見つければよい. ⇒f(回し方)を最小化することに相当.
![Page 18: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/18.jpg)
…とまぁ 最適化は凄く役立つ
![Page 19: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/19.jpg)
どうやって 最適化するんですか?
![Page 20: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/20.jpg)
最適化の方法とか
勾配法
Newton-Raphson, BFGS
焼きなましとか Nelder-Meadとか.
進化的アルゴリズム,
数学の知識が必要
自然界を真似る (数学は要らない!)
![Page 21: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/21.jpg)
色々研究されてます
Keyword: オペレーションズ・リサーチ(OR)
(Wikipediaより)
![Page 22: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/22.jpg)
素朴な疑問
全通り試せばいいんじゃないの.
![Page 23: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/23.jpg)
恐ろしい数の組み合わせ.
Ex)ルービックキューブの状態の数
43,252,003,274,489,856,000通り
3,000,000,000通り
Ex)3GHz シングルコアで1秒間に処理できる数
いつになったら計算が終わるのか…
![Page 24: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/24.jpg)
もうちょっと効率的に探そう
例)国内で気温が最低の場所を探す
ちょっとした工夫で計算時間は減る
総当たり)47都道府県全部調べる
工夫)北陸とかだけ調べる
![Page 25: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/25.jpg)
現実問題として.
コンピュータは”遅すぎる”.
コンピュータで”解ける”よう工夫する
=最適化
質問あればどうぞ!
![Page 26: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/26.jpg)
SUPER MARIO BROS. 日本人なら誰でも知ってる
“あの”ゲーム.
土管工(26)
![Page 27: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/27.jpg)
SUPER MARIO BROS. 日本人なら誰でも知ってる
“あの”ゲーム.
5秒で紹介 土管工(26)
![Page 28: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/28.jpg)
姫
亀
を
から 助けるゲーム
ヒゲ
が
![Page 29: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/29.jpg)
![Page 30: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/30.jpg)
操作方法
十字キー 移動
A ジャンプ
動かし方:(↑,↓,←,→,A)の5通り
![Page 31: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/31.jpg)
アイデア
ゲーム開始から0.5秒ごとにコマンド入力
時間(s) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
コマンド → → A → ← → A →
コマンドをどう組み合わせるか
ゲームの操作
![Page 32: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/32.jpg)
死ぬまでに移動した距離 =f(コマンドの組み合わせ)
を最大化すれば良いのでは?
![Page 33: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/33.jpg)
全通り試せばいいじゃん!
100秒分のコマンドを考えるとすると, 200ステップあるので,組み合わせは
5200=622301…5 (通り)
140桁
1秒間に100…00回の計算が可能
17桁
![Page 34: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/34.jpg)
どうやればいいんだろう…
(後半へ続く)
総当たりだと スパコン京でも10123 (秒)かかります!
ビッグバンから46億年=1.5×1017(秒)
![Page 35: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/35.jpg)
前半終了 質問タイム
![Page 36: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/36.jpg)
遺伝的アルゴリズム GENETIC ALGORITHM (GA)
後半
![Page 37: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/37.jpg)
キリン
![Page 38: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/38.jpg)
“自然淘汰”による進化説 ※他にも色々な説があるそうですが,省略.
![Page 39: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/39.jpg)
“自然淘汰”による進化説 ※他にも色々な説があるそうですが,省略.
首の短いキリンも長いキリンも両方居た.
エサを取れる首の長いキリンは生き残りやすい
首の長いキリンどうし交配し, 首の長いキリンが生まれる
![Page 40: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/40.jpg)
この体勢で水を飲めるので 猛獣に襲われてもすぐ逃げられる =生存確率アップ
首が長いと…
そして首の長いキリンが増えるのであった
豆知識
![Page 41: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/41.jpg)
要するに…
生き残る奴は環境に 適応している.
よって繁殖する
![Page 42: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/42.jpg)
環境に適応してるって何ですか 再び
1)首が短い個体, 長い個体, 両方います.
2) (食用の)木が高くなりました.
3) 首が短い個体は子孫を残せません. 首が長い個体がどんどん増えます.
![Page 43: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/43.jpg)
大事な部分だけ抜き出す
色んな個体が居る.
環境に適応できなかった個体は死, 適応出来た個体が繁殖
適応出来た個体の性質を 継ぐ個体が増える.
![Page 44: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/44.jpg)
コレ, 最適化に使えるんじゃないか?
色んな個体が居る.
点数=f(個体)が小さい個体は死, 高い個体が繁殖
点数が高い個体の性質を 継ぐ個体が増える.
![Page 45: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/45.jpg)
色んな(動きをする)マリオが居る. 前に進まないマリオは死, ステージクリアに近いマリオが生き残る.
ステージクリアに近いマリオが繁殖
何十世代も繰り返す
![Page 46: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/46.jpg)
色んな(動きをする)マリオが居る. 前に進まないマリオは死, ステージクリアに近いマリオが生き残る.
ステージクリアに近いマリオが繁殖
何十世代も繰り返す
(凄く肝心な部分なので) 質問あればどうぞ!
![Page 47: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/47.jpg)
ちょっと動画を見てみましょう.
YouTube 「【人工知能】スーパーマリオブラザーズを学習させてみた【GA】 」より
※私が作成した動画ではありません
![Page 48: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/48.jpg)
まとめ
GAは便利.
![Page 49: kggk2](https://reader033.vdocuments.pub/reader033/viewer/2022060111/55641ddcd8b42a69298b49c6/html5/thumbnails/49.jpg)