できる!遺伝的アルゴリズム

99
でででCLR/H でで で ででで でででででで

Upload: maehana-tsuyoshi

Post on 14-Jun-2015

23.788 views

Category:

Technology


2 download

DESCRIPTION

オープンソースカンファレンス 2009 Hokkaido with LDD での遺伝的アルゴリズムの説明です。

TRANSCRIPT

Page 1: できる!遺伝的アルゴリズム

できる!

CLR/H  前鼻 毅

遺伝的アルゴリズム

Page 2: できる!遺伝的アルゴリズム

自己紹介

・前鼻 毅(まえはな つよし)・ふつうの基幹系 SE 兼 PM・文系大学出身・大体スープカレーで出来ている・数学ガールいいよね!

twitter:sandinist, mixi:mae

Page 3: できる!遺伝的アルゴリズム

自己紹介

・ C# 使ってます。

・ CLR/H・関数型言語勉強会・数学勉強会とかによく行ってます。

質問は twitter:@sandinist

Page 4: できる!遺伝的アルゴリズム

概要

・遺伝的アルゴリズムについて、 知識のない方を対象に説明します。・遺伝的アルゴリズムを 実装例を元に解説します。

Page 5: できる!遺伝的アルゴリズム

遺伝的アルゴリズムは

・どんなもの?・何に使える?・どうやっているの?・どこまでできるのか?

Page 6: できる!遺伝的アルゴリズム

目的

・遺伝的アルゴリズムが どんなものか分かる

Page 7: できる!遺伝的アルゴリズム

目的 Ex

Ex. 遺伝的アルゴリズムを 実装できそうだと思う

Page 8: できる!遺伝的アルゴリズム

遺伝的アルゴリズム

http://www.flickr.com/photos/fmc550uz/3446971252

Page 9: できる!遺伝的アルゴリズム

そのまえに…

Page 10: できる!遺伝的アルゴリズム

アルゴリズム

とは

・問題を解くための

 

効率的手順を

 

定式化した形で表現したもの

 

数列から

 

最大の数を見つけるアルゴ

リズム

Page 11: できる!遺伝的アルゴリズム

遺伝的アルゴリズム

・遺伝的アルゴリズム・ Genetic Algorithm・ GA

1975 年にミシガン大学のジョン・ H ・ホランド( John Henry

Holland )によって提案

Page 12: できる!遺伝的アルゴリズム

どんなもの?

• 遺伝的アルゴリズムは、

 生物の遺伝の仕組みを 模倣した学習的な手順である。

 

Page 13: できる!遺伝的アルゴリズム

生物の遺伝の仕組み

・メンデルの遺伝の法則・ダーウィンの進化論

Page 14: できる!遺伝的アルゴリズム

メンデルの遺伝の法則

Page 15: できる!遺伝的アルゴリズム

メンデルの遺伝の法則

Page 16: できる!遺伝的アルゴリズム

メンデルの遺伝の法則

Page 17: できる!遺伝的アルゴリズム

メンデルの遺伝の法則

Page 18: できる!遺伝的アルゴリズム

表現型と遺伝子型

表現型PhenoType

遺伝子型GenoType

Page 19: できる!遺伝的アルゴリズム

ダーウィンの進化論

Page 20: できる!遺伝的アルゴリズム

ダーウィンの進化論

Page 21: できる!遺伝的アルゴリズム

ダーウィンの進化論

Page 22: できる!遺伝的アルゴリズム

適者生存

不適応 適応

Page 23: できる!遺伝的アルゴリズム

遺伝的アルゴリズムと生物の進化

表現型 遺伝子型不適応 適応

・各個体が、環境への適応度を持つ。・各個体は遺伝子を持つ。

Page 24: できる!遺伝的アルゴリズム

遺伝的アルゴリズムと生物の進化

表現型 遺伝子型不適応 適応

・適応度が高い個体は生き残る。・適応度が高い遺伝子は 次世代に受け継がれる。

Page 25: できる!遺伝的アルゴリズム

Panta rhei.- Hērakleitos

万物は流転する - ヘラクレイトス

Page 26: できる!遺伝的アルゴリズム

どんなもの?

• 遺伝的アルゴリズムは、

 生物の遺伝の仕組みを 模倣した学習的な手順である。

 

Page 27: できる!遺伝的アルゴリズム

何に使える?

• 遺伝的アルゴリズムは、

 適用範囲の広い 最適化 手法である。 

Page 28: できる!遺伝的アルゴリズム

例えば?

