Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

CMA-ES

Covariance Matrix Adaptation Evolution Strategy

CMA-ES は、単目的の連続最適化のための、確率的で微分不要な最適化アルゴリズムです。進化戦略(Evolution Strategies, ES)のファミリーに属し、以下のような場合に特に効果的です。

  • 変数間に相関がある場合(目的関数が分離不可能な場合)
  • 次元によってスケールが大きく異なる場合(悪条件な landscape)

NSGA-II のような遺伝的アルゴリズムとは異なり、CMA-ES は交叉を使用しません。代わりに、多変量正規分布から新しい候補をサンプリングし、過去の探索ステップの成功履歴に基づいてその分布を適応させます。

CMA-ES の仕組み

CMA-ES による最適化は、STEP2 から STEP4 を繰り返し実行することで行われます。

STEP1: 初期化

以下の 3 つの値が初期化されます。

  • 平均 m: 開始点(通常は探索範囲の中心)
  • ステップサイズ σ: 探索全体のスケールを制御
  • 共分散行列 C = I: 単位行列として開始(等方的で、変数間の相関なし)

STEP2: サンプリング

λ 個の候補解の集団が、多変量正規分布からサンプリングされます。

x_i ~ m + σ · N(0, C),  i = 1, ..., λ

各候補は、評価すべき変数値の 1 セットを表します。

STEP3: 選択と平均の更新

候補は目的関数の値によってランク付けされます。上位 μ 個の候補(μ < λ)が選択され、平均はそれらの候補の重み付き重心として更新されます。

m ← Σ w_i · x_i   (上位 μ 個の重み付き平均)

STEP4: 共分散行列とステップサイズの適応

これが CMA-ES を特徴づけるステップです。

  • 共分散行列の更新: C は成功したステップの方向と大きさを反映するように適応されます。反復を重ねるにつれて、C は変数間の相関を学習し、サンプリングの楕円体を問題の幾何学的構造に合わせて変形させます。
  • ステップサイズの更新(σ): 進捗が着実な場合(探索が一貫して一方向に進む場合)は増加し、振動している場合は減少します。これにより、実行全体を通じて効率的な探索が維持されます。

STEP2 から STEP4 は、試行回数に達するまで繰り返されます。

動作のイメージ

以下のアニメーションは、サンプリング分布(楕円)が目的関数の等高線に合わせて徐々に回転・拡大縮小していく様子を示しています。

CMA-ES behavior

主な特性

Property Detail
Objective type 単目的のみ
Variable type 連続
Invariance 回転不変・スケール不変
Recommended number of variables 最大 ~100 程度

回転不変性とは、座標軸が問題に対してどのように配置されていても、CMA-ES が同等の性能を発揮することを意味します。これは、軸に沿った探索方向を前提とする手法(独立なランダムサンプリングや QMC サンプリングなど)に対する大きな利点です。

CMA-ES を使うべき場面

  • 単目的の連続最適化
  • 変数間に相関があるか、landscape が軸に沿っていない場合
  • 変数の数が中程度である場合(おおよそ 2〜100)
  • ベイズ的手法(TPE、GP)がうまく収束しない場合

Reference