59
機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 [email protected]

最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 [email protected]

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

機械学習特論 第10回講義

最適化手法1遺伝的アルゴリズム

知能工学専攻串田淳一

[email protected]

Page 2: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

予定(2019年)• 第10回 最適化手法1 (6/10)

遺伝的アルゴリズム(Genetic Algorithm, GA)

• 第11回 最適化手法2 (7/1)差分進化(Differential Evolution, DE)

• 第12回 最適化手法3 (7/8)粒子群最適化(Particle Swarm Optimization, PSO)

2

講義資料URLhttp://www.ints.info.hiroshima-cu.ac.jp/~kushida/ML/index.htm

Page 3: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

本日の内容• 遺伝的アルゴリズムの概要• 遺伝的アルゴリズムの処理手順• 代表的なベンチマーク関数• レポート課題,サンプルプログラムの説明

3

Page 4: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

最適化手法

4

最適化問題を解くためのアプローチ

• 数理最適化(数理計画法)• メタヒューリスティクス単純なルールや発見的手法を反復的に用いる(限られた時間内に,できる限り良質な)近似解を求めるアルゴリズム

1. 対象とする問題を数学的な問題としてモデル化(定式化)2. 定式化した問題を解くことで解を求める手法

Page 5: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

メタヒューリスティクス手法

5

進化的アルゴリズム (Evolutionary Algorithm, EA)進化的計算(Evolutionary Computation, EC)

• 生物進化に基づくアプローチ遺伝的アルゴリズム(Genetic Algorithm, GA)差分進化(Differential Evolution, DE)

• 群知能に基づくアプローチ粒子群最適化(Particle Swarm Optimization, PSO)

Page 6: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

遺伝的アルゴリズムとは

6

Genetic Algorithm (GA):生物進化をモデル化した最適化アルゴリズム(最適化:ある関数の最も小さい/大きい値になる変数を見つけること)

• 問題の解 →「生物の個体」• 形質遺伝,淘汰,突然変異などのメカニズムを模して解を探索• 複数の個体を用いて探索 (Population based search)

解きたい問題の解候補

個体集団(Population)

Page 7: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

進化論と進化的計算地球には様々な生物が存在する.• 環境に適応した優秀な個体だけが子孫を残すことができる.(劣等な個体は淘汰される)

• 優秀な個体の子孫が繁栄する.• 残った個体は突然変異を起こす場合があり,前の世代よりも優秀になることも、逆になることもある.これらを繰り返して,生物は進化してきた.

7

進化的計算 (GA)「優秀な個体 = 良い解答」と見立て,進化的な演算を用いて解を改善し,良い解を残していく

Page 8: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAの歴史• 1975年、John Hollandにより提案 文字列,ビット列{0,1}が対象(e.g. ナップサック問題)

• その後様々な,拡張・改良が行われる 設計変数が実数値である連続関数最適化問題にも対応

8

GAの応用事例• 製品のデザインの最適化 新幹線のフロントノーズの設計 飛行機の翼の形状 タイヤのトレッドパターン

• スケジューリング 時間割・勤務表の最適化 ジョブショップ・スケジューリング

Page 9: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

ナップサック問題

9

荷物1

荷物2

荷物3

荷物4

重さ: 7kg価値: 100

重さ: 4kg価値: 150

重さ: 6kg価値: 90

重さ: 10kg価値: 160合計の価値が最大になるような

品物の組み合わせを探す

20kgまで入る(制約条件)

Page 10: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAによるナップサック問題の解法

10

荷物1 荷物2 荷物3 荷物40 1 1 0

個体

0:入れない1:入れる

0 1 1 0

1 0 1 1

交叉

ナップサック問題の解(ビット列で表現:コード化)

0 0 1 0

1 1 1 1

親1

親2

子1

子2

突然変異はビットを反転

適応度=価値の合計 - ペナルティ(超過量)

Page 11: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

実数値遺伝的アルゴリズム(Real-coded genetic algorithm)

• 連続空間を探索領域とする• 探索する変数を(コード化せずに)実数値のまま扱う• 各個体は実数値のベクトルで表現

