协方差矩阵自适应调整的进化策略(CMA-ES),大数据开发面试题大全

Cbi​=di2​bi​,C的正交分解为:

C=B

D

2

B

T

\text{C=B}{{\text{D}}{\text{2}}}{{\text{B}}{\text{T}}}

C=BD2BT,其中B是正交矩阵,满足

B

T

B

=

B

B

T

=

I

{{B}{T}}B=B{{B}{T}}=I

BTB=BBT=I,

B

B

B的列向量构成一个标准正交基的特征向量,

D

2

D^{2}

D2是对角矩阵,其主对角元素为矩阵C的特征值。

C

1

=

(

B

D

2

B

T

)

1

=

B

T

1

D

2

B

1

=

B

D

2

B

T

=

B

[

1

d

1

2

1

d

2

2

1

d

n

2

]

B

T

\left. {{\text{C}}^{-1}}={{\left( \text{B}{{\text{D}}{2}}{{\text{B}}{\text{T}}} \right)}{-1}}={{\text{B}}{\text{T}}}{-1}{{\text{D}}{-2}}{{\text{B}}{-1}}=\text{B}{{\text{D}}{-2}}{{\text{B}}^{\text{T}}}=\text{B}\left[ \begin{matrix} \frac{1}{d_{1}^{2}} & \cdots & \cdots & \cdots \\vdots & \frac{1}{d_{2}^{2}} & \cdots & \cdots \ \vdots & \vdots & \ddots & \vdots \\vdots & \vdots & \cdots & \frac{1}{d_{n}^{2}} \\end{matrix} \right. \right]{{\text{B}}^{\text{T}}}

C−1=(BD2BT)−1=BT−1D−2B−1=BD−2BT=B

​d12​1​⋮⋮⋮​⋯d22​1​⋮⋮​⋯⋯⋱⋯​⋯⋯⋮dn2​1​​

​BT

C

1

2

=

B

D

B

T

{{C}{\frac{1}{2}}}=BD{{B}{T}}

C21​=BDBT

C

1

2

=

B

D

1

B

T

=

B

diag

(

1

d

1

,

,

1

d

n

)

B

T

{{C}{-\frac{1}{2}}}=B{{D}{-1}}{{B}^{T}}=B\text{diag}(\frac{1}{{{d}_{1}}},\cdots ,\frac{1}{{{d}_{n}}}){{B}^{T}}

C−21​=BD−1BT=Bdiag(d1​1​,⋯,dn​1​)BT

其中

D

2

=DD=diag

(

d

1

,

,

d

n

)

2

=diag

(

d

1

2

,

,

d

n

2

)

{{\text{D}}^{\text{2}}}\text{=DD=diag}{{({{\text{d}}_{\text{1}}},\ldots \ldots ,{{\text{d}}_{\text{n}}})}{\text{2}}}\text{=diag}(\text{d}_{\text{1}}{\text{2}},\ldots \ldots ,\text{d}_{\text{n}}^{\text{2}})

D2=DD=diag(d1​,……,dn​)2=diag(d12​,……,dn2​),

d

i

d_{i}

di​是特征值的平方根,协方差矩阵是半正定的矩阵。

2.2 多元正态分布

多元正态分布N(m, C),其中m是均值,C是协方差。

对于一个二维向量x和一个正定实对称矩阵C,方程

x

T

C

x

=

D

x^{T}Cx = D

xTCx=D,其中D是常量,描述了一个中心在原点的椭圆。中心在原点的椭圆协方差矩阵的几何解释如下图:椭圆的主轴对应协方差的特征向量,主轴长度对应协方差的特征值的大小。

特征分解:

C=B

D

2

B

T

\text{C=B}{{\text{D}}{\text{2}}}{{\text{B}}{\text{T}}}

C=BD2BT

如果

D=

δ

I

\text{D=}\delta \text{I}

D=δI,此时如下图左所示为一个圆;如果B=I,

C

=

D

2

C = D^{2}

C=D2,此时如图中间所示,进行了一定程度的拉伸,椭圆的主轴与坐标轴垂直;右图进行了一定方向的旋转,更加接近于最优解的方向。
在这里插入图片描述

图2:椭圆体描绘了不同正态分布的等密度线

正态分布N(m,C)可以写成以下形式:

N

(

m

,

C

)

m

N

(

0

,

C

)

m

C

1

2

N

(

0

,

I

)

m

B

D

B

T

N

(

0

,

l

)

N

(

0

,

l

)

m

B

D

N

(

0

,

I

)

N

(

0

,

D

2

)

,

