【优化算法】协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)
CMA-ES(Covariance Matrix Adaptation Evolution Strategy)算法是一种无导数、基于多元正态分布的迭代优化方法,通过自适应地调整搜索分布的均值、协方差矩阵和步长,能够高效地解决非线性、非凸的连续优化问题。
- 算法以最大似然和演化路径为两大核心思想,在每一代中生成 λ 个候选解,依据排序选取 μ 个优秀个体,并利用它们来更新搜索分布参数,实现二阶信息的隐式估计和迅速收敛。
1 算法解析
1.1 核心原理
- 最大似然原则:通过调整均值 m m m 和协方差矩阵 C C C,使得先前成功(即具有较好目标值)的样本和搜索步长在新的分布下具有更高的采样概率,相当于对成功样本的增量式最优拟合。
- 演化路径(Evolution Paths):算法维护两条路径——协方差更新路径 p c p_c pc 和步长控制路径 p σ p_\sigma pσ。
- 当连续步长朝同一方向时,路径长度变长,反映了搜索方向上的相关性;
- 演化路径被用于加速协方差更新以及自适应步长调整,防止过早收敛并提升收敛速度。
1.2 算法核心步骤
-
初始化:
- 设定维度 n n n、初始均值 m 0 m_0 m0、初始步长标准差 σ 0 \sigma_0 σ0、种群规模 λ \lambda λ、精英数 μ \mu μ 及权重 { w i } \{w_i\} {wi}。
- 初始协方差矩阵通常取单位矩阵 C 0 = I n C_0 = I_n C0=In。
-
采样(Sampling):
x k ( t + 1 ) = m ( t ) + σ ( t ) N ( 0 , C ( t ) ) , k = 1 , … , λ x_k^{(t+1)} = m^{(t)} + \sigma^{(t)} \, \mathcal{N}(0, C^{(t)}),\quad k=1,\dots,\lambda xk(t+1)=m(t)+σ(t)N(0,C(t)),k=1,…,λ
-
排序与加权重组(Recombination):按 f ( x ) f(x) f(x) 从小到大排序,选取前 μ 个并按权重 w i w_i wi 计算新的均值
m ( t + 1 ) = ∑ i = 1 μ w i x i : λ ( t + 1 ) m^{(t+1)} = \sum_{i=1}^{\mu} w_i \, x_{i:\lambda}^{(t+1)} m(t+1)=i=1∑μwixi:λ(t+1)
-
更新演化路径:
- 位置路径: p c ← ( 1 − c c ) p c + c c ( 2 − c c ) μ w m ( t + 1 ) − m ( t ) σ ( t ) p_c \leftarrow (1-c_c)p_c + \sqrt{c_c(2-c_c)\mu_w}\,\frac{m^{(t+1)}-m^{(t)}}{\sigma^{(t)}} pc←(1−cc)pc+cc(2−cc)μwσ(t)m(t+1)−m(t)
- 步长路径:
p σ ← ( 1 − c σ ) p σ + c σ ( 2 − c σ ) μ w C ( t ) − 1 / 2 m ( t + 1 ) − m ( t ) σ ( t ) p_\sigma \leftarrow (1-c_\sigma)p_\sigma + \sqrt{c_\sigma(2-c_\sigma)\mu_w}\,C^{(t)^{-1/2}}\frac{m^{(t+1)}-m^{(t)}}{\sigma^{(t)}} pσ←(1−cσ)pσ+cσ(2−cσ)μwC(t)−1/2σ(t)m(t+1)−m(t)
-
协方差矩阵更新:
C ( t + 1 ) = ( 1 − c 1 − c μ ) C ( t ) + c 1 p c p c T + c μ ∑ i = 1 μ w i y i : λ y i : λ T C^{(t+1)} = (1-c_1-c_\mu)C^{(t)} + c_1\,p_c p_c^T + c_\mu\sum_{i=1}^{\mu} w_i\,y_{i:\lambda}y_{i:\lambda}^T C(t+1)=(1−c1−cμ)C(t)+c1pcpcT+cμi=1∑μwiyi:λyi:λT
其中 y i : λ = ( x i : λ − m ( t ) ) / σ ( t ) y_{i:\lambda}=(x_{i:\lambda}-m^{(t)})/\sigma^{(t)} yi:λ=(xi:λ−m(t))/σ(t)。 -
步长控制(Step-Size Control):
σ ( t + 1 ) = σ ( t ) exp ( c σ d σ ( ∥ p σ ∥ E [ ∥ N ( 0 , I ) ∥ ] − 1 ) ) \sigma^{(t+1)} = \sigma^{(t)}\exp\Big(\frac{c_\sigma}{d_\sigma}\big(\frac{\|p_\sigma\|}{E[\|\mathcal{N}(0,I)\|]}-1\big)\Big) σ(t+1)=σ(t)exp(dσcσ(E[∥N(0,I)∥]∥pσ∥−1))
其中 E [ ∥ N ( 0 , I ) ∥ ] E[\|\mathcal{N}(0,I)\|] E[∥N(0,I)∥] 为期望长度。
2 参数说明
参数 | 含义 | 默认/约定 |
---|---|---|
n n n | 决策变量维度 | — |
λ \lambda λ | 每代样本数(子代) | ≈ 4 + 3 ln n \approx 4+3\ln n ≈4+3lnn |
μ \mu μ | 父代个体数( μ < λ \mu < \lambda μ<λ) | ⌊ λ / 2 ⌋ \lfloor\lambda/2\rfloor ⌊λ/2⌋ |
w i w_i wi | 父代重组权重,满足 ∑ w i = 1 \sum w_i=1 ∑wi=1,通常按对数划分 | w i ∝ ln ( μ + 1 ) − ln ( i ) w_i \propto \ln(\mu+1)-\ln(i) wi∝ln(μ+1)−ln(i) |
m m m | 搜索分布的均值 | 初始化为问题起始点 |
σ \sigma σ | 步长(全局标准差) | 依问题设定,一般为可行域尺度 |
C C C | 协方差矩阵 | 初始为单位矩阵 |
c c c_c cc, c σ c_\sigma cσ | 演化路径的衰减因子 | c c ≈ 4 n + 4 c_c\approx \tfrac{4}{n+4} cc≈n+44, c σ ≈ μ w + 2 n + μ w + 5 c_\sigma\approx\tfrac{\mu_w+2}{n+\mu_w+5} cσ≈n+μw+5μw+2 |
c 1 c_1 c1, c μ c_\mu cμ | 协方差更新学习率 | c 1 ≈ 2 ( n + 1.3 ) 2 + μ w c_1\approx\tfrac{2}{(n+1.3)^2+\mu_w} c1≈(n+1.3)2+μw2, c μ = min ( 1 − c 1 , μ w − 2 + 1 / μ w ( n + 2 ) 2 + μ w ) c_\mu=\min\big(1-c_1,\tfrac{\mu_w-2+1/\mu_w}{(n+2)^2+\mu_w}\big) cμ=min(1−c1,(n+2)2+μwμw−2+1/μw) |
d σ d_\sigma dσ | 步长阻尼因子 | d σ = 1 + c σ + n − 0.5 d_\sigma=1+c_\sigma+n^{-0.5} dσ=1+cσ+n−0.5 |
注: μ w = ∑ i = 1 μ w i 2 \mu_w=\sum_{i=1}^\mu w_i^2 μw=∑i=1μwi2 为有效父代大小。
3. 核心优势
- 无梯度要求:
不依赖目标函数的梯度信息,适用于黑箱优化问题(如非凸、多峰、不可导函数)。 - 自适应搜索方向:
通过协方差矩阵的动态调整,算法能够自动适应目标函数的几何特性(如旋转、缩放等)。 - 鲁棒性:
对噪声环境(如随机目标函数)具有较强的鲁棒性。
4 具体示例
以优化 n 维球函数
f ( x ) = ∑ i = 1 n x i 2 f(x)=\sum_{i=1}^n x_i^2 f(x)=i=1∑nxi2
为例,取 n = 10 n=10 n=10,初始均值 m 0 = ( 5 , … , 5 ) m^0=(5,\dots,5) m0=(5,…,5),初始步长 σ 0 = 2 \sigma^0=2 σ0=2,则:
-
初始化:
m = ( 5 , 5 , … , 5 ) , σ = 2 , C = I 10 m=(5,5,\dots,5),\ \sigma=2,\ C=I_{10} m=(5,5,…,5), σ=2, C=I10。 -
迭代示例(第一代):
- 采样 λ≈4+3ln10≈11 个样本,并计算对应的 f 值;
- 按 f 排序后选 μ=5 个父代,计算加权均值;
- 更新 p c p_c pc、 p σ p_σ pσ、 C C C 和 σ σ σ;
- 可观察到均值向原点移动,σ 逐渐缩小。
经过数十至数百代迭代后,均值 m m m 会收敛至原点,且 f ( m ) → 0 f(m)\to0 f(m)→0。