CMA-ES算法流程
对多元高斯分布进行采样得到新解,使用其中较好的解更新高斯分布的参数,最大熵原理(均值和方差已知时,高斯分布具有的信息熵最大,正因为如此高斯分布在自然界中才会这么普遍)。
1 产生新解
xk(g+1)∼m(g)+σ(g)N(0,C(g))for 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))表示均值为000,协方差矩阵为C(g)C^{(g)}C(g)的正态分布,m(g)+σ(g)N(0,C(g))∼N(m(g),(σ(g))2C(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))。
xk(g+1)∈Rnx^{(g+1)}_k\in R^nxk(g+1)∈Rn,第g+1g+1g+1代的第kkk个后代。
m(g)∈Rnm^{(g)}\in R^nm(g)∈Rn,第ggg代搜索分布的均值。
σ(g)∈R>0\sigma^{(g)}\in R_{>0}σ(g)∈R>0,第ggg代的步长。
C(g)∈Rn×nC^{(g)}\in R^{n\times n}C(g)∈Rn×n,第ggg代的协方差矩阵。
λ≥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)是从x1(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μwixi:λ(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μwi=1,w1≥w2≥...≥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μ≤λ,父样本的大小和选择的样本的大小。
wi=1...μ∈R>0w_{i=1...\mu}\in R_{>0}wi=1...μ∈R>0,正权值。
xi:λ(g+1)x^{(g+1)}_{i:\lambda}xi:λ(g+1),x1(g+1),⋯ ,xλ(g+1)x^{(g+1)}_1,\cdots,x^{(g+1)}_{\lambda}x1(g+1),⋯,xλ(g+1)中第iii个最好的个体,f(x1:λ(g+1))≤f(x2:λ(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μ<λ实现截断选择,具有不同的权值是一种选择机制。
μeff=(∣∣w∣∣1∣∣w∣∣2)2=∣∣w∣∣12∣∣w∣∣22=(∑i=1μ∣wi∣)2∑i=1μwi2=1∑i=1μwi2(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≤μeff≤μ1 \leq \mu_{eff} \leq \mu1≤μeff≤μ并且当权值相同时μeff=μ\mu_{eff}=\muμeff=μ,通常μeff≈λ/4\mu_{eff} \approx \lambda/4μeff≈λ/4时表示wiw_iwi的设置是合理的,一个简单且合理的设置是wi∝u−i+1w_i \varpropto u-i+1wi∝u−i+1,并且μ≈λ/2\mu \approx \lambda/2μ≈λ/2。
最终的公式如下所示:
m(g+1)=m(g)+cm∑i=1μwi(xi:λ(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)
cm≤1c_m \leq 1cm≤1表示学习率,通常取1。
公式(5)是公式(2)的一般化,cm∑i=1μwi=1c_m\sum_{i=1}^{\mu}w_i=1cm∑i=1μwi=1是默认的参数设置,在噪声函数中选择cm<1c_m<1cm<1较好。
3 自适应协方差矩阵
估计协方差矩阵,使用μ\muμ个被选择的样本加权计算
Cμ(g+1)=∑i=1μwi(xi:λ(g+1)−m(g))(xi:λ(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))⊤
rank−μ−Updaterank-\mu- Updaterank−μ−Update ,样本服从N(0,C(g))∼N(m(g),(σ(g))2C(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,指数平滑,使最近的代有较高的权重,累积以前的信息,叫做rank−μ−Updaterank-\mu-Updaterank−μ−Update是因为rank(Cμ(g+1))=min(μ,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)2Cμ(g+1)=(1−cμ)C(g)+cμ∑i=1μwiyi:λ(g+1)yi:λ(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,yi:λ(g+1)=(xi:λ(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μ≤1c_\mu \leq 1cμ≤1学习率。
一般化
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
\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
其中zi:λg+1=C(g)−1/2yi:λ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μwi=1\sum_{i=1}^{\mu}w_i=1∑i=1μwi=1,∑i=1λwi≈0\sum_{i=1}^{\lambda}w_i\approx0∑i=1λwi≈0,cμ≈ueff/n2c_\mu \approx u_{eff} / n^2cμ≈ueff/n2。
Rank−1−UpdateRank-1-UpdateRank−1−Update,使上一代最好的样本出现的几率更高
C(g+1)=(1−c1)C(g)+c1yg+1yg+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⊤
其中yg+1=x1.λ(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)。
使用进化路径累积以前的信息,指数平滑
pc(g+1)=(1−cc)pc(g)+cc(2−cc)μeffm(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)
其中pc(0)=0\boldsymbol{p}_{\mathrm{c}}^{(0)}=\mathbf{0}pc(0)=0,cc≤1c_{\mathrm{c}} \leq 1cc≤1,pc(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−c1)C(g)+c1pc(g+1)pc(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)⊤
c1≈2/n2c_{1} \approx 2/n^2c1≈2/n2,学习率。
结合
C(g+1)=(1−c1−cμ∑wj)C(g)+c1pc(g+1)pc(g+1)⊤+cμ∑i=1λwiyi:λ(g+1)(yi:λ(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))⊤
其中
c1≈2/n2{c_{1} \approx 2 / n^{2}}c1≈2/n2
cμ≈min(μeff/n2,1−c1){c_{\mu} \approx \min \left(\mu_{\mathrm{eff}} / n^{2}, 1-c_{1}\right)}cμ≈min(μeff/n2,1−c1)
yi:λ(g+1)=(xi:λ(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)
∑wj=∑i=1λwi≈−c1/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σ)μeffC(g)−12m(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σ<1c_{\sigma}<1cσ<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σ≈1d_{\sigma}\approx1dσ≈1,E∥N(0,I)∥=2Γ(n+12)/Γ(n2)≈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)。