\begin{aligned} \mathcal{N}(\boldsymbol{m},\boldsymbol{C})& \thicksim m+\mathcal{N}(0,C) \ &\sim m+C^{\frac12}\mathcal{N}(0,\mathbf{I}) \ &\sim m+BD\underbrace{B^{\mathsf{T}}\mathcal{N}(\mathbf{0},\mathbf{l})}_{\sim\mathcal{N}(\mathbf{0},\mathbf{l})} \ &\sim m+B\underbrace{DN(0,\mathbf{I})}_{\sim\mathcal{N}(\mathbf{0},\mathbf{D}^2)}, \end{aligned}

N(m,C)​∼m+N(0,C)∼m+C21​N(0,I)∼m+BD∼N(0,l)

BTN(0,l)​​∼m+B∼N(0,D2)

DN(0,I)​​,​

2.3 黑箱随机优化

考虑一个黑箱搜索情景,想要最小化代价函数,目标是寻找一个或者多个候选解x,使函数f(x)尽可能的小。而黑箱搜索所能提供的信息只有函数f(x)。搜索点可以自由的选择,但是同时意味着大的搜索信息量。

f

:

R

n

R

x

f

(

x

)

\begin{matrix}f\colon\mathbb{R}^n\to\mathbb{R}\x\mapsto f(x)\end{matrix}

f:Rn→Rx↦f(x)​

一个随机优化的流程如下:

  • 初始化分布参数

θ

\theta

θ

  • 迭代次数g: 0,1,2,…
  • 从分布中采样

λ

\lambda

λ个独立的点

P

(

x

θ

(

g

)

)

x

1

,

,

x

λ

P\left( x|\theta^{(g)} \right) \rightarrow x_{1},{\ldots,x}_{\lambda}

P(x∣θ(g))→x1​,…,xλ​

  • 利用f(x)评估样本

x

1

,

,

x

λ

x_{1},{\ldots,x}_{\lambda}

x1​,…,xλ​

  • 更新参数

θ

(

g

1

)

=

F

θ

(

θ

(

g

)

,

(

x

1

,

f

(

x

1

)

)

,

,

(

x

λ

,

f

(

x

λ

)

)

)

{{\theta }^{(g+1)}}={{F}_{\theta }}({{\theta }^{(g)}},({{x}_{1}},f({{x}_{1}})),\ldots ,({{x}_{\lambda }},f({{x}_{\lambda }})))

θ(g+1)=Fθ​(θ(g),(x1​,f(x1​)),…,(xλ​,f(xλ​)))

  • 中断条件满足,结束

在CMA进化算法中,分布函数P是一个多元正态分布。在给定均值和协方差后,正态分布具有最大的熵。

2.4 Hessian矩阵和协方差矩阵

一个凸二次目标函数

f

H

:

x

1

2

x

T

H

x

{{f}_{H}}:x\to \frac{1}{2}{{x}^{\text{T}}}Hx

fH​:x→21​xTHx, 其中,H是Hessian矩阵为正定矩阵,简单理解为二阶偏导数组成的方阵,形式如下:

H

(

f

)

=

[

2

f

x

1

2

2

f

x

1

x

2

2

f

x

1

x

n

2

f

x

2

x

1

2

f

x

2

2

2

f

x

2

x

n

2

f

x

n

x

1

2

f

x

n

x

2

2

f

x

n

2

]

\mathrm{H(f)=}\begin{bmatrix}\frac{\partial^2f}{\partial x_12}&\frac{\partial2f}{\partial x_1\partial x_2}&\cdots&\frac{\partial^2f}{\partial x_1\partial x_n}\\frac{\partial^2f}{\partial x_2\partial x_1}&\frac{\partial^2f}{\partial x_22}&\cdots&\frac{\partial2f}{\partial x_2\partial x_n}\\vdots&\vdots&\ddots&\vdots\\frac{\partial^2f}{\partial x_n\partial x_1}&\frac{\partial^2f}{\partial x_n\partial x_2}&\cdots&\frac{\partial^2f}{\partial x_n^2}\end{bmatrix}

H(f)=

​∂x12​∂2f​∂x2​∂x1​∂2f​⋮∂xn​∂x1​∂2f​​∂x1​∂x2​∂2f​∂x22​∂2f​⋮∂xn​∂x2​∂2f​​⋯⋯⋱⋯​∂x1​∂xn​∂2f​∂x2​∂xn​∂2f​⋮∂xn2​∂2f​​

在我们搜索的分布函数正态分布N(m, C)中,C与H有相近的关系。前面推导中:

B

T

C

1

B

=

D

2

,

D

2

{{\text{B}}{\text{T}}}{{\text{C}}{-1}}\text{B}={{\text{D}}{2}},{{\text{D}}{2}}

BTC−1B=D2,D2是个对角阵,假如H=C=I,

f

H

{{f}_{H}}

fH​等同于优化函数

f

H

:

x

1

2

x

T

H

x

{{f}_{H}}:x\to \frac{1}{2}{{x}^{\text{T}}}Hx

fH​:x→21​xTHx,设置

C