11

0.4 1.3 -4.2 0.6 2.4 -1.2 0.3 -1.2個体

Page 12: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

最適化問題の定式化

minimize 𝑓𝑓(𝒙𝒙) 目的関数𝒙𝒙は決定変数ベクトル(𝑥𝑥1 ⋯𝑥𝑥𝑖𝑖 ⋯𝑥𝑥𝐷𝐷)

subject to 𝑔𝑔𝑗𝑗(𝒙𝒙) ≦ 0, 𝑗𝑗 = 1, . . , 𝑞𝑞 不等式制約ℎ𝑗𝑗 𝒙𝒙 = 0, 𝑗𝑗 = 𝑞𝑞 + 1, … ,𝑚𝑚 等式制約𝐿𝐿𝑖𝑖≤𝑥𝑥𝑖𝑖≤𝑈𝑈𝑖𝑖 上下限制約

線形計画問題:𝑓𝑓,𝑔𝑔𝑗𝑗 ,ℎ𝑗𝑗が線形(一次式)非線形計画問題:𝑓𝑓,𝑔𝑔𝑗𝑗 ,ℎ𝑗𝑗のいずれかが非線形

12

𝑓𝑓(𝑥𝑥)

𝑥𝑥

Page 13: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

問題例

13

不等式制約

等式制約

上下限制約

目的関数

Page 14: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAによる解探索• 確率的な多点探索法(進化は複数の個体が必要)• 探索空間内にランダムで探索点(個体)を発生させる• 個体の位置を更新しながら(進化させながら)解を探索

Sphere関数における探索 14

Sphere関数 𝑓𝑓(𝒙𝒙) = 𝑥𝑥12 + 𝑥𝑥22

𝒙𝒙∗ = (0,0)で最小値𝑓𝑓 𝒙𝒙∗ = 0

Page 15: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAが適用可能な問題

探索する関数の性質が分からなくても(目的関数が不連続関数,微分不可能関数であっても)探索点(個体)に対し,良さの評価値(関数値)を得ることができれば適用可能

決定変数の上下限制約のみを有する最適化問題

minimize 𝑓𝑓(𝒙𝒙)subject to 𝐿𝐿𝑖𝑖≤𝑥𝑥𝑖𝑖≤𝑈𝑈𝑖𝑖, 𝑖𝑖=1,…,𝐷𝐷

• 𝒙𝒙 =(𝑥𝑥1,…,𝑥𝑥𝐷𝐷 )は𝐷𝐷次元決定変数ベクトル• 𝑓𝑓(𝒙𝒙)は目的関数 (最適化する関数)• 𝐿𝐿𝑖𝑖,𝑈𝑈𝑖𝑖はそれぞれ,𝐷𝐷個の決定変数 𝑥𝑥𝑖𝑖の下限値,上限値• 全ての上下限制約を満足する領域: 探索空間

Sphere function

? 𝑥𝑥

𝒙𝒙 =(0.4, 1.3,−0.4, 9.3,⋯ )

𝑓𝑓 𝒙𝒙 = 0.67

Page 16: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

解探索のイメージ

16

関数の最小値(最大値)を探す=砂漠で最も石油が出る場所を探す• 一回掘るとその場所の埋蔵量(良さ)が分かる• たくさん掘れば大体の埋蔵量が把握できるが,その分コストが掛かる• なるべく少ない回数(コスト)で,最も埋蔵量が多い場所を見つけるには?

Page 17: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

理想的な解探索「大域的な探索」から「局所的な探索」へシフトするような探索• 探索序盤は十分な多様性を保持し,網羅的に広い範囲を探索• 探索終盤は集団を収束させ,優良な解周辺を集中的に探索

集団の分布

多様性の保持と探索の集中化はトレードオフ→バランスを考慮した探索を実現することが課題

局所解局所解

最適解

局所解への収束(探索失敗)

Page 18: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAのアルゴリズム

18

S0.初期化個体(遺伝子)をランダムに生成し,初期集団を構成する.また,各個体を評価する.(適応度/適合度: fitness を計算する)