・ナップサック問題 ・ハミルトン閉路問題 ・巡回セールスマン問題 ・施設配置問題・最小極大マッチング問題 ・ビンパッキング問題 ・一般化割当問題

Page 29: できる!遺伝的アルゴリズム

巡回セールスマン問題

・巡回セールスマン問題 ・ Traveling Salesman Problem・ TSP

N 個の都市すべてを回って最初の都市に戻る 巡回路のうち、最小の距離 の順路は?

Page 30: できる!遺伝的アルゴリズム

まずは見てみよう

Page 31: できる!遺伝的アルゴリズム

Genetic Algorithm Demo

Page 32: できる!遺伝的アルゴリズム

遺伝的アルゴリズム

・生物の遺伝の仕組みを 模倣した学習的な手順である。

・適用範囲の広い 最適化手法 である。

Page 33: できる!遺伝的アルゴリズム

どうやっているの?

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 34: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 35: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

5 つの都市を回る場合、5×4×3×2×1 通りの組合せがあります。逆順があるので 1/2 になり 60 通りです。

Page 36: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

この問題を遺伝的アルゴリズムの手順で評価してみましょう。

Page 37: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

都市に番号を振りました。今回は①②⑤④③が最適な経路とします。まずは初期集団をつくります。

①③

④⑤

Page 38: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 39: できる!遺伝的アルゴリズム

初期集団初期集団をつくります。今回は個体を 3 つ用意します。

一人目は①②③④⑤二人目は①⑤②④③三人目は①②⑤③④

Page 40: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

一人目 ①②③④⑤二人目 ①⑤②④③三人目 ①②⑤③④

①③

④⑤

Page 41: できる!遺伝的アルゴリズム

初期集団それぞれの経路を遺伝子化します。

一人目は①②③④⑤ → 00000二人目は①⑤②④③ → 03010三人目は①②⑤③④ → 00200

Page 42: できる!遺伝的アルゴリズム

初期集団2人目を例に解説します①⑤②④③ → 03010

①②③④⑤ という元々の順 序に対して

①⑤②④③ という順番で 取り出す、と考えます。

Page 43: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010

①②③④⑤  を01234 という順番で見ます。まずは①を取り出すので順番は 「0 」と考えます。

Page 44: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010

先ほど 0番目を取り出したので、残りは②③④⑤  となり、これも0123 という順番で見ます。

Page 45: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010次は②③④⑤  0123 から⑤を 取り出すので順番は 「 3」となります。

これで「0 」、「 3」と取出したことになります。

Page 46: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010⑤ を取り出したので、残りは②③④  012 です。同様に②の「0 」を取り出します。

これで「0 」、「 3」、「0 」と取出したことになります。

Page 47: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010② を取り出したので、残りは③④  01 です。更に同様に④の「1 」を取り出します。

これで「0 」、「 3」、「0 」、「1 」

となりました。

Page 48: できる!遺伝的アルゴリズム

初期集団①⑤②④③ → 03010④ を取り出したので、残りは③  0 だけです。最 後は「0 」を取り出し、「0 」、「 3」、「0 」、「1 」、「0 」

が完成しました。

Page 49: できる!遺伝的アルゴリズム

初期集団一人目は①②③④⑤ → 00000二人目は①⑤②④③ → 03010三人目は①②⑤③④ → 00200

何故このように変換するかというと、後にある交叉や変異の処理が簡単になるからです。これで初期集団の完成です。

Page 50: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 51: できる!遺伝的アルゴリズム

評価

次にそれぞれの個体の評価を行います。巡回セールスマン問題では、 総距離が短いもの

が高評価→適応度が高い、となります。

①③

④⑤

Page 52: できる!遺伝的アルゴリズム

評価

一人目①②③④⑤ → 115km二人目①⑤②④③ → 105km三人目①②⑤③④ → 110km  とします。

①③

④⑤

Page 53: できる!遺伝的アルゴリズム

評価一人目 00000 → 115km二人目 03010 → 105km三人目 00200 → 110km  としたので、

2人目が最も 適応度が高い個体であることがわかりました。

Page 54: できる!遺伝的アルゴリズム

Genetic Algorithm

http://www.flickr.com/photos/viamoi/3439951085

Page 55: できる!遺伝的アルゴリズム

選択・交叉

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 56: できる!遺伝的アルゴリズム

選択・交叉ここから先は遺伝子型に対する操作です。一人目 00000 → 115km二人目 03010 → 105km三人目 00200 → 110km  上記評価の結果から、親選びを行うのが選択。選んだ親から次の世代(子ども)を作るのが交叉です。