1

=

H

C^{- 1} = H

C−1=H,在凸二次规划,设置搜索分布的协方差矩阵等于Hession矩阵的逆矩阵等同于把一个椭球函数缩放到一个球面上。因此认为协方差矩阵优化等同于Hessian矩阵逆矩阵的优化。进一步选择协方差矩阵对于搜索空间是等价的,因为对于所有满秩的n阶矩阵A,我们都能找到一个正定Hession矩阵。

1

2

(

Ax

)

T

Ax

=

1

2

x

T

A

T

Ax

=

1

2

x

T

Hx

\frac{1}{2}{{\left( \text{Ax} \right)}{\text{T}}}\text{Ax}=\frac{1}{2}{{\text{x}}{\text{T}}}{{\text{A}}{\text{T}}}\text{Ax}=\frac{1}{2}{{\text{x}}{\text{T}}}\text{Hx}

21​(Ax)TAx=21​xTATAx=21​xTHx

3. CMA-ES理论

相关符号说明:
在这里插入图片描述

3.1 采样

CMA-ES 算法的基本特点有:

  • 无梯度优化,不使用梯度信息。
  • 局部搜索中无梯度算法通常比梯度算法慢,通常需要 O(n) 倍的评估。
  • 在复杂优化问题如

n

o

n

s

e

p

a

r

a

b

l

e

,

i

l

l

c

o

n

d

i

t

i

o

n

e

d

,

o

r

r

u

g

g

e

d

/

m

u

l

t

i

m

o

d

a

l

non-separable, ill-conditioned, or rugged/multi-modal

non−separable,ill−conditioned,orrugged/multi−modal上表现良好。

CMA-ES作为一种随机搜索算法是通过运用高斯正态分布随机产生

λ

\lambda

λ个样本点作为优化过程中的初始种群。首先生成一组多元正态分布

N

(

m

(

g

)

,

C

(

g

)

)

N\left( {{m}{(g)}},{{C}{(g)}} \right)

N(m(g),C(g)),对其进行线性变化转成标准正态分布的一个变形:

N

(

m

(

g

)

,

C

(

g

)

)

m

(

g

)

N

(

0

,

C

(

g

)

)

m

(

g

)

C

1

2

N

(

0

,

I

)

m

(

g

)

B

D

B

T

N

(

0

,

I

)

m

(

g

)

B

D

N

(

0

,

I

)

\begin{aligned} N\big(m{(g)},C{(g)}\big)& \sim m{(g)}+N\Big(0,C{(g)}\Big) \ &\sim m{(g)}+C{\frac{1}{2}}N(0,I) \ &\sim m{(g)}+BDB{T}N(0,I) \ &\sim m^{(g)}+BDN(0,I) \end{aligned}

N(m(g),C(g))​∼m(g)+N(0,C(g))∼m(g)+C21​N(0,I)∼m(g)+BDBTN(0,I)∼m(g)+BDN(0,I)​

得到粒子采样的基本公式为:

x

k

(

g

1

)

m

(

g

)

σ

(

g

)

N

(

0

,

C

(

g

)

)

,

k

=

1

,

,

λ

x_{k}{(g+1)}\sim{{m}{(g)}}+{{\sigma }^{(g)}}N\left( 0,{{C}^{(g)}} \right),k=1,\ldots ,\lambda

xk(g+1)​∼m(g)+σ(g)N(0,C(g)),k=1,…,λ

进一步可以得到粒子采样的展开式为:

x

(

g

1

)

σ

(

g

)

B

D

N

(

0

,

I

)

,

k

=

1

,

,

λ

{{x}^{(g+1)}}+{{\sigma }^{(g)}}BDN(0,I),k=1,\ldots ,\lambda

x(g+1)+σ(g)BDN(0,I),k=1,…,λ
其中

x

k

(

g

1

)

R

n

x_{k}^{(g+1)}\in {{R}^{n}}

xk(g+1)​∈Rn是第g+1代的第k个子代(搜索点),

m

(

g

)

R

n

{{m}^{(g)}}\in {{R}^{n}}

m(g)∈Rn表示均值,是第g代搜索分布的中心位置 (也称为期望),

σ

(

g

)

R

{{\sigma }^{(g)}}\in R

σ(g)∈R是第g代的全局步长,

C

(

g

)

R

n

×

n

{{C}^{(g)}}\in {{R}^{n\times n}}

C(g)∈Rn×n表示第g代的协方差矩阵,

λ

\lambda

λ≥2是样本大小(种群大小)

从粒子采样的基本公式可以看出,CMA-ES 算法的种群突变主要是通过控制均值m,步长

σ

\sigma

σ以及协方差矩阵C实现的,因此,这三个参数是决定算法性能好坏的重要因素。

3.2 选择与重组:更新均值

均值m(g+1)通过采用数据

x

1