S1.終了判定終了条件を満足したら,終了する.(許容解を発見,最大世代数に達した,最大関数評価回数に達した,など)

S2.親選択子を生成する親を選択する

S3.交叉と突然変異(遺伝演算)交叉確率(𝑃𝑃𝑐𝑐)に基づき,親個体(通常は2個体)から子個体を生成する.突然変異確率(𝑃𝑃𝑚𝑚)に基づき,子個体の遺伝子に突然変異を適用する.子個体を評価する.

S4.生存者選択親個体と子個体から,次世代に残る個体を選択する.

S5.S1.へ戻る

Page 19: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAの擬似コード

19

Initialize P(0) = { xi | i =1, 2, ... , N },Nは個体数(集団サイズ)Evaluate P(0) 個体の適合度(関数値)を求める

for(t=1; 終了条件を満足しない; t++) { // tは世代数

for(i=1; i≦N; i++) {if( u(0,1) < 𝑃𝑃𝑐𝑐 )

親個体を2個選択し,交叉により子個体xi’を生成else

親個体を選択し,xi’とする

for(xi’の全ての遺伝子x’ij)if( u(0,1) < 𝑃𝑃𝑚𝑚 ) x’ijを突然変異

}

Evaluate C(t)={ x’i | 𝑖𝑖 = 1,2, … ,𝑁𝑁 } 子個体の集合C(t)を評価する

P(t+1)=P(t)とC(t)から生存者を選択}

u(0,1)は区間[0,1]の一様乱数

P(0)は最初の個体集団

𝑃𝑃𝑐𝑐は0から1の範囲で予め決定

𝑃𝑃𝑚𝑚は0から1の範囲で予め決定

Page 20: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAの探索のイメージ

20

子子 子

1. 個体集団𝑃𝑃(𝑡𝑡)から遺伝演算により𝐶𝐶(𝑡𝑡)を生成2. 𝑃𝑃(𝑡𝑡)と𝐶𝐶(𝑡𝑡)から次世代(𝑡𝑡 + 1世代)に残す個体を選択(不要な個体を削除)3. 選択された(生き残った)個体を𝑃𝑃(𝑡𝑡 + 1)とする(世代交代)

Page 21: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

x1’

交叉

子個体生成の手順

21

𝒙𝒙1𝒙𝒙2𝒙𝒙3𝒙𝒙4𝒙𝒙5𝒙𝒙6𝒙𝒙7𝒙𝒙8𝒙𝒙9

P(t)C(t)

子個体集団

𝑥𝑥6 x2’

x1’

突然変異𝒙𝒙2

𝒙𝒙5

親個体を選択

x1’

突然変異x2’

交叉をしない場合(x2’=𝒙𝒙6 )

x2’

x3’x4’x5’x6’x7’x8’x9’

親個体の遺伝子を組み合せて子を生成

遺伝子に変化を加える

P(t) (親個体の集団)と同じ数だけ子を生成

Page 22: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

親個体の選択方法(parent selection)

良い子個体を生成するためには• なるべく「適応度の高い個体」を親とする• ただし,「ある程度多様な個体」を選ぶ必要がある(集団の多様性を維持するため)

22

⇒GAの代表的な親個体の選択方法• ルーレット選択• ランキング選択• トーナメント選択

両者をバランス良く選択する必要がある

Page 23: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

ルーレット選択• 親として選択される確率を個体の適応度に比例させる.• 個体𝑖𝑖の適応度を𝑓𝑓𝑖𝑖とすると,選択確率は𝑓𝑓i ∕ ∑𝑘𝑘=1𝑁𝑁 𝑓𝑓𝑘𝑘

(適応度は非負でなければならない)• 非常に適応度の高い個体が出現すると,急速に多様性が失われることがある.

23

個体 適応度個体1 40個体2 80個体3 20個体4 90個体5 10

*最大化問題とする→関数値が大きいほど親として選ばれやすい

個体1

個体2

個体3

個体4

個体5

𝑁𝑁:個体数

Page 24: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

ランキング選択• 個体のランクを適応度の良い順に1, 2, … , 𝑁𝑁とし,ランクによって選択確率を決定する.

