進化アルゴリズム
共分散行列適応進化戦略 (CMA-ES) は、 数値 最適化 のための特別な種類の戦略です 。 進化戦略 (ES)は 、 非線形 または非 凸連続 最適化 問題 の 数値最適化 のための確率的 かつ導関数を使用しない方法です。これらは、 進化アルゴリズム および 進化計算 のクラスに属します 。 進化アルゴリズムは、 生物学的進化 の原理 、すなわち変異 (組み換えと突然変異による) と選択の繰り返される相互作用に広く基づいています。各世代 (反復) において、新しい個体 (候補解、 と表記) が、通常は確率的な方法で現在の親個体の変異によって生成されます。次に、いくつかの個体が、その適応度または 目的関数 値 に基づいて、次の世代の親になるように選択されます。このように、 世代シーケンスを通じて、
より良い -値を持つ個体が生成されます。
x
{\displaystyle x}
ふ
(
x
)
{\displaystyle f(x)}
ふ
{\displaystyle f}
進化戦略 では、新しい候補ソリューションは通常、 の 多変量正規分布 に従ってサンプリングされます 。 再結合は、分布の新しい平均値を選択することです。 突然変異は、ランダムベクトル、つまり平均がゼロの摂動を追加することです。 分布内の変数間のペアワイズ依存関係は、 共分散行列によって表されます。 共分散行列適応 (CMA) は、この分布の 共分散行列を 更新する方法です。 これは、関数が 悪条件で ある 場合に特に便利です 。
R
ん
{\displaystyle \mathbb {R} ^{n}}
ふ
{\displaystyle f}
共分散行列 の適応は、 古典的な 最適化における 準ニュートン法 の逆 ヘッセ行列 の近似に似た、基礎となる 目的関数 の2次モデルを学習することに相当する 。ほとんどの古典的な方法とは対照的に、基礎となる目的関数に関する仮定は少なくなる。候補ソリューションのランキング(または、同等のソート)のみが利用されるため、この方法では導関数も(明示的な)目的関数も必要ありません。たとえば、 スイス式トーナメント での候補ソリューション間のペアワイズ競争からランキングを導き出すことができます。
原則
単純な 2 次元問題で共分散行列適応を使用した実際の最適化実行の図。球状の最適化ランドスケープは、等しい - 値の実線で表されます。集団 (ドット) は必要以上に大きいですが、最適化中に集団の分布 (点線) がどのように変化するかを明確に示しています。この単純な問題では、集団は数世代以内にグローバル最適値に集中します。
ふ
{\displaystyle f}
CMA-ES アルゴリズムでは、検索分布のパラメータを適応させるための 2 つの主な原則が活用されています。
まず、 最大尤度 原理は、成功する候補ソリューションと検索ステップの確率を高めるという考えに基づいています。分布の平均は、 以前に成功した候補ソリューションの 尤度が最大化されるように更新されます。分布の 共分散行列は、以前に成功した検索ステップの尤度が高くなるように(増分的に)更新されます。両方の更新は、 自然勾配 降下法として解釈できます 。また、結果として、CMA は、 すべての 主軸 を保持しながら、成功した検索ステップの反復 主成分分析を実行します。 分布の推定アルゴリズム と クロスエントロピー法は 非常によく似た考えに基づいていますが、成功する検索 ステップではなく、成功するソリューション ポイント の尤度を最大化することによって共分散行列を(非増分的に)推定します 。
次に、戦略の分布平均の時間発展の 2 つのパスが記録されます。これらは検索パスまたは発展パスと呼ばれます。これらのパスには、連続するステップ間の相関に関する重要な情報が含まれています。具体的には、連続するステップが同様の方向に実行される場合、発展パスは長くなります。発展パスは 2 つの方法で利用されます。1 つのパスは、単一の成功した検索ステップの代わりに共分散行列適応手順に使用され、好ましい方向の分散の増加を可能な限り高速化します。もう 1 つのパスは、追加のステップ サイズ制御を実行するために使用されます。このステップ サイズ制御の目的は、分布平均の連続的な動きを期待どおりに直交させることです。ステップ サイズ制御は、 早期収束を 効果的に防止しながら、最適値への高速収束を可能にします。
アルゴリズム
以下では、最も一般的に使用される ( μ / μ w 、 λ )-CMA-ES の概要を示します。各反復ステップでは、 λ 個 の新しい候補ソリューションのうち μ 個の最良のものの重み付けされた組み合わせを使用して、分布パラメータを更新します。メイン ループは、1) 新しいソリューションのサンプリング、2) 適合性に基づくサンプリングされたソリューションの並べ替え、3) 並べ替えられたサンプルに基づく内部状態変数の更新という 3 つの主要部分で構成されます。アルゴリズムの 疑似コード は次のようになります。
set // 反復ごとのサンプル数、少なくとも 2、通常は 4 より大きい
。initialize 、、、、、 // 終了しない 間に 状態変数を初期化する
。do // で反復する
。do // 新しい ソリューション を
サンプリングし て評価する 。sample_multivariate_normal(mean 、 covariance_matrix )
← with // ソリューションをソートする
。// 後で必要になる。and ← update_m // 平均をより良いソリューションに移動
← update_ps // 等方性進化パスを更新する
← update_pc // 異方性進化パスを更新する
← update_C // 共分散行列を更新
する ← update_sigma // 等方性パスの長さを使用してステップ サイズを更新する
。return or
λ
{\displaystyle \lambda}
メートル
{\displaystyle m}
σ
{\displaystyle \sigma}
C
=
私
{\displaystyle C=I}
p
σ
=
0
{\displaystyle p_{\sigma }=0}
p
c
=
0
{\displaystyle p_{c}=0}
私
{\displaystyle i}
{
1
…
λ
}
{\displaystyle \{1\ldots \lambda \}}
λ
{\displaystyle \lambda}
x
私
=
{\displaystyle x_{i}={}}
=
メートル
{\displaystyle {}=m}
=
σ
2
C
{\displaystyle {}=\sigma ^{2}C}
ふ
私
=
フィットネス
(
x
私
)
{\displaystyle f_{i}=\operatorname {適応度} (x_{i})}
x
1
…
λ
{\displaystyle x_{1\ldots \lambda}}
x
s
(
1
)
…
s
(
λ
)
{\displaystyle x_{s(1)\ldots s(\lambda )}}
s
(
私
)
=
argsort
(
ふ
1
…
λ
、
私
)
{\displaystyle s(i)=\operatorname {argsort} (f_{1\ldots \lambda },i)}
メートル
′
=
メートル
{\displaystyle m'=m}
メートル
−
メートル
′
{\displaystyle 'mm'}
x
私
−
メートル
′
{\displaystyle x_{i}-m'}
メートル
{\displaystyle m}
(
x
1
、
…
、
x
λ
)
{\displaystyle (x_{1},\ldots,x_{\lambda})}
p
σ
{\displaystyle p_{\sigma}}
(
p
σ
、
σ
−
1
C
−
1
/
2
(
メートル
−
メートル
′
)
)
{\displaystyle (p_{\sigma },\sigma ^{-1}C^{-1/2}(mm'))}
p
c
{\displaystyle p_{c}}
(
p
c
、
σ
−
1
(
メートル
−
メートル
′
)
、
‖
p
σ
‖
)
{\displaystyle (p_{c},\sigma ^{-1}(mm'),\|p_{\sigma }\|)}
C
{\displaystyle C}
(
C
、
p
c
、
(
x
1
−
メートル
′
)
/
σ
、
…
、
(
x
λ
−
メートル
′
)
/
σ
)
{\displaystyle (C,p_{c},(x_{1}-m')/\sigma ,\ldots ,(x_{\lambda }-m')/\sigma )}
σ
{\displaystyle \sigma}
(
σ
、
‖
p
σ
‖
)
{\displaystyle (\sigma ,\|p_{\sigma }\|)}
メートル
{\displaystyle m}
x
1
{\displaystyle x_{1}}
5 つの更新割り当ての順序は重要です。 を最初に更新し 、 の 前に更新し 、 を 最後に更新する必要があります。 5 つの状態変数の更新方程式は、次のように指定されます。
メートル
{\displaystyle m}
p
σ
{\displaystyle p_{\sigma}}
p
c
{\displaystyle p_{c}}
C
{\displaystyle C}
σ
{\displaystyle \sigma}
探索空間の次元 と反復ステップが与えられている 。5つの状態変数は
ん
{\displaystyle n}
け
{\displaystyle k}
メートル
け
∈
R
ん
{\displaystyle m_{k}\in \mathbb {R} ^{n}}
、分布平均と最適化問題の現在の最良解、
σ
け
>
0
{\displaystyle \sigma_{k}>0}
、ステップサイズ、
C
け
{\displaystyle C_{k}}
、対称かつ 正定値の 共分散行列 であり 、
ん
×
ん
{\displaystyle n\times n}
C
0
=
私
{\displaystyle C_{0}=I}
p
σ
∈
R
ん
、
p
c
∈
R
ん
{\displaystyle p_{\sigma}\in \mathbb {R} ^{n},p_{c}\in \mathbb {R} ^{n}}
2 つの進化パスがあり、最初はゼロ ベクトルに設定されています。
反復は、 多変量正規分布 から 候補解をサンプリングすることから始まります 。つまり、
λ
>
1
{\displaystyle \lambda >1}
x
私
∈
R
ん
{\displaystyle x_{i}\in \mathbb {R} ^{n}}
いいえ
(
メートル
け
、
σ
け
2
C
け
)
{\displaystyle \textstyle {\mathcal {N}}(m_{k},\sigma _{k}^{2}C_{k})}
私
=
1
、
…
、
λ
{\displaystyle i=1,\ldots ,\lambda }
x
私
〜
いいえ
(
メートル
け
、
σ
け
2
C
け
)
〜
メートル
け
+
σ
け
×
いいえ
(
0
、
C
け
)
{\displaystyle {\begin{aligned}x_{i}\ &\sim \ {\mathcal {N}}(m_{k},\sigma _{k}^{2}C_{k})\\&\sim \ m_{k}+\sigma _{k}\times {\mathcal {N}}(0,C_{k})\end{aligned}}}
2行目は、現在の最良解ベクトル(分布平均ベクトル) の不偏摂動(突然変異)として解釈することを示唆している。候補解は、 最小化されるべき 目的関数に基づいて評価される。 ソートされた候補解を次のように
表す。
メートル
け
{\displaystyle m_{k}}
x
私
{\displaystyle x_{i}}
ふ
:
R
ん
→
R
{\displaystyle f:\mathbb {R} ^{n}\to \mathbb {R} }
ふ
{\displaystyle f}
{
x
私
:
λ
∣
私
=
1
…
λ
}
=
{
x
私
∣
私
=
1
…
λ
}
そして
ふ
(
x
1
:
λ
)
≤
⋯
≤
ふ
(
x
μ
:
λ
)
≤
ふ
(
x
μ
+
1
:
λ
)
≤
⋯
、
{\displaystyle \{x_{i:\lambda }\mid i=1\dots \lambda \}=\{x_{i}\mid i=1\dots \lambda \}{\text{ および }}f(x_{1:\lambda })\leq \dots \leq f(x_{\mu :\lambda })\leq f(x_{\mu +1:\lambda })\leq \cdots ,}
新しい平均値は次のように計算される。
メートル
け
+
1
=
∑
私
=
1
μ
わ
私
x
私
:
λ
=
メートル
け
+
∑
私
=
1
μ
わ
私
(
x
私
:
λ
−
メートル
け
)
{\displaystyle {\begin{aligned}m_{k+1}&=\sum _{i=1}^{\mu }w_{i}\,x_{i:\lambda }\\&=m_{k}+\sum _{i=1}^{\mu }w_{i}\,(x_{i:\lambda }-m_{k})\end{aligned}}}
ここで、正の(再結合)重みの合計は 1 になります。通常、 重みは となるように選択されます 。ここで、および以下で目的関数から使用される唯一のフィードバックは、インデックス によるサンプルされた候補ソリューションの順序付けです 。
わ
1
≥
わ
2
≥
⋯
≥
わ
μ
>
0
{\displaystyle w_{1}\geq w_{2}\geq \dots \geq w_{\mu }>0}
μ
≤
λ
/
2
{\displaystyle \mu \leq \lambda /2}
μ
わ
:=
1
/
∑
私
=
1
μ
わ
私
2
≈
λ
/
4
{\displaystyle \textstyle \mu _{w}:=1/\sum _{i=1}^{\mu }w_{i}^{2}\approx \lambda /4}
i
:
λ
{\displaystyle i:\lambda }
ステップ サイズは、 累積ステップ サイズ適応 (CSA)を使用して更新されます。これは、 パス長制御 とも呼ばれます 。進化パス (または検索パス) が最初に更新されます。
σ
k
{\displaystyle \sigma _{k}}
p
σ
{\displaystyle p_{\sigma }}
p
σ
←
(
1
−
c
σ
)
⏟
discount factor
p
σ
+
1
−
(
1
−
c
σ
)
2
⏞
complements for discounted variance
μ
w
C
k
−
1
/
2
m
k
+
1
−
m
k
⏞
displacement of
m
σ
k
⏟
distributed as
N
(
0
,
I
)
under neutral selection
{\displaystyle p_{\sigma }\gets \underbrace {(1-c_{\sigma })} _{\!\!\!\!\!{\text{discount factor}}\!\!\!\!\!}\,p_{\sigma }+\overbrace {\sqrt {1-(1-c_{\sigma })^{2}}} ^{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{complements for discounted variance}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}\underbrace {{\sqrt {\mu _{w}}}\,C_{k}^{\;-1/2}\,{\frac {\overbrace {m_{k+1}-m_{k}} ^{\!\!\!{\text{displacement of }}m\!\!\!}}{\sigma _{k}}}} _{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{distributed as }}{\mathcal {N}}(0,I){\text{ under neutral selection}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}}
σ
k
+
1
=
σ
k
×
exp
(
c
σ
d
σ
(
‖
p
σ
‖
E
‖
N
(
0
,
I
)
‖
−
1
)
⏟
unbiased about 0 under neutral selection
)
{\displaystyle \sigma _{k+1}=\sigma _{k}\times \exp {\bigg (}{\frac {c_{\sigma }}{d_{\sigma }}}\underbrace {\left({\frac {\|p_{\sigma }\|}{\operatorname {E} \|{\mathcal {N}}(0,I)\|}}-1\right)} _{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{unbiased about 0 under neutral selection}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}{\bigg )}}
どこ
c
σ
−
1
≈
n
/
3
{\displaystyle c_{\sigma }^{-1}\approx n/3}
は進化経路の逆方向の時間範囲であり 、1より大きい(は 指数関数的減衰 定数 を連想させる。 ここで は 関連する寿命であり、 半減期である)。
p
σ
{\displaystyle p_{\sigma }}
c
σ
≪
1
{\displaystyle c_{\sigma }\ll 1}
(
1
−
c
σ
)
k
≈
exp
(
−
c
σ
k
)
{\displaystyle (1-c_{\sigma })^{k}\approx \exp(-c_{\sigma }k)}
c
σ
−
1
{\displaystyle c_{\sigma }^{-1}}
c
σ
−
1
ln
(
2
)
≈
0.7
c
σ
−
1
{\displaystyle c_{\sigma }^{-1}\ln(2)\approx 0.7c_{\sigma }^{-1}}
μ
w
=
(
∑
i
=
1
μ
w
i
2
)
−
1
{\displaystyle \mu _{w}=\left(\sum _{i=1}^{\mu }w_{i}^{2}\right)^{-1}}
は分散有効選択質量であり、 の定義により 、
1
≤
μ
w
≤
μ
{\displaystyle 1\leq \mu _{w}\leq \mu }
w
i
{\displaystyle w_{i}}
C
k
−
1
/
2
=
C
k
−
1
=
C
k
−
1
{\displaystyle C_{k}^{\;-1/2}={\sqrt {C_{k}}}^{\;-1}={\sqrt {C_{k}^{\;-1}}}}
は の 逆数 の 唯一の対称 平方根 であり、
C
k
{\displaystyle C_{k}}
d
σ
{\displaystyle d_{\sigma }}
減衰パラメータは通常 1 に近くなります。 またはの場合、 ステップ サイズは変更されません。
d
σ
=
∞
{\displaystyle d_{\sigma }=\infty }
c
σ
=
0
{\displaystyle c_{\sigma }=0}
が期待値 より大きい 場合にのみ ステップサイズが増加する。
σ
k
{\displaystyle \sigma _{k}}
‖
p
σ
‖
{\displaystyle \|p_{\sigma }\|}
E
‖
N
(
0
,
I
)
‖
=
2
Γ
(
(
n
+
1
)
/
2
)
/
Γ
(
n
/
2
)
≈
n
(
1
−
1
/
(
4
n
)
+
1
/
(
21
n
2
)
)
{\displaystyle {\begin{aligned}\operatorname {E} \|{\mathcal {N}}(0,I)\|&={\sqrt {2}}\,\Gamma ((n+1)/2)/\Gamma (n/2)\\&\approx {\sqrt {n}}\,(1-1/(4\,n)+1/(21\,n^{2}))\end{aligned}}}
小さい場合は減少する。このため、ステップサイズの更新は、 適応が成功した後の連続ステップを -共役 にする傾向がある。 [1]
C
k
−
1
{\displaystyle C_{k}^{-1}}
(
m
k
+
2
−
m
k
+
1
σ
k
+
1
)
T
C
k
−
1
m
k
+
1
−
m
k
σ
k
≈
0
{\displaystyle \textstyle \left({\frac {m_{k+2}-m_{k+1}}{\sigma _{k+1}}}\right)^{T}\!C_{k}^{-1}{\frac {m_{k+1}-m_{k}}{\sigma _{k}}}\approx 0}
最後に、 共分散行列 が更新されますが、ここでもそれぞれの進化パスが最初に更新されます。
p
c
←
(
1
−
c
c
)
⏟
discount factor
p
c
+
1
[
0
,
α
n
]
(
‖
p
σ
‖
)
⏟
indicator function
1
−
(
1
−
c
c
)
2
⏞
complements for discounted variance
μ
w
m
k
+
1
−
m
k
σ
k
⏟
distributed as
N
(
0
,
C
k
)
under neutral selection
{\displaystyle p_{c}\gets \underbrace {(1-c_{c})} _{\!\!\!\!\!{\text{discount factor}}\!\!\!\!\!}\,p_{c}+\underbrace {\mathbf {1} _{[0,\alpha {\sqrt {n}}]}(\|p_{\sigma }\|)} _{\text{indicator function}}\overbrace {\sqrt {1-(1-c_{c})^{2}}} ^{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{complements for discounted variance}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}\underbrace {{\sqrt {\mu _{w}}}\,{\frac {m_{k+1}-m_{k}}{\sigma _{k}}}} _{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{distributed as}}\;{\mathcal {N}}(0,C_{k})\;{\text{under neutral selection}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}}
C
k
+
1
=
(
1
−
c
1
−
c
μ
+
c
s
)
⏟
discount factor
C
k
+
c
1
p
c
p
c
T
⏟
rank one matrix
+
c
μ
∑
i
=
1
μ
w
i
x
i
:
λ
−
m
k
σ
k
(
x
i
:
λ
−
m
k
σ
k
)
T
⏟
rank
min
(
μ
,
n
)
matrix
{\displaystyle C_{k+1}=\underbrace {(1-c_{1}-c_{\mu }+c_{s})} _{\!\!\!\!\!{\text{discount factor}}\!\!\!\!\!}\,C_{k}+c_{1}\underbrace {p_{c}p_{c}^{T}} _{\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\text{rank one matrix}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}+\,c_{\mu }\underbrace {\sum _{i=1}^{\mu }w_{i}{\frac {x_{i:\lambda }-m_{k}}{\sigma _{k}}}\left({\frac {x_{i:\lambda }-m_{k}}{\sigma _{k}}}\right)^{T}} _{\operatorname {rank} \min(\mu ,n){\text{ matrix}}}}
ここで は 転置を表し、
T
{\displaystyle T}
c
c
−
1
≈
n
/
4
{\displaystyle c_{c}^{-1}\approx n/4}
進化経路の逆方向の時間範囲であり 、1より大きい。
p
c
{\displaystyle p_{c}}
α
≈
1.5
{\displaystyle \alpha \approx 1.5}
そして、 指示関数は の場合 にのみ と評価され 、言い換えれば となり 、通常は となる。
1
[
0
,
α
n
]
(
‖
p
σ
‖
)
{\displaystyle \mathbf {1} _{[0,\alpha {\sqrt {n}}]}(\|p_{\sigma }\|)}
‖
p
σ
‖
∈
[
0
,
α
n
]
{\displaystyle \|p_{\sigma }\|\in [0,\alpha {\sqrt {n}}]}
‖
p
σ
‖
≤
α
n
{\displaystyle \|p_{\sigma }\|\leq \alpha {\sqrt {n}}}
c
s
=
(
1
−
1
[
0
,
α
n
]
(
‖
p
σ
‖
)
2
)
c
1
c
c
(
2
−
c
c
)
{\displaystyle c_{s}=(1-\mathbf {1} _{[0,\alpha {\sqrt {n}}]}(\|p_{\sigma }\|)^{2})\,c_{1}c_{c}(2-c_{c})}
指標がゼロの場合の小さな分散損失を部分的に補う。
c
1
≈
2
/
n
2
{\displaystyle c_{1}\approx 2/n^{2}}
は共分散行列 のランク1更新の学習率であり 、
c
μ
≈
μ
w
/
n
2
{\displaystyle c_{\mu }\approx \mu _{w}/n^{2}}
は共分散行列 の ランク更新の学習率であり 、 を超えてはなりません 。
μ
{\displaystyle \mu }
1
−
c
1
{\displaystyle 1-c_{1}}
共 分散行列の 更新により、および が からサンプリングされる 尤度が増加する 傾向 があります 。これで反復ステップが完了します。
p
c
{\displaystyle p_{c}}
(
x
i
:
λ
−
m
k
)
/
σ
k
{\displaystyle (x_{i:\lambda }-m_{k})/\sigma _{k}}
N
(
0
,
C
k
+
1
)
{\displaystyle {\mathcal {N}}(0,C_{k+1})}
反復ごとの候補サンプルの数 は 事前に決定されておらず、広い範囲で変化する可能性があります。 などの値が小さいほど、 検索動作がローカルになります。 などの値が大きく なると、検索はよりグローバルになります。 アルゴリズムは、 再起動ごとに が係数 2 ずつ増加して繰り返し再起動されることがあります。 [ 2] 設定 (または、 代わりに、たとえば が 使用可能なプロセッサの数によって事前に決定されている場合)以外に、上記で紹介したパラメータは、特定の目的関数に固有のものではなく、したがってユーザーが変更することを意図したものではありません。
λ
{\displaystyle \lambda }
λ
=
10
{\displaystyle \lambda =10}
λ
=
10
n
{\displaystyle \lambda =10n}
μ
w
≈
λ
/
4
{\displaystyle \mu _{w}\approx \lambda /4}
λ
{\displaystyle \lambda }
λ
{\displaystyle \lambda }
μ
{\displaystyle \mu }
λ
{\displaystyle \lambda }
MATLAB/Octaveのサンプルコード
function xmin = purecmaes % ( mu/mu_w, lambda ) - CMA - ES
% -------------------- 初期化 -------------------------------- % ユーザー定義の入力パラメータ(編集する必要があります) strfitnessfct = 'frosenbrock' ; % 目的関数/適応度関数の名前 N = 20 ; % 目的変数の数/問題次元 xmean = rand ( N , 1 ); % 目的変数の初期点 sigma = 0.3 ; % 座標ごとの標準偏差(ステップ サイズ) stopfitness = 1e-10 ; % 適応度 < stopfitness の場合は停止(最小化) stopeval = 1e3 * N ^ 2 ; % 関数評価の stopeval 回数後に停止 % 戦略パラメータ設定: 選択 lambda = 4 + floor ( 3 * log ( N )); % 個体群のサイズ、子孫の数 mu = lambda / 2 ; % 組み換えの親/ポイントの数 weights = log ( mu + 1 / 2 ) - log ( 1 : mu ) ' ; % 重み付け組み換えの muXone 配列 mu = floor ( mu ); weights = weights / sum ( weights ); % 組み換え重み配列を正規化 mueff = sum ( weights ) ^ 2 / sum ( weights .^ 2 ); % 合計 w_i x_i の分散有効性
% 戦略パラメータ設定: 適応
cc = ( 4 + mueff / N ) / ( N + 4 + 2 * mueff / N ); % C の累積の時定数 cs = ( mueff + 2 ) / ( N + mueff + 5 ); % シグマ制御の累積の t 定数 c1 = 2 / (( N + 1.3 ) ^ 2 + mueff ); % C のランク 1 更新の学習率 cmu = min ( 1 - c1 , 2 * ( mueff - 2 + 1 / mueff ) / (( N + 2 ) ^ 2 + mueff )); % ランク mu 更新の場合 dumps = 1 + 2 * max ( 0 , sqrt (( mueff - 1 ) / ( N + 1 )) - 1 ) + cs ; % シグマの減衰 % 通常は 1 に近い % 動的 (内部) 戦略パラメータと定数を初期化 pc = zeros ( N , 1 ); ps = zeros ( N , 1 ); % C とシグマの進化パス B = eye ( N , N ); % B は座標系を定義します D = ones ( N , 1 ); % 対角線 D はスケーリングを定義します C = B * diag ( D .^ 2 ) * B ' ; % 共分散行列 C invsqrtC = B * diag ( D .^- 1 ) * B '
; % C^-1/2 eigeneval = 0 ; % B と D の更新を追跡 chiN = N ^ 0.5 * ( 1 - 1 / ( 4 * N ) + 1 / ( 21 * N ^ 2 )); % 期待値 % ||N(0,I)|| == norm(randn(N,1)) % -------------------- 生成ループ -------------------------------- counteval = 0 ; % 次の 40 行に 20 行の興味深いコードが含まれています while counteval < stopeval % ラムダ子孫を生成して評価します for k = 1 : lambda arx (:, k ) = xmean + sigma * B * ( D .* randn ( N , 1 )); % m + sig * Normal(0,C) arfitness ( k ) = feval ( strfitnessfct , arx (:, k )); % 目的関数呼び出し counteval = counteval + 1 ; end % 適応度でソートし、加重平均を計算して xmean に格納します [ arfitness , arindex ] = sort ( arfitness ); % 最小化 xold = xmean ; xmean = arx (:, arindex ( 1 : mu )) * weights ; % 再結合、新しい平均値 % 累積: 進化パスを更新します ps = ( 1 - cs ) * ps ... + sqrt ( cs * ( 2 - cs ) * mueff ) * invsqrtC * ( xmean - xold ) / sigma ; hsig = norm ( ps ) / sqrt (
1 - ( 1 - cs ) ^ ( 2 * counteval / lambda )) / chiN < 1.4 + 2 / ( N + 1 ); pc = ( 1 - cc ) * pc ... + hsig * sqrt ( cc * ( 2 - cc ) * mueff ) * ( xmean - xold ) / sigma ;
% 共分散行列を適応 C
artmp = ( 1 / sigma ) * ( arx (:, arindex ( 1 : mu )) - repmat ( xold , 1 , mu )); C = ( 1 - c1 - cmu ) * C ... % 古い行列を考慮 + c1 * ( pc * pc ' ... % ランク 1 更新 + ( 1 - hsig ) * cc * ( 2 - cc ) * C ) ... % hsig==0 の場合はマイナー修正 + cmu * artmp * diag ( weights ) * artmp ' ; % ランク mu 更新
% ステップ サイズ sigma を適応します。
sigma = sigma * exp (( cs / dumps ) * ( norm ( ps ) / chiN - 1 )); % counteval - eigeneval > lambda / ( c1 + cmu ) / N / 10 の場合、 C を B*diag(D.^2)*B' (対角化) に分解して、 O(N^2) を達成します。 eigeneval = counteval ; C = triu ( C ) + triu ( C , 1 ) ' ; % 対称性を強制します。 [ B , D ] = eig ( C ); % 固有分解、B== 正規化された固有ベクトル D = sqrt ( diag ( D )); % D は標準偏差のベクトルです 。invsqrtC = B * diag ( D .^- 1 ) * B ' ; end % ブレーク、適応度が十分に高いか条件が 1e14 を超える場合、より良い終了方法が推奨されます if arfitness ( 1 ) <= stopfitness || max ( D ) > 1e7 * min ( D ) break ; end
end % while、生成ループの終了
xmin = arx (:, arindex ( 1 )); % 最後の反復のベストポイントを返します。 % xmean はさらに % 良くなると予想されることに注意してください 。 end % --------------------------------------------------------------- function f = frosenbrock ( x ) if size ( x , 1 ) < 2 error ( 'dimension must be greater one' ); end f = 100 * sum (( x ( 1 : end - 1 ) .^ 2 - x ( 2 : end )) .^ 2 ) + sum (( x ( 1 : end - 1 ) - 1 ) .^ 2 ); end
理論的基礎
分布パラメータ(平均、分散、共分散)が与えられた場合、 新しい候補ソリューションをサンプリングするための 正規確率分布は 、上の 最大エントロピー確率分布 、つまり分布に組み込まれた事前情報が最小限であるサンプル分布です。CMA-ES の更新方程式に関する詳細な考察は、以下で行います。
R
n
{\displaystyle \mathbb {R} ^{n}}
可変メトリック
CMA-ESは確率的 変数メトリック 法を実装します。凸二次目的関数の非常に特殊なケースでは、
f
(
x
)
=
1
2
(
x
−
x
∗
)
T
H
(
x
−
x
∗
)
{\displaystyle f(x)={\textstyle {\frac {1}{2}}}(x-x^{*})^{T}H(x-x^{*})}
共分散行列は、 スカラー係数と小さなランダム変動 を除けば 、 ヘッセ行列 の逆行列 に適応します。より一般的には、関数 ( ただし は 厳密に増加し、したがって順序が保存される)上でも、共分散行列は、 スカラー係数と小さなランダム変動 を除けば 、 に適応します。選択比(したがって集団サイズ )については、共分散行列の適応のない進化戦略でも、選択された解は逆ヘッセ行列を反映した経験的共分散行列を生成します。この結果は 、2次近似に依存する静的モデルで に対して証明されています。 [3]
C
k
{\displaystyle C_{k}}
H
{\displaystyle H}
g
∘
f
{\displaystyle g\circ f}
g
{\displaystyle g}
C
k
{\displaystyle C_{k}}
H
−
1
{\displaystyle H^{-1}}
λ
/
μ
→
∞
{\displaystyle \lambda /\mu \to \infty }
λ
→
∞
{\displaystyle \lambda \to \infty }
μ
{\displaystyle \mu }
μ
=
1
{\displaystyle \mu =1}
最大尤度更新
平均と共分散行列の更新方程式は、 期待値最大化アルゴリズム に似て 尤度 を最大化する。平均ベクトルの更新は、 対数尤度を最大化し、
m
{\displaystyle m}
m
k
+
1
=
arg
max
m
∑
i
=
1
μ
w
i
log
p
N
(
x
i
:
λ
∣
m
)
{\displaystyle m_{k+1}=\arg \max _{m}\sum _{i=1}^{\mu }w_{i}\log p_{\mathcal {N}}(x_{i:\lambda }\mid m)}
どこ
log
p
N
(
x
)
=
−
1
2
log
det
(
2
π
C
)
−
1
2
(
x
−
m
)
T
C
−
1
(
x
−
m
)
{\displaystyle \log p_{\mathcal {N}}(x)=-{\frac {1}{2}}\log \det(2\pi C)-{\frac {1}{2}}(x-m)^{T}C^{-1}(x-m)}
は、平均と任意の正定値共分散行列 を持つ多変量正規分布からの の対数尤度を表します 。が から独立していることを 確認するには、まず、座標ごとの最大化子はスケーリング係数に依存しないため、任意の対角行列 に当てはまることに注意 してください。したがって、データ ポイントの回転または 非対角を選択することは同等です。
x
{\displaystyle x}
m
{\displaystyle m}
C
{\displaystyle C}
m
k
+
1
{\displaystyle m_{k+1}}
C
{\displaystyle C}
C
{\displaystyle C}
C
{\displaystyle C}
共分散行列のランク 更新、すなわち更新方程式の最も右の被加数は 、その対数尤度を最大化する。
μ
{\displaystyle \mu }
C
k
{\displaystyle C_{k}}
∑
i
=
1
μ
w
i
x
i
:
λ
−
m
k
σ
k
(
x
i
:
λ
−
m
k
σ
k
)
T
=
arg
max
C
∑
i
=
1
μ
w
i
log
p
N
(
x
i
:
λ
−
m
k
σ
k
|
C
)
{\displaystyle \sum _{i=1}^{\mu }w_{i}{\frac {x_{i:\lambda }-m_{k}}{\sigma _{k}}}\left({\frac {x_{i:\lambda }-m_{k}}{\sigma _{k}}}\right)^{T}=\arg \max _{C}\sum _{i=1}^{\mu }w_{i}\log p_{\mathcal {N}}\left(\left.{\frac {x_{i:\lambda }-m_{k}}{\sigma _{k}}}\right|C\right)}
に対して となります (それ以外の場合は は 特異ですが、 に対しても実質的に同じ結果が成り立ちます )。ここで は、 平均がゼロで共分散行列 である多変量正規分布からの の尤度を表します 。したがって、 およびに対して は 、 上記の 最大尤度 推定量です。 導出の詳細については、
共分散行列の推定を参照してください。
μ
≥
n
{\displaystyle \mu \geq n}
C
{\displaystyle C}
μ
<
n
{\displaystyle \mu <n}
p
N
(
x
|
C
)
{\displaystyle p_{\mathcal {N}}(x|C)}
x
{\displaystyle x}
C
{\displaystyle C}
c
1
=
0
{\displaystyle c_{1}=0}
c
μ
=
1
{\displaystyle c_{\mu }=1}
C
k
+
1
{\displaystyle C_{k+1}}
標本分布空間における自然勾配降下法
Akimoto et al. [4] と Glasmachers et al. [5] はそれぞれ独立に、分布パラメータの更新が、 期待値がサンプル分布の下で取られる、(最小化される) 目的関数の期待値のサンプルされた 自然勾配 の方向への降下と似ていることを発見しました。およびのパラメータ設定 、つまりステップサイズの制御とランク 1 更新なしで、CMA-ES は自然進化戦略 (NES) のインスタンス化と見なすことができます 。 [4] [5] 自然 勾配 は 分布 の
パラメータ 化 とは無関係です。サンプル分布 pのパラメータ θ に関して 、 の勾配は 次のように表すことができます。
E
f
(
x
)
{\displaystyle Ef(x)}
c
σ
=
0
{\displaystyle c_{\sigma }=0}
c
1
=
0
{\displaystyle c_{1}=0}
E
f
(
x
)
{\displaystyle Ef(x)}
∇
θ
E
(
f
(
x
)
∣
θ
)
=
∇
θ
∫
R
n
f
(
x
)
p
(
x
)
d
x
=
∫
R
n
f
(
x
)
∇
θ
p
(
x
)
d
x
=
∫
R
n
f
(
x
)
p
(
x
)
∇
θ
ln
p
(
x
)
d
x
=
E
(
f
(
x
)
∇
θ
ln
p
(
x
∣
θ
)
)
{\displaystyle {\begin{aligned}{\nabla }_{\!\theta }E(f(x)\mid \theta )&=\nabla _{\!\theta }\int _{\mathbb {R} ^{n}}f(x)p(x)\,\mathrm {d} x\\&=\int _{\mathbb {R} ^{n}}f(x)\nabla _{\!\theta }p(x)\,\mathrm {d} x\\&=\int _{\mathbb {R} ^{n}}f(x)p(x)\nabla _{\!\theta }\ln p(x)\,\mathrm {d} x\\&=\operatorname {E} (f(x)\nabla _{\!\theta }\ln p(x\mid \theta ))\end{aligned}}}
ここで、 は パラメータベクトル に依存します 。いわゆる スコア関数 は 、 θ に対する p の相対感度を示し、期待値は分布 p に関して取られます 。 の 自然 勾配は、 フィッシャー情報量(確率分布と 相対エントロピー の曲率との間の情報距離尺度) に準拠しており 、次のように表されます。
p
(
x
)
=
p
(
x
∣
θ
)
{\displaystyle p(x)=p(x\mid \theta )}
θ
{\displaystyle \theta }
∇
θ
ln
p
(
x
∣
θ
)
=
∇
θ
p
(
x
)
p
(
x
)
{\displaystyle \nabla _{\!\theta }\ln p(x\mid \theta )={\frac {\nabla _{\!\theta }p(x)}{p(x)}}}
E
f
(
x
)
{\displaystyle Ef(x)}
∇
~
E
(
f
(
x
)
∣
θ
)
=
F
θ
−
1
∇
θ
E
(
f
(
x
)
∣
θ
)
{\displaystyle {\begin{aligned}{\tilde {\nabla }}\operatorname {E} (f(x)\mid \theta )&=F_{\theta }^{-1}\nabla _{\!\theta }\operatorname {E} (f(x)\mid \theta )\end{aligned}}}
ここで フィッシャー情報 行列は −ln p の ヘッセ行列 の期待値であり 、選択されたパラメータ化に依存しない式となる。これまでの等式を組み合わせると、
F
θ
{\displaystyle F_{\theta }}
∇
~
E
(
f
(
x
)
∣
θ
)
=
F
θ
−
1
E
(
f
(
x
)
∇
θ
ln
p
(
x
∣
θ
)
)
=
E
(
f
(
x
)
F
θ
−
1
∇
θ
ln
p
(
x
∣
θ
)
)
{\displaystyle {\begin{aligned}{\tilde {\nabla }}\operatorname {E} (f(x)\mid \theta )&=F_{\theta }^{-1}\operatorname {E} (f(x)\nabla _{\!\theta }\ln p(x\mid \theta ))\\&=\operatorname {E} (f(x)F_{\theta }^{-1}\nabla _{\!\theta }\ln p(x\mid \theta ))\end{aligned}}}
後者の期待値のモンテカルロ近似は、 p から λ個のサンプルの平均を取る。
∇
~
E
^
θ
(
f
)
:=
−
∑
i
=
1
λ
w
i
⏞
preference weight
F
θ
−
1
∇
θ
ln
p
(
x
i
:
λ
∣
θ
)
⏟
candidate direction from
x
i
:
λ
with
w
i
=
−
f
(
x
i
:
λ
)
/
λ
{\displaystyle {\tilde {\nabla }}{\widehat {E}}_{\theta }(f):=-\sum _{i=1}^{\lambda }\overbrace {w_{i}} ^{\!\!\!\!{\text{preference weight}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}\underbrace {F_{\theta }^{-1}\nabla _{\!\theta }\ln p(x_{i:\lambda }\mid \theta )} _{\!\!\!\!\!{\text{candidate direction from }}x_{i:\lambda }\!\!\!\!\!}\quad {\text{with }}w_{i}=-f(x_{i:\lambda })/\lambda }
ここで、上記の 表記法が使用されているため、 では 単調に減少します 。
i
:
λ
{\displaystyle i:\lambda }
w
i
{\displaystyle w_{i}}
i
{\displaystyle i}
Ollivier et al. [6] は 、最終的に、CMA-ES で定義されている
重み の厳密な導出を発見しました。重みは 、上で定義したように、番目の 順序 統計量 の点に おける の CDF の 漸近的に一貫した推定値 であり、固定された単調減少変換 で構成されます 。つまり、
w
i
{\displaystyle w_{i}}
f
(
X
)
{\displaystyle f(X)}
i
{\displaystyle i}
f
(
x
i
:
λ
)
{\displaystyle f(x_{i:\lambda })}
X
∼
p
(
.
|
θ
)
{\displaystyle X\sim p(.|\theta )}
w
{\displaystyle w}
w
i
=
w
(
r
a
n
k
(
f
(
x
i
:
λ
)
)
−
1
/
2
λ
)
{\displaystyle w_{i}=w\left({\frac {{\mathsf {rank}}(f(x_{i:\lambda }))-1/2}{\lambda }}\right)}
。
これらの重みにより、アルゴリズムは特定の -値に対して鈍感になります。より簡潔に言うと、 の代わりに の CDF 推定値を使用すると 、アルゴリズムは -値の順位にのみ依存し 、その基礎となる分布には依存しなくなります。これにより、アルゴリズムは厳密に増加する -変換に対して不変になります。ここで、次のように定義します。
f
{\displaystyle f}
f
{\displaystyle f}
f
{\displaystyle f}
f
{\displaystyle f}
f
{\displaystyle f}
θ
=
[
m
k
T
vec
(
C
k
)
T
σ
k
]
T
∈
R
n
+
n
2
+
1
{\displaystyle \theta =[m_{k}^{T}\operatorname {vec} (C_{k})^{T}\sigma _{k}]^{T}\in \mathbb {R} ^{n+n^{2}+1}}
は多変量正規分布 の密度である 。 すると、フィッシャー情報行列の逆行列を表す明示的な式が得られる。ここで、 は固定されている。
p
(
⋅
∣
θ
)
{\displaystyle p(\cdot \mid \theta )}
N
(
m
k
,
σ
k
2
C
k
)
{\displaystyle {\mathcal {N}}(m_{k},\sigma _{k}^{2}C_{k})}
σ
k
{\displaystyle \sigma _{k}}
F
θ
∣
σ
k
−
1
=
[
σ
k
2
C
k
0
0
2
C
k
⊗
C
k
]
{\displaystyle F_{\theta \mid \sigma _{k}}^{-1}=\left[{\begin{array}{cc}\sigma _{k}^{2}C_{k}&0\\0&2C_{k}\otimes C_{k}\end{array}}\right]}
そして
ln
p
(
x
∣
θ
)
=
ln
p
(
x
∣
m
k
,
σ
k
2
C
k
)
=
−
1
2
(
x
−
m
k
)
T
σ
k
−
2
C
k
−
1
(
x
−
m
k
)
−
1
2
ln
det
(
2
π
σ
k
2
C
k
)
{\displaystyle \ln p(x\mid \theta )=\ln p(x\mid m_{k},\sigma _{k}^{2}C_{k})=-{\frac {1}{2}}(x-m_{k})^{T}\sigma _{k}^{-2}C_{k}^{-1}(x-m_{k})-{\frac {1}{2}}\ln \det(2\pi \sigma _{k}^{2}C_{k})}
そして、いくつかの計算を行った結果、CMA-ESの更新は次のようになる [4]。
ここで、mat はそれぞれの自然勾配サブベクトルから適切な行列を形成します。つまり、 を設定すると 、CMA-ES の更新は、 直交パラメータ と に それぞれ異なるステップサイズ (学習率 1 と )を使用しながら、自然勾配の近似の方向に下がります 。最近のバージョンでは、平均に対して も異なる学習率を使用できます。 [7] CMA-ES の最新バージョンでは、後者に対してのみ負の値を持つ、および に対して 異なる関数も使用します (いわゆるアクティブ CMA)。
c
1
=
c
σ
=
0
{\displaystyle c_{1}=c_{\sigma }=0}
∇
~
E
^
θ
(
f
)
{\displaystyle {\tilde {\nabla }}{\widehat {E}}_{\theta }(f)}
c
μ
{\displaystyle c_{\mu }}
m
{\displaystyle m}
C
{\displaystyle C}
m
{\displaystyle m}
w
{\displaystyle w}
m
{\displaystyle m}
C
{\displaystyle C}
定常性または偏りのなさ
CMA-ESの更新方程式が本質的に偏りのない定常性条件を満たしていることは比較的容易にわかる。中立選択の下では 、
x
i
:
λ
∼
N
(
m
k
,
σ
k
2
C
k
)
{\displaystyle x_{i:\lambda }\sim {\mathcal {N}}(m_{k},\sigma _{k}^{2}C_{k})}
E
(
m
k
+
1
∣
m
k
)
=
m
k
{\displaystyle \operatorname {E} (m_{k+1}\mid m_{k})=m_{k}}
そして、初期条件に関するいくつかの軽微な追加仮定の下で
E
(
log
σ
k
+
1
∣
σ
k
)
=
log
σ
k
{\displaystyle \operatorname {E} (\log \sigma _{k+1}\mid \sigma _{k})=\log \sigma _{k}}
指標関数がゼロと評価される場合の共分散行列の更新にさらに小さな修正を加えると、
E
(
C
k
+
1
∣
C
k
)
=
C
k
{\displaystyle \operatorname {E} (C_{k+1}\mid C_{k})=C_{k}}
不変性
不変性は、 目的関数のクラスで均一なパフォーマンスを意味します。不変性は、アルゴリズムの動作を一般化して予測し、単一の関数で得られた実験結果の意味を強化することができるため、利点であると主張されてきました。CMA-ES では、次の不変性が確立されています。
目的関数値 の順序保存変換に対する不変性 、つまり任意の に対して の 挙動は すべての厳密に増加する に対して同一である。この不変性は 、 の選択に対して不変である -ランキング のみがアルゴリズムで使用されるため、簡単に検証できます 。
f
{\displaystyle f}
h
:
R
n
→
R
{\displaystyle h:\mathbb {R} ^{n}\to \mathbb {R} }
f
:
x
↦
g
(
h
(
x
)
)
{\displaystyle f:x\mapsto g(h(x))}
g
:
R
→
R
{\displaystyle g:\mathbb {R} \to \mathbb {R} }
f
{\displaystyle f}
g
{\displaystyle g}
スケール不変性 、つまり任意の に対して、 与えられた 目的関数 およびに対して 動作は から独立している 。
h
:
R
n
→
R
{\displaystyle h:\mathbb {R} ^{n}\to \mathbb {R} }
α
>
0
{\displaystyle \alpha >0}
f
:
x
↦
h
(
α
x
)
{\displaystyle f:x\mapsto h(\alpha x)}
σ
0
∝
1
/
α
{\displaystyle \sigma _{0}\propto 1/\alpha }
m
0
∝
1
/
α
{\displaystyle m_{0}\propto 1/\alpha }
探索空間の回転に対して不変であることから、任意の および任意のに対して、 上の動作は 、 が与えられたとき、 直交行列 に依存しません。より一般的には、 初期共分散行列が としてさらに選択された場合、 アルゴリズムは一般線形変換に対しても不変です 。
h
:
R
n
→
R
{\displaystyle h:\mathbb {R} ^{n}\to \mathbb {R} }
z
∈
R
n
{\displaystyle z\in \mathbb {R} ^{n}}
f
:
x
↦
h
(
R
x
)
{\displaystyle f:x\mapsto h(Rx)}
R
{\displaystyle R}
m
0
=
R
−
1
z
{\displaystyle m_{0}=R^{-1}z}
R
{\displaystyle R}
R
−
1
R
−
1
T
{\displaystyle R^{-1}{R^{-1}}^{T}}
本格的なパラメータ最適化法は並進不変でなければなりませんが、ほとんどの方法は上記の不変性をすべて備えているわけではありません。同じ不変性を持つ代表的な例は ネルダー・ミード法 で、初期単体をそれぞれ選択する必要があります。
収束
アルゴリズムのスケール不変性、より単純な 進化戦略 の分析、圧倒的な経験的証拠などの概念的考察から、アルゴリズムは と表記される大域的最適値に高速に収束する関数の大規模なクラスであることが示唆される 。一部の関数では、収束は初期条件とは無関係に確率 1 で発生する。一部の関数では確率は 1 より小さく、通常は初期値と に依存する 。経験的に、ランクベースの直接探索法では、 で可能な限り最速の収束速度 が観測されることが多い(文脈に応じて 線形収束 、 対数線形収束 、 指数 収束と表記される)。非公式には 、次のように書くことができる。
x
∗
{\displaystyle x^{*}}
m
0
{\displaystyle m_{0}}
σ
0
{\displaystyle \sigma _{0}}
k
{\displaystyle k}
‖
m
k
−
x
∗
‖
≈
‖
m
0
−
x
∗
‖
×
e
−
c
k
{\displaystyle \|m_{k}-x^{*}\|\;\approx \;\|m_{0}-x^{*}\|\times e^{-ck}}
一部の人にとっては 、より厳密に言えば
c
>
0
{\displaystyle c>0}
1
k
∑
i
=
1
k
log
‖
m
i
−
x
∗
‖
‖
m
i
−
1
−
x
∗
‖
=
1
k
log
‖
m
k
−
x
∗
‖
‖
m
0
−
x
∗
‖
→
−
c
<
0
for
k
→
∞
,
{\displaystyle {\frac {1}{k}}\sum _{i=1}^{k}\log {\frac {\|m_{i}-x^{*}\|}{\|m_{i-1}-x^{*}\|}}\;=\;{\frac {1}{k}}\log {\frac {\|m_{k}-x^{*}\|}{\|m_{0}-x^{*}\|}}\;\to \;-c<0\quad {\text{for }}k\to \infty \;,}
または同様に、
E
log
‖
m
k
−
x
∗
‖
‖
m
k
−
1
−
x
∗
‖
→
−
c
<
0
for
k
→
∞
.
{\displaystyle \operatorname {E} \log {\frac {\|m_{k}-x^{*}\|}{\|m_{k-1}-x^{*}\|}}\;\to \;-c<0\quad {\text{for }}k\to \infty \;.}
これは、平均して、最適値までの距離が各反復で「定数」係数、つまり だけ減少することを意味します。 が次元 よりそれほど大きくない場合 、 収束率は およそ です 。 および が最適であっても 、 上記の再結合重み がすべて非負である場合、 収束率は を大幅に超えることはありません。 およびの実際の線形依存性 は顕著であり、どちらの場合も、この種のアルゴリズムで期待できる最高のものです。ただし、収束の厳密な証明は不足しています。
exp
(
−
c
)
{\displaystyle \exp(-c)}
c
{\displaystyle c}
0.1
λ
/
n
{\displaystyle 0.1\lambda /n}
λ
{\displaystyle \lambda }
n
{\displaystyle n}
σ
{\displaystyle \sigma }
C
{\displaystyle C}
c
{\displaystyle c}
0.25
λ
/
n
{\displaystyle 0.25\lambda /n}
w
i
{\displaystyle w_{i}}
λ
{\displaystyle \lambda }
n
{\displaystyle n}
進化戦略 における 多変量正規分布 の非恒等共分散行列の使用は 、解ベクトルの座標系変換と同等である。 [8] 主にサンプリング方程式が
x
i
∼
m
k
+
σ
k
×
N
(
0
,
C
k
)
∼
m
k
+
σ
k
×
C
k
1
/
2
N
(
0
,
I
)
{\displaystyle {\begin{aligned}x_{i}&\sim \ m_{k}+\sigma _{k}\times {\mathcal {N}}(0,C_{k})\\&\sim \ m_{k}+\sigma _{k}\times C_{k}^{1/2}{\mathcal {N}}(0,I)\end{aligned}}}
は「エンコードされた空間」で次のように表現できる。
C
k
−
1
/
2
x
i
⏟
represented in the encode space
∼
C
k
−
1
/
2
m
k
⏟
+
σ
k
×
N
(
0
,
I
)
{\displaystyle \underbrace {C_{k}^{-1/2}x_{i}} _{{\text{represented in the encode space}}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!}\sim \ \underbrace {C_{k}^{-1/2}m_{k}} {}+\sigma _{k}\times {\mathcal {N}}(0,I)}
共分散行列は、 すべての解ベクトルを空間に 全単射変換(エンコード)し、サンプリングは恒等共分散行列で行われます。CMA-ES の更新方程式は線形座標系変換に対して不変であるため、CMA-ES は恒等共分散行列を持つ単純な 進化戦略 に適用される適応エンコード手順として書き直すことができます。 [8]
この適応エンコード手順は、多変量正規分布からサンプリングするアルゴリズム(進化戦略など)に限定されず、原理的には任意の反復検索方法に適用できます。
他のほとんどの進化的アルゴリズム とは対照的に 、CMA-ES は、ユーザーの観点からは準パラメータフリーです。ユーザーは、初期の解点、 および初期のステップ サイズを選択する必要があります 。オプションで、候補サンプルの数 λ (集団サイズ) は、ユーザーが特性検索動作 (上記を参照) を変更するために変更できます。また、終了条件は、手元の問題に合わせて調整できます (または調整する必要があります)。
m
0
∈
R
n
{\displaystyle m_{0}\in \mathbb {R} ^{n}}
σ
0
>
0
{\displaystyle \sigma _{0}>0}
CMA-ESは、何百ものアプリケーションで実証的に成功しており、特に非凸、非分離、悪条件、マルチモーダル、またはノイズの多い目的関数で有用であると考えられています。 [9] ブラックボックス最適化に関するある調査では、このアルゴリズムが他の31の最適化アルゴリズムよりも優れており、「困難な関数」や高次元の検索空間で特に優れたパフォーマンスを発揮することがわかりました。 [10]
検索空間の次元は通常 2 から数百の範囲です。勾配が利用できない (または役に立たない) ブラックボックス最適化シナリオを想定し、関数評価が検索の唯一の考慮コストである場合、CMA-ES メソッドは、次の条件で他のメソッドよりもパフォーマンスが優れている可能性があります。
分離可能な関数では、CMA-ES が比較可能なソリューションをまったく見つけられない可能性があるという点で、パフォーマンスの不利が最も顕著になる可能性があります。一方、条件が悪かったり、不安定だったり、複数の 関数評価でしか解決できないような分離不可能な関数では、CMA-ES はほとんどの場合、優れたパフォーマンスを示します。
100
n
{\displaystyle 100n}
バリエーションと拡張
(1+1)-CMA-ES [11] は、 反復ステップごとに候補解を 1 つだけ生成し、それが現在の平均値よりも優れている場合は、それが新しい分布平均値になります。 (1+1)-CMA-ES は ガウス適応 の近似変種です。一部の 自然進化戦略は、 特定のパラメータ設定を持つ CMA-ES の近似変種です。自然進化戦略は進化パスを利用せず (つまり、CMA-ES 設定)、 共分散行列ではなく コレスキー因子 で分散と共分散の更新を形式化します。CMA-ES は 、MO-CMA-ES として 多目的最適化にも拡張されています。 [12] もう 1 つの注目すべき拡張は、いわゆるアクティブ CMA による共分散行列の負の更新の追加です。 [13]
追加のアクティブ CMA 更新を使用することは、今日ではデフォルトの変種と見なされています。 [7]
c
c
=
1
{\displaystyle c_{c}=1}
c
c
=
c
σ
=
1
{\displaystyle c_{c}=c_{\sigma }=1}
参照
参考文献
^ Hansen, N. (2006)、「CMA 進化戦略: 比較レビュー」、 新しい進化計算に向けて。分布推定アルゴリズムの進歩 、Springer、pp. 1769–1776、 CiteSeerX 10.1.1.139.7369
^ Auger, A.; N. Hansen (2005). 「人口サイズの増加による再起動 CMA 進化戦略」 (PDF) 。2005 IEEE 進化計算会議議事録 。IEEE。pp. 1769–1776。2016 年 3 月 4 日のオリジナル (PDF)からアーカイブ。2012 年 7 月 13 日 に 取得 。
^ Shir, OM; A. Yehudayoff (2020). 「進化戦略における共分散-ヘッセ行列関係について」. 理論計算機科学 . 801. エルゼビア: 157–174. arXiv : 1806.03674 . doi : 10.1016/j.tcs.2019.09.002 .
^ abc Akimoto, Y.; Y. Nagata; I. Ono; S. Kobayashi (2010). 「CMA 進化戦略と自然進化戦略の双方向関係」。 自然からの並列問題解決、PPSN XI。Springer。pp . 154–163。
^ ab Glasmachers, T.; T. Schaul; Y. Sun; D. Wierstra; J. Schmidhuber (2010). 「指数関数的自然進化戦略」 (PDF) 。 遺伝的および進化的計算カンファレンス GECCO 。オレゴン州ポートランド。
^ Ollivier, Y.; Arnold, L.; Auger, A.; Hansen, N. (2017). 「情報幾何学的最適化アルゴリズム: 不変性原理による統一像」 (PDF) . Journal of Machine Learning Research . 18 (18): 1−65.
^ ab Hansen, N. (2016). 「CMA 進化戦略: チュートリアル」. arXiv : 1604.00772 [cs.LG].
^ ab Hansen, N. (2008). 「適応型エンコーディング: 検索座標系を不変にレンダリングする方法」。 自然からの並列問題解決、PPSN X。Springer。pp . 205–214。
^ 「CMA-ES アプリケーションへの参照」 (PDF) 。
^ Hansen, Nikolaus (2010). 「ブラックボックス最適化ベンチマーク BBOB-2009 の 31 個のアルゴリズムの結果の比較」 (PDF) 。
^ Igel, C.; T. Suttorp; N. Hansen (2006). 「進化戦略のための計算効率の高い共分散行列更新と (1+1)-CMA」 (PDF) 。 遺伝的および進化的計算カンファレンス (GECCO) の議事録 。ACM プレス。pp. 453–460。
^ Igel, C.; N. Hansen; S. Roth (2007). 「多目的最適化のための共分散行列適応」. 進化計算 . 15 (1): 1–28. doi :10.1162/evco.2007.15.1.1. PMID 17388777. S2CID 7479494.
^ Jastrebski, GA ; DV Arnold (2006)。「アクティブ共分散行列適応による進化戦略の改善」。2006 IEEE World Congress on Computational Intelligence、議事録 。IEEE。pp. 9719–9726。doi :10.1109/CEC.2006.1688662。
文献
Hansen N, Ostermeier A (2001). 進化戦略における完全に非ランダム化された自己適応。進化計算、9(2) pp. 159–195。[1]
Hansen N, Müller SD, Koumoutsakos P (2003). 共分散行列適応による非ランダム化進化戦略の時間計算量の削減 (CMA-ES). 進化計算, 11(1) pp. 1–18. [2]
Hansen N, Kern S (2004). マルチモーダルテスト関数におけるCMA進化戦略の評価。Xin Yao他編『 Parallel Problem Solving from Nature – PPSN VIII 』pp. 282–291、Springer。[3]
Igel C, Hansen N, Roth S (2007). 多目的最適化のための共分散行列適応. 進化計算, 15(1) pp. 1–28. [4]
外部リンク
N. ハンセンによる CMA-ES の簡単な紹介
CMA 進化戦略: チュートリアル
CMA-ES ソースコードページ