kggk2

49
コンピュータは スーパーマリオ クリアできるか? -最適化問題入門- @gzfVFYm

Upload: ak-ok

Post on 26-May-2015

157 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: kggk2

コンピュータは

スーパーマリオ

をクリアできるか? -最適化問題入門-

@gzfVFYm

Page 2: kggk2

簡単な自己紹介

• 数理統計をやっている.

• 理論好き.

• プログラムを書くのは苦手.

• ゼミ充(首が回らない)

(宣伝)春休みは解析系のゼミも運営しています.

Page 3: kggk2

どうやってマリオをクリアするか?

Page 4: kggk2

マリオの話は後で…

(最初はちょっと真面目な話.)

と いきたいところですが…

Page 5: kggk2

今日の話の内容

• 関数最適化

– 関数最適化とは?

– 最適化で何ができる?

• 遺伝的アルゴリズム

– 遺伝的アルゴリズムとは

– コンピュータにマリオをクリアさせよう

– 他の応用例

Page 6: kggk2

関数最適化入門 前半

Page 7: kggk2

Q.最適化って何ですか

A.最大(小)値を求めることです

もっというと、最大(小)値を取る条件を求めることです

Page 8: kggk2

中学でやったはず

の最小値を求めなさい.

より最小値は1

Page 9: kggk2

あったあった 昔やったなぁ…

と思えなかった人も大丈夫(多分)

Page 10: kggk2

Q.何の役に立つんですか

A. 一生食べるのに困らないレベルで 死ぬほど役に立つ.

Page 11: kggk2

例えば!

事故率=f(作業時間)

事故率最小にすればいいですね!

⇒工場管理.

Page 12: kggk2

さっきやってたこと:

という関数から

事故率最小の作業時間を計算

事故率=f(作業時間)

Page 13: kggk2

抽象的に考える

A=f(B)

という関数から

最大のA(とそのときのB)を計算

Page 14: kggk2

「最適化」はたくさんの問題を解決する

• 将棋のプログラムも, 最適化が使える.

f(指し手)を最大化すればよい.

王手できる確率=f(指し手)

Page 15: kggk2

「最適化」はたくさんの問題を解決する

• 「路線検索」も最適化が使える.

かかる時間=f(ルート)

値段=g(ルート)

f(ルート)最小化で最短ルート.

g(ルート)最小化で最安値.

Page 16: kggk2

「最適化」はたくさんの問題を解決する

• 「おすすめユーザーの表示」

仲良さそう度=f(相手)

f(相手)が大きい相手を表示.

Page 17: kggk2

「最適化」はたくさんの問題を解決する

• 「問題を解く」操作も最適化が使える.

色がおかしい場所の数 = f(回し方)

f(回し方)=0なる回し方を見つければよい. ⇒f(回し方)を最小化することに相当.

Page 18: kggk2

…とまぁ 最適化は凄く役立つ

Page 19: kggk2

どうやって 最適化するんですか?

Page 20: kggk2

最適化の方法とか

勾配法

Newton-Raphson, BFGS

焼きなましとか Nelder-Meadとか.

進化的アルゴリズム,

数学の知識が必要

自然界を真似る (数学は要らない!)

Page 21: kggk2

色々研究されてます

Keyword: オペレーションズ・リサーチ(OR)

(Wikipediaより)

Page 22: kggk2

素朴な疑問

全通り試せばいいんじゃないの.

Page 23: kggk2

恐ろしい数の組み合わせ.

Ex)ルービックキューブの状態の数

43,252,003,274,489,856,000通り

3,000,000,000通り

Ex)3GHz シングルコアで1秒間に処理できる数

いつになったら計算が終わるのか…

Page 24: kggk2

もうちょっと効率的に探そう

例)国内で気温が最低の場所を探す

ちょっとした工夫で計算時間は減る

総当たり)47都道府県全部調べる

工夫)北陸とかだけ調べる

Page 25: kggk2

現実問題として.

コンピュータは”遅すぎる”.

コンピュータで”解ける”よう工夫する

=最適化

質問あればどうぞ!

Page 26: kggk2

SUPER MARIO BROS. 日本人なら誰でも知ってる

“あの”ゲーム.

土管工(26)

Page 27: kggk2

SUPER MARIO BROS. 日本人なら誰でも知ってる

“あの”ゲーム.

5秒で紹介 土管工(26)

Page 28: kggk2

から 助けるゲーム

ヒゲ

Page 29: kggk2
Page 30: kggk2

操作方法

十字キー 移動

A ジャンプ

動かし方:(↑,↓,←,→,A)の5通り

Page 31: kggk2

アイデア

ゲーム開始から0.5秒ごとにコマンド入力

時間(s) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0

コマンド → → A → ← → A →

コマンドをどう組み合わせるか

ゲームの操作

Page 32: kggk2

死ぬまでに移動した距離 =f(コマンドの組み合わせ)

を最大化すれば良いのでは?

Page 33: kggk2

全通り試せばいいじゃん!

100秒分のコマンドを考えるとすると, 200ステップあるので,組み合わせは

5200=622301…5 (通り)

140桁

1秒間に100…00回の計算が可能

17桁

Page 34: kggk2

どうやればいいんだろう…

(後半へ続く)

総当たりだと スパコン京でも10123 (秒)かかります!

ビッグバンから46億年=1.5×1017(秒)

Page 35: kggk2

前半終了 質問タイム

Page 36: kggk2

遺伝的アルゴリズム GENETIC ALGORITHM (GA)

後半

Page 37: kggk2

キリン

Page 38: kggk2

“自然淘汰”による進化説 ※他にも色々な説があるそうですが,省略.

Page 39: kggk2

“自然淘汰”による進化説 ※他にも色々な説があるそうですが,省略.

首の短いキリンも長いキリンも両方居た.

エサを取れる首の長いキリンは生き残りやすい

首の長いキリンどうし交配し, 首の長いキリンが生まれる

Page 40: kggk2

この体勢で水を飲めるので 猛獣に襲われてもすぐ逃げられる =生存確率アップ

首が長いと…

そして首の長いキリンが増えるのであった

豆知識

Page 41: kggk2

要するに…

生き残る奴は環境に 適応している.

よって繁殖する

Page 42: kggk2

環境に適応してるって何ですか 再び

1)首が短い個体, 長い個体, 両方います.

2) (食用の)木が高くなりました.

3) 首が短い個体は子孫を残せません. 首が長い個体がどんどん増えます.

Page 43: kggk2

大事な部分だけ抜き出す

色んな個体が居る.

環境に適応できなかった個体は死, 適応出来た個体が繁殖

適応出来た個体の性質を 継ぐ個体が増える.

Page 44: kggk2

コレ, 最適化に使えるんじゃないか?

色んな個体が居る.

点数=f(個体)が小さい個体は死, 高い個体が繁殖

点数が高い個体の性質を 継ぐ個体が増える.

Page 45: kggk2

色んな(動きをする)マリオが居る. 前に進まないマリオは死, ステージクリアに近いマリオが生き残る.

ステージクリアに近いマリオが繁殖

何十世代も繰り返す

Page 46: kggk2

色んな(動きをする)マリオが居る. 前に進まないマリオは死, ステージクリアに近いマリオが生き残る.

ステージクリアに近いマリオが繁殖

何十世代も繰り返す

(凄く肝心な部分なので) 質問あればどうぞ!

Page 47: kggk2

ちょっと動画を見てみましょう.

YouTube 「【人工知能】スーパーマリオブラザーズを学習させてみた【GA】 」より

※私が作成した動画ではありません

Page 48: kggk2

まとめ

GAは便利.

Page 49: kggk2