(

g+1

)

,

,

x

λ

(

g+1

)

\text{x}_{\text{1}}^{(\text{g+1})},\ldots \ldots ,\text{x}_{\lambda }^{(\text{g+1})}

x1(g+1)​,……,xλ(g+1)​的加权均值来更新。上面的公式中,从λ个后代中选取μ个权重最大的作为更新均值的样本数据。

m

(

g

1

)

=

i

=

1

μ

w

i

x

i

:

λ

(

g

1

)

\begin{matrix} {{m}^{(g+1)}} & = & \sum\limits_{i=1}^{\mu }{{{w}_{i}}}\mathbf{x}_{i:\lambda }^{(g+1)} \\end{matrix}

m(g+1)​=​i=1∑μ​wi​xi:λ(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μ​wi​=1,w1​≥w2​≥⋯≥wμ​>0

后代方差有效性选择的数量

μ

eff

\mu_{\text{eff}}

μeff​计算

(

1

μ

eff

μ

)

(1 \leq \mu_{\text{eff}} \leq \mu)

(1≤μeff​≤μ),通常

μ

eff

μ

/

4

{{\mu }_{\text{eff}}}\approx \mu /4

μeff​≈μ/4是一个合理的值。
均值

m

(

g

1

)

{{m}^{(g+1)}}

m(g+1)的更新公式为:

m

(

g+1

)

=

m

(

g

)

c

m

i=1

μ

ω

i

(

x

i

:

λ

(

g+1

)

m

(

g

)

)

{{\text{m}}{(\text{g+1})}}\text{=}{{\text{m}}{(\text{g})}}\text{+}{{\text{c}}_{\text{m}}}\sum\limits_{\text{i=1}}^{\mu }{{{\omega }_{\text{i}}}}\left( \text{x}_{\text{i}:\lambda }{(\text{g+1})}\text{-}{{\text{m}}{(\text{g})}} \right)

m(g+1)=m(g)+cm​i=1∑μ​ωi​(xi:λ(g+1)​-m(g))

3.3 协方差矩阵自适应

3.3.1 估计协方差矩阵

在整个算法的更新机制中协方差矩阵C的更新是至关重要的,接下来看一下协方差矩阵的更新。在最初估计协方差的时候,假设总体包含足够多的可以用于准确估计协方差矩阵的信息,为了方便,我们假定步长

σ

(

g

)

\sigma^{(g)}

σ(g)=1,可以根据粒子采样的基本公式估计原始协方差矩阵,得到经验协方差矩阵为:

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

C_{emp}^{(g+1)}=\frac{1}{\lambda -1}\sum\limits_{i=1}^{\lambda }{\left( x_{i}^{(g+1)}-\frac{1}{\lambda }\sum\limits_{j=1}^{\lambda }{x_{j}^{(g+1)}} \right)}{{\left( x_{i}^{(g+1)}-\frac{1}{\lambda }\sum\limits_{j=1}^{\lambda }{x_{j}^{(g+1)}} \right)}^{T}}

Cemp(g+1)​=λ−11​i=1∑λ​(xi(g+1)​−λ1​j=1∑λ​xj(g+1)​)(xi(g+1)​−λ1​j=1∑λ​xj(g+1)​)T

经验协方差矩阵

C

emp

(

g

1

)

C_{\text{emp}}^{(g + 1)}

Cemp(g+1)​是协方差矩阵

C

(

g

)

C^{(g)}

C(g)的无偏估计,其中经验协方差的无偏估计量为1/

λ

\lambda

λ-1,现考虑一种不同的方式获得

C

(

g

)

C^{(g)}

C(g)的估计量。

C

λ

(

g

1

)

=

1

λ

i

=

1

λ

(

x

i

(

g

1

)

m

(

g

)

)

(

x

i

(

g

1

)

m

(

g

)

)

T

C_{\lambda }^{(g+1)}=\frac{1}{\lambda }\sum\limits_{i=1}^{\lambda }{\left( x_{i}{(g+1)}-{{m}{(g)}} \right)}{{\left( x_{i}{(g+1)}-{{m}{(g)}} \right)}^{T}}

Cλ(g+1)​=λ1​i=1∑λ​(xi(g+1)​−m(g))(xi(g+1)​−m(g))T

协方差矩阵

C

λ

(

g

1

)

C_{\lambda}^{(g + 1)}

Cλ(g+1)​也是协方差矩阵

C

(

g

)

C^{(g)}

C(g)的无偏估计。上述两式的显著差异主要在于参考均值的不同,对于

C

emp

(

g

1

)

C_{\text{emp}}^{(g + 1)}

Cemp(g+1)​来说,它是使用采样点

x

i

(

g

1

)

{x_{i}}^{(g + 1)}

xi​(g+1)来进行估计,而对于

C

λ

(

g

1

)

C_{\lambda}^{(g + 1)}

Cλ(g+1)​来说,它使用的是采样分布的均值

m

(

g

)

m^{(g)}

m(g)进行估计的。

可以根据以上式子重新估计协方差矩阵,为了得到更好的协方差矩阵,可使用加权选择机制进行更新,得到如下:

C

μ

(

g

1

)

=

i

=

1

μ

w

i

(

x

i

,

λ

(

g

1

)

m

(

g

)

)

(

x

i

,

λ

(

g

1

)

m

(

g

)

)

T

\mathbf{C}_{\mu}{(g+1)}=\sum_{i=1}{\mu}w_{i}\left(x_{i,\lambda}{(g+1)}-m{(g)}\right)\biggl(x_{i,\lambda}{(g+1)}-m{(g)}\biggr)^{\mathsf{T}}

Cμ(g+1)​=∑i=1μ​wi​(xi,λ(g+1)​−m(g))(xi,λ(g+1)​−m(g))T

我们将更新后的协方差矩阵与多元正态算法EMNA估计进行比较,而EMNA中的协方差矩阵类似于如下:

C

EMN

A

g

l

o

b

a

l

(

g

1

)

=

1

μ

i

=

1

μ

(

x

i

:

λ

(

g

1

)

m

(

g

1

)

)

(

x

i

:

λ

(

g

1

)

m

(

g

1

)

)

T

\mathbf{C}_{\text{EMN}{{\text{A}}_{global}}}^{(g+1)}=\frac{1}{\mu }\sum\limits_{i=1}^{\mu }{\left( x_{i:\lambda }{(g+1)}-{{m}{(g+1)}} \right)}{{\left( x_{i:\lambda }{(g+1)}-{{m}{(g+1)}} \right)}^{T}}

CEMNAglobal​(g+1)​=μ1​i=1∑μ​(xi:λ(g+1)​−m(g+1))(xi:λ(g+1)​−m(g+1))T
图3:椭圆体描绘了不同正态分布的等密度线

图3:椭圆体描绘了不同正态分布的等密度线

以上是两种协方差矩阵更新的可视化图,等值线表示策略应向右上方移动。左侧:λ=150 N(0,I)分布点的样本。中间:µ=50个选候样本点,用于确定估算方程的条目。右侧:搜索下一代(实心椭球)的分布。

3.3.2 协方差矩阵的Rank-

μ

\mathbf{\mu}

μ更新

上面提出了一个最初的协方差矩阵估计, 但仍然不能得到一个特别好的协方差矩阵,为了得到更好的协方差矩阵,可以利用之前多代的信息进行补偿。例如,在足够多的代数之后, 估计协方差矩阵的均值为:

C

(

g

1

)

=

1

g

1

i

=

0

g

1

σ

(

i

)

2

C

μ

(

i

1

)

{{C}{(g+1)}}=\frac{1}{g+1}\sum\limits_{i=0}{g}{\frac{1}{{{\sigma }{{{(i)}{2}}}}}}C_{\mu }^{(i+1)}

C(g+1)=g+11​i=0∑g​σ(i)21​Cμ(i+1)​

此时是一个可靠的估计, 为了比较不同代的,合并不同的

σ

(

i

)

\sigma^{(i)}

σ(i)。在上式中所有生成步骤的权重相同,为了给近几代分配更高的权重,引入了指数平滑。令初始矩阵

C

(

0

)

=

I

C^{(0)} = I

C(0)=I则矩阵写为:

C

(

g

1

)

=

(

1

c

μ

)

C

(

g

)

c

μ

1

σ

(

g

)

2

C

μ

(

g

1

)

{{C}^{(g+1)}}=\quad (1-{{c}_{\mu }}){{\mathbf{C}}^{(g)}}+{{c}_{\mu }}\frac{1}{{{\sigma }{(g)}}{2}}\mathbf{C}_{\mu }^{(g+1)}

C(g+1)=(1−cμ​)C(g)+cμ​σ(g)21​Cμ(g+1)​

其中: 0≤

c

μ

c_{\mu}

cμ​≤1,是协方差矩阵C的学习率

(1)如果

c

μ

c_{\mu}

cμ​=1,则没有保留之前的信息,此时

C

(

g

1

)

=

1

σ

(

g

)

2

C

μ

(

g

1

)

{{C}^{(g+1)}}=\frac{1}{{{\sigma }{{{(g)}{2}}}}}C_{\mu }^{(g+1)}

C(g+1)=σ(g)21​Cμ(g+1)​

(2)如果

c

μ

c_{\mu}

cμ​=0,则没有发生学习,此时

C

(

g

1

)

=

C

(

0

)

{{C}{(g+1)}}={{C}{(0)}}

C(g+1)=C(0)

一般地,另

c

μ

min

(

1

,

μ

eff

/

n

2

)

{{c}_{\mu }}\approx \min (1,{{\mu }_{\text{eff}}}/{{n}^{2}})

cμ​≈min(1,μeff​/n2)是比较合理的,其中

y

i

:

λ

(

g

1

)

=

(

x

i

:

λ

(

g

1

)

m

(

g

)

)

/

σ

(

g

)

y_{i:\lambda }^{(g+1)}=(x_{i:\lambda }{(g+1)}-{{m}{(g)}})/{{\sigma }^{(g)}}

yi:λ(g+1)​=(xi:λ(g+1)​−m(g))/σ(g),

z

i

:

λ

(

g

1

)

=

C

(

g

)

1

/

2

y

i

:

λ

(

g

1

)

z_{i:\lambda }{(g+1)}={{C}{{{(g)}^{-1/2}}}}y_{i:\lambda }^{(g+1)}

zi:λ(g+1)​=C(g)−1/2yi:λ(g+1)​,由于上式中的外部乘积之和的秩为min(

μ

\mu

μ,n), 所以此时的更新方式称为协方差矩阵秩

μ

\mu

μ更新。

最后,我们将上式推广到

λ

\lambda

λ权重值,这些值既不需要和为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}C^{(g+1)}&=(1-c_\mu\sum w_i)\mathbf{C}{(g)}+c_\mu\sum_{i=1}\lambda w_i\mathbf{y}_{i.\lambda}{(g+1)}\mathbf{y}_{i.\lambda}{(g+1)\intercal}\\&=\mathbf{C}{(g)1/2}\bigg(\mathbf{I}+c_\mu\sum_{i=1}^\lambda w_i\left(\mathbf{z}_{i.\lambda}{(g+1)}\mathbf{z}_{i.\lambda}{(g+1)\intercal}-\mathbf{I}\right)\bigg)\mathbf{C}^{(g)1/2}\end{aligned}

