Cbi=di2bi,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
d121⋮⋮⋮⋯d221⋮⋮⋯⋯⋱⋯⋯⋯⋮dn21
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(d11,⋯,dn1)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+C21N(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→21xTHx, 其中,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→21xTHx,设置
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=21xTATAx=21xTHx
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)+C21N(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∑μwixi:λ(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)+cmi=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)=λ−11i=1∑λ(xi(g+1)−λ1j=1∑λxj(g+1))(xi(g+1)−λ1j=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)=λ1i=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)=μ1i=1∑μ(xi:λ(g+1)−m(g+1))(xi:λ(g+1)−m(g+1))T
图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+11i=0∑gσ(i)21Cμ(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)21Cμ(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)21Cμ(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∑λ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
其中
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∑gyiyiT)
令上式协方差矩阵公式的和仅由一个被加数组成,将
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)+c1y(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年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事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∑gyiyiT)
令上式协方差矩阵公式的和仅由一个被加数组成,将
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)+c1y(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行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!