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

Optunaアルゴリズムの紹介

sakami
January 08, 2025
17

 Optunaアルゴリズムの紹介

sakami

January 08, 2025
Tweet

Transcript

  1. AI 7 TPE の特徴 ▪ Optuna の単目的最適化のデフォルトアルゴリズム ▪ 入力空間にカテゴリ変数が含まれていても問題ない ▪

    データ点のサンプリングに for ループ、if 分岐が含まれていても問題ない ▪ 計算量: ▪ d: 入力空間の次元数 ▪ n: これまでの探索データ数 1. TPE (Tree-structured Parzen Estimator)
  2. AI 8 事前知識: カーネル密度推定 (KDE) ▪ データの分布関数を推定するアルゴリズム ▪ 各データ点を中心とする正規分布を足し合わせる ▪

    データに重みをつけることもできる 1. TPE (Tree-structured Parzen Estimator) http://neupy.com/2016/12/17/hyperparameter_optimization_for_neural_networks.html
  3. AI 9 単変量 TPE ▪ 単変量 TPE は各次元独立にサンプリングを行う手法 ▪ 以下の手順で推論を行う

    ▪ 今までの探索点のうち、目的関数の値が 上位 γ %のものと、その他に分けて、 それぞれを L, G (group #1, #2) とする。 ▪ 探索次元ごとに、L , G それぞれに属する データの KDE を求め、l(x), g(x) とする。 ▪ l(x) / g(x) が最大となる点を求め、 それを次の探索点とする。 1. TPE (Tree-structured Parzen Estimator) http://neupy.com/2016/12/17/hyperparameter_optimization_for_neural_networks.html l(x) g(x)
  4. AI 10 カテゴリ変数の扱い ▪ カテゴリ変数の場合は、KDE の代わりに各カテゴリのデータ数の比を用いる データ点の重みの決め方 ▪ 各データ点に重みを割り当てることができる ▪

    Optuna のデフォルトでは古いデータほど 重みを減衰させる方法になっている 1. TPE (Tree-structured Parzen Estimator) https://arxiv.org/abs/2304.11127
  5. AI 分散共分散行列が対角行列の 多変量正規分布 11 多変量 TPE ▪ 単変量 TPE は変数間の相関が考慮できないため、

    無駄な探索点を選択してしまう可能性がある ▪ 多変量 TPE は KDE のそれぞれの正規分布を多変量にして、変数間の相関を考慮する 1. TPE (Tree-structured Parzen Estimator) https://arxiv.org/abs/2304.11127 単変量: 多変量:
  6. AI 14 アルゴリズム: 平均ベクトルの移動 ▪ g+1 世代目の正規分布の平均を、以下のように与える ▪ g 世代目の探索点の中から評価値の良い順に

    μ 点を選択し、その重み付き和として表す ▪ ただし、それぞれの重みは以下のように、 i に対して線形に減衰するように定める 3. CMA-ES https://blog.otoro.net/2017/10/29/visual-evolution-strategies/ ↑ 平均のみを変化させた場合
  7. AI 過去の進化パス 15 アルゴリズム: ステップサイズの調整 ▪ ステップサイズ: 正規分布の分散にかかる係数 ▪ 正規分布の平均ベクトルが指向性を持って移動しているならステップサイズを大きく、

    逆に同じ場所を行ったり来たりしているならステップサイズを小さくしたい ▪ 平均ベクトルの移動量の大きさを進化パスにより見積もり、 それを用いてステップサイズを定める 3. CMA-ES http://www2.fiit.stuba.sk/~kvasnicka/Seminar_of_AI/Hansen_tutorial.pdf 今回の平均ベクトルの移動量 新しい進化パス 進化パスの大きさに応じて、ステップサイズを調整する ステップサイズ:
  8. AI 16 アルゴリズム: 分散共分散行列の適応 ▪ 分散共分散行列は、Rank-One Update と Rank-μ Update

    の2種類の更新を行う ▪ Rank-One Update: 平均ベクトルの移動方向に 探索幅を伸ばすように分散共分散行列を適応させる ▪ Rank-μ Update: 有望個体群から C を最尤推定する 3. CMA-ES http://www2.fiit.stuba.sk/~kvasnicka/Seminar_of_AI/Hansen_tutorial.pdf C の最尤推定量
  9. AI 18 事前知識: 非優越ランク ▪ 目的関数の評価値の空間 R^m に、支配関係 ≺ を導入する

    ▪ データ集合 B に、非優越ランクを以下で定める ▪ 任意の b ∈ B について b ⊀ a なら rank(a) = 1 ▪ rank(b) <= k のデータを除いた任意の b ∈ B について、b ⊀ a なら rank(a) = k + 1 1. 多目的TPE https://blog.iseesystems.com/modeling-tips/multiobjective-optimization/
  10. AI 20 L の選び方 ▪ データ分割時、同一ランク内でどのデータ点を選択するかに任意性がある ▪ Optuna のデフォルトでは、超体積指示関数を最大化するようにデータ点が選択される ▪

    超体積指示関数: データ点集合が支配する体積を返す関数。 値を有限にするため、適当な参照点 r を固定し、その間の体積を測る。 ▪ 貪欲法により最大化する 1. 多目的TPE https://logmi.jp/main/technology/325211
  11. AI 21 NSGA-Ⅱ ▪ NSGA-Ⅱ は Optuna の多目的最適化のデフォルトで、進化計算アルゴリズムの一種 ▪ 以下の手順で推論を行う

    ▪ 前の世代の集団から、非優越ランクおよび混雑距離に基づいて親集団を選択する ▪ 親集団から、交叉と突然変異によって作成した子集団を探索点の集合とする ▪ 前の世代の集団としては、親集団と子集団の和集合を用いる ▪ 計算量: ▪ m: 目的関数の出力空間の次元数 ▪ p: 各世代の個体数 2. NSGA-Ⅱ https://logmi.jp/main/technology/325211
  12. AI 22 混雑距離 ▪ 非優越ランクだけでは親集団が一意に定まらないので、混雑距離を導入する。 ▪ 混雑距離: その個体に隣接する2つの個体のマンハッタン距離 ▪ 目的関数の出力空間の混雑距離が大きいものから順に個体を選択することで、多様性を

    確保できる 交叉と突然変異 ▪ Optuna では、交叉ののち突然変異を行う ▪ 定義域に実数値変数が多く含まれる場合は、 デフォルトの一様交叉のままでは性能が悪い 2. NSGA-Ⅱ https://tech-oh.com/2022/05/17/multi_objective_opt_5/
  13. AI 24 TPE ▪ カテゴリ変数や if / for ループなどに柔軟に対応できる GP-BO

    ▪ 探索回数が数十回程度の、重い計算の探索に適している CMA-ES ▪ 目的関数の計算が高速で、探索を多く回せる場合に適している ▪ カテゴリ変数や制約付き最適化に対応していない 1. 単目的最適化
  14. AI 25 多目的 TPE ▪ 探索回数が限定されている場合に、NSGA-Ⅱ よりも性能が良い ▪ Optuna v4.0.0

    で大幅に高速化されている NSGA-Ⅱ ▪ 実行時間が探索回数によらず一定なので、 多く探索する場合に適している 2. 多目的最適化 https://logmi.jp/main/technology/325211
  15. AI 28 l(x) / g(x) が期待改善量を最大化していることの説明 1. TPE (Tree-structured Parzen

    Estimator) x^(i) に関係ないので 無視して OK y*: L, G の境界の y の値 y が小さい方がよいとする