C(g+1)​=(1−cμ​∑wi​)C(g)+cμ​i=1∑λ​wi​yi.λ(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​

其中

w

1

w

μ

0

w

μ

1

w

λ

{{w}_{1}}\ge \cdots \ge {{w}_{\mu }}>0\ge {{w}_{\mu +1}}\ge {{w}_{\lambda }}

w1​≥⋯≥wμ​>0≥wμ+1​≥wλ​,并且通常

i

=

1

μ

w

i

=

1

\sum\limits_{i=1}^{\mu }{{{w}_{i}}}=1

i=1∑μ​wi​=1,

i

=

1

λ

w

i

0

\sum\limits_{i=1}^{\lambda }{{{w}_{i}}}\approx 0

i=1∑λ​wi​≈0

3.3.3 协方差矩阵的Rank-one更新

之前使用所有选定的搜索步生成协方差矩阵, 现在使用一个选定的搜索步在生成序 列中重复更新协方差矩阵。首先, 给出一组向量

y

1

,

,

y

g

R

n

,

y

g

n

{{y}_{1}},\cdots ,{{y}_{g}}\in {{R}^{n}},{{y}_{g}}\ge n

y1​,⋯,yg​∈Rn,yg​≥n令N(0,I)表示独立的正态分布随机数,则

N

(

0

,

1

)

y

1

N

(

0

,

1

)

y

g

N

(

0

,

i

=

1

g

y

i

y

i

T

)

\mathcal{N}(0,1){{y}_{1}}+\cdots +\mathcal{N}(0,1){{y}_{g}}\sim\mathcal{N}\left( 0,\sum\limits_{i=1}{{{g}_{{}}}}{{{y}_{i}}}y_{i}{T} \right)

N(0,1)y1​+⋯+N(0,1)yg​∼N(0,i=1∑g​​yi​yiT​)

令上式协方差矩阵公式的和仅由一个被加数组成,将

y

i

:

λ

(

g

1

)

=

(

x

i

:

λ

(

g

1

)

m

(

g

)

)

/

σ

(

g

)

y_{i:\lambda }^{(g+1)}=(x_{i:\lambda }{(g+1)}-{{m}{(g)}})/{{\sigma }^{(g)}}

yi:λ(g+1)​=(xi:λ(g+1)​−m(g))/σ(g)代入得到:

C

(

g

1

)

=

(

1

c

1

)

C

(

g

)

c

1

y

(

g

1

)

y

(

g

1

)

T

{{\mathbf{C}}{(g+1)}}=(1-{{c}_{1}}){{\mathbf{C}}{(g)}}+{{c}_{1}}y_{{}}{(g+1)}y_{{}}{(g+1)T}

C(g+1)=(1−c1​)C(g)+c1​y(g+1)​y(g+1)T​

式子右边的加数和的秩为1 ,并把最大似然添加到协方差矩阵

C

(

g

)

C^{(g)}

C(g)中, 因此在下一代产生

y

(

g

1

)

y^{(g + 1)}

y(g+1)的概率变大了。使用选定的步骤

y

i

:

λ

(

g

1

)

=

(

x

i

:

λ

(

g

1

)

m

(

g

)

)

/

σ

(

g

)

y_{i:\lambda }^{(g+1)}=(x_{i:\lambda }{(g+1)}-{{m}{(g)}})/{{\sigma }^{(g)}}

yi:λ(g+1)​=(xi:λ(g+1)​−m(g))/σ(g)去更新协方差矩阵,因为

y

y

T

=

y

(

y

)

T

y{{y}{T}}=-y{{(-y)}{T}}

yyT=−y(−y)T,所以相关步的符号与协方差矩阵的更新无关, 也就是说,在计算协方差矩阵时会丢失符号信息。为了引入符号信息,构建了演化路径。演化路径是一系列连续代的变异步长之和,这个和叫做累积,利用演化路径可有效的去除随机化。要构建演化路径,可以忽略步长。例如,可以通过求和来构建三个搜索步的演化路径

m

(

g

1

)

m

(

g

)

σ

(

g

)

m

(

g

)

m

(

g

1

)

σ

(

g

1

)

m

(

g

1

)

m

(

g

2

)

σ

(

g

2

)

\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)}}}