• 個体𝑖𝑖のランクを𝑟𝑟𝑖𝑖とした場合,選択確率𝑝𝑝𝑖𝑖は

𝑝𝑝𝑖𝑖 = 1𝑁𝑁𝜂𝜂+ − (𝜂𝜂+ − 𝜂𝜂−) 𝑟𝑟𝑖𝑖−1

𝑁𝑁−1,𝜂𝜂− = 2 − 𝜂𝜂+,𝜂𝜂+ ∈ [1,2]

• 𝜂𝜂+はパラメータ(ユーザが決定)

• ランク1の個体は𝜂𝜂+

𝑁𝑁,ランク𝑁𝑁の個体は𝜂𝜂−

𝑁𝑁,メジアンの個体は1

𝑁𝑁の

確率で選択される

24

N 5η+ 2η- 0

個体 関数値 ランク 選択確率個体1 40 3 0.2個体2 80 2 0.3個体3 20 4 0.1個体4 90 1 0.4個体5 10 5 0

*最大化問題とする𝑁𝑁 = 20の場合の選択確率

Page 25: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

トーナメント選択• ランダムに選択したトーナメントサイズ(𝑇𝑇𝑇𝑇)個の個体から最良の個体を選択する.

• 𝑇𝑇𝑇𝑇はパラメータ(ユーザが決定)• 𝑇𝑇𝑇𝑇を大きくすると良い個体が選ばれやすくなり,探索速度が増加する(選択圧が強くなる).一方,集団の多様性が失われて局所解に陥りやすくなる.

25

𝒙𝒙1𝒙𝒙2𝒙𝒙3𝒙𝒙4𝒙𝒙5𝒙𝒙6𝒙𝒙7𝒙𝒙8𝒙𝒙9

P(t)

𝒙𝒙2

𝒙𝒙4

𝒙𝒙7

𝒙𝒙9

ランダムで選択

最良の個体(関数値が最も良い個体)を親として選択する

𝑇𝑇𝑇𝑇個の親候補

Page 26: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

交叉(Crossover) 選択された親個体の形質を受け継いだ子個体を生成する⇨「親個体群の分布」と似た分布となるような子個体を生成

実数値GAにおける代表的な交叉方法• ブレンド交叉(BLX-𝛼𝛼)• シンプレックス交叉(SPX)• 単峰性正規分布交叉(UNDX)

26SPX交叉の例

正規分布

親2

親1

親3

UNDX交叉の例

Page 27: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

ブレンド交叉(BLX-𝛼𝛼)• 子𝒙𝒙𝑐𝑐の𝑗𝑗次元の遺伝子𝑥𝑥𝑐𝑐𝑗𝑗は2つの親(𝒙𝒙1, 𝒙𝒙2)の遺伝子を含む拡張領域から乱数を用いて選択

𝑥𝑥𝑐𝑐𝑗𝑗 = 𝑟𝑟 𝑥𝑥1𝑗𝑗 + (1 − 𝑟𝑟) 𝑥𝑥2𝑗𝑗

𝑟𝑟は[−𝛼𝛼, 1 + 𝛼𝛼]の一様乱数(次元ごとに決定)𝛼𝛼 = 0.5あるいは𝛼𝛼 = 0.366(理論値)

両親によって決まる,各辺が座標軸に平行な超直方体の領域においてランダムサーチを行う

27

親1

親2

𝛼𝛼 𝛼𝛼

𝛼𝛼

𝛼𝛼

1

1𝑋𝑋2

𝑋𝑋1

𝒙𝒙1

𝒙𝒙2

Page 28: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

突然変異(mutation)子の遺伝子の値を変異させる方法:ある分布に従う乱数を発生

• Gauss分布平均値𝜇𝜇,標準偏差𝜎𝜎の正規分布𝑁𝑁 𝜇𝜇,𝜎𝜎2 の確率密度関数

𝑓𝑓 𝑥𝑥 =12𝜋𝜋𝜎𝜎2

𝑒𝑒−𝑥𝑥−𝜇𝜇 2

2𝜎𝜎2

