本文已参与「新人创作礼」活动,一起开启掘金创作之路。
获取更多资讯,赶快关注公众号(名称:智能制造与智能调度,公众号:deeprlscheduler)吧!
关于此算法,我有点几点要说明:
我没有花太多时间去整理这些公式的推导过程,这个还需要自己对数学基础有个基本的了解;
源代码可关注公众号后,回复”CMA-ES“或”自适应协方差“获取链接;
只要掌握几个关键的公式,然后再对照源码学习,就很快能理解算法了。
缩写
CMA:Covariance Matrix Adaptation,协方差自适应
EMNA:Estimation of Multivariate Normal Algorithm,多元正态估计算法
ES:Evolution Strategy,进化策略
( μ / μ { I , W } , λ ) − E S \left(\mu / \mu_{\{\mathrm{I}, \mathrm{W}\}}, \lambda\right)-\mathrm{ES} ( μ / μ { I , W } , λ ) − ES :进化策略中存在μ \mu μ 个父代,λ \lambda λ 个子代,且所有μ \mu μ 个父代都重组。
希腊符号
λ ≥ 2 \lambda \geq 2 λ ≥ 2 :种群大小,样本大小,子代数量
μ ≤ λ \mu \leq \lambda μ ≤ λ :父代数量,在种群中选择的搜索点的数量
μ e f f = ( ∑ i = 1 μ w i 2 ) − 1 = 1 / ∥ w ∥ 2 \mu_{\mathrm{eff}}=\left(\sum_{i=1}^{\mu} w_{i}^{2}\right)^{-1}=1 /\|\boldsymbol{w}\|^{2} μ eff = ( ∑ i = 1 μ w i 2 ) − 1 = 1/∥ w ∥ 2 :the variance effective selection mass,方差有效选择质量
σ ( g ) ∈ R + \sigma^{(g)} \in \mathbb{R}_{+} σ ( g ) ∈ R + :step-size,步长
拉丁符号
B ∈ R n \boldsymbol{B} \in \mathbb{R}^{n} B ∈ R n :正交矩阵,B \boldsymbol{B} B 的列为C \boldsymbol{C} C 的单位长度特征向量,对应于D \boldsymbol{D} D 的对角元素
C ( g ) ∈ R n × n \boldsymbol{C}^{(g)} \in \mathbb{R}^{n \times n} C ( g ) ∈ R n × n :第g g g 代的协方差矩阵
c i i c_{i i} c ii :C \boldsymbol{C} C 的对象元素
c c ≤ 1 c_{\mathrm{c}} \leq 1 c c ≤ 1 :协方差矩阵的秩一更新的累积学习率
c 1 ≤ 1 − c μ c_{1} \leq 1-c_{\mu} c 1 ≤ 1 − c μ :协方差矩阵秩一更新的学习率
c μ ≤ 1 − c 1 c_{\mu} \leq 1-c_{1} c μ ≤ 1 − c 1 :协方差矩阵秩μ \mu μ 更新的学习率
c σ < 1 c_{\sigma}<1 c σ < 1 :步长控制的累积学习率
D ∈ R n D \in \mathbb{R}^{n} D ∈ R n :对角矩阵,D D D 的对焦元素为C C C 的特征值的平方根,对应于B B B 的各列
d i > 0 d_{i}>0 d i > 0 :对角矩阵D D D 的对角元素,d i 2 d_{i}^{2} d i 2 为C C C 的特征值
d σ ≈ 1 d_{\sigma} \approx 1 d σ ≈ 1 :步长更新的衰减参数
E E E :期望值
f : R n → R , x ↦ f ( x ) f: \mathbb{R}^{n} \rightarrow \mathbb{R}, \boldsymbol{x} \mapsto f(\boldsymbol{x}) f : R n → R , x ↦ f ( x ) :待最小化的目标函数(适应度函数)
f sphere : R n → R , x ↦ ∥ x ∥ 2 = x T x = ∑ i = 1 n x i 2 f_{\text {sphere }}: \mathbb{R}^{n} \rightarrow \mathbb{R}, \boldsymbol{x} \mapsto\|\boldsymbol{x}\|^{2}=\boldsymbol{x}^{\mathrm{T}} \boldsymbol{x}=\sum_{i=1}^{n} x_{i}^{2} f sphere : R n → R , x ↦ ∥ x ∥ 2 = x T x = ∑ i = 1 n x i 2
g ∈ N 0 g \in \mathbb{N}_{0} g ∈ N 0 :代数计数器,迭代次数
I ∈ R n × n \mathbf{I} \in \mathbb{R}^{n \times n} I ∈ R n × n :单位矩阵
m ( g ) ∈ R n \boldsymbol{m}^{(g)} \in \mathbb{R}^{n} m ( g ) ∈ R n :第g g g 代搜索分布的均值
n ∈ N n \in \mathbb{N} n ∈ N :搜索空间维度
N ( 0 , I ) \mathcal{N}(\mathbf{0}, \mathbf{I}) N ( 0 , I ) :0均值和单位协方差矩阵的多元正太分布,按照该分布生成的向量,其元素是独立且服从N ( 0 , 1 ) \mathcal{N}(0,1) N ( 0 , 1 ) 标准正太分布
N ( m , C ) ∼ m + N ( 0 , C ) \mathcal{N}(\boldsymbol{m}, \boldsymbol{C}) \sim \boldsymbol{m}+\mathcal{N}(\mathbf{0}, \boldsymbol{C}) N ( m , C ) ∼ m + N ( 0 , C ) :均值为m ∈ R n \boldsymbol{m} \in \mathbb{R}^{n} m ∈ R n ,协方差矩阵为C ∈ R n × n \boldsymbol{C} \in \mathbb{R}^{n \times n} C ∈ R n × n 的多元正太分布,C \boldsymbol{C} C 为对称正定矩阵
p ∈ R n \boldsymbol{p} \in \mathbb{R}^{n} p ∈ R n :进化路径,即策略经过多代所采取的一系列连续步
w i , w_{i}, w i , where i = 1 , … , μ i=1, \ldots, \mu i = 1 , … , μ :重组权重
x k ( g + 1 ) ∈ R n \boldsymbol{x}_{k}^{(g+1)} \in \mathbb{R}^{n} x k ( g + 1 ) ∈ R n :第g + 1 g+1 g + 1 代中的第k k k 个子代或个体,也将x ( g + 1 ) \boldsymbol{x}^{(g+1)} x ( g + 1 ) 称为搜索点或对象参数/变量,与候选解或设计变量同义
x i : λ ( g + 1 ) \boldsymbol{x}_{i: \lambda}^{(g+1)} x i : λ ( g + 1 ) : x 1 ( g + 1 ) , … , x λ ( g + 1 ) \boldsymbol{x}_{1}^{(g+1)}, \ldots, \boldsymbol{x}_{\lambda}^{(g+1)} x 1 ( g + 1 ) , … , x λ ( g + 1 ) 中第i i i 个最优个体,i : λ i: \lambda i : λ 表示排名第i i i 的个体索引,且f ( x 1 : λ ( g + 1 ) ) ≤ f ( x 2 : λ ( g + 1 ) ) ≤ ⋯ ≤ f ( x λ : λ ( g + 1 ) ) f\left(\boldsymbol{x}_{1: \lambda}^{(g+1)}\right) \leq f\left(\boldsymbol{x}_{2: \lambda}^{(g+1)}\right) \leq \cdots \leq f\left(\boldsymbol{x}_{\lambda: \lambda}^{(g+1)}\right) f ( x 1 : λ ( g + 1 ) ) ≤ f ( x 2 : λ ( g + 1 ) ) ≤ ⋯ ≤ f ( x λ : λ ( g + 1 ) )
y k ( g + 1 ) = ( x k ( g + 1 ) − m ( g ) ) / σ ( g ) \boldsymbol{y}_{k}^{(g+1)}=\left(\boldsymbol{x}_{k}^{(g+1)}-\boldsymbol{m}^{(g)}\right) / \sigma^{(g)} y k ( g + 1 ) = ( x k ( g + 1 ) − m ( g ) ) / σ ( g ) :相当于x k = m + σ y k \boldsymbol{x}_{k}=\boldsymbol{m}+\sigma \boldsymbol{y}_{k} x k = m + σ y k
CMA-ES是一种用于求解非线性非凸函数实值参数(连续域)优化的随机方法,相信很多读者在看了原作者的论文后会感到无助和绝望,有那么多公式,那么多符号,不知如何下手,不用慌,今天这篇文章将给你总结出最主要的核心点和算法思想,直接跳过前面那些让人头疼的数学基础,基础给出算法,然后再逐步分析算法中关键步骤 。
0 ( μ / μ W , λ ) \left(\mu / \mu_{\mathrm{W}}, \lambda\right) ( μ / μ W , λ ) -CMA-ES
其实对进化算法ES稍微有一些了解的童鞋,应该知道ES的大概思路,之前这篇文章(进化计算-进化策略(Evolutionary Strategies,ES)前世今生与代码共享 )我们也有所介绍,那么本文介绍的CMA-ES其实是ES的自适应版本,它会记录一定迭代次数的种群历史,计算目标变量之间的协方差和方差信息,随后的搜索工作受到这些方差值的影响。只要记住一点,不论基因发生何种变化,产生的结果(性状)总遵循这零均值,某一方差的高斯分布 。下面给出了CMA-ES算法的精简伪代码,是不是看起来没有那么复杂呢?
参数设置 ,包括λ , μ , w i = 1 … μ , c σ , d σ , c c , c 1 , \lambda, \mu, w_{i=1 \ldots \mu}, c_{\sigma}, d_{\sigma}, c_{c}, c_{1}, λ , μ , w i = 1 … μ , c σ , d σ , c c , c 1 , and c μ c_{\mu} c μ ,这些参数含义见最开始的符号描述。
初始化 ,设置进化路径,协方差矩阵,当前代数,选择分布平均值和步长。
循环直到达到终止条件 ,从搜索点中采样新的种群,然后进行选择和重组,控制步长大小和协方差自适应。
那么接下来就分别看看这三步中具体是怎么实现的。
1 Set parameters参数设置
这一步中设置的参数主要是指策略参数,包括子代数量λ \lambda λ ,父代数量μ \mu μ ,重组权重w i = 1 … μ w_{i=1 \ldots \mu} w i = 1 … μ ,步长控制的累积学习率c σ c_{\sigma} c σ ,步长更新的衰减参数d σ d_{\sigma} d σ ,协方差矩阵的秩一更新的累积学习率c c c_{\mathrm{c}} c c ,协方差矩阵秩一更新的学习率c 1 c_{1} c 1 ,协方差矩阵秩μ \mu μ 更新的学习率c μ c_{\mu} c μ 。这些参数具体干什么用这里暂时不介绍,后面用到的时候自然会解释。
这些参数往往都有自己的默认值,文中也给出了它们的计算公式,其中μ e f f = 1 ∑ i = 1 μ w i 2 ≥ 1 \mu_{\mathrm{eff}}=\frac{1}{\sum_{i=1}^{\mu} w_{i}^{2}} \geq 1 μ eff = ∑ i = 1 μ w i 2 1 ≥ 1 and ∑ i = 1 μ w i = 1 \sum_{i=1}^{\mu} w_{i}=1 ∑ i = 1 μ w i = 1 。
选择和重组 :
λ = 4 + ⌊ 3 ln n ⌋ , μ = ⌊ μ ′ ⌋ , μ ′ = λ 2 \lambda=4+\lfloor 3 \ln n\rfloor, \quad \mu=\left\lfloor\mu^{\prime}\right\rfloor, \quad \mu^{\prime}=\frac{\lambda}{2} λ = 4 + ⌊ 3 ln n ⌋ , μ = ⌊ μ ′ ⌋ , μ ′ = 2 λ
其中⌊ ⌋ \left\lfloor \quad \right\rfloor ⌊ ⌋ 表示floor操作,即不大于某值得最大整数。由于n n n 为搜索空间维度,是由问题决定的且已知,所以λ \lambda λ 可求,然后就可求得μ ′ \mu^{\prime} μ ′ ,进而求得μ \mu μ 。
w i = w i ′ ∑ j = 1 μ w j ′ , w i ′ = ln ( μ ′ + 0.5 ) − ln i for i = 1 , … , μ w_{i}=\frac{w_{i}^{\prime}}{\sum_{j=1}^{\mu} w_{j}^{\prime}}, \quad w_{i}^{\prime}=\ln \left(\mu^{\prime}+0.5\right)-\ln i \quad \text { for } i=1, \ldots, \mu w i = ∑ j = 1 μ w j ′ w i ′ , w i ′ = ln ( μ ′ + 0.5 ) − ln i for i = 1 , … , μ
有了μ ′ \mu^{\prime} μ ′ 和μ \mu μ 就可求得w j ′ w_{j}^{\prime} w j ′ ,进而求得w i w_{i} w i 。
步长控制 :
c σ = μ e f f + 2 n + μ e f f + 5 , d σ = 1 + 2 max ( 0 , μ e f f − 1 n + 1 − 1 ) + c σ c_{\sigma}=\frac{\mu_{\mathrm{eff}}+2}{n+\mu_{\mathrm{eff}}+5}, \quad d_{\sigma}=1+2 \max \left(0, \sqrt{\frac{\mu_{\mathrm{eff}}-1}{n+1}}-1\right)+c_{\sigma} c σ = n + μ eff + 5 μ eff + 2 , d σ = 1 + 2 max ( 0 , n + 1 μ eff − 1 − 1 ) + c σ
有了w i w_{i} w i 后,就可以计算出μ e f f = 1 ∑ i = 1 μ w i 2 \mu_{\mathrm{eff}}=\frac{1}{\sum_{i=1}^{\mu} w_{i}^{2}} μ eff = ∑ i = 1 μ w i 2 1 ,进而得到c σ c_{\sigma} c σ 和d σ d_{\sigma} d σ 。
协方差自适应 :
c c = 4 + μ e f f / n n + 4 + 2 μ e f f / n c_{\mathrm{c}}=\frac{4+\mu_{\mathrm{eff}} / n}{n+4+2 \mu_{\mathrm{eff}} / n} c c = n + 4 + 2 μ eff / n 4 + μ eff / n
c 1 = 2 ( n + 1.3 ) 2 + μ e f f c_{1}=\frac{2}{(n+1.3)^{2}+\mu_{\mathrm{eff}}} c 1 = ( n + 1.3 ) 2 + μ eff 2
c μ = min ( 1 − c 1 , α μ μ e f f − 2 + 1 / μ e f f ( n + 2 ) 2 + α μ μ e f f / 2 ) with α μ = 2 c_{\mu}=\min \left(1-c_{1}, \alpha_{\mu} \frac{\mu_{\mathrm{eff}}-2+1 / \mu_{\mathrm{eff}}}{(n+2)^{2}+\alpha_{\mu} \mu_{\mathrm{eff}} / 2}\right) \quad \text { with } \alpha_{\mu}=2 c μ = min ( 1 − c 1 , α μ ( n + 2 ) 2 + α μ μ eff /2 μ eff − 2 + 1/ μ eff ) with α μ = 2
根据μ e f f \mu_{\mathrm{eff}} μ eff 和n n n 可以计算出c c c_{\mathrm{c}} c c ,c 1 c_{1} c 1 和c μ c_{\mu} c μ 。
说明 :
式(46)~(49)所计算的默认参数通常是比较鲁棒的,因此根据经验,可以广泛地适用于不同的优化问题,这些参数通常不必进行修改 。而子代数量λ \lambda λ ,父代数量μ \mu μ ,重组权重w i = 1 … μ w_{i=1 \ldots \mu} w i = 1 … μ 相对而言不是很关键,可以在较大范围内进行选择而不影响自适应,一般推荐选择μ ≤ λ / 2 \mu \leq \lambda / 2 μ ≤ λ /2 ,以及根据w 1 ≥ ⋯ ≥ w μ w_{1} \geq \cdots \geq w_{\mu} w 1 ≥ ⋯ ≥ w μ 选择重组权重,种群大小λ \lambda λ 可以适当增大,如果μ \mu μ 和w i w_{i} w i 使用了与λ \lambda λ 有关的默认值,种群大小λ \lambda λ 会对全局搜索性能有显著影响,增加λ \lambda λ 通常会提高CMA-ES的全局搜索能力和鲁棒性,但会降低其收敛速度,收敛速度最多随λ \lambda λ 线性下降。
2 Initialization初始化
设置进化路径p σ = 0 , p c = 0 p_{\sigma}=0, p_{c}=0 p σ = 0 , p c = 0 ,相当于清除了路径,设置协方差矩阵C = I C=\mathbf{I} C = I ,当前迭代次数g = 0 g=0 g = 0 。
选择分布均值m ∈ R n \boldsymbol{m} \in \mathbb{R}^{n} m ∈ R n 和步长大小σ ∈ R + \sigma \in \mathbb{R}_{+} σ ∈ R + ,这两个值其实是和问题相关的,最优解大致是应该位于m ± 3 σ ( 1 , … , 1 ) T \boldsymbol{m} \pm 3 \sigma(1, \ldots, 1)^{\mathrm{T}} m ± 3 σ ( 1 , … , 1 ) T 内的,如果最优解期望位于初始搜索间隔[ a , b ] n [a, b]^{n} [ a , b ] n ,我们可以在[ a , b ] n [a, b]^{n} [ a , b ] n 内均匀随机选择初始搜索点m \boldsymbol{m} m ,且σ = 0.3 ( b − a ) \sigma=0.3(b-a) σ = 0.3 ( b − a ) 。针对不同变量的不同搜索间隔Δ s i \Delta s_{i} Δ s i 可以通过C C C 的不同初始化来体现,其中C C C 的对角元素满足c i i = ( Δ s i ) 2 c_{i i}=\left(\Delta s_{i}\right)^{2} c ii = ( Δ s i ) 2 。注意Δ s i \Delta s_{i} Δ s i 不能在数量级上差距很大,否则就需要进行缩放。
3 迭代优化过程
3.1 采样新种群
在CMA-ES中,新搜索点(个体,子代)的种群是通过多元正态分布采样(回顾:给定方差或协方差,正太分布的交叉熵在所有分布中是最大的 )生成的,在第g g g 代采样搜索点的公式如下:
x k ( g + 1 ) ∼ m ( g ) + σ ( g ) N ( 0 , C ( g ) ) for k = 1 , … , λ \boldsymbol{x}_{k}^{(g+1)} \sim \boldsymbol{m}^{(g)}+\sigma^{(g)} \mathcal{N}\left(\mathbf{0}, \boldsymbol{C}^{(g)}\right) \quad \text { for } k=1, \ldots, \lambda x k ( g + 1 ) ∼ m ( g ) + σ ( g ) N ( 0 , C ( g ) ) for k = 1 , … , λ
其中:
∼ \sim ∼ 表示左右分布相同。
N ( 0 , C ( g ) ) \mathcal{N}\left(\mathbf{0}, \boldsymbol{C}^{(g)}\right) N ( 0 , C ( g ) ) :是均值为0,协方差为C ( g ) \boldsymbol{C}^{(g)} C ( g ) 的多元正太分布,其满足m ( g ) + σ ( g ) N ( 0 , C ( g ) ) ∼ N ( m ( g ) , ( σ ( g ) ) 2 C ( g ) ) \boldsymbol{m}^{(g)}+\sigma^{(g)} \mathcal{N}\left(\mathbf{0}, \boldsymbol{C}^{(g)}\right) \sim \mathcal{N}\left(\boldsymbol{m}^{(g)},\left(\sigma^{(g)}\right)^{2} \boldsymbol{C}^{(g)}\right) m ( g ) + σ ( g ) N ( 0 , C ( g ) ) ∼ N ( m ( g ) , ( σ ( g ) ) 2 C ( g ) ) 。
x k ( g + 1 ) ∈ R n \boldsymbol{x}_{k}^{(g+1)} \in \mathbb{R}^{n} x k ( g + 1 ) ∈ R n :第g + 1 g+1 g + 1 代中的第k k k 个子代(个体,搜索点)。
m ( g ) ∈ R n \boldsymbol{m}^{(g)} \in \mathbb{R}^{n} m ( g ) ∈ R n :第g g g 代搜索分布的均值。
σ ( g ) ∈ R + \sigma^{(g)} \in \mathbb{R}_{+} σ ( g ) ∈ R + :第g g g 代整体标准差,步长。
C ( g ) ∈ R n × n C^{(g)} \in \mathbb{R}^{n \times n} C ( g ) ∈ R n × n :第g g g 代的协方差矩阵
λ ≥ 2 \lambda \geq 2 λ ≥ 2 :种群大小,采样大小,子代数量。
为了定义完整的迭代步骤,剩下的问题就是如何计算第g + 1 g+1 g + 1 代的m ( g + 1 ) , \boldsymbol{m}^{(g+1)}, m ( g + 1 ) , C ( g + 1 ) \boldsymbol{C}^{(g+1)} C ( g + 1 ) 和 σ ( g + 1 ) \sigma^{(g+1)} σ ( g + 1 )
3.2 选择和重组:均值移动
搜索分布新的均值m ( g + 1 ) \boldsymbol{m}^{(g+1)} m ( g + 1 ) 就是从样本x 1 ( g + 1 ) , … , x λ ( g + 1 ) \boldsymbol{x}_{1}^{(g+1)}, \ldots, \boldsymbol{x}_{\lambda}^{(g+1)} x 1 ( g + 1 ) , … , x λ ( g + 1 ) 中选择的μ \mu μ 个点的加权平均值:
m ( g + 1 ) = ∑ i = 1 μ w i x i : λ ( g + 1 ) \boldsymbol{m}^{(g+1)}=\sum_{i=1}^{\mu} w_{i} \boldsymbol{x}_{i: \lambda}^{(g+1)} m ( g + 1 ) = ∑ i = 1 μ w i x i : λ ( g + 1 )
∑ i = 1 μ w i = 1 , w 1 ≥ w 2 ≥ ⋯ ≥ w μ > 0 \sum_{i=1}^{\mu} w_{i}=1, \quad w_{1} \geq w_{2} \geq \cdots \geq w_{\mu}>0 ∑ i = 1 μ w i = 1 , w 1 ≥ w 2 ≥ ⋯ ≥ w μ > 0
其中
μ ≤ λ \mu \le \lambda μ ≤ λ 为父代种群大小,即选择点的个数。
w i = 1 … μ ∈ R + w_{i=1 \ldots \mu} \in \mathbb{R}_{+} w i = 1 … μ ∈ R + :用于重组的正权重系数。如果w i = 1 … μ = 1 / μ w_{i=1 \ldots \mu}=1 / \mu w i = 1 … μ = 1/ μ ,等式(6)相当于计算了μ \mu μ 个选择点的均值。
x i : λ ( g + 1 ) \boldsymbol{x}_{i: \lambda}^{(g+1)} x i : λ ( g + 1 ) :根据式(5)计算得到的x 1 ( g + 1 ) , … , x λ ( g + 1 ) \boldsymbol{x}_{1}^{(g+1)}, \ldots, \boldsymbol{x}_{\lambda}^{(g+1)} x 1 ( g + 1 ) , … , x λ ( g + 1 ) 中第i i i 个最优个体,i : λ i: \lambda i : λ 表示排名第i i i 的个体索引,且f ( x 1 : λ ( g + 1 ) ) ≤ f ( x 2 : λ ( g + 1 ) ) ≤ ⋯ ≤ f ( x λ : λ ( g + 1 ) ) f\left(\boldsymbol{x}_{1: \lambda}^{(g+1)}\right) \leq f\left(\boldsymbol{x}_{2: \lambda}^{(g+1)}\right) \leq \cdots \leq f\left(\boldsymbol{x}_{\lambda: \lambda}^{(g+1)}\right) f ( x 1 : λ ( g + 1 ) ) ≤ f ( x 2 : λ ( g + 1 ) ) ≤ ⋯ ≤ f ( x λ : λ ( g + 1 ) ) 。
等式(6)通过从λ \lambda λ 个子代中选择μ < λ \mu \lt\lambda μ < λ 个实现截断选择(truncation selection),其实分配不同的权重w i w_i w i 也相当于一种选择机制。等式(6)实现了加权中间重组(weighted intermediate recombination),考虑了μ > 1 \mu \gt 1 μ > 1 个个体以获得一个加权平均值。
μ e f f = ( ∥ w ∥ 1 ∥ w ∥ 2 ) 2 = ∥ w ∥ 1 2 ∥ w ∥ 2 2 = 1 ∥ w ∥ 2 2 = ( ∑ i = 1 μ w i 2 ) − 1 \mu_{\mathrm{eff}}=\left(\frac{\|\boldsymbol{w}\|_{1}}{\|\boldsymbol{w}\|_{2}}\right)^{2}=\frac{\|\boldsymbol{w}\|_{1}^{2}}{\|\boldsymbol{w}\|_{2}^{2}}=\frac{1}{\|\boldsymbol{w}\|_{2}^{2}}=\left(\sum_{i=1}^{\mu} w_{i}^{2}\right)^{-1} μ eff = ( ∥ w ∥ 2 ∥ w ∥ 1 ) 2 = ∥ w ∥ 2 2 ∥ w ∥ 1 2 = ∥ w ∥ 2 2 1 = ( ∑ i = 1 μ w i 2 ) − 1
上式会在后面重复使用到,可以解释为方差有效选择质量( variance effective selection mass)。根据(7)中w i w_i w i 的定义,可以推导出1 ≤ μ e f f ≤ μ 1 \leq \mu_{\mathrm{eff}} \leq \mu 1 ≤ μ eff ≤ μ ,且当重组权重相等即对于所有i = 1 … μ i=1 \ldots \mu i = 1 … μ 都有w i = 1 / μ w_{i}=1 / \mu w i = 1/ μ ,则μ e f f = μ \mu_{\mathrm{eff}}= \mu μ eff = μ 。通常,μ e f f ≈ λ / 4 \mu_{\mathrm{eff}} \approx \lambda / 4 μ eff ≈ λ /4 表明w i w_i w i 的设置比较合理,典型的设置是w i ∝ μ − i + 1 , w_{i} \propto \mu-i+1, w i ∝ μ − i + 1 , and μ ≈ λ / 2 \mu \approx \lambda / 2 μ ≈ λ /2 。
3.3 自适应协方差矩阵
这一节将推导协方差矩阵的更新过程。将从某一代的单个总体开始估计协方差矩阵(3.3.1),对于小种群,这种估计是不可靠的,必须提出一种自适应方法(3.3.2的秩μ \mu μ 更新),在极限情况下,每一代只能使用一个单点来更新(调整)协方差矩阵(3.3.3的秩1更新),适应性可以通过利用连续步骤之间的累积依赖性来增强(3.3.3.1),最后结合秩μ \mu μ 和秩1更新方法(3.3.4)。
3.3.1 估计协方差矩阵
现在假设种群包含足够的信息,可以可靠地估计协方差矩阵。为了方便起见,在本节中假设σ ( g ) = 1 \sigma^{(g)}=1 σ ( g ) = 1 ,对于σ ( g ) ≠ 1 \sigma^{(g)} \neq 1 σ ( g ) = 1 时,除了常数因子外,这个公式是仍然成立。
为了根据N ( 0 , I ) \mathcal{N}(\mathbf{0}, \mathbf{I}) N ( 0 , I ) 分布的样本重新估计协方差矩阵且保证C \boldsymbol{C} C 的条件数cond ( C ) < 10 \operatorname{cond}\boldsymbol{(C)}<10 cond ( C ) < 10 ,应该保证采样大小λ ≥ 4 n \lambda \geq 4 n λ ≥ 4 n 。
我们可以使用根据(5)采样的种群重新评估原始的协方差矩阵C ( g ) \boldsymbol{C}^{(g)} C ( g ) ,通过下面的经验协方差矩阵:
C e m p ( g + 1 ) = 1 λ − 1 ∑ i = 1 λ ( x i ( g + 1 ) − 1 λ ∑ j = 1 λ x j ( g + 1 ) ) ( x i ( g + 1 ) − 1 λ ∑ j = 1 λ x j ( g + 1 ) ) T \boldsymbol{C}_{\mathrm{emp}}^{(g+1)}=\frac{1}{\lambda-1} \sum_{i=1}^{\lambda}\left(\boldsymbol{x}_{i}^{(g+1)}-\frac{1}{\lambda} \sum_{j=1}^{\lambda} \boldsymbol{x}_{j}^{(g+1)}\right)\left(\boldsymbol{x}_{i}^{(g+1)}-\frac{1}{\lambda} \sum_{j=1}^{\lambda} \boldsymbol{x}_{j}^{(g+1)}\right)^{\mathrm{T}} C emp ( g + 1 ) = λ − 1 1 ∑ i = 1 λ ( x i ( g + 1 ) − λ 1 ∑ j = 1 λ x j ( g + 1 ) ) ( x i ( g + 1 ) − λ 1 ∑ j = 1 λ x j ( g + 1 ) ) T
经验协方差矩阵C e m p ( g + 1 ) \boldsymbol{C}_{\mathrm{emp}}^{(g+1)} C emp ( g + 1 ) 是C ( g ) \boldsymbol{C}^{(g)} C ( g ) 的无偏估计:假设x i ( g + 1 ) , i = 1 … λ \boldsymbol{x}_{i}^{(g+1)}, i=1 \ldots \lambda x i ( g + 1 ) , i = 1 … λ 为随机变量(而不是已完成的采样),那么就有E [ C e m p ( g + 1 ) C ( g ) ] = C ( g ) \mathrm{E}\left[\begin{array}{l|l}\boldsymbol{C}_{\mathrm{emp}}^{(g+1)} & \boldsymbol{C}^{(g)}\end{array}\right]=\boldsymbol{C}^{(g)} E [ C emp ( g + 1 ) C ( g ) ] = C ( g ) 。现在考虑一种稍微不同的获取C ( g ) \boldsymbol{C}^{(g)} C ( g ) 估计量的方法。
C λ ( g + 1 ) = 1 λ ∑ i = 1 λ ( x i ( g + 1 ) − m ( g ) ) ( x i ( g + 1 ) − m ( g ) ) T \boldsymbol{C}_{\lambda}^{(g+1)}=\frac{1}{\lambda} \sum_{i=1}^{\lambda}\left(\boldsymbol{x}_{i}^{(g+1)}-\boldsymbol{m}^{(g)}\right)\left(\boldsymbol{x}_{i}^{(g+1)}-\boldsymbol{m}^{(g)}\right)^{\mathrm{T}} C λ ( g + 1 ) = λ 1 ∑ i = 1 λ ( x i ( g + 1 ) − m ( g ) ) ( x i ( g + 1 ) − m ( g ) ) T
同样C λ ( g + 1 ) \boldsymbol{C}_{\lambda}^{(g+1)} C λ ( g + 1 ) 也是C ( g ) \boldsymbol{C}^{(g)} C ( g ) 的无偏估计,式(9)和(10)之间的明显不同在于参考均值不同,C e m p ( g + 1 ) \boldsymbol{C}_{\mathrm{emp}}^{(g+1)} C emp ( g + 1 ) 中使用的是实际采样的均值,而C λ ( g + 1 ) \boldsymbol{C}_{\lambda}^{(g+1)} C λ ( g + 1 ) 使用的则是使用采样分布的真实均值m ( g ) \boldsymbol{m}^{(g)} m ( g ) ,因此估计C e m p ( g + 1 ) \boldsymbol{C}_{\mathrm{emp}}^{(g+1)} C emp ( g + 1 ) 和C λ ( g + 1 ) \boldsymbol{C}_{\lambda}^{(g+1)} C λ ( g + 1 ) 可以有不同的理解:前者估计了采样点内的分布方差,后者估计了采样步x i ( g + 1 ) − m ( g ) \boldsymbol{x}_{i}^{(g+1)}-\boldsymbol{m}^{(g)} x i ( g + 1 ) − m ( g ) 的方差。
公式(10)对原始协方差矩阵进行评估,为了评估更好的协方差矩阵,对(10)进行了改进,同样采用(6)中的“加权选择机制”:
C μ ( g + 1 ) = ∑ i = 1 μ w i ( x i : λ ( g + 1 ) − m ( g ) ) ( x i : λ ( g + 1 ) − m ( g ) ) T \boldsymbol{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)^{\mathrm{T}} C μ ( g + 1 ) = ∑ i = 1 μ w i ( x i : λ ( g + 1 ) − m ( g ) ) ( x i : λ ( g + 1 ) − m ( g ) ) T
C μ ( g + 1 ) \boldsymbol{C}_{\mu}^{(g+1)} C μ ( g + 1 ) 是对选择步上分布的估计,如同C λ ( g + 1 ) \boldsymbol{C}_{\lambda}^{(g+1)} C λ ( g + 1 ) 为选择之前所有步上的原始分布的估计。从C μ ( g + 1 ) \boldsymbol{C}_{\mu}^{(g+1)} C μ ( g + 1 ) 中采样往往会再生出选择的即成功的步,从而给出一个“更好的”协方差矩阵的解释。
为了保证使用(5)、(6)h和(11)时C μ ( g + 1 ) \boldsymbol{C}_{\mu}^{(g+1)} C μ ( g + 1 ) 是可靠的估计量,方差有效选择质量μ e f f \mu_{\mathrm{eff}} μ eff 必须足够大:C μ ( g ) \boldsymbol{C}_{\mu}^{(g)} C μ ( g ) 在f sphere ( x ) = ∑ i = 1 n x i 2 f_{\text {sphere }}(\boldsymbol{x})=\sum_{i=1}^{n} x_{i}^{2} f sphere ( x ) = ∑ i = 1 n x i 2 的条件数小于10就需要μ e f f ≈ 10 n \mu_{\mathrm{eff}} \approx 10 n μ eff ≈ 10 n 。下一步就来说明如何规避对μ e f f \mu_{\mathrm{eff}} μ eff 的这种限制。
3.3.2 秩μ \mu μ 更新
为了实现快速搜索,种群大小λ \lambda λ 必须尽量小,由于μ e f f ≈ λ / 4 \mu_{\mathrm{eff}} \approx \lambda / 4 μ eff ≈ λ /4 ,所以μ e f f \mu_{\mathrm{eff}} μ eff 肯定也会很小,例如假设μ e f f ≤ 1 + ln n \mu_{\mathrm{eff}} \leq 1+\ln n μ eff ≤ 1 + ln n ,那么根据式(11)不可能得到好的协方差矩阵的可靠估计,作为补救措施,将额外使用前几代的信息,例如经过足够多代之后,估计协方差矩阵在所有代上的均值为:
C ( g + 1 ) = 1 g + 1 ∑ i = 0 g 1 σ ( i ) 2 C μ ( i + 1 ) \boldsymbol{C}^{(g+1)}=\frac{1}{g+1} \sum_{i=0}^{g} \frac{1}{\sigma^{(i)^{2}}} \boldsymbol{C}_{\mu}^{(i+1)} C ( g + 1 ) = g + 1 1 ∑ i = 0 g σ ( i ) 2 1 C μ ( i + 1 )
使用改均值就可以得到选择步上的可靠估计,为了使得不同代之间的C μ ( g ) \boldsymbol{C}_{\mu}^{(g)} C μ ( g ) 可比较,结合了不同的σ ( i ) \sigma^{(i)} σ ( i ) .
在(13)中,所有的代的步上都有相同的权重,为了分配最近几代更高的权重,引入了指数平滑。取C ( 0 ) = I \boldsymbol{C}^{(0)}=\mathbf{I} C ( 0 ) = I 且学习率0 < c μ ≤ 1 0<c_{\mu} \leq 1 0 < c μ ≤ 1 ,那么C ( g + 1 ) \boldsymbol{C}^{(g+1)} C ( g + 1 ) 取值为:
\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)^{\mathrm{T}}} \\
&=\boldsymbol{C}^{(g)^{1 / 2}}\left(\mathbf{I}+c_{\mu} \sum_{i=1}^{\mu} w_{i}\left(\boldsymbol{z}_{i: \lambda}^{(g+1)} \boldsymbol{z}_{i: \lambda}^{(g+1)^{\mathrm{T}}}-\mathbf{I}\right) \right)\boldsymbol{C}^{(g)^{1 / 2}}
其中
c μ ≤ 1 c_{\mu}\le 1 c μ ≤ 1 :协方差矩阵更新的学习率,对于c μ = 1 c_{\mu}= 1 c μ = 1 ,则没有保留先验信息,C ( g + 1 ) = 1 σ ( g ) 2 C μ ( g + 1 ) \boldsymbol{C}^{(g+1)}=\frac{1}{\sigma^{(g)^{2}}} \boldsymbol{C}_{\mu}^{(g+1)} C ( g + 1 ) = σ ( g ) 2 1 C μ ( g + 1 ) ,而对于c μ = 0 c_{\mu}= 0 c μ = 0 ,则没有进行学习,C ( g + 1 ) = C 0 \boldsymbol{C}^{(g+1)}=\boldsymbol{C}_{0} C ( g + 1 ) = C 0 。因此c μ ≈ min ( 1 , μ e f f / n 2 ) c_{\mu} \approx \min \left(1, \mu_{\mathrm{eff}} / n^{2}\right) c μ ≈ min ( 1 , μ eff / n 2 ) 式合理的选择。
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)} y i : λ ( g + 1 ) = ( x i : λ ( g + 1 ) − m ( g ) ) / σ ( g )
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)} z i : λ ( g + 1 ) = C ( g ) − 1/2 y i : λ ( g + 1 ) 为变异向量。
这个协方差矩阵更新称为秩μ \mu μ 更新,因为(14)中外积和的秩为m i n ( μ , n ) min(\mu,n) min ( μ , n ) 。其实下面几段可以不用关心的!!!
1 / c μ 1/c_{\mu} 1/ c μ 是backward time horizon,约占总体权重的63%。由于式(14)可以扩展为加权和:
backward time horizon Δ g \Delta g Δ g 约占总体权重的63%,定义为:
c μ ∑ i = g + 1 − Δ g g ( 1 − c μ ) g − i ≈ 0.63 ≈ 1 − 1 e c_{\mu} \sum_{i=g+1-\Delta g}^{g}\left(1-c_{\mu}\right)^{g-i} \approx 0.63 \approx 1-\frac{1}{\mathrm{e}} c μ ∑ i = g + 1 − Δ g g ( 1 − c μ ) g − i ≈ 0.63 ≈ 1 − e 1
分解求和得到
( 1 − c μ ) Δ g ≈ 1 e \left(1-c_{\mu}\right)^{\Delta g} \approx \frac{1}{\mathrm{e}} ( 1 − c μ ) Δ g ≈ e 1
然后使用泰勒近似分解得到Δ g \Delta g Δ g :
Δ g ≈ 1 c μ \Delta g \approx \frac{1}{c_{\mu}} Δ g ≈ c μ 1
c μ c_{\mu} c μ 的选择很关键,小值导致学习慢,大值导致失败,因为协方差矩阵退化。幸运的是,一个好的设置似乎在很大程度上独立于要优化的函数。一个好的一阶近似是c μ ≈ μ e f f / n 2 c_{\mu} \approx \mu_{\mathrm{eff}} / n^{2} c μ ≈ μ eff / n 2 ,因此(14)的特征时域约等于n 2 / μ e f f n^{2}/\mu_{\mathrm{eff}} n 2 / μ eff .
即使学习率c μ = 1 c_{\mu}=1 c μ = 1 ,适应协方差矩阵也不能在一代之内完成,原始样本分布的影响直到足够的代数才会消失。假设搜索代价固定(函数评估的次数),较小的种群规模λ \lambda λ 允许较大的代数,因此通常会导致协方差矩阵更快的自适应。
3.3.3 秩1更新
在3.1节,使用从单代中所有选择的步从零开始估计了完整的协方差矩阵,现在采取恰恰相反的视角,只使用一个选定的步骤来重复更新代序列中的协方差矩阵,即使上一代最好的样本出现的几率更高 。首先,这一视角将给出适应规则(14)的正当性,其次引入所谓的进化路径,最终用于协方差矩阵的秩1更新。
3.3.3.1 不同的视角
考虑一种特殊的方法来产生均值为零的n维正态分布,令向量y 1 , … , y g 0 ∈ R n , g 0 ≥ n , \boldsymbol{y}_{1}, \ldots, \boldsymbol{y}_{g_{0}} \in \mathbb{R}^{n}, g_{0} \geq n, y 1 , … , y g 0 ∈ R n , g 0 ≥ n , span R n \mathbb{R}^{n} R n ,且N ( 0 , 1 ) \mathcal{N}(0,1) N ( 0 , 1 ) 表示服从独立(0,1)正太分布的随机数,那么
N ( 0 , 1 ) y 1 + ⋯ + N ( 0 , 1 ) y g 0 ∼ N ( 0 , ∑ i = 1 g 0 y i y i T ) \mathcal{N}(0,1) \boldsymbol{y}_{1}+\cdots+\mathcal{N}(0,1) \boldsymbol{y}_{g_{0}} \sim \mathcal{N}\left(\mathbf{0}, \sum_{i=1}^{g_{0}} \boldsymbol{y}_{i} \boldsymbol{y}_{i}^{\mathrm{T}}\right) N ( 0 , 1 ) y 1 + ⋯ + N ( 0 , 1 ) y g 0 ∼ N ( 0 , ∑ i = 1 g 0 y i y i T )
是均值为0协方差∑ i = 1 g 0 y i y i T \sum_{i=1}^{g_{0}} \boldsymbol{y}_{i} \boldsymbol{y}_{i}^{\mathrm{T}} ∑ i = 1 g 0 y i y i T 的正太分布随机向量。该随机向量是通过线性分布N ( 0 , 1 ) y i \mathcal{N}(0,1) \boldsymbol{y}_{i} N ( 0 , 1 ) y i 相加得到的。奇异分布N ( 0 , 1 ) y i ∼ N ( 0 , y i y i T ) \mathcal{N}(0,1) \boldsymbol{y}_{i} \sim \mathcal{N}\left(\mathbf{0}, \boldsymbol{y}_{i} \boldsymbol{y}_{i}^{\mathrm{T}}\right) N ( 0 , 1 ) y i ∼ N ( 0 , y i y i T ) 考虑了所有均值为0的正太分布,生成最大似然估计向量y i \boldsymbol{y}_{i} y i 。
考虑(19)和(14)的轻微简化,试图深入了解协方差矩阵的适应规则,令(14)中的和仅包含一个被加项(例如μ = 1 \mu=1 μ = 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)}} y g + 1 = σ ( g ) x 1 : λ ( g + 1 ) − m ( g ) ,那么协方差矩阵秩1更新写为:
C ( g + 1 ) = ( 1 − c 1 ) C ( g ) + c 1 y g + 1 y g + 1 T \boldsymbol{C}^{(g+1)}=\left(1-c_{1}\right) \boldsymbol{C}^{(g)}+c_{1} \boldsymbol{y}_{g+1} \boldsymbol{y}_{g+1}^{\mathrm{T}} C ( g + 1 ) = ( 1 − c 1 ) C ( g ) + c 1 y g + 1 y g + 1 T
右边的被加项秩为1,再在协方差矩阵C ( g ) \boldsymbol{C}^{(g)} C ( g ) 加上y g + 1 \boldsymbol{y}_{g+1} y g + 1 的最大似然项,因此在下一代中生成y g + 1 \boldsymbol{y}_{g+1} y g + 1 的概率就增加了。
3.3.3.2 累计:利用进化路径
我们已经使用选择的步骤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)} y i : λ ( g + 1 ) = ( x i : λ ( g + 1 ) − m ( g ) ) / σ ( g ) 来更新(14)和(20)中的协方差矩阵,因为y y T = − y ( − y ) T \boldsymbol{y} \boldsymbol{y}^{\mathrm{T}}=-\boldsymbol{y}(-\boldsymbol{y})^{\mathrm{T}} y y T = − y ( − y ) T ,所以步骤的符号与协方差矩阵的更新无关,也就是说,符号信息不用于计算C ( g + 1 ) \boldsymbol{C}^{(g+1)} C ( g + 1 ) 。为了利用符号信息,引入了所谓的进化路径。
我们将策略在许多代上采取的连续步序列称之为一个进化路径。进化路径可以用一系列连续的步骤总和来表示,这种总和称为累积。为了构建一个进化路径,不考虑步长σ \sigma σ 。例如,分布均值为m \boldsymbol m m 的三步进化路径为:
\frac{m^{(g+1)}-m^{(g)}}{\sigma^{(g)}}+\frac{m^{(g)}-m^{(g-1)}}{\sigma^{(g-1)}}+\frac{m^{(g-1)}-m^{(g-2)}}{\sigma^{(g-2)}}}
实际上,为了构造进化路径,使用了指数平滑,且p c ( 0 ) = 0 \boldsymbol{p}_{\mathrm{c}}^{(0)}=\boldsymbol{0} p c ( 0 ) = 0 :
其中
p c ( g ) ∈ R n \boldsymbol{p}_{\mathrm{c}}^{(g)} \in \mathbb{R}^{n} p c ( g ) ∈ R n 表示第g g g 代的进化路径
c c ≤ 1 c_{\mathrm{c}} \leq 1 c c ≤ 1 ,同样,1 / c c 1 / c_{\mathrm{c}} 1/ c c 为进化路径p c \boldsymbol{p}_{\mathrm{c}} p c 的backward time horizon 。
因子c c ( 2 − c c ) μ e f f \sqrt{c_{\mathrm{c}}\left(2-c_{\mathrm{c}}\right) \mu_{\mathrm{eff}}} c c ( 2 − c c ) μ eff 是p c \boldsymbol{p}_{\mathrm{c}} p c 的归一化常数,对于c c = 1 c_{\mathrm{c}}=1 c c = 1 和μ e f f = 1 \mu_{\mathrm{eff}}=1 μ eff = 1 ,该因子变为1,且p c ( g + 1 ) = ( x 1 : λ ( g + 1 ) − m ( g ) ) / σ ( g ) \boldsymbol{p}_{\mathrm{c}}^{(g+1)}=\left(\boldsymbol{x}_{1: \lambda}^{(g+1)}-\boldsymbol{m}^{(g)}\right) / \sigma^{(g)} p c ( g + 1 ) = ( x 1 : λ ( g + 1 ) − m ( g ) ) / σ ( g ) 。
考虑进化路径p c ( g + 1 ) \boldsymbol{p}_{\mathrm{c}}^{(g+1)} p c ( g + 1 ) 的协方差矩阵C ( g ) C^{(g)} C ( g ) 秩1更新写作:
C ( g + 1 ) = ( 1 − c 1 ) C ( g ) + c 1 p c ( g + 1 ) p c ( g + 1 ) T \boldsymbol{C}^{(g+1)}=\left(1-c_{1}\right) \boldsymbol{C}^{(g)}+c_{1} \boldsymbol{p}_{\mathbf{c}}^{(g+1)} \boldsymbol{p}_{\mathbf{c}}^{(g+1)^{\mathrm{T}}} C ( g + 1 ) = ( 1 − c 1 ) C ( g ) + c 1 p c ( g + 1 ) p c ( g + 1 ) T
(26)中一种经验有效的学习率设置为c 1 ≈ 2 / n 2 c_{1} \approx 2 / n^{2} c 1 ≈ 2/ n 2 ,如果c 1 = 1 c_{1} =1 c 1 = 1 且μ = 1 \mu =1 μ = 1 ,那么等式(26)、(20)和(14)就是完全相同的。
使用进化路径更新C \boldsymbol C C 是当μ e f f \mu_{\mathrm{eff}} μ eff 较小时对(14)的显著改进,因为利用了连续步骤之间的相关性。
3.4 组合秩μ \mu μ 更新和累积
最终的协方差矩阵CMA更新就是组合(14)和(26):
\boldsymbol{C}^{(g+1)}=&\left(1-c_{1}-c_{\mu}\right) \boldsymbol{C}^{(g)} \\
&+c_{1} \underbrace{\boldsymbol{p}_{\mathrm{c}}^{(g+1)} \boldsymbol{p}_{\mathrm{c}}^{(g+1)}}_{\text {rank-one update }}+c_{\mu} \underbrace {\sum_{i=1}^{\mu} w_{i} \boldsymbol{y}_{i: \lambda}^{(g+1)}\left(\boldsymbol{y}_{i: \lambda}^{(g+1)}\right)^{\mathrm{T}}}_{\text {rank-} \mu \text { update}}
其中
c 1 ≈ 2 / n 2 c_{1} \approx 2 / n^{2} c 1 ≈ 2/ n 2
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 / n 2 , 1 − c 1 )
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)} y i : λ ( g + 1 ) = ( x i : λ ( g + 1 ) − m ( g ) ) / σ ( g )
如果c 1 = 0 c_{1}=0 c 1 = 0 则等式(27)退化为(14),如果c μ = 0 c_{\mu}=0 c μ = 0 则退化为(26)。(27)融合了(14)和(26)的优势,一方面,秩μ \mu μ 更新有效地利用了一代种群内的信息,另一方面,秩1更新的进化路径利用了代之间的相关性信息。前者在大群体中很重要,后者在小群体中作用明显。
3.4 步长控制
在上一节中介绍的协方差矩阵自适应并没有明确地控制分布的“总体尺度”,步长。协方差矩阵自适应对于每一步选择只在一个方向上增加尺度,通过因子1 - c1 - c隐式地减少旧信息来降低尺度。除了C ( g ) C^{(g)} C ( g ) 的自适应规则以外,有两点原因来引入步长控制:
最优整体步长不能通过(27)很好地近似,特别是当μ e f f \mu_{eff} μ e ff 大于1时。
(27)中协方差矩阵更新的最大可靠学习率太慢,以至于无法实现整个步长的竞争性变化率。
为了控制步长σ ( g ) \sigma^{(g)} σ ( g ) ,我们利用到了进化路径,即连续步总和。该方法可独立于协方差矩阵更新而应用,可表示为累积路径长度控制(cumulative path length control)、累积步长控制(cumulative step-size control)或累积步长自适应( cumulative step
length adaptation,CSA)。基于以下推理,充分利用了进化路径的长度:
只要进化路径很短,单个步骤就会相互抵消,笼统地讲,它们是反相关的。如果步长互相湮灭,步长应该减小。
只要进化的路径很长,单个的步骤都指向相似的方向,笼统地讲,它们是相关的。因为步骤是相似的,同样的距离可以通过更少但更长的步骤进入相同的方向。在极限情况下,连续的步长有相同的方向,它们可以被一个放大的单步长代替。因此,应该增加步长。
在理想情况下,期望步之间是(近似)垂直的,因此也就不相关。
为了确定进化路径是“长”还是“短”,我们将路径的长度与随机选择下的期望长度进行比较。在随机选择下,连续的步骤是独立的,因此是不相关的。如果选择导致进化路径比期望值长,则应该增加σ \sigma σ ,如果选择导致进化路径比期望值短,则应该降低σ \sigma σ 。在理想情况下,选择不会对进化路径的长度产生偏差,在随机选择下,进化路径的长度等于其期望长度。
实际上,为了构建进化路径p σ \boldsymbol{p}_{\sigma} p σ ,采用了(22)中相同的技术。但和(22)不同的是,这里构建的是共轭进化路径,因为(22)中的进化路径p c \boldsymbol{p}_{c} p c 的期望长度取决于其方向。初始化p σ ( 0 ) = 0 \boldsymbol{p}_{\sigma}^{(0)}=\mathbf{0} p σ ( 0 ) = 0 ,共轭进化路径写为:
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 σ ) μ eff C ( g ) − 2 1 σ ( g ) m ( g + 1 ) − m ( g )
其中
p σ ( g ) ∈ R n \boldsymbol{p}_{\sigma}^{(g)} \in \mathbb{R}^{n} p σ ( g ) ∈ R n 为第g g g 的代的共轭进化路径;
c σ < 1 c_{\sigma}<1 c σ < 1 ,1 / c σ 1/c_{\sigma} 1/ c σ 为进化路径的backward time horizon;
c σ ( 2 − c σ ) μ e f f \sqrt{c_{\sigma}\left(2-c_{\sigma}\right) \mu_{\mathrm{eff}}} c σ ( 2 − c σ ) μ eff 为归一化常数,见(22);
C ( g ) − 1 2 = def B ( g ) D ( g ) − 1 B ( g ) T \boldsymbol{C}^{(g)^{-\frac{1}{2}}} \stackrel{\text { def }}{=} \boldsymbol{B}^{(g)} \boldsymbol{D}^{(g)^{-1}} \boldsymbol{B}^{(g)^{\mathrm{T}}} C ( g ) − 2 1 = def B ( g ) D ( g ) − 1 B ( g ) T ,其中C ( g ) = B ( g ) ( D ( g ) ) 2 B ( g ) T \boldsymbol{C}^{(g)}=\boldsymbol{B}^{(g)}\left(\boldsymbol{D}^{(g)}\right)^{2} \boldsymbol{B}^{(g)^{\mathrm{T}}} C ( g ) = B ( g ) ( D ( g ) ) 2 B ( g ) T 是C ( g ) \boldsymbol{C}^{(g)} C ( g ) 的特征分解,B ( g ) \boldsymbol{B}^{(g)} B ( g ) 是特征向量的标准正交基,且对角矩阵D ( g ) \boldsymbol{D}^{(g)} D ( g ) 的对角元素为对应正特征值的平方根。
对于C ( g ) = I \boldsymbol{C}^{(g)}=\mathbf{I} C ( g ) = I ,则有C ( g ) − 1 2 = I \boldsymbol{C}^{(g)^{-\frac{1}{2}}}=\mathbf{I} C ( g ) − 2 1 = I ,那么(28)就等价于(22)。转换C ( g ) − 1 2 \boldsymbol{C}^{(g)^{-\frac{1}{2}}} C ( g ) − 2 1 就是在由B ( g ) \boldsymbol{B}^{(g)} B ( g ) 给定的坐标系内对m ( g + 1 ) − m ( g ) \boldsymbol{m}^{(g+1)}-\boldsymbol{m}^{(g)} m ( g + 1 ) − m ( g ) 进行重新缩放。
因此转换C ( g ) − 1 2 \boldsymbol{C}^{(g)^{-\frac{1}{2}}} C ( g ) − 2 1 使得p σ ( g + 1 ) \boldsymbol{p}_{\sigma}^{(g+1)} p σ ( g + 1 ) 的期望长度与其方向无关,对于任何已实现的协方差矩阵序列C g = 0 , 1 , 2 , … ( g ) C_{g=0,1,2, \ldots}^{(g)} C g = 0 , 1 , 2 , … ( g ) ,给定p σ ( 0 ) ∼ N ( 0 , I ) \boldsymbol{p}_{\sigma}^{(0)} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) p σ ( 0 ) ∼ N ( 0 , I ) ,在随机选择下都有p σ ( g + 1 ) ∼ N ( 0 , I ) \boldsymbol{p}_{\sigma}^{(g+1)} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) p σ ( g + 1 ) ∼ N ( 0 , I ) 。
为了更新σ ( g ) \sigma^{(g)} σ ( g ) ,比较了∥ p σ ( g + 1 ) ∥ \left\|\boldsymbol{p}_{\sigma}^{(g+1)}\right\| ∥ ∥ p σ ( g + 1 ) ∥ ∥ 与其期望长度E ∥ N ( 0 , I ) \mathrm{E} \| \mathcal{N}(\mathbf{0}, \mathbf{I}) E ∥ N ( 0 , I ) ,即:
ln σ ( g + 1 ) = ln σ ( g ) + c σ d σ E ∥ N ( 0 , I ) ∥ ( ∥ p σ ( g + 1 ) ∥ − E ∥ N ( 0 , I ) ∥ ) \ln \sigma^{(g+1)}=\ln \sigma^{(g)}+\frac{c_{\sigma}}{d_{\sigma} \mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\|}\left(\left\|\boldsymbol{p}_{\sigma}^{(g+1)}\right\|-\mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\|\right) ln σ ( g + 1 ) = ln σ ( g ) + d σ E ∥ N ( 0 , I ) ∥ c σ ( ∥ ∥ p σ ( g + 1 ) ∥ ∥ − E ∥ N ( 0 , I ) ∥ )
其中
d σ ≈ 1 d_{\sigma} \approx 1 d σ ≈ 1 为阻尼参数,缩放ln σ ( g ) \ln \sigma^{(g)} ln σ ( g ) 的改变幅度;
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 Γ ( 2 n + 1 ) /Γ ( 2 n ) ≈ n + O ( 1/ n ) 表示服从N ( 0 , I ) \mathcal{N}(\mathbf{0}, \mathbf{I}) N ( 0 , I ) 分布的随机向量的欧几里得范数的期望。
由于σ ( g ) > 0 \sigma^{(g)}>0 σ ( g ) > 0 (29)等价于
σ ( g + 1 ) = σ ( g ) exp ( c σ d σ ( ∥ p σ ( g + 1 ) ∥ E ∥ N ( 0 , I ) ∥ − 1 ) ) \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) σ ( g + 1 ) = σ ( g ) exp ( d σ c σ ( E ∥ N ( 0 , I ) ∥ ∥ p σ ( g + 1 ) ∥ − 1 ) )
4 算法总结
别看卡面给出了那么多公式,但实际上算法优化过程只用到了**(5)(6)(22)(27)(28)(34)**。
各符号说明如下:
y k ∼ N ( 0 , C ) , \boldsymbol{y}_{k} \sim \mathcal{N}(\mathbf{0}, \boldsymbol{C}), y k ∼ N ( 0 , C ) , for k = 1 , … , λ k=1, \ldots, \lambda k = 1 , … , λ 为均值为0协方差矩阵为C \boldsymbol C C 的多元正太分布实现;
B , D B, D B , D 来自于协方差矩阵C \boldsymbol C C 的特征分解,即 C = B D 2 B T = B D D B T \boldsymbol{C}=\boldsymbol{B} \boldsymbol{D}^{2} \boldsymbol{B}^{T}=\boldsymbol{B D D B}^{\mathrm{T}} C = B D 2 B T = BDDB T 。B \boldsymbol{B} B 的列为特征向量的正交基,对角矩阵D \boldsymbol{D} D 的对角元素为对应正特征值的平方根。
x k ∈ R n , \boldsymbol{x}_{k} \in \mathbb{R}^{n}, x k ∈ R n , for k = 1 , … , λ k=1, \ldots, \lambda k = 1 , … , λ ,λ \lambda λ 个搜索点的样本;
⟨ y ⟩ w = ∑ i = 1 μ w i y i : λ \langle\boldsymbol{y}\rangle_{\mathrm{w}}=\sum_{i=1}^{\mu} w_{i} \boldsymbol{y}_{i: \lambda} ⟨ y ⟩ w = ∑ i = 1 μ w i y i : λ ,不考虑步长σ \sigma σ 时的分布均值步;
y i : λ = ( x i : λ − m ) / σ \boldsymbol{y}_{i: \lambda}=\left(\boldsymbol{x}_{i: \lambda}-\boldsymbol{m}\right) / \sigma y i : λ = ( x i : λ − m ) / σ ,如下;
x i : λ ∈ R n \boldsymbol{x}_{i: \lambda} \in \mathbb{R}^{n} x i : λ ∈ R n ,根据式(37)得到的x 1 , … , x λ \boldsymbol{x}_{1}, \ldots, \boldsymbol{x}_{\lambda} x 1 , … , x λ 中的i i i 个最优点;
μ e f f = ( ∑ i = 1 μ w i 2 ) − 1 \mu_{\mathrm{eff}}=\left(\sum_{i=1}^{\mu} w_{i}^{2}\right)^{-1} μ eff = ( ∑ i = 1 μ w i 2 ) − 1 方差有效选择质量,见式(8),其满足1 ≤ μ e f f ≤ μ 1 \leq \mu_{\mathrm{eff}} \leq \mu 1 ≤ μ eff ≤ μ ;
C − 1 2 = def B D − 1 B T C^{-\frac{1}{2}} \stackrel{\text { def }}{=} B D^{-1} B^{\mathrm{T}} C − 2 1 = def B D − 1 B T ;
E ∥ N ( 0 , I ) ∥ = 2 Γ ( n + 1 2 ) / Γ ( n 2 ) ≈ n ( 1 − 1 4 n + 1 21 n 2 ) \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}\left(1-\frac{1}{4 n}+\frac{1}{21 n^{2}}\right) E ∥ N ( 0 , I ) ∥ = 2 Γ ( 2 n + 1 ) /Γ ( 2 n ) ≈ n ( 1 − 4 n 1 + 21 n 2 1 )
h σ = { 1 if ∥ p σ ∥ 1 − ( 1 − c σ ) 2 ( g + 1 ) < ( 1.4 + 2 n + 1 ) E ∥ N ( 0 , I ) ∥ 0 otherwise h_{\sigma}=\left\{\begin{array}{ll}1 & \text { if } \frac{\left\|p_{\sigma}\right\|}{\sqrt{1-\left(1-c_{\sigma}\right)^{2(g+1)}}}<\left(1.4+\frac{2}{n+1}\right) \mathrm{E}\|\mathcal{N}(\mathbf{0}, \mathbf{I})\| \\ 0 & \text { otherwise }\end{array}\right. h σ = { 1 0 if 1 − ( 1 − c σ ) 2 ( g + 1 ) ∥ p σ ∥ < ( 1.4 + n + 1 2 ) E ∥ N ( 0 , I ) ∥ otherwise ,其中g g g 为代数。如果∥ p σ ∥ \left\|\boldsymbol{p}_{\sigma}\right\| ∥ p σ ∥ 很大,亥维赛函数h σ h_{\sigma} h σ 停滞对(42中)p c \boldsymbol{p}_{\mathrm{c}} p c 的更新,这可以防止在线性环境中即当步长太小时C轴的过快增长。当初始步长选择得过小或目标函数随时间变化时,这是有用的。
δ ( h σ ) = ( 1 − h σ ) c c ( 2 − c c ) ≤ 1 \delta\left(h_{\sigma}\right)=\left(1-h_{\sigma}\right) c_{\mathrm{c}}\left(2-c_{\mathrm{c}}\right) \leq 1 δ ( h σ ) = ( 1 − h σ ) c c ( 2 − c c ) ≤ 1 无关紧要。