σ(g)m(g+1)−m(g)​+σ(g−1)m(g)−m(g−1)​+σ(g−2)m(g−1)−m(g−2)​

在实践中,为了构造演化路径

p

c

R

n

{{p}_{\text{c}}}\in {{\mathbb{R}}^{n}}

pc​∈Rn,我们使用指数平滑,并且从

p

c

(

0

)

=

0

p_{\text{c}}^{(0)}=0

pc(0)​=0开始,则有如下:

p

c

(

g

1

)

=

(

1

c

c

)

p

c

(

g

)

c

c

(

2

c

c

)

μ

eff

m

(

g

1

)

m

(

g

)

c

m

σ

(

g

)

p_{\text{c}}{(g+1)}=(1-{{c}_{\text{c}}})p_{\text{c}}{(g)}+\sqrt{{{c}_{\text{c}}}(2-{{c}_{\text{c}}}){{\mu }_{\text{eff}}}}\frac{{{m}{(g+1)}}-{{m}{(g)}}}{{{c}_{\text{m}}}{{\sigma }^{(g)}}}

pc(g+1)​=(1−cc​)pc(g)​+cc​(2−cc​)μeff​

​cm​σ(g)m(g+1)−m(g)​

它描述了分布均值的移动,并且将每次迭代中移动方向

