CMA-ES算法流程
对多元高斯分布进行采样得到新解,使用其中较好的解更新高斯分布的参数,最大熵原理(均值和方差已知时,高斯分布具有的信息熵最大,正因为如此高斯分布在自然界中才会这么普遍)。
1 产生新解
x k ( g + 1 ) ∼ m ( g ) + σ ( g ) N ( 0 , C ( g ) ) f o r k = 1 , . . . , λ (1) x^{(g+1)}_k \sim m^{(g)}+\sigma^{(g)} N(0,C^{(g)}) \quad for\ k = 1,...,\lambda \tag{1} xk(g+1)∼m(g)+σ(g)N(0,C(g))for k=1,...,λ(1)
∼ \sim ∼表示左右服从相同分布。
N ( 0 , C ( g ) ) N(0,C^{(g)}) N(0,C(g))表示均值为 0 0 0,协方差矩阵为 C ( g ) C^{(g)} C(g)的正态分布, m ( g ) + σ ( g ) N ( 0 , C ( g ) ) ∼ N ( m ( g ) , ( σ ( g ) ) 2 C ( g ) ) m^{(g)}+\sigma^{(g)} N(0,C^{(g)}) ∼N(m^{(g)},(\sigma^{(g)} )^2C^{(g)}) m(g)+σ(g)N(0,C(g))∼N(m(g),(σ(g))2C(g))。
x k ( g + 1 ) ∈ R n x^{(g+1)}_k\in R^n xk(g+1)∈Rn,第 g + 1 g+1 g+1代的第 k k k个后代。
m ( g ) ∈ R n m^{(g)}\in R^n m(g)∈Rn,第 g g g代搜索分布的均值。
σ ( g ) ∈ R > 0 \sigma^{(g)}\in R_{>0} σ(g)∈R>0,第 g g g代的步长。
C ( g ) ∈ R n × n C^{(g)}\in R^{n\times n} C(g)∈Rn×n,第 g g g代的协方差矩阵。
λ ≥ 0 \lambda \geq 0 λ≥0,抽样数量,子代数量。
为了定义完整的算法步骤,剩下的问题是如何计算 m ( g + 1 ) m^{(g+1)} m(g+1), C ( g + 1 ) C^{(g+1)} C(g+1)和 σ ( g + 1 ) \sigma^{(g+1)} σ(g+1)。
2 更新均值
m
(
g
+
1
)
m^{(g+1)}
m(g+1)是从
x
1
(
g
+
1
)
,
.
.
.
,
x
λ
(
g
+
1
)
x^{(g+1)}_1,...,x^{(g+1)}_{\lambda}
x1(g+1),...,xλ(g+1)中选择的
μ
\mu
μ个样本的带权均值:
m
(
g
+
1
)
=
∑
i
=
1
μ
w
i
x
i
:
λ
(
g
+
1
)
(2)
m^{(g+1)}=\sum_{i=1}^{\mu}w_ix^{(g+1)}_{i:\lambda}\tag{2}
m(g+1)=i=1∑μwixi:λ(g+1)(2)
∑ i = 1 μ w i = 1 , w 1 ≥ w 2 ≥ . . . ≥ w μ > 0 (3) \sum_{i=1}^{\mu}w_{i}=1, \quad w_{1} \geq w_{2} \geq ... \geq w_{\mu}>0\tag{3} i=1∑μwi=1,w1≥w2≥...≥wμ>0(3)
μ ≤ λ \mu \leq \lambda μ≤λ,父样本的大小和选择的样本的大小。
w i = 1... μ ∈ R > 0 w_{i=1...\mu}\in R_{>0} wi=1...μ∈R>0,正权值。
x i : λ ( g + 1 ) x^{(g+1)}_{i:\lambda} xi:λ(g+1), x 1 ( g + 1 ) , ⋯ , x λ ( g + 1 ) x^{(g+1)}_1,\cdots,x^{(g+1)}_{\lambda} x1(g+1),⋯,xλ(g+1)中第 i i i个最好的个体, f ( x 1 : λ ( g + 1 ) ) ≤ f ( x 2 : λ ( g + 1 ) ) ≤ ⋯ ≤ f ( x λ : λ ( g + 1 ) ) f(x^{(g+1)}_{1:\lambda})\leq f(x^{(g+1)}_{2:\lambda})\leq\cdots\leq f(x^{(g+1)}_{\lambda:\lambda}) f(x1:λ(g+1))≤f(x2:λ(g+1))≤⋯≤f(xλ:λ(g+1))。
等式(2)通过使
μ
<
λ
\mu<\lambda
μ<λ实现截断选择,具有不同的权值是一种选择机制。
μ
e
f
f
=
(
∣
∣
w
∣
∣
1
∣
∣
w
∣
∣
2
)
2
=
∣
∣
w
∣
∣
1
2
∣
∣
w
∣
∣
2
2
=
(
∑
i
=
1
μ
∣
w
i
∣
)
2
∑
i
=
1
μ
w
i
2
=
1
∑
i
=
1
μ
w
i
2
(4)
\mu_{eff}=(\frac{\mid \mid w \mid\mid_1}{\mid \mid w \mid\mid_2})^2= \frac{\mid \mid w \mid\mid_1^2}{\mid \mid w \mid\mid_2^2}=\frac{(\sum_{i=1}^{\mu}\mid w_i \mid)^2}{\sum_{i=1}^{\mu}w^2_i}=\frac{1}{\sum_{i=1}^{\mu}w^2_i}\tag{4}
μeff=(∣∣w∣∣2∣∣w∣∣1)2=∣∣w∣∣22∣∣w∣∣12=∑i=1μwi2(∑i=1μ∣wi∣)2=∑i=1μwi21(4)
可以被理解为方差有效选择质量,可以看出
1
≤
μ
e
f
f
≤
μ
1 \leq \mu_{eff} \leq \mu
1≤μeff≤μ并且当权值相同时
μ
e
f
f
=
μ
\mu_{eff}=\mu
μeff=μ,通常
μ
e
f
f
≈
λ
/
4
\mu_{eff} \approx \lambda/4
μeff≈λ/4时表示
w
i
w_i
wi的设置是合理的,一个简单且合理的设置是
w
i
∝
u
−
i
+
1
w_i \varpropto u-i+1
wi∝u−i+1,并且
μ
≈
λ
/
2
\mu \approx \lambda/2
μ≈λ/2。
最终的公式如下所示:
m
(
g
+
1
)
=
m
(
g
)
+
c
m
∑
i
=
1
μ
w
i
(
x
i
:
λ
(
g
+
1
)
−
m
(
g
)
)
(5)
m^{(g+1)}=m^{(g)}+c_m\sum_{i=1}^{\mu}w_i(x^{(g+1)}_{i:\lambda}-m^{(g)})\tag{5}
m(g+1)=m(g)+cmi=1∑μwi(xi:λ(g+1)−m(g))(5)
c
m
≤
1
c_m \leq 1
cm≤1表示学习率,通常取1。
公式(5)是公式(2)的一般化, c m ∑ i = 1 μ w i = 1 c_m\sum_{i=1}^{\mu}w_i=1 cm∑i=1μwi=1是默认的参数设置,在噪声函数中选择 c m < 1 c_m<1 cm<1较好。
3 自适应协方差矩阵
估计协方差矩阵,使用
μ
\mu
μ个被选择的样本加权计算
C
μ
(
g
+
1
)
=
∑
i
=
1
μ
w
i
(
x
i
:
λ
(
g
+
1
)
−
m
(
g
)
)
(
x
i
:
λ
(
g
+
1
)
−
m
(
g
)
)
⊤
C_{\mu}^{(g+1)}=\sum_{i=1}^{\mu} w_{i}\left(\boldsymbol{x}_{i : \lambda}^{(g+1)}-\boldsymbol{m}^{(g)}\right)\left(\boldsymbol{x}_{i : \lambda}^{(g+1)}-\boldsymbol{m}^{(g)}\right)^{\top}
Cμ(g+1)=i=1∑μwi(xi:λ(g+1)−m(g))(xi:λ(g+1)−m(g))⊤
r
a
n
k
−
μ
−
U
p
d
a
t
e
rank-\mu- Update
rank−μ−Update ,样本服从
N
(
0
,
C
(
g
)
)
∼
N
(
m
(
g
)
,
(
σ
(
g
)
)
2
C
(
g
)
)
N(0,C^{(g)}) ∼N(m^{(g)},(\sigma^{(g)} )^2C^{(g)})
N(0,C(g))∼N(m(g),(σ(g))2C(g))的分布,所以要除
σ
(
g
)
2
\sigma^{(g)^2}
σ(g)2,指数平滑,使最近的代有较高的权重,累积以前的信息,叫做
r
a
n
k
−
μ
−
U
p
d
a
t
e
rank-\mu-Update
rank−μ−Update是因为
r
a
n
k
(
C
μ
(
g
+
1
)
)
=
m
i
n
(
μ
,
n
)
rank(C_{\mu}^{(g+1)})=min(\mu, n)
rank(Cμ(g+1))=min(μ,n)
C
(
g
+
1
)
=
(
1
−
c
μ
)
C
(
g
)
+
c
μ
1
σ
(
g
)
2
C
μ
(
g
+
1
)
=
(
1
−
c
μ
)
C
(
g
)
+
c
μ
∑
i
=
1
μ
w
i
y
i
:
λ
(
g
+
1
)
y
i
:
λ
(
g
+
1
)
⊤
\begin{aligned} \boldsymbol{C}^{(g+1)} &=\left(1-c_{\mu}\right) \boldsymbol{C}^{(g)}+c_{\mu} \frac{1}{\sigma^{(g)^2}} \boldsymbol{C}_{\mu}^{(g+1)} \\ &=\left(1-c_{\mu}\right) \boldsymbol{C}^{(g)}+c_{\mu} \sum_{i=1}^{\mu} w_{i} \boldsymbol{y}_{i : \lambda}^{(g+1)} \boldsymbol{y}_{i : \lambda}^{(g+1)^{\top}} \end{aligned}
C(g+1)=(1−cμ)C(g)+cμσ(g)21Cμ(g+1)=(1−cμ)C(g)+cμi=1∑μwiyi:λ(g+1)yi:λ(g+1)⊤
其中
C
(
0
)
=
I
\boldsymbol{C}^{(0)}=\mathbf{I}
C(0)=I,
y
i
:
λ
(
g
+
1
)
=
(
x
i
:
λ
(
g
+
1
)
−
m
(
g
)
)
/
σ
(
g
)
\boldsymbol{y}_{i : \lambda}^{(g+1)}=\left(\boldsymbol{x}_{i : \lambda}^{(g+1)}-\boldsymbol{m}^{(g)}\right) / \sigma^{(g)}
yi:λ(g+1)=(xi:λ(g+1)−m(g))/σ(g),
c
μ
≤
1
c_\mu \leq 1
cμ≤1学习率。
一般化
C
(
g
+
1
)
=
(
1
−
c
μ
∑
w
i
)
C
(
g
)
+
c
μ
∑
i
=
1
λ
w
i
y
i
:
λ
(
g
+
1
)
y
i
:
λ
(
g
+
1
)
⊤
=
C
(
g
)
1
/
2
(
I
+
c
μ
∑
i
=
1
λ
w
i
(
z
i
:
λ
(
g
+
1
)
z
i
:
λ
(
g
+
1
)
⊤
−
I
)
)
C
(
g
)
1
/
2
\begin{aligned} \boldsymbol{C}^{(g+1)} &=\left(1-c_{\mu} \sum w_{i}\right) \boldsymbol{C}^{(g)}+c_{\mu} \sum_{i=1}^{\lambda} w_{i} \boldsymbol{y}_{i : \lambda}^{(g+1)} \boldsymbol{y}_{i : \lambda}^{(g+1)^{\top}} \\ &=\boldsymbol{C}^{(g)^{1 / 2}}\left(\mathbf{I}+c_{\mu} \sum_{i=1}^{\lambda} w_{i}\left(\boldsymbol{z}_{i : \lambda}^{(g+1)} \boldsymbol{z}_{i : \lambda}^{(g+1)^{\top}}-\mathbf{I}\right)\right) \boldsymbol{C}^{(g)^{1 / 2}} \end{aligned}
C(g+1)=(1−cμ∑wi)C(g)+cμi=1∑λwiyi:λ(g+1)yi:λ(g+1)⊤=C(g)1/2(I+cμi=1∑λwi(zi:λ(g+1)zi:λ(g+1)⊤−I))C(g)1/2
其中
z
i
:
λ
g
+
1
=
C
(
g
)
−
1
/
2
y
i
:
λ
g
+
1
\boldsymbol{z}_{i:\lambda}^{g+1}=\boldsymbol{C}^{(g)-1/2}\boldsymbol{y}_{i:\lambda}^{g+1}
zi:λg+1=C(g)−1/2yi:λg+1,
∑
i
=
1
μ
w
i
=
1
\sum_{i=1}^{\mu}w_i=1
∑i=1μwi=1,
∑
i
=
1
λ
w
i
≈
0
\sum_{i=1}^{\lambda}w_i\approx0
∑i=1λwi≈0,
c
μ
≈
u
e
f
f
/
n
2
c_\mu \approx u_{eff} / n^2
cμ≈ueff/n2。
R
a
n
k
−
1
−
U
p
d
a
t
e
Rank-1-Update
Rank−1−Update,使上一代最好的样本出现的几率更高
C
(
g
+
1
)
=
(
1
−
c
1
)
C
(
g
)
+
c
1
y
g
+
1
y
g
+
1
⊤
\boldsymbol{C}^{(g+1)}=\left(1-c_{1}\right) \boldsymbol{C}^{(g)}+c_{1} \boldsymbol{y}_{g+1} \boldsymbol{y}_{g+1}^{\top}
C(g+1)=(1−c1)C(g)+c1yg+1yg+1⊤
其中
y
g
+
1
=
x
1.
λ
(
g
+
1
)
−
m
(
g
)
σ
(
g
)
\boldsymbol{y}_{g+1}=\frac{\boldsymbol{x}_{1 . \lambda}^{(g+1)}-\boldsymbol{m}^{(g)}}{\sigma(g)}
yg+1=σ(g)x1.λ(g+1)−m(g)。
使用进化路径累积以前的信息,指数平滑
p
c
(
g
+
1
)
=
(
1
−
c
c
)
p
c
(
g
)
+
c
c
(
2
−
c
c
)
μ
e
f
f
m
(
g
+
1
)
−
m
(
g
)
σ
(
g
)
\boldsymbol{p}_{\mathrm{c}}^{(g+1)}=\left(1-c_{\mathrm{c}}\right) \boldsymbol{p}_{\mathrm{c}}^{(g)}+\sqrt{c_{\mathrm{c}}\left(2-c_{\mathrm{c}}\right) \mu_{\mathrm{eff}}} \frac{\boldsymbol{m}^{(g+1)}-\boldsymbol{m}^{(g)}}{\sigma^{(g)}}
pc(g+1)=(1−cc)pc(g)+cc(2−cc)μeffσ(g)m(g+1)−m(g)
其中
p
c
(
0
)
=
0
\boldsymbol{p}_{\mathrm{c}}^{(0)}=\mathbf{0}
pc(0)=0,
c
c
≤
1
c_{\mathrm{c}} \leq 1
cc≤1,
p
c
(
g
+
1
)
∼
N
(
0
,
C
)
\boldsymbol{p}_{\mathrm{c}}^{(g+1)} \sim \mathcal{N}(\mathbf{0}, \boldsymbol{C})
pc(g+1)∼N(0,C)。
C
(
g
+
1
)
=
(
1
−
c
1
)
C
(
g
)
+
c
1
p
c
(
g
+
1
)
p
c
(
g
+
1
)
⊤
\boldsymbol{C}^{(g+1)}=\left(1-c_{1}\right) \boldsymbol{C}^{(g)}+c_{1} \boldsymbol{p}_{\mathrm{c}}^{(g+1)} \boldsymbol{p}_{\mathrm{c}}^{(g+1)^{\top}}
C(g+1)=(1−c1)C(g)+c1pc(g+1)pc(g+1)⊤
c
1
≈
2
/
n
2
c_{1} \approx 2/n^2
c1≈2/n2,学习率。
结合
C
(
g
+
1
)
=
(
1
−
c
1
−
c
μ
∑
w
j
)
C
(
g
)
+
c
1
p
c
(
g
+
1
)
p
c
(
g
+
1
)
⊤
+
c
μ
∑
i
=
1
λ
w
i
y
i
:
λ
(
g
+
1
)
(
y
i
:
λ
(
g
+
1
)
)
⊤
\begin{aligned} \boldsymbol{C}^{(g+1)}=\left(1-c_{1}-c_{\mu} \sum w_{j}\right) \boldsymbol{C}^{(g)} +c_{1} \boldsymbol{p}_{\mathrm{c}}^{(g+1)} \boldsymbol{p}_{\mathrm{c}}^{(g+1)^{\top}} +c_{\mu} \sum_{i=1}^{\lambda} w_{i} \boldsymbol{y}_{i : \lambda}^{(g+1)}\left(\boldsymbol{y}_{i : \lambda}^{(g+1)}\right)^{\top} \end{aligned}
C(g+1)=(1−c1−cμ∑wj)C(g)+c1pc(g+1)pc(g+1)⊤+cμi=1∑λwiyi:λ(g+1)(yi:λ(g+1))⊤
其中
c 1 ≈ 2 / n 2 {c_{1} \approx 2 / n^{2}} c1≈2/n2
c μ ≈ min ( μ e f f / n 2 , 1 − c 1 ) {c_{\mu} \approx \min \left(\mu_{\mathrm{eff}} / n^{2}, 1-c_{1}\right)} cμ≈min(μeff/n2,1−c1)
y i : λ ( g + 1 ) = ( x i : λ ( g + 1 ) − m ( g ) ) / σ ( g ) {\boldsymbol{y}_{i:\lambda}^{(g+1)}=\left(\boldsymbol{x}_{i:\lambda}^{(g+1)}-\boldsymbol{m}^{(g)}\right)/\sigma^{(g)}} yi:λ(g+1)=(xi:λ(g+1)−m(g))/σ(g)
∑ w j = ∑ i = 1 λ w i ≈ − c 1 / c μ \sum w_{j}=\sum_{i=1}^{\lambda} w_{i} \approx-c_{1} / c_{\mu} ∑wj=∑i=1λwi≈−c1/cμ
4 步长更新
共轭进化路径,指数平滑
p
σ
(
g
+
1
)
=
(
1
−
c
σ
)
p
σ
(
g
)
+
c
σ
(
2
−
c
σ
)
μ
e
f
f
C
(
g
)
−
1
2
m
(
g
+
1
)
−
m
(
g
)
σ
(
g
)
\boldsymbol{p}_{\sigma}^{(g+1)}=\left(1-c_{\sigma}\right) \boldsymbol{p}_{\sigma}^{(g)}+\sqrt{c_{\sigma}\left(2-c_{\sigma}\right) \mu_{\mathrm{eff}}} \boldsymbol{C}^{(g)^{-\frac{1}{2}}} \frac{\boldsymbol{m}^{(g+1)}-\boldsymbol{m}^{(g)}}{\sigma^{(g)}}
pσ(g+1)=(1−cσ)pσ(g)+cσ(2−cσ)μeffC(g)−21σ(g)m(g+1)−m(g)
其中
p
σ
(
0
)
=
0
\boldsymbol{p}_{\sigma}^{(0)}=\mathbf{0}
pσ(0)=0,
c
σ
<
1
c_{\sigma}<1
cσ<1。
步长更新
ln
σ
(
g
+
1
)
=
ln
σ
(
g
)
+
c
σ
d
σ
(
∥
p
σ
(
g
+
1
)
∥
E
∥
N
(
0
,
I
)
∥
−
1
)
σ
(
g
+
1
)
=
σ
(
g
)
exp
(
c
σ
d
σ
(
∥
p
σ
(
g
+
1
)
∥
E
∥
N
(
0
,
I
)
∥
−
1
)
)
\begin{aligned} \ln \sigma^{(g+1)}&=\ln \sigma^{(g)}+\frac{c_{\sigma}}{d_{\sigma}}\left(\frac{\left\|\boldsymbol{p}_{\sigma}^{(g+1)}\right\|}{\mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\|}-1\right)\\ \sigma^{(g+1)}&=\sigma^{(g)} \exp \left(\frac{c_{\sigma}}{d_{\sigma}}\left(\frac{\left\|\boldsymbol{p}_{\sigma}^{(g+1)}\right\|}{\mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\|}-1\right)\right) \end{aligned}
lnσ(g+1)σ(g+1)=lnσ(g)+dσcσ⎝⎛E∥N(0,I)∥∥∥∥pσ(g+1)∥∥∥−1⎠⎞=σ(g)exp⎝⎛dσcσ⎝⎛E∥N(0,I)∥∥∥∥pσ(g+1)∥∥∥−1⎠⎞⎠⎞
其中
d
σ
≈
1
d_{\sigma}\approx1
dσ≈1,
E
∥
N
(
0
,
I
)
∥
=
2
Γ
(
n
+
1
2
)
/
Γ
(
n
2
)
≈
n
+
O
(
1
/
n
)
\mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\|=\sqrt{2} \Gamma\left(\frac{n+1}{2}\right) / \Gamma\left(\frac{n}{2}\right) \approx \sqrt{n}+\mathcal{O}(1 / n)
E∥N(0,I)∥=2Γ(2n+1)/Γ(2n)≈n+O(1/n)。