Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization

tomit3
February 24, 2019

第9回 KAIM 金沢人工知能勉強会 進化的計算と最適化 / Evolutionary computation and optimization

我々の身近には最適化された・するモノ・コトが多々存在する。これらモノ・コトはどのように最適化されたのだろうか。具体例をもとに最適化問題について説明し、進化的計算による最適化アルゴリズムについて説明する。
There are many optimized things/items in our real world. How were these things optimized? Explain the optimization problem based on a specific example and explain the optimization algorithm by Evolutionary computation.

.NET言語で実装した進化的計算を用いた最適化ライブラリ
https://github.com/tomitomi3/LibOptimization

tomit3

February 24, 2019
Tweet

More Decks by tomit3

Other Decks in Technology

Transcript

  1. abstract • There are many optimized things/items in our real

    world. How were these things optimized? Explain the optimization problem based on a specific example and explain optimization algorithm by Evolutionary computation. • 我々の身近には最適化された・するモノ・コトが多々 存在する。これらモノ・コトはどのように最適化され たのだろうか。具体例をもとに最適化問題について 説明し、進化的計算による最適化アルゴリズムにつ いて説明する。
  2. 自己紹介 • 第6回 KAIM 発表資料 参照 – https://www.slideshare.net/tomit3/6-kaim-120127099 – 医療機器のソフト屋さん

    – 最適化の話をするが、これまでの仕事で最適化をほとんど しない。ある時、進化的計算に目覚めた。
  3. 最適化の具体例 • 身近にある“最適化”によってもたらされたコト・モノ – カーナビ、電車の乗換案内[1] – 配置[1] – スケジューリング(生産、バイトのシフトなど)[1] –

    電子の素子設計[2] – レンズの設計[3] – 新幹線(N700系)[4] – 飛行機の主翼設計[4] – 今日の晩御飯をどうするか?(意思決定) – 機械学習の各種アルゴリズム [1]オペレーションズリサーチ学会, “ORを探せ!”ポスターより(http://www.orsj.or.jp/members/poster.html) [2]電気学会. "遺伝アルゴリズムとニューラルネット." コロナ社, 1999. [3] Ono, Isao, Shigenobu Kobayashi, and Koji Yoshida. "Optimal lens design by real-coded genetic algorithms using UNDX." Computer methods in applied mechanics and engineering 186.2-4 (2000): 483-497. [4]大林茂. "進化計算と工学設計." 進化計算学会論文誌 1.1 (2011): 8-9. など 多数存在する
  4. 最適化の対象 ・移動距離/時間↓ ・お金↓ カーナビ、電車の乗換案内 ・無駄を少なく(空きスペース↓) 例:携帯アンテナの配置 ・使いやすい 配置 ・コスト↓(バイトのスケジュール 例が悪い?

    ) ・過剰生産↓ スケジューリング ・回路面積↓ ・線の経路長↓ 電子の素子設計 ・収差↓、MTF(レンズ性能指標)↑、 枚数↓ レンズの設計 ・空気抵抗↓ ・面積・重さ↓、燃費・航続距離↑ 新幹線 N700系先頭車両 飛行機の主翼設計 ・美味しい↑、献立数↑、 カロリー↓↑、コスト↓ 今日の晩御飯をどうするか? 解決する対象˰最適化したい対象 (解決できればプラスになること)
  5. どう最適化するか? • 最適化されたモノ・コトができるまで – 例:何かしらの形・構造を決める(先の新幹線等) • 同等のモノを作る • 風洞実験 •

    評価 (上記を繰り返す) – 例:乗換案内 • 目的駅までに到達する電車の時刻表を調べる • 電車の時刻、接続を確認 • 評価(短い時間)
  6. 数理モデル化 定式化 解決したい問題 最適化計算 評価 どう最適化するか? • 数理モデル化˰定式化˰計算˰評価 – 左のフローを辿る。モデルが悪い場合、モ

    デルから作り直す場合がある。ぐるぐる回 す。現実の問題を計算できる形に変換して、 計算し、最善策を選択する。 ˞補足 • このような問題解決の学問は、 オペレーションズリサーチ(Operations Research) と呼ばれる • モデルを定式化し、計算から、最善策を求める ことを「数理最適化」という。 解決された問題
  7. どう最適化するか? • 「今日の晩御飯をどうするか?」を例に – ①問題を具体化する • 指標:お金をかけない • 選択肢:食べない、牛丼(外食)、カレー(作 る)、・・・etc

    – ②指標を満たす、選択肢を選べる(=計算で きる)ようにする • お金関数(食べるモノ) 食べるモノ={食べない、牛丼…etc} – ③指標を満たすように、選択肢を選択(=計 算)する • お金(食べない)=0円、お金(牛丼)=350円・・・ – ④意思決定・評価 • 食べない! 数理モデル化 定式化 解決したい問題 最適化計算 評価 解決された問題
  8. 数理最適化-数理モデル、定式化 • 数理モデル化~定式化 – 数式での表現 • 最適化の指標を関数にしたもの「f」 – 目的関数、評価関数と呼ばれる事が多い »

    エネルギー関数とも • 選択肢を変数にしたもの「x」(ベクトル) – 決定変数とも呼ばれる • 指標を最小/最大化を表す「min/max」 数理モデル化 定式化 解決したい問題 最適化計算 評価 解決された問題 ˞xが実数値を取ることを仮定しているが 明示的に表現する場合は下記を次項のs.tに追加 𝑥 ∋ 𝑅
  9. 数理最適化-数理モデル、定式化 • 目的関数を複数設定 – 2つ以上の目的関数がある場合 • 例:料理に使う時間と材料費を共に最小化したい。 例1:目的変数がn個 𝑥 𝑓

    𝑥 𝑓 𝑥 n=2 f1,f2がともに最 大となる変数を 探す。 →左の場合は 交点となる 例2:制約条件と組み合わせ 1つの最適解で はなく、集合と なる場合もある。 (左の赤破線) パレート最適解 と呼ばれる。 𝑓 𝑥 𝑥
  10. パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り

    制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質 数理最適化問題の分類 • 目的関数、変数などの条件は下記のようになる
  11. 数理最適化問題の分類 • 目的関数の変数 – 連続値:連続最適化問題 – 離散値:離散最適化問題(組み合わせ問題) • 連続値+離散値:混合整数計画問題は離散最適化問題の分類 •

    制約条件の有無 – 制約条件有り:制約あり最適化問題 – 制約条件無し:制約なし最適化問題 • 目的関数の数 – 1つ:単目的最適化問題 – 2つ以上:多目的最適化問題 • 目的関数及び制約条件の性質 – 線形:線形計画問題 – 非線形:非線形計画問題 それぞれの問題で良い解法が異なる。
  12. 例をもとに数理モデル・定式化 • 解決したい問題 – 「今日の晩御飯をどうするか?」 • 数理モデル – 目的関数はお金をかけない –

    制約条件に最悪何かを食べる˺お金が0円以上 • 離散最適化(組み合わせ)、制約条件有り、単目的最適化 • 定式化 食べない 牛丼 おにぎりとか?
  13. 数理最適化-最適化計算 • 最適化計算 – 目的関数を満たすように変数を求める • 「ソルバー」と呼ばれる、最適な解法のプログラ ムがある。 – 問題により効率よく求める解法が存在

    • すべての問題であるわけではなさそう(推測) • 関連:ノーフリーランチ定理と最適化[1] – 各々の最適化問題に対し、汎用的に有効な最適 化技法は存在しない。つまり、問題毎に適切な解 法が存在。今回紹介する進化的計算は目的関数 の制約を受けない汎用性があるが、計算量は膨 大になる。問題に応じて使うべきである。 – 機械学習の一部(分類、回帰など)では、最適化 問題に帰着する。つまり、ある問題に対して最適 な技法を選択していることに過ぎない。 数理モデル化 定式化 解決したい問題 最適化計算 評価 解決された問題 [1]Wolpert, David H., and William G. Macready. "No free lunch theorems for optimization." IEEE transactions on evolutionary computation 1.1 (1997): 67-82.
  14. 数理最適化-最適化計算 • 離散最適化の評価:全組み合わせを評価? – 全組み合わせを評価すれば厳密解が求まる。が、変数が多 いと組み合わせ数が指数上に増えていく。 • 関連:オセロ/将棋の全組み合わせ、↓『フカシギの数え方』 おねえさ んといっしょ!

    みんなで数えてみよう! https://www.youtube.com/watch?v=Q4gTV4r0zRs – 厳密な最適解の探索を行わず、近似値の最適解を求める • ヒューリスティック – ほどほどの時間で、ほどほどの解(近似値の解) – 焼きなまし法、進化的計算技法(遺伝的アルゴリズム等)の確率的最適化技法 関連: NP困難 多項式時間アルゴリズム
  15. 数理最適化-最適化計算 • ナップサック問題、ナーススケジューリング問題 – 例 • トラックに価値ある荷物を積み込める組み合わせなど • シフト決め(要望をかなえつつ、運営できる組み合わせ) –

    解法・アルゴリズム • 貪欲法 • 焼きなまし法 • 遺伝的アルゴリズム パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  16. 数理最適化-最適化計算 • 最短経路問題、巡回セールスマン問題 – 例 • カーナビでの最短距離、電車の乗り換え – 解法・アルゴリズム •

    ダイクストラ法 • タブー探索、 k-opt法、焼きなまし法、ニューラルネットワーク パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  17. 数理最適化-最適化計算 • 線形計画問題 – 例: • 工場の生産最適化(納期、コストなどの組み合わせ) – 解法・アルゴリズム •

    シンプレクス法(単体法) • 内点法 パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  18. 数理最適化-最適化計算 • 線形計画問題 – 例: • 線形サポートベクターマシン[1] (機械学習での分類の技法、線形識別関数を求める技法のひとつ) – 解法・アルゴリズム

    • ラグランジュの未定乗数法 パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質 [1]サポートベクターマシン: https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3
  19. 数理最適化-最適化計算 • 非線形計画問題 – 例: • ニューラルネットワークの学習、非線形最小二乗法 – 解法・アルゴリズム •

    勾配法 • ニュートン法、準ニュートン法、ガウスニュートン法、共役勾配法 パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  20. 数理最適化-最適化計算 • 非線形計画問題(制約あり) – 例: • 非線形最小二乗法 – 解法・アルゴリズム •

    ペナルティ法(制約条件を目的関数に組み込む) パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  21. 数理最適化-最適化計算 • 非線形計画問題 – 例: • 非線形サポートベクターマシン – 解法・アルゴリズム •

    ラグランジュの未定乗数法、逐次最小問題最適化法[1] パラメータ 混合 離散値 連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質 [1]逐次最小問題最適化法: https://ja.wikipedia.org/wiki/%E9%80%90%E6%AC%A1%E6%9C%80%E5%B0%8F%E5%95%8F%E9%A1%8C%E6%9C%80%E9%81%A9%E5%8C%96%E6%B3%95
  22. 数理最適化-最適化計算 • 解きたい問題の特徴によって解法・アルゴリズムが多 数存在。 • (進化的計算につなげるために)最適化問題で最適化を困難 にするもの パラメータ 混合 離散値

    連続値 目的関数の変数 2つ以上 1つ 目的関数の数 無し 有り 制約条件 非線形 線形 目的関数・制約条件 非凸 凸 目的関数の性質
  23. 目的関数が非線形、非凸 • 目的関数がとりうる形状で、最適化の困難さ ([1]より図を引用) • 目的関数が不連続or微分不可 • 目的関数に谷が複数存在(多峰性˱単峰性) [1]K. Hoki

    and T. Kaneko, "Large-Scale Optimization for Evaluation Functions with Minimax Search", Journal of Artificial Intelligence Research (JAIR), 2014, Volume 49, pages 527-568
  24. 数理最適化-最適化計算 • 目的関数が「滑らか」ではない場合、非凸の場合 – 滑らかではない(例:絶対値がある場合) • 滑らかな目的関数にする。 • 勾配法は使用できないので別解法(アルゴリズムによる) –

    非凸 • 勾配法では単峰性関数の時は最適解に収束する。 (勾配法では微分値0が最適解) • 多峰性関数では初期値依存(1つ目の谷に収束するかもしれない) – 初期値をばらつかせて複数解く(マルチスタート) – 確率的手法を用いて近似値解を求める(進化的計算など) [1]絶対値を制約の条件式を増やすことで対応している。 組合せ最適化でチーム分けする(平均偏差最小化):https://qiita.com/matsulib/items/898873b73d584c7dcb8b
  25. 編集人 亀井哲治郎, 発行人 大石進, “数 学セミナー”, 日本評論社, 1985年8月号 とはいっても、LASSO(スパースにする回 帰分析)では絶対値を外せないので、別

    の解法を用いる。 滑らかにした例:最小二乗法 最小二乗法ではなぜ誤差の二乗和 を用いるのか?に対するラプラスの 答え ˰解けるから(解析的)
  26. 大域的最適解(Global Minimum) x = -3.38762 局所的最適解(Local Minimum) x = 2.87408

    非凸関数:多峰性関数 • 多峰性関数は谷が多く存在、最適化の技法(勾配法) によっては真の解に到達しない – 局所最適解、大域的最適解と呼ばれる min 𝑥 20𝑥 20𝑥 𝑠𝑢𝑏𝑗𝑒𝑐𝑡 𝑡𝑜 5 𝑥 5
  27. 進化的計算とは? • 定義 – “環境に適応して進化する生物のダイナミックスを模倣し、計算機 処理のアルゴリズムに取り入れようとする進化的計算”[1] – “生物の進化の過程を模倣することにより、環境によりよく適応す るための知識や機能をコンピュータが自動的に獲得できるように することが進化的計算の目標”[2]

    – “進化的計算の研究は大きく、①遺伝的アルゴリズム、②遺伝的 プログラミング、③進化戦略、④進化的プログラミングの四つ [2]” – “進化的計算(evolutionary computation)は組合せ最適化問題を 含む人工知能(より狭義には計算知能)の一分野”[3] – “なお実装の観点からは、進化の生物学的機構にヒントを得てい る実装もあれば、進化の生物学的機構にヒントを得ていない実装 もある”[3] • 進化的計算˥人工知能 らしい [1]小林 一郎. “人工知能の基礎.” サイエンス社, 2008. [2]荒屋 真二. ”人工知能概論 第2版 ―コンピュータ知能からWeb知能まで.”共立出版, 2004 [3]進化的計算:https://ja.wikipedia.org/wiki/%E9%80%B2%E5%8C%96%E7%9A%84%E8%A8%88%E7%AE%97
  28. 進化的計算を用いた最適化計算 • 多点で探索し、最適解と思しき情報を用いて、解の 更新・改善、次の探索を行う。収束条件まで繰り返す。 – 大まかなフローチャート END ˞代表的パラメータ ・ベクトルの集団数 ・1反復で生成するベクトルの集団数

    など 実際に使用するうえではパラメータ調整が必要。パラメータ を自動調整するものも提案されている。 1.ランダムに初期ベクトルを1つまたは多数生成 2.目的間にもとづき各ベクトルの評価値を計算 3.収束条件を満たす or 指定反復回数 4.あるルールで新たなベクトル集団を生成 5.あるルールにもとづき次の反復に残すベクトルを決める 6.内部パラメータの更新
  29. 進化的計算を用いた最適化計算 • メリット – 目的関数・制約条件に制限がない • 連続性(微分の可否):微分を使用しない • 凸/非凸:多点で探索するので局所解におちいりにくい –

    目的関数が数式でなくてもよい=ブラックボックス関数 • 変数だけ入れて結果さえ返ってさえくれば良い • 定式化しにくいものでも最適化できる • デメリット(注意事項) – 反復法の一種(˱直接法:ガウスの消去法等) – あくまでも近似値解。ヒューリスティックなアルゴリズム。 – 問題によっては得手不得手、計算時間↑、メモリ大量消費 • 変数×個体数をメモリに保持。DNNで行うとTBのオーダーに。。。 ˞勾配を使わなくてもよい方法 進化計算アルゴリズム以外もある Nelder-mead法、PatternSearch法 (補足資料参照)
  30. Steepest Descent Method (勾配法) Newton Method(ニュートン法) 準ニュートン法 微分を使用する最適化アルゴリズム 微分を使用しない最適化アルゴリズム Hill-Climbing

    algorithm(山登り法) Pattern Search Nelder-Mead Bayesian Optimiztaion Anarchic society optimization Ant colony optimization Artifical Fish Swarm Optimization Artificial bee colony Artificial cooperative search Atmosphere clouds model Backtracking optimization search Bacterial Foraging Optimization Algorithm Bat algorithm Bee colony optimization Bee system BeeHive Bees algorithms Bees swarm optimization Big bang-big Crunch Biogeography-based optimization Black hole Brain Storm Optimization Bumblebees Cat Swarm Optimization Central force optimization Charged system search Consultant-guided search Cuckoo search Cultural Algorithms Dendritic Cell Algorithm Differential evolution Differential search algorithm Dolphin echolocation Eagle strategy Eco-inspired evolutionary algorithm Egyptian Vulture Electro-magnetism optimization Estimation of Distribution Algorithm Evolutionary Strategy Fast bacterial swarming algorithm Firefly algorithm Fish-school Search Flower pollination algorithm Galaxy-based search algorithm Gene expression (Programing) Genetic algorithm Genetic Programing Glowworm swarm optimization Good lattice swarm optimization Grammatical evolution Gravitational search Great salmon run Group search optimizer Harmony search Heat transfer search Hierarchical swarm model Honey Bee Algorithm Human-Inspired Algorithm Marriage in honey bees Memetic algorithm Monkey search OptBees Paddy Field Algorithm Particle swarm optimization Queen-bee evolution River formation dynamics Roach infestation algorithm Self-propelled particles Shuffled frog leaping algorithm Simulated annealing Social emotional optimization Spiral optimization Stochastic difusion search Termite colony optimization Virtual ant algorithm Virtual bees Virus Colony Search Water cycle algorithm Weightless Swarm Algorithm Wolf search Imperialist competitive algorithm Intelligent water drop Invasive weed optimization Japanese tree frogs calling Krill Herd League championship algorithm 進化的アルゴリズム(赤字が有名)
  31. 遺伝的アルゴリズム(GA) • 概要 – Goldbergが1989年に提唱 – 自然選択説[1]をベースにしたアルゴリズム • 下記の3条件を満たす時、伝達的性質が累積的に変化 –

    生物の個体には、同じ種に属していても、さまざまな変異が見られる。 (変異) – そのような変異の中には、親から子へ伝えられるものがある。 (遺伝) – 変異の中には、自身の生存確率や次世代に残せる子の数に差を与 えるものがある。(選択) – 環境の適応度を目的関数に、目的関数の変数を遺伝子と して扱う。選択・交叉・変異により目的関数を探索する。 [1]自然選択説:https://ja.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E9%81%B8%E6%8A%9E%E8%AA%AC
  32. 遺伝的アルゴリズム(GA) • 目的変数を遺伝子に符号化 – ビットで符号化(ビットストリングGA) • 計算機にとって都合の良い表現 • 離散最適化問題向け –

    例:ナップザック問題 荷物の番号をnビットに割り当てる。 0で持たない、1で持つと表現 – 連続値で扱うとまずいことが起こる。IEEE754 doubleの表現は最上位 ビットが符号、11bitが指数、下位が52bit小数点を表す。 交叉によって全然異なる値となる˺ランダムサーチ – 数値で符号化(実数値GA) • 実数値最適化問題向け • 変数が連続値の場合は、数値のまま扱った方が良い。 説明では ビットストリングGAを対象 ・・・ B A ・・・ 4 2 重さ ・・・ 200 9 価値 1010010・・・・
  33. 遺伝的アルゴリズム(GA) • ある目的関数において適応度が良い個体(変数) – 目的関数の評価値を最小/最大化する個体を選択、交叉 を行うことで、適応度が高い集団が生成される。 ≒目的関数の探索 – 局所解を避けるため突然変異を行う。 個体1:1010101010

    個体2:0110101111 個体3:0011101010 個体4:0110101000 ・・・ 1反復(世代交代) 目的関数を計算 f(個体1)=10.0 f(個体2)=100.0 ・・・ 上記の値から選択・交差・突然変異 次世代の子を生成 子1:1010100010 子2:0110101000 子3:0010101000 子4:0110101111 ・・・
  34. 選択-Selection • 環境の適応度が高い個体を選択 – エリート選択 • 適応度が最も良い個体を選択(局所解におちいりやすい) – ルーレット選択(適応度比例選択) •

    適応度が選択確率に反映される。 – P(選ばれる確率)=1遺伝子の適応度/適応度の合計 – トーナメント選択 • 個体集団から個体をn個を選び適応度が良いものを選択 – ランク選択 • あらかじめ決められた確率に基づいて選択
  35. 交叉-Cross over • 親から子への形質遺伝 – 単純交叉、複数点交叉 • ある一点または複数点で交叉する。 – 一様交叉

    • マスクをかけて交叉する。 – その他の交叉 • 問題に応じて、交叉の工夫 • 部分一致交叉、順序交叉、サブツアー交換 – エリート保存戦略 • 適応度が高い個体を次世代に残す。局所解におちいるかもしれない。 101 0100 010 0111 101 0111 010 0100
  36. 実数値遺伝的アルゴリズム • 目的変数を数値のまま扱うGA – 交叉方法が特徴的 – 交叉方法 • 複数点の親が作る面・立方体・超立法内にあらたな子を作る。 •

    BLX-α、UNDX、SPX(シンプレクス交叉)、REX • 交叉オペレータにより目的関数の得手不得手が決まる(下記表[1])。 – 世代交代 • MGG、JGG [1]樋口 隆英, 筒井 茂義, 山村 雅幸, "実数値GAにおけるシンプレクス交 叉", 人工知能学会論文誌Vol. 16 (2001) No. 1 pp.147-155
  37. 進化的計算アルゴリズム • デモ – プログラム • https://github.com/tomitomi3/VisualizeOptimization – 勾配法(補足資料参照) –

    Nelder-mead法(補足資料参照) – GA – PSO – DE • Pythonでも使える進化的計算パッケージ – Deap – https://github.com/DEAP/deap
  38. 進化的計算 • 変数が多い(=高次元になると)と収束しなくなる。 • ESの一種である「CMA-ES(共分散行列適応進化戦 略)」は自然勾配法[1]と関連[2] – 自然勾配法(Natural Gradiend Descent)は、勾配法の一種。

    勾配とフィッシャー情報行列の逆行列を用いて更新すること で勾配法より早く収束。ヘッセ行列の近似に相当[3] • フィッシャー情報行列の計算が重いため、近似値で行う手法も提案 されている。 – 進化的計算ではないが、IGO(情報幾何最適化)というフ レームワークも提唱[4] [1]Amari, Shun-Ichi. "Natural gradient works efficiently in learning." Neural computation 10.2 (1998): 251-276. [2]Akimoto, Youhei, et al. "Bidirectional relation between CMA evolution strategies and natural evolution strategies." International Conference on Parallel Problem Solving from Nature. Springer, Berlin, Heidelberg, 2010. [3]James Martens. New insights and perspectives on the natural gradient method. https://arxiv.org/abs/1412.1193 v9 [4]Arnold, L., A. Auger, N. Hansen, Y. Ollivier (2011). Information-Geometric Optimization Algorithms: A Unifying Picture via Invariance Principles, technical report on HAL: hal-00601503 論文のななめ読み。。。
  39. 機械学習でも進化的計算の流れ • 画像分類(CNN)の学習に進化的計算 – Large-Scale Evolution of Image Classifiers •

    https://arxiv.org/abs/1703.01041 – Regularized Evolution for Image Classifier Architecture Search • https://arxiv.org/abs/1802.01548 • 強化学習+進化的計算 – Evolving intrinsic motivations for altruistic behavior • https://arxiv.org/abs/1811.05931
  40. 発表者の主観:こんなことが出来ない だろうか? • 進化的計算は広がりがあると思っている(主観) – 確率的最適化のように使える手法はないか? – 使用するメモリが巨大化。省メモリでも集団を表現できない か? •

    CMA-ESのような共分散を保存するような考えが必要 • 変数が多い場合。DNNを最適化対象とした場合、DNNの一つを個体 として持つので非常に巨大なストレージ・メモリが必要になってしまう。 – GPUによる高速化(一部では検討されてはじめている) – 分散化・並列化による高速化
  41. 参考文献 1. 穴井宏和. 数理最適化の実践ガイド. 講談社, 2013. 2. 金谷 健一, "これなら分かる最適化数学―基礎原理から計算手法まで",

    共立出版株式会社, 2007年初版第7刷 3. オペレーションズリサーチ学会, “ORを探せ!”ポスターより(http://www.orsj.or.jp/members/poster.html) 4. 電気学会. "遺伝アルゴリズムとニューラルネット." コロナ社, 1999. 5. Ono, Isao, Shigenobu Kobayashi, and Koji Yoshida. "Optimal lens design by real-coded genetic algorithms using UNDX." Computer methods in applied mechanics and engineering 186.2-4 (2000): 483-497. 6. 大林茂. "進化計算と工学設計." 進化計算学会論文誌 1.1 (2011): 8-9. 7. Wolpert, David H., and William G. Macready. "No free lunch theorems for optimization." IEEE transactions on evolutionary computation 1.1 (1997): 67-82. 8. 編集人 亀井哲治郎, 発行人 大石進, “数学セミナー”, 日本評論社, 1985年8月号 9. サポートベクターマシン: https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3 10. 逐次最小問題最適化法: https://ja.wikipedia.org/wiki/%E9%80%90%E6%AC%A1%E6%9C%80%E5%B0%8F%E5%95%8F%E9%A1%8C%E6%9C%80%E9%81%A9%E5%8C%96%E6%B3%95 11. K. Hoki and T. Kaneko, "Large-Scale Optimization for Evaluation Functions with Minimax Search", Journal of Artificial Intelligence Research (JAIR), 2014, Volume 49, pages 527-568 12. 組合せ最適化でチーム分けする(平均偏差最小化):https://qiita.com/matsulib/items/898873b73d584c7dcb8b 13. 小林 一郎. “人工知能の基礎.” サイエンス社, 2008. 14. 荒屋 真二. ”人工知能概論 第2版 ―コンピュータ知能からWeb知能まで.”共立出版, 2004 15. 進化的計算:https://ja.wikipedia.org/wiki/%E9%80%B2%E5%8C%96%E7%9A%84%E8%A8%88%E7%AE%97 16. Valdez, Fevrier, Patricia Melin, and Oscar Castillo. "A survey on nature-inspired optimization algorithms with fuzzy logic for dynamic parameter adaptation." Expert systems with applications 41.14 (2014): 6459-6466. 17. Fister Jr, Iztok, et al. "A brief review of nature-inspired algorithms for optimization." arXiv preprint arXiv:1307.4186 (2013). 18. Bhuvaneswari, M., et al. "Nature Inspired Algorithms: A Review." International Journal of Emerging Technology in Computer Science and Electronics 12.1 (2014): 21-28. 19. 自然選択説:https://ja.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E9%81%B8%E6%8A%9E%E8%AA%AC 20. 樋口 隆英, 筒井 茂義, 山村 雅幸, "実数値GAにおけるシンプレクス交叉", 人工知能学会論文誌Vol. 16 (2001) No. 1 pp.147-155 21. Amari, Shun-Ichi. "Natural gradient works efficiently in learning." Neural computation 10.2 (1998): 251-276. 22. Akimoto, Youhei, et al. "Bidirectional relation between CMA evolution strategies and natural evolution strategies." International Conference on Parallel Problem Solving from Nature. Springer, Berlin, Heidelberg, 2010. 23. James Martens. New insights and perspectives on the natural gradient method. https://arxiv.org/abs/1412.1193 v9 24. Arnold, L., A. Auger, N. Hansen, Y. Ollivier (2011). Information-Geometric Optimization Algorithms: A Unifying Picture via Invariance Principles, technical report on HAL: hal-00601503 25. 小林重信. "実数値 GA のフロンティア." 人工知能学会論文誌 24.1 (2009): 147-162. 26. Hooke, R. and Jeeves, T.A., ""Direct search" solution of numerical and statistical problems", Journal of the Association for Computing Machinery (ACM) 8 (2), pp212–229. 27. J.A.Nelder and R.Mead, "A simplex method for function minimization" ,The Computer Journal vol.7, 308–313 (1965)
  42. 勾配法 • 特徴 – 目的関数の1階微分を使用する。 • 微分値が0=極値(その点で変化しない)=最適解 • 微分が求められない(または求めるのが困難)場合は使用不可 –

    単峰性関数の場合は大域的最適解を得る – 多峰性関数の場合は居所的最適解を得る(初期値依存) • 勾配=0となるため
  43. 勾配法 • フローチャート 1. 初期値を求める(ランダム) • 𝑥 𝑥 , 𝑥

    … 𝑥 2. ステップ幅 ×勾配ベクトルで新たな位置を求める • 𝑥 𝑥 𝛼𝛻𝑓 𝑥 – 適切なステップ幅𝛼を直線探索より求める。 定数0<α<1でもよい。 3. 収束条件(極値、反復回数)を確認 • 収束条件を満たさなければステップ1へ • 𝛻𝑓 𝑥 0 となった場合終了(ノルムが0) • または、指定した反復数に達したら終了 ∇(ナブラ)勾配ベクトル 𝛻𝑓 𝑥 𝜕𝑓 𝜕𝑥 ⋮ 𝜕𝑓 𝜕𝑥
  44. ニュートン法 • 特徴 – 目的関数の2階微分を使用する。 • 勾配法より早く収束(勾配法が1次に対し2次収束)。 • 微分が求められない(求めるのが困難)場合は使用不可 •

    ヘッセ行列の逆行列を求める処理が重い。 – ヘッセ行列によっては求まらない場合がある。 – 解の近傍でないと政界にたどり着かない。
  45. ニュートン法 • フローチャート 1. 初期値を求める(ランダム) • 𝑥 𝑥 , 𝑥

    … 𝑥 2. ステップ幅×ヘッセ行列逆行列×勾配ベクトル で新たな位置を求める • 𝑥 𝑥 𝛼𝐻 𝛻𝑓 𝑥 3. 収束条件(極値、反復回数)を確認 • 収束条件を満たさなければステップ1へ • 𝛻𝑓 𝑥 0 となった場合終了(ノルムが0) • または、指定した反復数に達したら終了 H(ヘシアン) ヘッセ行列 2階の偏微分 H 𝜕 f 𝜕x 𝜕x … 𝜕 f 𝜕x 𝜕x ⋮ ⋱ ⋮ 𝜕 f 𝜕x 𝜕x … 𝜕 f 𝜕x 𝜕x ヘッセ行列を作るもの面倒だが、逆行列を 求めるのも計算コストが大きい。 ヘッセ行列を近似するのが準ニュートン法
  46. PatternSearch法 • 特徴 – 関数の微分値は不要 – 各軸上の2点を見て少ない方向へ進む • 直交した点でしか評価していないため、谷が軸に対し斜めの場合は、 斜め方向に進む場合StepLengthを小さくし進むため時間がかかる

    – 初期値により局所的最適解に落ち込む • その他 – Hooke, Jeeves が1960年発表 – 直接値を見て探索する方法を直接探索(DirectSearch)法 • 進化的計算アルゴリズム˥直接探索ともいえる
  47. PatternSearch法 StepLengthを減らしていく ExploratoryMoveでの周りの点を見る 距離が小さくなっていく StepLengthが指定した 値より小さい場合で判定 Hooke, R. and Jeeves,

    T.A., ""Direct search" solution of numerical and statistical problems", Journal of the Association for Computing Machinery (ACM) 8 (2), pp212–229.
  48. PatternSearch法 ExplonaryMove 初期値の位置から StepLength分の足を延ばし、 各点の位置を評価。 初期値 StepLength 評価 Hooke, R.

    and Jeeves, T.A., ""Direct search" solution of numerical and statistical problems", Journal of the Association for Computing Machinery (ACM) 8 (2), pp212–229.
  49. PatternSearch法 StepLengthが指定した 値より小さい場合で判定 PatternSearch StepLengthを減らす BasePoint、ExporatoryMove した位置で比較 Hooke, R. and

    Jeeves, T.A., ""Direct search" solution of numerical and statistical problems", Journal of the Association for Computing Machinery (ACM) 8 (2), pp212–229.
  50. PatternSearch法 • 初期値から最適解(最小値)を求める – 使用ベンチマーク関数:ローゼンブロック関数 – 条件:StepLength 0.6、eps=1e-8、初期値(-1,1) – 収束結果:反復回数1883回

    0 0.2 0.4 0.6 0.8 1 1.2 -1.5 -1 -0.5 0 0.5 1 1.5 x 2 x1 1,1(最適解) -1,1(初期値) 10反復毎の位置をプロット 斜めに進むために、StepLengthがどんどん 小さくなる。その分反復回数が増える。 そのため、密になっている。
  51. Nelder-Mead法 • 特徴 – 関数の微分値は不要 – 目的関数の変数数+1の点を用いて探索 • 変数+1の頂点を結んだ図形(Simplex)を変化(Reflection, Expansion,

    Contraction, Shrink)させて最適解を探索する。 – 初期値により局所的最適解におちいる • その他 – 1965年 J. A. NelderとR. Meadが発表した2変数以上の非線 形関数最適化手法 – 滑降シンプレックス法(downhill simplex method)、アメーバ 法(Amoeba)とも呼ばれる。線形計画法のシンプレックス法 とは異なる。
  52. Nelder-Mead法 • 関数の変数+1の頂点をもつシンプレックス生成 – 各頂点で目的関数の評価値(求めたい関数への代入値)を求める。 – 評価値の最良値、最悪値の2番目、最悪値の3点を使用する。 • 重心G –

    最悪値を除く頂点で重心を求める。 • シンプレックスの操作 – Reflection 反射(α=1.0 推奨) • 𝑟 1 𝛼 𝐺 𝛼𝑃 – Expansion 拡大(β=2.0 推奨) • 𝑒 𝛽𝑃 1 𝛽 𝐺 – Contraction 収縮(γ=0.5 推奨) • 𝑐 𝛾𝑃 1 𝛾 𝐺 – Shrink 縮小 • 各頂点と最良値を加算して2で割った値で置き換える。 • 𝑁𝑒𝑤𝑃 𝑃 𝑃 /2 原著論文では正の方向のみ。 Wikipediaなどよく紹介されているのは 正負の方向を持つ
  53. J.A.Nelder and R.Mead, “A simplex method for function minimization” ,The

    Computer Journal vol.7, 308–313 (1965) より Nelder-Mead法 ˞たぶんここ間違い yiは最悪値から2番目に悪い評価値
  54. Nelder-Mead法 ・初期値を設定し評価値を求める ˰ シンプレックス ˞最良値、最悪値、最悪値から2番目に悪い値 の3つのみ使用 反転した頂点の評価値 < 最良値 反射した頂点を用いて拡大操作、

    その評価値を求める 拡大した頂点の評価値 < 最良値 最悪値の評価値を持つ頂点と 拡大した頂点を入れ替える 終了条件 ・指定した回数のループ ・許容誤差(ε)以下になった (各頂点の二乗和が一定値以下など) 反射した頂点の評価値 < 最悪値から2番目の評価値 反射した頂点の評価値 > 最悪値 最悪値の評価値を持つ頂点 と反射した頂点を入れ替える 最悪値の頂点を用いて収縮操作、 その評価値を求める 収縮した頂点の評価値 > 最悪値 ・重心を求める(反射、拡大、縮小で使用) ˞最悪値を除いた点で重心を求める ・最悪値の頂点を用いて反射、その評価値を求める 縮小操作 (最良値の頂点以外全て) 最悪値の評価値を持つ頂点と 反射した頂点を入れ替える 最悪値の評価値を持つ頂点と 収縮した頂点を入れ替える J.A.Nelder and R.Mead, “A simplex method for function minimization” ,The Computer Journal vol.7, 308–313 (1965) より
  55. 比較 • PatternSearchとNelder-mead法の比較 – ベンチマーク関数:ローゼンブロック関数 – 次元数が増える(変数が増える)とNelder-Mead法は評価値 が悪い=最適解に到達できない。 ˞変数が5~6程度までなら良い収束。 0

    1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 2次元 10次元 20次元 平 均 反 復 回 数 ローゼンブロック関数 次元数 HookeJeeves Nelder-Mead 5.63E-13 6.46E-12 7.97E-01 7.92E-18 4.98E+01 9.83E+01 1E-18 1E-16 1E-14 1E-12 1E-10 1E-08 1E-06 0.0001 0.01 1 100 2次元 10次元 20次元 収 束 時 の 平 均 評 価 値 ローゼンブロック関数 次元数 HookeJeeves Nelder-Mead