m

(

g

1

)

m

(

g

)

σ

(

g

)

\frac{{{m}{(g+1)}}-{{m}{(g)}}}{{{\sigma }^{(g)}}}

σ(g)m(g+1)−m(g)​做加权平均,使得这些方向中相反的方向分量相互抵消,相同的分量则进行叠加。

这类似于神经网络优化中常用的 Momentum。在神经网络中 momentum 起什么作用呢?因此,进化路径代表了最好的搜索方向之一。

c

c

=

1

c_{c} = 1

cc​=1和

μ

eff

=

1

\mu_{\text{eff}} = 1

μeff​=1时,上式变为:

p

c

(

g

1

)

=

x

i

:

λ

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

dots \ge {{w}_{\mu }}>0\ge {{w}_{\mu +1}}\ge {{w}_{\lambda }}

w1​≥⋯≥wμ​>0≥wμ+1​≥wλ​,并且通常

i

=

1

μ

w

i

=

1

\sum\limits_{i=1}^{\mu }{{{w}_{i}}}=1

i=1∑μ​wi​=1,

i

=

1

λ

w

i

0

\sum\limits_{i=1}^{\lambda }{{{w}_{i}}}\approx 0

i=1∑λ​wi​≈0

3.3.3 协方差矩阵的Rank-one更新

之前使用所有选定的搜索步生成协方差矩阵, 现在使用一个选定的搜索步在生成序 列中重复更新协方差矩阵。首先, 给出一组向量

y

1

,

,

y

g

R

n

,

y

g

n

{{y}_{1}},\cdots ,{{y}_{g}}\in {{R}^{n}},{{y}_{g}}\ge n

y1​,⋯,yg​∈Rn,yg​≥n令N(0,I)表示独立的正态分布随机数,则

N

(

0

,

1

)

y

1

N

(

0

,

1

)

y

g

N

(

0

,

i

=

1

g

y

i

y

i

T

)

\mathcal{N}(0,1){{y}_{1}}+\cdots +\mathcal{N}(0,1){{y}_{g}}\sim\mathcal{N}\left( 0,\sum\limits_{i=1}{{{g}_{{}}}}{{{y}_{i}}}y_{i}{T} \right)

