集合知プログラミング勉強会 第五章 最適化

32
しゅごぷら 集合知プログラ ミング勉強会 2014/4/12 (Sat) 5最適化

Upload: ikuo-degawa

Post on 19-Jan-2017

2.397 views

Category:

Data & Analytics


0 download

TRANSCRIPT

しゅごぷら

集合知プログラミング勉強会

2014/4/12 (Sat)!第5章 最適化

この本、誤植が多いらしい

❖ 古い刷を持っている人は注意

(初版第6刷はだいたい治ってました)!

❖ 正誤表:https://

sites.google.com/site/prgclctintelligence/errata

アジェンダ

❖ 最適化とは?!

❖ ヒルクライム!

❖ 擬似アニーリング!

❖ 遺伝アルゴリズム!

❖ 嗜好の最適化

最適化 (optimization) とは?

❖ 多くは最小化 (minimization)!

❖ 「えっ、でも最大化したいんだけど」 => 正負逆転させて最小化問題に持ち込む!

❖ 「最適化とは、コスト関数(目的関数)を定義し、それが最小になるような変数を決定することである」

最適化を使う場面❖ どのような関数で表現されるかが不明である!

❖ 変数が多すぎる!

❖ 虱潰しするには計算コストが膨大すぎる!

❖ 解析的に最小値が求められない

❖ 最適化が必要ない例:y = x

2 + 2x+ 2

5.1 グループ旅行

❖ 6人が各々飛行機でニューヨークへ集まる!

❖ どのフライトを使うか?!

❖ コストの例 => 飛行時間・待ち時間・運賃….etc.

LGA

BOS

DAL

MIA

CAK

ORD

MIA

5.2 解の表現

❖ 数字のリスト(ベクトル)!

❖ [1, 4, 3, 2, 7, 3, 6, 3, 2, 4, 5, 3] (12次元)!

❖ [ Saymourの行きの便, Saymourの帰りの便, Frannyの行きの便, …., Lesの帰りの便]

5.3 コスト関数

❖ “悪さ”の尺度。小さいほどよい。!

❖ コスト関数の設計が一番むずかしい。!

❖ 最適化 (optimization) ≈ 最小化 (minimization)

コスト = 行きの飛行機代×6人 + 帰りの飛行機代×6人 !

   + 全員集まるまでの待ち時間×6人!   + 帰りの飛行機に乗るまでの待ち時間!   + レンタカーの追加料金

5.4 ランダムサーチ(無作為探索)

❖ 無作為探索!

❖ 一部を無作為に抽出し、その中で一番よいものを選ぶ!

❖ 最適化・・・?

x

コスト

5.5 ヒルクライム

❖ 山登り法、勾配法、最急降下法などいろんな別名!

❖ 周りを見て、コスト関数が下がる方向に進む!

❖ 現在地の勾配 (gradient) を計算し、その反対側へ降りていく、を繰り返す!

x

(k+1) = x

(k) � ↵rf(x(k))

ヒルクライムは山を登れない

❖ 最終解は「局所最小」であって「大域最小」ではない。!

❖ 凸関数 (convex function) なら最小値を得られる。

x

コスト

無作為再出発ヒルクライム

!

!

!

!

❖ ヒルクライムの改善!

❖ ヒルクライムを、ランダムな初期値からなんども行う

x

コスト

5.6 擬似アニーリング

❖ 「良い方向への動きを常に取り入れつつも、初期には悪い解も一部取り入れる」=> 山を登れる

x

コスト

高コストに進む確率

一定確率でコストが大きくなる方に進む

Tは毎回小さくするpi = exp(� |f(xi+1)� f(xi)|

T)

5.7 遺伝アルゴリズム❖ genetic algorithm!❖ まず個体群を生成し、コスト関数の値でランク付け!

❖ エリート主義 (elitism)!

❖ 突然変異 (mutation)!

❖ 交叉 or 交配 (crossover)

5.7 遺伝アルゴリズム

個体群:第一世代

5.7 遺伝アルゴリズム

個体群:第一世代

5.7 遺伝アルゴリズム

個体群:第一世代 個体群:第二世代

交差!&!

突然変異

5.7 遺伝アルゴリズム

個体群:第一世代 個体群:第二世代

交差!&!

突然変異

5.7 遺伝アルゴリズム

個体群:第一世代 個体群:第二世代

交差!&!

突然変異

交差!&!

突然変異

個体群:第三世代

遺伝アルゴリズム

!

❖ 交差の方法・・・一点交差、多点交差、一様交差!

❖ 突然変異の確率・・・0.1%~1.0%ぐらい!

!

❖ wikipediaみるとのってるよ

5.8 実際のフライトを検索

❖ 省略・・・

いろいろ面白い❖ 遺伝アルゴリズムでマリオ!

❖ http://www.nicovideo.jp/watch/sm18721450!

❖ https://www.youtube.com/watch?v=yZJ1V-zv_gU!

!

❖ 遺伝的アルゴリズムを楽しく理解できるサイトをまとめてみた!

❖ http://d.hatena.ne.jp/download_takeshi/20100723/1279837904

5.9 嗜好の最適化❖ 「割り当て」の最適化!

❖ 人材の最適配置

希望1 希望2 希望3 …企業A 学生a 学生b企業B 学生a 学生c!企業C 学生企業D企業E企業F企業G

❖ 学生10人を寮に割り振る(10^4通り)!

!

!

!

❖ 完全解がコスト0になるようにコスト関数を設計するとGOOD

5.9 嗜好の最適化

学生が第一希望に割り当てられた:コスト0!

学生が第二希望に割り当てられた:コスト1!

希望にないところに割り当てられた:コスト3!

A寮(2) B寮(2) C寮(2) D寮(2) E寮(2)

5.9 嗜好の最適化

❖ この問題は制約付き(各寮に二人)!

❖ 学生でループを回し、学寮のスロットに一人ずつ割り当てていくことで有効解が得られる!

!

❖ ここだとランダム最適化と遺伝的アルゴリズムを適用

5.10 ネットワークの可視化

❖ 変数:座標(x,y) x 人数 個!

❖ コスト関数:リンクの交差の数!

❖ 描画にはPython Imaging Libraryが便利。

本日のまとめ・・・

❖ 最適化を使うのに大切なこと!

!

❖ 問題に対してコスト関数が定義されていること!

❖ 類似の解が類似の結果をもたらす傾向になること

Pythonによるデータ分析入門

❖ 2013年12月発売!

❖ Amazonだとそこそこ評判良い

以下補足

最適化問題の種類❖ 線形計画問題!

❖ 整数計画問題2次計画問題!

❖ 凸計画問題!

❖ 半正定値計画問題非線形計画問題!

❖ 組み合わせ最適化

学問分野で言うと、線形プログラミング? オペレーションズ・リサーチ?

計算理論の問題のクラス❖ P:多項式時間(Polynomial time)で解ける問題の集合!

❖ NP:非決定性多項式時間(Non-deterministic Polynomial

time)で解ける問題の集合!

❖ P≠NP予想!

❖ NP困難、NP完全!

❖ 計算機工学(Computer engineering)の分野になってくる

スパース最適化

❖ スパース = 疎!

❖ 圧縮センシング (Compressed Sensing)