前言
如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
在机器学习中,我们所要优化的问题很多时候难以求导,因此通常会采用一些演化算法(又称零阶优化 / 黑盒优化)来近似求解。
这些演化算法通常是根据一些生物的行为置顶,有如下分类:
本文所要介绍的乌鸦搜索算法 (CSA) 就是其中的一种,属于演化算法。
乌鸦搜索算法
乌鸦搜索算法受乌鸦的行为所启发,即在乌鸦种群中,每只乌鸦都在干三件事:
- 寻找藏食物的地点;
- 想要发现其它乌鸦藏食物的地点;
- 不想被其它乌鸦发现自己藏食物的地点。
每只乌鸦
i
i
i 在每一轮会选择一只乌鸦
j
j
j 进行跟踪,此时有两种情况:
- 乌鸦
j
j
j 未发现乌鸦
i
i
i,则乌鸦
i
i
i 向乌鸦
j
j
j 藏食物的地点前进;
- 乌鸦
j
j
j 发现了乌鸦
i
i
i,决定进行误导,即乌鸦
i
i
i 的位置变成随机位置。
为进一步说明上述过程,定义如下符号:
- 向量
x
i
t
x_i^{t}
xit 表示第
i
i
i 只乌鸦第
t
t
t 轮的位置;
-
m
e
m
i
t
mem_i^t
memit 表示第
i
i
i 只乌鸦第
t
t
t 轮的历史最优解;
-
A
P
i
t
AP_i^t
APit 表示第
i
i
i 只乌鸦第
t
t
t 轮的警觉概率;
-
f
l
i
t
fl_i^t
flit 表示第
i
i
i 只乌鸦第
t
t
t 轮的跟随步长;
-
r
i
r_i
ri 表示第
i
i
i 只乌鸦的随机概率,范围在
(
0
,
1
)
(0,1)
(0,1) 之间。
将
x
i
t
x_i^{t}
xit 理解为第
t
t
t 轮搜索到的位置,
m
e
m
i
t
mem_i^t
memit 即为到第
t
t
t 轮时的历史最优解。具体迭代过程如下:
- 一共有
t
M
A
X
t_{MAX}
tMAX 轮迭代,
N
N
N 只乌鸦;
- 每一轮迭代,遍历每一只乌鸦;
- 当遍历到第
i
i
i 只乌鸦时,随机选择第
j
j
j 只乌鸦进行跟踪;
- 如果
r
j
≥
A
P
j
t
r_j\geq AP_j^t
rj≥APjt,即乌鸦
j
j
j 未发现,则乌鸦
i
i
i 进行如下更新:
x
i
t
+
1
=
x
i
t
+
r
i
⋅
f
l
i
t
⋅
(
m
e
m
j
t
−
x
i
t
)
,
x_i^{t+1}=x_i^t+r_i\cdot fl_i^t \cdot (mem_j^t-x_i^t),
xit+1=xit+ri⋅flit⋅(memjt−xit), - 如果
r
j
<
A
P
j
t
r_j<AP_j^t
rj<APjt,则
x
i
t
+
1
x_i^{t+1}
xit+1 变为随机值;
- 每一轮迭代结束后,遍历每一只乌鸦,若
f
(
x
i
t
+
1
)
>
f
(
m
e
m
i
t
)
f(x_i^{t+1})>f(mem_i^t)
f(xit+1)>f(memit),则更新
m
e
m
i
t
+
1
=
x
i
t
+
1
mem_i^{t+1}=x_i^{t+1}
memit+1=xit+1,否则不更新,即
m
e
m
i
t
+
1
=
m
e
m
i
t
mem_i^{t+1}=mem_i^{t}
memit+1=memit。
完整算法如下:
参考资料
- Learn Crow Search Algorithm Step-by-Step with Example
- [ESWA22 - Behrouz Samieiyan] Novel optimized crow search algorithm for feature selection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)