• Cauchy分布𝐶𝐶(𝑥𝑥0, 𝛾𝛾)の確率密度関数

𝑓𝑓 𝑥𝑥; 𝑥𝑥0, 𝛾𝛾 = 1𝜋𝜋

𝛾𝛾(𝑥𝑥−𝑥𝑥0)2+𝛾𝛾2

𝑥𝑥0は位置(location)𝛾𝛾は尺度(scale)

28

標準正規分布𝑁𝑁 0, 1標準コーシー分布𝐶𝐶(0, 1)

Page 29: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

突然変異の種類

29

0.4 1.3 -4.2 0.6 2.4 -1.2 0.3 -1.2𝒙𝒙𝑐𝑐

突然変異の対象となる遺伝子は確率𝑃𝑃𝑚𝑚で選ばれる

0.4 1.9 -4.2 0.7 2.4 -1.2 0.3 -1.5𝒙𝒙𝑐𝑐

・Gauss突然変異𝑥𝑥𝑐𝑐𝑗𝑗 = 𝑥𝑥𝑐𝑐𝑗𝑗 + 𝛿𝛿 · 𝑁𝑁(0,1)

・Cauchy突然変異𝑥𝑥𝑐𝑐𝑗𝑗 = 𝑥𝑥𝑐𝑐𝑗𝑗 + 𝛿𝛿 · 𝐶𝐶 0,1

・一様突然変異𝑥𝑥𝑐𝑐𝑗𝑗 = 𝑥𝑥𝑐𝑐𝑗𝑗 + 𝛿𝛿 · 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 0,1 − 0.5 ∗ 2

𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 0,1 は範囲[0,1]の一様乱数,𝛿𝛿はステップサイズ(変異の幅)

子𝒙𝒙𝑐𝑐の𝑗𝑗次元目の遺伝子の突然変異

𝑁𝑁は正規乱数

𝐶𝐶はコーシー乱数

各遺伝子が変異する確率1

遺伝子長が妥当

(平均1遺伝子が変異)

Page 30: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

生成される子個体の位置

30

1 2 3 4 5 6 7 8 9 10

𝐿𝐿

𝑈𝑈

親1

親2

交叉で生成された子

突然変異

次元

上下限を超えた解が生成された場合⇒修正し,制約内へ

Page 31: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

上下限制約を満たす方法:鏡像反射

31

𝑥𝑥1𝐿𝐿1 𝑈𝑈2

𝑈𝑈2

𝐿𝐿2

𝑥𝑥2新たに生成した個体𝒖𝒖𝑖𝑖

修正した個体

次元ごとに(上限/下限から)はみ出した分を反射する

はみ出した長さ 𝑢𝑢𝑖𝑖𝑗𝑗 − 𝑈𝑈𝑗𝑗𝑈𝑈𝑗𝑗 − (𝑢𝑢𝑖𝑖𝑗𝑗 − 𝑈𝑈𝑗𝑗)

Page 32: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

〇生存者選択1(survivor selection)

32

𝒙𝒙1𝒙𝒙2𝒙𝒙3𝒙𝒙4𝒙𝒙5𝒙𝒙6𝒙𝒙7𝒙𝒙8𝒙𝒙9

P(t) C(t)

x1’x2’

x3’x4’x5’x6’x7’x8’x9’

P(t+1)

・離散世代モデル生成したC(t)を,そのまま次世代個体として選択

Page 33: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

〇生存者選択2(survivor selection)

33

𝒙𝒙1𝒙𝒙2𝒙𝒙3𝒙𝒙4𝒙𝒙5𝒙𝒙6𝒙𝒙7𝒙𝒙8𝒙𝒙9

P(t) C(t)

x1’x2’

x3’x4’x5’x6’x7’x8’x9’

P(t+1)

x1’𝒙𝒙3x5’x3’𝒙𝒙6x9’

𝒙𝒙5x4’

x7’

・連続世代モデルP(t)とC(t)を合わせて,関数値順にソート上位𝑁𝑁個を次世代個体として選択

Page 34: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

〇生存者選択3(survivor selection)

34

𝒙𝒙1