Page 57: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km二人目 03010 → 105km三人目 00200 → 110km  

親が 3 人なので子も 3 人作ります。二人目が一番優秀なので優先的に親に選ばれます。

Page 58: できる!遺伝的アルゴリズム

選択選択には適応度に応じた確率で、選ばれるルーレット方式 。適応度を元に一定の割合で 確率を割り

当てていくランキング方式 。全体の集合から一 部を抜き出して、そ

の中から適応度の高い個体を選 ぶトーナメント方式 などがあります。

Page 59: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km二人目 03010 → 105km三人目 00200 → 110km  

例としてルーレットを説明します。長さが短い方が優秀なので逆数をとります。

Page 60: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km →

1/115*100 → 0.87

二人目 03010 → 105km → 1/105*100 → 0.95

三人目 00200 → 110km →  1/110*100 → 0.91

Page 61: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km → 0.87二人目 03010 → 105km → 0.95三人目 00200 → 110km → 0.91

合計が 0.87+0.95+0.91=2.73となり、それぞれが選ばれる確率は

Page 62: できる!遺伝的アルゴリズム

選択一人目 00000 → 0.87/2.73 = 31.9%二人目 03010 → 0.95/2.73 = 34.8%三人目 00200 → 0.91/2.73 = 33.3%

となり、ルーレット方式では ほとんど同確率で選ばれることとなります。

Page 63: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km → 2 位二人目 03010 → 105km → 1 位三人目 00200 → 110km → 3位

ランキング形式ですと、1 位→ 50%, 2 位→ 30%, 3位→ 20%などのように固定の 確立とするのでこの例ですとルーレットに比べて、差が顕著に出ます。

Page 64: できる!遺伝的アルゴリズム

選択ルーレット一人目 00000 → 31.9%二人目 03010 → 34.8%三人目 00200 → 33.3%

ランキング例一人目 00000 → 20%二人目 03010 → 50%三人目 00200 → 30%

Page 65: できる!遺伝的アルゴリズム

選択一人目 00000 → 115km二人目 03010 → 105km三人目 00200 → 110km  

例として、二人目と三人目から子 供を作ります。二人目と三人目が選択されたことになります。

Page 66: できる!遺伝的アルゴリズム

交叉次が交叉です。二人目 03010 三人目 00200から子 供を作ります。

交叉にも種類がいくつかあり一様交叉、一点交叉、二点交叉などが

あります。

Page 67: できる!遺伝的アルゴリズム

交叉一様交叉の場合、交叉するようにフィルタのようなものを作ります。フィルタを 01101 と置くと、03010 と 00200 の赤字部分。01101のうち 1になっている部分を交換します。結果は 00210 と 03000 になります。

Page 68: できる!遺伝的アルゴリズム

交叉一点交叉は任意の一点を決め、それ以降を入れ替えます。例えば 4番目を選ぶと03010 と 00200 の赤字部分を入れ替え 03000 と 00210 となり

ます。

Page 69: できる!遺伝的アルゴリズム

交叉二点交叉は任意の二点を決め、その間を入れ替えます。例えば 2と 4番目を選ぶと03010 と 00200 の赤字部分を入れ替え 00200 と 03010となりま

す。

Page 70: できる!遺伝的アルゴリズム

選択・交叉一様交叉の 2つと、一点交叉の一つ目

を子供として次世代に残します。

00210 03000 03000

が 2世代目として生まれました。

Page 71: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 72: できる!遺伝的アルゴリズム

変異変異は生まれた次世代に対して、親から引き継がれる以外の特徴を持つことができます。

一定の 確率で遺伝子を変異 させます。

Page 73: できる!遺伝的アルゴリズム

変異変異率を 5% とすると。00210 03000 03000遺伝子は全部で 15 要素あるので変異する確率は 5* 15/100 = 0.75

で一つ変異するかどうか、といった確率となります。

Page 74: できる!遺伝的アルゴリズム

変異ここでは、遺伝子が一つだけ突然変異を起こしたとします。

00210 03000 03010

これで 2世代目ができあがりました。

Page 75: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

Page 76: できる!遺伝的アルゴリズム

評価・終了2世代目の評価を行います。遺伝子型から表現型 に帰ってきました。

00210 → ①②⑤④③03000 → ①⑤②③④03010 → ①⑤②④③

がそれぞれの順番となります。

Page 77: できる!遺伝的アルゴリズム

評価・終了

一人目 ①②⑤④③二人目 ①⑤②③④三人目 ①⑤②④③ です。

