CMA-ES算法流程

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,w1w2...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=(w2w1)2=w22w12=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+1wiui+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 1cm1表示学习率,通常取1。

公式(5)是公式(2)的一般化,cm∑i=1μwi=1c_m\sum_{i=1}^{\mu}w_i=1cmi=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)=(1cμ)C(g)+cμσ(g)21Cμ(g+1)=(1cμ)C(g)+cμi=1μwiyi:λ(g+1)yi:λ(g+1)
其中C(0)=I\boldsymbol{C}^{(0)}=\mathbf{I}C(0)=Iyi:λ(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)=(1cμ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=1i=1μwi=1∑i=1λwi≈0\sum_{i=1}^{\lambda}w_i\approx0i=1λwi0cμ≈ueff/n2c_\mu \approx u_{eff} / n^2cμueff/n2

Rank−1−UpdateRank-1-UpdateRank1Update,使上一代最好的样本出现的几率更高
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)=(1c1)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)=(1cc)pc(g)+cc(2cc)μeffσ(g)m(g+1)m(g)
其中pc(0)=0\boldsymbol{p}_{\mathrm{c}}^{(0)}=\mathbf{0}pc(0)=0cc≤1c_{\mathrm{c}} \leq 1cc1pc(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)=(1c1)C(g)+c1pc(g+1)pc(g+1)
c1≈2/n2c_{1} \approx 2/n^2c12/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)=(1c1cμ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}}c12/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,1c1)

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λwic1/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)=(1cσ)pσ(g)+cσ(2cσ)μeffC(g)21σ(g)m(g+1)m(g)
其中pσ(0)=0\boldsymbol{p}_{\sigma}^{(0)}=\mathbf{0}pσ(0)=0cσ<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σEN(0,I)pσ(g+1)1=σ(g)expdσcσEN(0,I)pσ(g+1)1
其中dσ≈1d_{\sigma}\approx1dσ1E∥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)EN(0,I)=2Γ(2n+1)/Γ(2n)n+O(1/n)

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值