N(0,1)y1​+⋯+N(0,1)yg​∼N(0,i=1∑g​​yi​yiT​)

令上式协方差矩阵公式的和仅由一个被加数组成,将

y

i

:

λ

(

g

1

)

=

(

x

i

:

λ

(

g

1

)

m

(

g

)

)

/

σ

(

g

)

y_{i:\lambda }^{(g+1)}=(x_{i:\lambda }{(g+1)}-{{m}{(g)}})/{{\sigma }^{(g)}}

yi:λ(g+1)​=(xi:λ(g+1)​−m(g))/σ(g)代入得到:

C

(

g

1

)

=

(

1

c

1

)

C

(

g

)

c

1

y

(

g

1

)

y

(

g

1

)

T

{{\mathbf{C}}{(g+1)}}=(1-{{c}_{1}}){{\mathbf{C}}{(g)}}+{{c}_{1}}y_{{}}{(g+1)}y_{{}}{(g+1)T}

C(g+1)=(1−c1​)C(g)+c1​y(g+1)​y(g+1)T​

式子右边的加数和的秩为1 ,并把最大似然添加到协方差矩阵

C

(

g

)

C^{(g)}

C(g)中, 因此在下一代产生

y

(

g

1

)

y^{(g + 1)}

y(g+1)的概率变大了。使用选定的步骤

y

i

:

λ

(

g

1

)

=

(

x

i

:

λ

(

g

1

)

m

(

g

)

)

/

σ

(

g

)

y_{i:\lambda }^{(g+1)}=(x_{i:\lambda }{(g+1)}-{{m}{(g)}})/{{\sigma }^{(g)}}

yi:λ(g+1)​=(xi:λ(g+1)​−m(g))/σ(g)去更新协方差矩阵,因为

y

y

T

=

y

(

y

)

T

y{{y}{T}}=-y{{(-y)}{T}}

yyT=−y(−y)T,所以相关步的符号与协方差矩阵的更新无关, 也就是说,在计算协方差矩阵时会丢失符号信息。为了引入符号信息,构建了演化路径。演化路径是一系列连续代的变异步长之和,这个和叫做累积,利用演化路径可有效的去除随机化。要构建演化路径,可以忽略步长。例如,可以通过求和来构建三个搜索步的演化路径

m

(

g

1

)

m

(

g

)

σ

(

g

)

m

(

g

)

m

(

g

1

)

σ

(

g

1

)

m

(

g

1

)

m

(

g

2

)

σ

(

g

2

)

\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)}}}

σ(g)m(g+1)−m(g)​+σ(g−1)m(g)−m(g−1)​+σ(g−2)m(g−1)−m(g−2)​

在实践中,为了构造演化路径

p

c

R

n

{{p}_{\text{c}}}\in {{\mathbb{R}}^{n}}

pc​∈Rn,我们使用指数平滑,并且从

p

c

(

0

)

=

0

p_{\text{c}}^{(0)}=0

pc(0)​=0开始,则有如下:

p

c

(

g

1

)

=

(

1

c

c

)

p

c

(

g

)

c

c

(

2

c

c

)

μ

eff

m

(

g

1

)

m

(

g

)

c

m

σ

(

g

)

p_{\text{c}}{(g+1)}=(1-{{c}_{\text{c}}})p_{\text{c}}{(g)}+\sqrt{{{c}_{\text{c}}}(2-{{c}_{\text{c}}}){{\mu }_{\text{eff}}}}\frac{{{m}{(g+1)}}-{{m}{(g)}}}{{{c}_{\text{m}}}{{\sigma }^{(g)}}}

pc(g+1)​=(1−cc​)pc(g)​+cc​(2−cc​)μeff​

​cm​σ(g)m(g+1)−m(g)​

它描述了分布均值的移动,并且将每次迭代中移动方向

m

(

g

1

)

m

(

g

)

σ

(

g

)

\frac{{{m}{(g+1)}}-{{m}{(g)}}}{{{\sigma }^{(g)}}}

σ(g)m(g+1)−m(g)​做加权平均,使得这些方向中相反的方向分量相互抵消,相同的分量则进行叠加。

这类似于神经网络优化中常用的 Momentum。在神经网络中 momentum 起什么作用呢?因此,进化路径代表了最好的搜索方向之一。

c

c

=

1

c_{c} = 1

cc​=1和

μ

eff

=

1

\mu_{\text{eff}} = 1

μeff​=1时,上式变为:

p

c

(

g

1

)

=

x

i

:

λ

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-mmyFt82R-1713015737096)]
[外链图片转存中…(img-23HZ6MdK-1713015737097)]
[外链图片转存中…(img-kKEx8n8p-1713015737097)]
[外链图片转存中…(img-grDTwHcO-1713015737097)]
[外链图片转存中…(img-cEBlNsYa-1713015737097)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-WKllX40G-1713015737098)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值