①③

④⑤

Page 78: できる!遺伝的アルゴリズム

評価・終了

一人目 ①②⑤④③ が最適経路を通ることができました。

①③

④⑤

Page 79: できる!遺伝的アルゴリズム

評価・終了

よって遺伝子型では 00210表現型では ①②⑤④③が最適解となります。

①③

④⑤

Page 80: できる!遺伝的アルゴリズム

巡回セールスマンで考えよう

1. 初期集団

3. 選択

4. 交叉

5. 変異

2. 評価

6. 終了

■ハルモス符号

Page 81: できる!遺伝的アルゴリズム

よくわからない …だと?

Page 82: できる!遺伝的アルゴリズム

よろしい、ならばデモだ!

Page 83: できる!遺伝的アルゴリズム

Genetic Algorithm Demo

http:// www.flickr.com/photos/leniners/2284977041

@ C# 3.0

Page 84: できる!遺伝的アルゴリズム

遺伝的アルゴリズム

・生物の遺伝の仕組みを 模倣した学習的な手順である。

・適用範囲の広い 最適化手法 である。

Page 85: できる!遺伝的アルゴリズム

どこまでできるのか?

・生物の遺伝の仕組みを 模倣した学習的な手順である。

・適用範囲の広い 最適化手法 である。

Page 86: できる!遺伝的アルゴリズム

三度、巡回セールスマン

巡回セールスマンは計算量がとても多い問題です。

訪問先が 32ヵ所あった場合に、もし全件の探索を行ったとすると、どのくらいの 計算量になるのか?

計算量については下記ページの内容を引用しています。http://www.infonet.co.jp/ueyama/ip/software/tsp.html

Page 87: できる!遺伝的アルゴリズム

訪問先 32ヵ所

前提として既に1軒目にいるとして31!/2 通りの組合せとなります。

31!= (31× 30 × 29× …… ×4× 3 × 2 × 1)/2

≒ 4.11 ×10 33 通りとなる。

Page 88: できる!遺伝的アルゴリズム

4.11 ×10 33 通り

1秒間に1兆回 計算可能なスーパーコンピュータ があるとする 。

1秒間に 1兆回 ( 10 12 回 )よって、4.11 ×10 33 回の計算をするには4.11 ×10 21 秒が必要となる。

Page 89: できる!遺伝的アルゴリズム

4.11 ×10 21 秒

1年は、約 60× 60 × 24 × 365=31 ,536 ,000≒ 3.15 ×10 7 秒

よって、 4.11 ×10 21 秒を 1年≒ 3.15 ×10 7 秒で割ると、 1.3 ×10 14 年。 すなわち、 130 兆年 かかります。

Page 90: できる!遺伝的アルゴリズム

一三〇〇〇〇〇〇〇〇〇〇〇〇〇年

に挑む!

Page 91: できる!遺伝的アルゴリズム

Genetic Algorithm

http://www.flickr.com_photos_43052603@N00_3391952890.jpg

Page 92: できる!遺伝的アルゴリズム

遺伝的アルゴリズム・一幕

このように、全組合せを評価すると、とても時間がかかる問題でも、短時間にある程度高い精度を持って解を求めることが 可能です。

Page 93: できる!遺伝的アルゴリズム

遺伝的アルゴリズム・一幕

ただし、今回のデ モにおいても、単純な選択・交叉・変異の処理だけではうまく収束しない場合が多く、変異時に2点交換を行うなど多少の調整を行っています。

Page 94: できる!遺伝的アルゴリズム

遺伝的アルゴリズム・一幕

実際に用いる場合には、該当の問題 領域においての調整や応用が必要となります。他にも他の最適化手法と組合せてアルゴリズムを強化するなどの手 段があります。

Page 95: できる!遺伝的アルゴリズム

遺伝的アルゴリズム・一幕

応用例は論文などでも多く公開されていますので、更に効率の 良い例などを見つけて、実装してみるのも面白いかもしれません。

Page 96: できる!遺伝的アルゴリズム

最 後に…

Page 97: できる!遺伝的アルゴリズム

僕らが旅に出る理由

Page 98: できる!遺伝的アルゴリズム

遺伝的アルゴリズム

・生物の遺伝の仕組みを 模倣した学習的な手順である。

・適用範囲の広い 最適化手法 である。

Page 99: できる!遺伝的アルゴリズム

Science advances funeral by funeral.

- Max Karl Ernst Ludwig Planck

科学は葬儀を重ねて進歩する - マックス・プランク