𝒙𝒙3𝒙𝒙4𝒙𝒙5𝒙𝒙6𝒙𝒙7𝒙𝒙8𝒙𝒙9

P(t) C(t)

x1’x2’

x3’x4’x5’x6’x7’x8’x9’

P(t+1)

・エリート選択前世代の最良個体を必ず生存者として選択(離散世代モデルと併用)

𝒙𝒙2最良個体

Page 35: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

GAの各オペレータの役割

35

親個体集団

局所解局所解

最適解

突然変異親個体の分布とは異なる(交叉では生成されない)領域を探索

子個体集団

交叉親個体の分布と似たような(特徴を引き継ぐ)分布を生成

生存選択良好な個体を次世代に残す(ただし多様性を保つために,適応度が悪い個体も選択する必要がある)

Page 36: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

目的関数の特徴• 関数の形状:単峰性/多峰性

36

単峰性 多峰性• 変数間依存性

目的関数を各変数ごとの関数の和として分離して表現できるか/できないか𝑓𝑓 𝒙𝒙 = 𝑥𝑥12 + 𝑥𝑥22 (分離可能)𝑓𝑓 𝒙𝒙 = 4𝑥𝑥12 + 2𝑥𝑥1𝑥𝑥2 + 3𝑥𝑥22 (分離不可能)

• 悪スケール性各変数のスケールが大きく異なるか/同等か

Page 37: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

代表的なベンチマーク関数

Sphere function

Minimum is 𝑓𝑓(0,⋯ , 0) = 0

単峰性のシンプルな関数,変数間依存性なし

𝑓𝑓 𝑥𝑥 = 𝑥𝑥1 2 + 𝑥𝑥2 2 + ⋯ + 𝑥𝑥𝐷𝐷 2

各次元毎に最小値を探せる!

Page 38: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Sum of different power function

38

悪スケール性を持つ⇨関数の傾斜が次元ごとに異なる

Minimum is 𝑓𝑓(0,⋯ , 0) = 0

Page 39: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Rastrigin function

39

Minimum is 𝑓𝑓(0,⋯ , 0) = 0

多峰性関数,変数間依存性なし格子状(座標軸に並行)に局所解が存在

Page 40: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Minimum is 𝑓𝑓(1,⋯ , 1) = 0

Rosenbrock function

Star型

Chain型

• 変数解間依存性あり (変数同士の積の項がある)• 座標軸に平行でない長い谷があり,最適解は谷の中に位置する

• 変数間依存性はStarの方が強い

Page 41: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Schaffer function

多峰性,変数解間依存性あり

Minimum is 𝑓𝑓(0,⋯ , 0) = 0

Page 42: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Schwefel function

42

多峰性,変数間依存性なし最適解は定義域(−512 ≤ 𝑥𝑥𝑖𝑖 ≤ 512)の端

𝑓𝑓 𝒙𝒙 = 4.18.9829𝐷𝐷 −�𝑛𝑛=1

𝐷𝐷

𝑥𝑥𝑖𝑖sin( 𝑥𝑥𝑖𝑖 )

Minimum is 𝑓𝑓(420.9687,⋯ , 420.9687) = 0

Page 43: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

Griewank function

43

Minimum is 𝑓𝑓(0,⋯ , 0) = 0

多峰性,変数解間依存性あり 巨視的に見ると単峰性微視的に見ると多峰性

Page 44: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

遺伝的アルゴリズムレポート課題サンプルプログラムを参考にして,関数の最適化を行い,下記の項目についてレポートせよ.• プログラムの変更点/工夫した点• パラメータ調整の様子• プログラムの変更の試行錯誤• 試行錯誤した上での最良の結果などについてもレポートに含めて下さい.

最適化対象の関数:• Sphere関数(30次元) (全員)• Schaffer 関数(30次元) 学籍番号が偶数• Griewank関数(30次元) 学籍番号が奇数

締め切り 6/14(金)串田居室(情643)のメールボックスに提出 44

Page 45: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

サンプルプログラムでのGAの実装• パラメータ設定個体数𝑁𝑁,交叉率𝑃𝑃𝑐𝑐,突然変異率𝑃𝑃𝑚𝑚

