kggk2

Post on 26-May-2015

157 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

コンピュータは

スーパーマリオ

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

@gzfVFYm

簡単な自己紹介

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

• 理論好き.

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

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

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

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

マリオの話は後で…

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

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

今日の話の内容

• 関数最適化

– 関数最適化とは?

– 最適化で何ができる?

• 遺伝的アルゴリズム

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

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

– 他の応用例

関数最適化入門 前半

Q.最適化って何ですか

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

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

中学でやったはず

の最小値を求めなさい.

より最小値は1

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

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

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

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

例えば!

事故率=f(作業時間)

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

⇒工場管理.

さっきやってたこと:

という関数から

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

事故率=f(作業時間)

抽象的に考える

A=f(B)

という関数から

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

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

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

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

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

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

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

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

値段=g(ルート)

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

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

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

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

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

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

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

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

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

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

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

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

最適化の方法とか

勾配法

Newton-Raphson, BFGS

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

進化的アルゴリズム,

数学の知識が必要

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

色々研究されてます

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

(Wikipediaより)

素朴な疑問

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

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

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

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

3,000,000,000通り

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

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

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

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

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

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

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

現実問題として.

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

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

=最適化

質問あればどうぞ!

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

“あの”ゲーム.

土管工(26)

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

“あの”ゲーム.

5秒で紹介 土管工(26)

から 助けるゲーム

ヒゲ

操作方法

十字キー 移動

A ジャンプ

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

アイデア

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

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

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

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

ゲームの操作

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

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

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

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

5200=622301…5 (通り)

140桁

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

17桁

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

(後半へ続く)

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

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

前半終了 質問タイム

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

後半

キリン

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

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

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

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

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

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

首が長いと…

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

豆知識

要するに…

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

よって繁殖する

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

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

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

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

大事な部分だけ抜き出す

色んな個体が居る.

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

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

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

色んな個体が居る.

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

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

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

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

何十世代も繰り返す

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

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

何十世代も繰り返す

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

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

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

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

まとめ

GAは便利.

top related