CMA-ES算法流程

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

公式(5)是公式(2)的一般化, c m ∑ i = 1 μ w i = 1 c_m\sum_{i=1}^{\mu}w_i=1 cmi=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)=(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)=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)=(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
其中 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λwi0 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 Rank1Update,使上一代最好的样本出现的几率更高
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)=(1c1)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)=(1cc)pc(g)+cc(2cc)μ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 cc1 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)=(1c1)C(g)+c1pc(g+1)pc(g+1)
c 1 ≈ 2 / n 2 c_{1} \approx 2/n^2 c12/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)=(1c1cμ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}} c12/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,1c1)

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λwic1/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)=(1cσ)pσ(g)+cσ(2cσ)μeff C(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σEN(0,I)pσ(g+1)1=σ(g)expdσcσEN(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) EN(0,I)=2 Γ(2n+1)/Γ(2n)n +O(1/n)

你可能感兴趣的:(CMA-ES算法流程)