• 親個体の選択の仕方トーナメント選択(パラメータ𝑇𝑇𝑇𝑇)

• 交叉方法 BLX-𝛼𝛼 (パラメータ𝛼𝛼)

• 突然変異 ガウス突然変異(パラメータ𝛿𝛿) コーシー突然変異(パラメータ𝛿𝛿) 一様突然変異(パラメータ𝛿𝛿)

• 生存者選択離散世代モデル,連続世代モデル

45

Page 46: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

プログラム中の変更可能なパラメータ• 個体数(Nindividuals)• トーナメントサイズ(TournamentSize)• 交叉率(Pc): 個体が交叉を行う確率• BLX-αのパラメータ(Alpha)• 突然変異率(Pm): 遺伝子に突然変異を行う確率• ガウス(or コーシー)突然変異の分散の初期値(Delta_0)• ガウス(or コーシー)突然変異の分散の最終値(Delta_T)

46

delta-=(Delta_0-Delta_T)/T_MAX;

世代

δ

Delta_0

Delta_T

T_MAX0

𝛿𝛿は初期値Delta_0とDelta_Tで制御

Page 47: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

パラメータ設定#define RUN_MAX 30 // 試行回数(平均性能を調べるため)#define MAX_EVALUATIONS 200000 //最大関数評価回数#define Nindividuals 50 // 個体数#define T_MAX (MAX_EVALUATIONS/Nindividuals) // 最大世代数(繰り返し回数)

47

使用できる計算コストはMAX_EVALUATIONSで決定する=> 何回,個体の適応度(関数値)を計算したか?

MAX_EVALUATIONS

MAX_EVALUATIONST_MAX

Nindividuals Nindividuals

T_MAX

同じ評価回数

T_MAXは設定した個体数により自動的に決まる

固定

Page 48: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

個体の構造体/* 個体の構造体 */typedef struct {

double *x; /* genes */double f; /* fitness value */

} IndividualRec, *Individual;

48

𝑥𝑥 𝑓𝑓

0 1 29…

#define Nvariables 30 // 決定変数ベクトルの次元 固定

Page 49: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

初期化領域• #define LOWER -100.0 // 下限• #define UPPER 100.0 // 上限

49

for(i=0; i<n; i++) {for(j=0; j<Nvariables; j++)

P[i].x[j]=LOWER+(UPPER-LOWER)*Rand();// 上下限制約内にランダムに生成

EvaluateIndividual(&P[i]); // 個体の評価if(better(P[i].f, P[best].f)) best=i;

}

関数Initializeで上下限内に初期個体を生成

*探索中は上下限の制約なし

固定

Page 50: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

main関数int main(void)

{int run;Individual Pop, New, Best;

double min, max;

Pop=NewIndividuals(Nindividuals*2);

New=&Pop[Nindividuals];Best=NewIndividuals(1);

double sum=0, ssum=0;for(run=0; run<RUN_MAX; run++) {

srand((run+1)*123456789); // 乱数シードの設定SGA(Pop, New, Best);printf("%2d: ", run+1); Print(Best);

}

50

個体

P(t)POP

C(t)NEW

Best

n個体を動的に割り当てる関数

世代を通しての最良個体

Page 51: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

SGA関数1/2

51

for(i=0; i<Nindividuals; i++) {if(Rand()<Pc) {

p1=Select(Pop, Nindividuals);p2=Select(Pop, Nindividuals);Crossover(&New[i], &Pop[p1], &Pop[p2]);

}else {

p1=Select(Pop, Nindividuals);CopyIndividual(&New[i], &Pop[p1]);

}Mutation(New[i].x, delta*WIDTH);EvaluateIndividual(&New[i]);if(better(New[i].f, Best->f))

CopyIndividual(Best, &New[i]);}

最初に交叉するかを決定

両親をトーナメント選択で選ぶ

交叉で出来た子をNew[i]に格納

交叉しない場合は親をそのままNew[i]に格納

子(New[i])に対して突然変異deltaに問題の定義域の幅を掛ける

生成した子を評価

現在のbestと比較,良ければ置き換え

Page 52: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

SGA関数2/2

delta-=(Delta_0-Delta_T)/T_MAX;#ifdef SURVIVOR

qsort(Pop, Nindividuals*2, sizeof(Pop[0]), Compare);#else

Temp=Pop; Pop=New; New=Temp;#endif

} //世代のループが終了

52

𝛿𝛿の更新(徐々に小さくする)

連続世代モデルP(t)とC(t)を合わせてソート,上位を残す

離散世代モデルC(t)をそのまま次世代へ残す

すべての子個体を生成後

L8 #define SURVIVOR // 親と子の上位者を生存者とする場合に指定

Page 53: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

突然変異の方法の選択

53

/* 突然変異 */void Mutation(double x[], double delta){

int j;//各ベクトル要素に対しPmの確率で突然変異を行うfor(j=0; j<Nvariables; j++)

if(Rand()<Pm)#if defined(GAUSSRAND)

x[j]+=delta*gaussrand(); // ガウス突然変異#elif defined(CAUCHYRAND)

x[j]+=delta*cauchyrand(); // コーシー突然変異#else

x[j]+=delta*(Rand()-0.5)*2.0; // 一様突然変異#endif

}

L6 #define GAUSSRAND // ガウス突然変異を使用する場合に指定L7 #undef CAUCHYRAND // コーシー突然変異を使用する場合に指定

Page 54: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

目的関数/* 目的関数の定義 */void EvaluateIndividual(Individual P){

int i;

}54

個体の関数値を計算

if(Problem==0){// Sphere funciton

}

if(Problem==1){// Schaffer funciton

}

if(Problem==2){// Griewank function

}目的関数はコマンドライン引数で指定• Problem=0 -> Sphere funciton• Problem=1 -> Schaffer funciton• Problem=2 -> Griewank function

計算した関数値𝑓𝑓(𝒙𝒙)をP->fに代入

Page 55: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

gaussrand関数

55

/* 正規乱数: N(0,1) */double gaussrand(void)

ボックス=ミュラー法一様分布に従う確率変数から標準ガウス分布に従う確率変数を生成させる

正規分布(平均0, 分散1)に従う乱数を返す

Page 56: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

プログラムの実行および実行結果>gcc -o GA GA.c –lm>./GA 1Target = Schaffer (Prob1)1: -0.0345048 -0.000719756 ... -0.0140894 = 0.0578856…50: 0.043575 -0.0234172 ... 0.0426595 = 0.0682815Target = Schaffer (Prob1)Average=0.0686173, Std=0.013766, Min=0.0274867, Max=0.104789

56

試行回数: 最良解(𝑥𝑥1, 𝑥𝑥2,⋯𝑥𝑥𝐷𝐷) = 目的関数値性能(平均値Average, 標準偏差Std, 最小値Min, 最大値Maxで出力される値)

math.h で必要なオプション

引数は問題番号(0,1,2)

Page 57: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

パラメータ調整について• 個体数

• 小さくすると進化の速度は早くなる• 大きくすると多様性は保持されやすい

• トーナメントサイズ• 大きくすると(選択圧が強くなり),進化の速度は早くなる

• BLX-αの拡張率α• 小さくすれば,(探索範囲が狭まり)進化の速度は早くなる

57

Page 58: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

ノーフリーランチ定理

全て問題に対して高性能なアルゴリズムは存在しない?

58

汎用的なアルゴリズム

問題の種類

性能ある問題用に特化した(パラメータを調整した)アルゴリズム

Page 59: 最適化手法1 遺伝的アルゴリズムkushida/ML/ML10.pdf機械学習特論 第10回講義 最適化手法1 遺伝的アルゴリズム 知能工学専攻 串田淳一 kushida@hiroshima-cu.ac.jp

考察のポイント

Schaffer 関数/Griewank 関数 (多峰性)に対し良い結果となるようにアルゴリズムを改良 or パラメータを調整

59

Sphere 関数(単峰性)に対しても有効か確認• 有効なパラメータ/探索戦略はどのように異なるか?

• 収束性・多様性のバランスは?