随机行走与最优化
通过分析元启发式算法的主要特点,我们知道随机化在探索和开发,或者多样化和集中化中都起着重要的作用。在大多数情况下,随机化是通过从均匀分布或高斯正态分布得到的简单随机数来实现的。在其他情况下,会使用更复杂的随机化技术,如:随机行走和 Lévy 飞行。本章简要回顾了随机行走的基本思想和理论、Lévy 飞行和马尔可夫链。我们还讨论初始化、步长、算法效率和鹰策略。这有助于我们了解自然启发式算法的工作机制。
随机变量
随机化通常是通过使用伪随机数来实现的。随机变量的概率密度分布通常有均匀分布、高斯分布、指数分布和 Lévy 分布。
随机变量可以被看作一个表达式,其值是与随机过程(街道上的噪声水平)相关联的事件的结果,随机变量的值是实值,但是对于一些变量,例如道路上的汽车数量,它们只能取离散值。这种随机变量被称为离散随机变量。如果一个随机变量可以在一个区间内取任何实值(如某个特定位置的噪声),则称为连续随机变量。如果一个随机变量可以同时具有连续值和离散值,则称为混合类型随机变量。在数学上,随机变量是将事件映射到实数的函数。此映射的被域称为样本空间。
对于每个随机变量,可以使用概率密度函数来表示其概率分布。例如,每分钟电话呼叫次数和每天的 Web 服务器访问人数都服从泊松分布
$$ p(n;\lambda) = \frac{\lambda^ne^{-\lambda}}{n!},\quad (n=0,1, 2,…), \tag 1 $$
其中 λ > 0 是一个参数,是单位时间内发生事件的均值或期望。
各种随机变量具有不同的分布。高斯分布或正态分布是迄今为止最流行的,因为许多物理变量(如光强、测量中的误差/不确定性等)服从正态分布:
$$p(x;\mu, \sigma^2) = \frac{1}{\sigma \sqrt{2 \pi}} exp \bigl[ - \frac{(x - \mu)^2}{2\sigma^2} \bigr], \quad -\infty \lt x \lt \infty, \tag 2$$
其中 μ 是均值,σ > 0 是标准差。这个正态分布通常用 $N(\mu, \sigma^2)$
表示。在 μ= 0 且 σ= 1 的情况下,称为标准正态分布,用 N(0, 1) 表示。
在元启发的背景下,另一个重要的分布是所谓的 Lévy 分布,它是 N 个独立同分布的随机变量之和,其傅里叶变换遵循下式:
$$F_N(k) = exp[-N\lvert k \rvert ^2]. \tag 3$$
通过逆变换获取实际分布 L(s) 并不是直截了当的,因为积分
$$L(s) = \frac1\pi \int_0^{\infty} cos(\tau s) e^{-\alpha \tau^{\beta}} d\tau, \quad (0 \lt \beta \le 2), \tag 4$$
除了一些特殊情况外,没有分析形式。这里 L(s) 被称为指数为 β 的 Lévy 分布。对于大多数应用,我们可以简单地设置 α = 1。β = 1和 β = 2 是两个特例。当 β = 1时,前面的积分变成了柯西分布。当 β = 2 时,变成正态分布。在这种情况下,Lévy 飞行变成标准布朗运动。
从理论上讲,我们可以将积分 (4) 表示为渐近级数,并且其飞行长度的领头项近似为指数分布
$$L(s) \sim \lvert s \rvert ^{-1-\beta}, \tag 5$$
是重尾的。当 0 < β < 2 时,这种指数分布的方差是无限的。对于 0 < β < 2,其矩是离散的(或者是无限的),这是数学分析的绊脚石。
各向同性随机游走
随机游走(random walk)是一个随机过程,其包括采取一系列连续随机步长(random step)。在数学上,$S_N$
表示连续随机步长 $X_i$
的总和,那么 $S_N$
形成随机游走
$$S_N = \sum_{i=1}^N X_i = X_1 + … + X_N, \tag 6$$
其中 $X_i$
是服从随机分布的随机步长。这个关系也可以写成一个递归公式:
$$S_N = \sum_{i=1}^{N-1} X_i + X_N = S_{N-1} + X_N, \tag 7$$
这意味着下一状态 $S_N$
将仅取决于当前存在的状态 $S_{N-1}$
以及从当前状态到下一状态的运动或转移 $X_N$
。这通常是后面介绍的马尔可夫链的主要属性。
随机游走中的步长或长度可以是固定的也可以是变化的。随机游走在物理学、经济学、统计学、计算机科学、环境科学和工程学等方面有很多应用。
考虑一个场景:一个醉汉走在街上,每走一步都可以随意前进或后退。这形成了一维的随机游走。如果这个醉汉在足球场上行走,他可以随意向任何方向行走,这就变成了二维随机游走。从数学角度讲,随机游走由下式给出:
$$S_{t+1} = S_t + w_t, \tag 8$$
其中 $S_t$
是 t 时的位置或状态,$w_t$
是具有已知分布的步长或随机变量。
如果步长或跳跃是在 d 维空间进行,那么之前讨论的随机游走,
$$S_N = \sum_{i=1}^N X_i, \tag 9$$
就变成了高维随机游走。另外,没有理由要固定步长。事实上,步长也可以根据已知分布而变化。如果步长服从高斯分布,那么随机步长就是布朗运动(见下图)。
理论上,随着步数 N 的增加,中心极限定理表明着随机游走 (9) 应接近高斯分布。由于上图所示的粒子位置的均值明显为零,它们的方差将随着 N 线性地增加。
在最简单的假设下,我们知道高斯分布是稳定的。从初始位置 $x_0$
开始的粒子,它在 N 个时间步长后的最终位置 $x_N$
是
$$x_N = x_0 + \sum_{i=1}^N \alpha_i s_i, \tag {10}$$
其中 $\alpha_i \gt 0$
是控制步长或尺度参数。如果 $s_i$
服从正态分布 $N(\mu_i, \sigma_i^2)$
,则稳定分布的条件将导致产生组合高斯分布
$$x_N \sim N(\mu_* , \sigma_* ^2), \tag {11}$$
其中
$$\mu_* = \sum_{i=1}^N \alpha_i \mu_i, \quad \sigma_* ^2 = \sum_{i-1}^N \alpha_i \bigl [ \sigma_i^2 + (\mu_* - \mu_i)^2 \bigr]. \tag {12}$$
我们可以看到,平均位置随着 N 的变化而变化,随着 N 的增加,方差也增加,如果 N 足够大,这就有可能到达搜索空间中的任何区域。
当 $\mu_1 = \mu_2 = ... = \mu_N =0$
(零均值),$\sigma_1 = \sigma_2 = ... = \sigma_N = \sigma$
且 $\alpha_1 = ... = \alpha_N = \alpha$
时,上述等式变为
$$\mu_* = 0, \quad \sigma_* ^2 = \alpha N \sigma^2. \tag {13}$$
扩散过程(diffusion process)可以看作是一系列的布朗运动,而布朗运动遵循高斯分布。为此,标准扩散(standard diffusion)通常被称为高斯扩散(Gaussian diffusion)。由于 $\mu_i = 0$
时粒子位置的均值明显为零,它们的方差随时间 t = N 或步数的增加而线性增加。一般来说,在 d 维空间中,布朗随机游走的方差可以写成
$$\sigma^2(t) = \rvert v_0 \lvert ^2 t^2 + (2dD)t, \tag {14}$$
其中 $v_0$
是系统的漂移速度(drift velocity)。这里 $D = s^2/(2 \tau)$
是有效的扩散系数,其与跳跃期间的短时间间隔 $\tau$
内的步长 s 有关。如果每一步的运动不是高斯的话,那么这个扩散称为非高斯扩散。如果步长服从其他分布,我们必须处理更广义的随机游走。一个非常特殊的情况是当步长服从 Lévy 分布时的随机游走被称为 Lévy 飞行(Lévy flight)或 Lévy 游走( Lévy walk)。
Lévy 分布和 Lévy 飞行
广义地说,Lévy 飞行是一种随机行走,其步长服从 Lévy 分布,通常以简单的幂律公式 $L(s) \sim |s|^{-1-\beta}$
表示,其中$0 \lt \beta \le 2$
是指数。从数学上讲,Lévy 分布的简单形式可以定义为
$$
L(s,\gamma, \mu) =
\begin{cases}
\sqrt{\frac{\gamma}{2\pi}} exp \bigl [ - \frac{\gamma}{2(s-\mu)} \bigr] \frac{1}{(s-\mu)^{3/2}}, & 0 \le \mu \lt s \lt \infty \
0 & \text{otherwise},
\end{cases}
\tag {15}
$$
其中 $\mu \gt 0$
是最小步长,$\gamma$
是缩放参数。显然,当 $s \to \infty$
时,我们有
$$L(s, \gamma, \mu) \approx \sqrt{\frac{\gamma}{2\pi}} \frac{1}{s^{3/2}}. \tag {16}$$
这是广义 Lévy 分布的一个特例。
一般情况下,Lévy 分布应该用傅立叶变换定义
$$F(k) = exp(-\alpha \rvert k \lvert^{\beta}), \quad 0 \lt \beta \le 2, \tag {17}$$
其中 $\alpha$
是缩放参数。这个积分的逆变换并不容易,因为除了少数特殊情况外,它没有解析形式。
对于 $\beta = 2$
的情况,我们有
$$F(k) = exp[-\alpha k^2], \tag {18}$$
其傅立叶逆变换对应于高斯分布。另一个特例是 $\beta = 1$
,我们有
$$F(k) = exp[-\alpha \rvert k \lvert], \tag {19}$$
对应于柯西分布
$$p(x, \gamma, \mu) = \frac 1\pi \frac{\gamma}{\gamma^2 + (x - \mu)^2}, \tag {20}$$
其中,$\mu$
是位置参数,而 $\gamma$
是控制该分布的尺度。
对于一般情况,积分逆变换
$$L(s) = \frac 1\pi \int_0^{\infty} cos(ks) exp[-\alpha \rvert k \lvert ^ {\beta}] dk \tag {21}$$
只能在 s 很大时进行估计。我们有
$$L(s) \to \frac{\alpha \beta \Gamma(\beta) sin(\pi \beta / 2)}{\pi \rvert s \lvert^{1 + \beta}}, \quad s \to \infty. \tag {22}$$
这里 $\Gamma(z)$
是 Gamma 函数
$$\Gamma(z) = \int_0^{\infty} t^{z - 1} e^{-t} dt. \tag {23}$$
在 z = n 是整数的情况下,我们有 $\Gamma(n) = (n-1)!$
。
Lévy 飞行能够比布朗随机游走更有效地探索未知的大型搜索空间。有很多可以解释这种效率的原因,其中一种是由于 Lévy 飞行的方差
$$\sigma^2(t) \sim t^{3 - \beta}, \quad 1 \le \beta \le 2, \tag {24}$$
比布朗运动的线性关系(即,$\sigma^2(t) \sim t$
)增加地更快 [7]。
下图显示了从 (0, 0) 开始,$\beta = 1$
的 50 步 Lévy 飞行的路径。值得指出的是,幂律分布(power-law)是常常与一些无标度特征相联系,因此 Lévy 飞行可以在飞行模式中表现出自相似性和分形行为。
从实现的角度来看,用 Lévy 飞行生成随机数包括两个步骤:随机方向的选择和服从所选择的 Lévy 分布的步长的生成。方向的生成应该服从统一的分布,而步长的生成则相当复杂。有很多方法可以达到这个目的,其中最有效也最直接的方法是使用所谓的 Mantegna 算法来实现对称 Lévy 稳定分布。这里的对称(symmetric)意味着这些步长可以是正的,也可以是负的。
如果随机变量 $U$
的两个相同副本(或 $U_1$
和 $U_2$
)的线性组合服从相同的分布,则随机变量 $U$ 及其概率分布可以被称为稳定的。也就是说,$aU_1 + bU_2$
与 $cU + d$
具有相同的分布,其中 $a, b \gt 0$
且 $c, d \in \Re$
。如果 d = 0,则称为严格稳定。高斯分布、柯西分布和莱维(Lévy)分布都是稳定分布。
在 Mantegna 算法中,步长 s 可以由下式计算
$$s = \frac{u}{\lvert v \rvert ^{1 / \beta}}, \tag {25}$$
其中 u 和 v 服从正态分布。也即
$$u \sim N(0, \sigma_u^2), \quad v \sim N(0, \sigma_v^2), \tag {26}$$
其中
$$\sigma_u = \Bigl { \frac{\Gamma(1 + \beta) sin(\pi \beta / 2)}{\Gamma \bigl[ (1+\beta) / 2\bigl] \beta 2^{(\beta -1 )/ 2}} \Bigr } ^{1 / \beta}, \quad \sigma_v = 1. \tag {27}$$
此分布(对于 s)服从预期 Lévy 分布 $\lvert s \rvert \ge \lvert s_0 \rvert$
,其中 $s_0$
是最小步长。原则上,$\lvert s_0 \rvert \gg 0$
,但实际上 $s_0$
可以是任何合理值,如 $s_0 = 0.1 \text{ to } 1$
。
研究表明,在不确定的环境下,Lévy 飞行可以最大限度地提高资源搜索的效率。事实上,在信天翁、果蝇和蜘蛛猴的觅食模式中观察到了 Lévy 飞行。甚至像 Ju/’hoansi 狩猎采集者这样的人类也能追踪到 Lévy 飞行模式的轨迹。另外,Lévy 航班还有很多应用。许多物理现象,例如荧光分子的扩散、冷却行为和噪声,都可以在正确的条件下显示 Lévy 飞行特性 [1, 11-15, 17]。
作为马尔可夫链的优化
我们前面讨论的简单随机行走可以被认为是马尔可夫链。
马尔科夫链
简而言之,随机 $\zeta$
变量是马尔可夫过程,如果从时间 t 的状态 $\zeta_t = S_i$
到另一个状态 $\zeta_{t+1} = S_j$
的转移概率仅取决于当前状态 $\zeta_i$
。即
$$
\begin{align}
P(i,j) & \equiv P(\zeta_{t+1} = S_j|\zeta_0 = S_p, …, \zeta_t = S_i) \
& = P(\zeta_{t+1} = S_j | \zeta_t = S_i),
\end{align}
\tag {28}
$$
独立于 t 之前的状态。此外,由马尔可夫过程产生的随机变量序列 $(\zeta_0, \zeta_1, ..., \zeta_n)$
随后称为马尔可夫链(Markov chain)。转移概率 $P(i,j) \equiv P(i \to j) = P_{ij}$
也称为马尔可夫链转移核(transition kernel)。
如果我们用 $w_t$
(取决于转移概率 P)控制的随机移动重写随机游走关系 (7),我们有
$$S_{t+1} = S_t + w_t, \quad w_t \sim P, \tag {29}$$
确实具有马尔可夫链的性质。这里 $w_t \sim P$
表示随机变量 $w_t$
服从概率分布 P。因此,随机游走是一个马尔可夫链。事实上,模拟退火是众所周知的马尔可夫链算法之一 [9]。
我们用 $\pi_i(t)$
来表示链在时间 t 状态为 i(或更准确地说,$S_i$
)的概率。这意味着 $\pi(t) = (\pi_1, ..., \pi_m)^T$
是状态空间的向量。在 t = 0,$\pi(0)$
是初始向量。
从状态 i 到状态 j 的 k 步转移概率 $P_{ij}^{(k)}$
可以用下式计算:
$$P_{ij}^{(k)} = P(\zeta_{t+k} = S_j | \zeta_t = S_i), \tag {30}$$
其中 k > 0 是一个整数。矩阵 $P = [P_{ij}^{(1)}] = [P_{ij}]$
是转移矩阵,它是一个右随机矩阵。右随机矩阵(right stochastic matrix)定义为一个概率(平方)矩阵,其每一项都是非负的,每一行加起来是 1。即
$$P_{ij} \gt 0, \sum_{j=1}^m P_{ij} = 1, i = 1, 2, …, m. \tag {31}$$
值得指出的是,虽然使用较少,但左转换矩阵(left transition matrix)是每列和为 1 的随机矩阵。
如果转移矩阵 P 的某些幂只有正元素,则马尔科夫链是规则的(regular)。也就是说,存在正整数 K,使得 $\forall i, j \quad P_{ij}^{(K)} \gt 0$
。这意味着从任何状态 i 到另一个状态 j 都有一个非零概率。换句话说,每个状态都可以通过有限的步数来访问(不一定只是几步)。如果步数 K 不是某个整数的倍数,则链被称为非周期性的(aperiodic)。这意味着在链的某些状态之间没有固定长度的循环。另外,如果马尔可夫链可以从每个状态转移到每个状态,则称马尔可夫链是遍历的(ergodic)或不可约的(irreducible)[4, 5]。
一般而言,对于以初始 $\pi_0$
和转移矩阵 P 开始的马尔可夫链,k 步过后我们有
$$\pi_k = \pi_0 P^k, \quad or \quad \pi_k = \pi_{k-1} P, \tag {32}$$
其中 $\pi_k$
是一个向量,它的第 j 个项是 k 步过后处于状态 $S_j$
的概率。
有一个正则马尔可夫链的基本定理。即
$$\lim_{k \to \infty} P^k = W, \tag {33}$$
其中 W 是所有行相等且所有项严格为正的矩阵。
随着步数 k 的增加,马尔可夫链可能达到平稳分布 $\pi^* $
,定义为
$$\pi^* = \pi* P. \tag {34}$$
根据矩阵 A 特征值的定义,
$$Au = \lambda u, \tag {35}$$
我们知道前面的方程意味着 $π^* $
是与特征值 $\lambda = 1$
相关的特征向量。唯一平稳分布需要转移概率的以下详细平衡:
$$P_{ij} \pi_i^* = P_{ji} \pi_j^* , \tag {36}$$
通常被称为可逆性条件(reversibility condition)。满足这种可逆性条件的马尔可夫链被认为是可逆的。
这个讨论主要涉及到状态是离散的情况。我们可以把前面的结果推广到连续状态马尔可夫链,其中转移概率 $P(u, v)$
和相应的平稳分布
$$\pi^* = \int_{\Omega} \pi^* (u) P(u, v) dv, \tag {37}$$
其中 $\Omega$
是概率状态空间。
选择转移概率的方法有很多种,而不同的选择会导致马尔可夫链的不同行为。从本质上说,转换核的特点在很大程度上决定了马尔可夫链的倾向行为,也决定了马尔可夫链蒙特卡洛(MCMC)采样的效率和收敛性。有几种广泛使用的采样算法,包括 Metropolis 算法、Metropolis-Hasting 算法、独立采样、随机游走和 Gibbs 采样器。有兴趣的读者可以参考进阶文献 [5]。
作为马尔可夫链的优化
为了解决优化问题,我们可以从一个好的随机初始猜测的解开始,执行随机游走来搜索解。但是,简单的或盲目的随机游走效率不高。为了在计算上有效地寻找新的解,我们必须保留迄今为止找到的最好的解,并提高随机游走的移动性,以便更有效地探索搜索空间。最重要的是,我们必须找到一种控制游走的方法,以便能够更快速地找到最佳解,而不是偏离潜在的最佳解。这些都是大多数元启发式算法面临的挑战。
沿着马尔可夫链路线的进一步研究是马尔科夫链蒙特卡罗(MCMC)方法的开发,该方法是一类样本生成方法。MCMC 试图使用具有已知转移概率的马尔可夫链从一些高度复杂的多维分布中直接抽取样本。自 20 世纪 90 年代以来,MCMC 方法已经成为贝叶斯统计分析、蒙特卡罗仿真以及高度非线性潜在优化的有力工具。
MCMC 与优化的一个重要环节是一些启发式和元启发式搜索算法,如模拟退火使用基于轨迹的方法。他们从一些初始(随机)状态开始,随机提出一个新的状态(解)。然后,根据某种概率来决定该概率是否被接受。这与马尔可夫链非常相似。实际上,标准模拟退火算法是一种随机游走 [9]。
从理论上讲,理解元启发式算法的一大飞跃就是将 MCMC 视为一个优化过程。如果我们想在 $\theta = \theta_* $
处找到目标函数 $f(\theta)$
的最小值,使得 $f_* = f(\theta_* ) \le f(\theta)$
,我们可以将其转化为马尔可夫链
$$\pi(\theta) = e ^{- \gamma f(\theta)}, \tag {38}$$
其中 $\gamma \gt 0$
是归一化因子参数。选择的 $\gamma$
值使得当 $\theta \to \theta_* $
时,概率接近 1。在 $\theta = \theta_* $
时,$\pi(\theta)$
应该达到 $\pi_* = \pi(\theta_* ) \ge \pi(\theta)$
。这就要求 $L(\theta)$
的表达式应该是非负的,这意味着如果需要,一些目标函数可以被大的常数 $A \gt 0$
偏移,如 $f \leftarrow f + A$
。
通过构建 MCMC,我们可以制定一个通用的框架,如 Ghate 和 Smith 在 2008 年提出的文献 [6],如下图所示。在这个框架中,模拟退火及其许多变体只是下式的特例
$$
P_t =
\begin{cases}
exp\bigl[ - \frac{\Delta f}{T_t} \bigr] & \text{if $f_{t+1} \gt f_t$} \
1 & \text{if $f_{t+1} \le f_t$}
\end{cases}
.
$$
在这种情况下,只有函数值之间的差值 $\Delta f$
是重要的。
本书讨论的模拟退火算法使用单个马尔科夫链,这可能不是非常有效。实际上,并行使用多个马尔可夫链以提高整体效率通常是有利的。事实上,粒子群算法和萤火虫算法等算法可以看作是多个相互作用的马尔可夫链,但这样理论分析仍然具有很大的挑战性。交互式马尔可夫链理论是复杂的,但仍在发展中,这方面的任何进展都将对理解基于种群和轨迹的元启发式算法在各种条件下的性能发挥核心作用。但是,即使我们不完全理解元启发式算法的工作原理,这并不妨碍我们有效地使用这些算法。相反,这样的神秘性可以驱动和激励我们进一步研究和发展元启发式算法。
步长大小与搜索效率
步长、停止准则和效率
在元启发式算法中,随机游走被广泛用于随机化和局部搜索 [19, 21],适当的步长是非常重要的。通常,我们使用下面的通用方程:
$$x^{t+1} = x^t + s\epsilon_t, \tag {40}$$
其中 $\epsilon_t$
服从零均值、单位标准差的标准正态分布。这里,步长 s 确定随机游走者(如,元启发式中的代理或粒子)在固定次数的迭代中能走多远。显然,如果 s 太大,那么产生的新的解 $x^{t+1}$
将远离旧解(或者更常见的,当前最佳解)。那么这样的移动不太可能会被接受。如果 s 太小,变化太小而不显著,因此这种搜索效率不高。因此,适当的步长对于保持搜索效率是非常重要的。
从简单的各向同性随机游走理论[7, 10-12, 14]可知,平均距离 r(即标准差)在 d 维空间是
$$r^2 = 2dDt, \tag {41}$$
其中 $D = s^2 / 2\tau$
是有效扩散系数。这里 s 是每次跳跃的步长或距离,$\tau$
是每次跳跃所花费的时间。上面的等式表明
$$s^2 = \frac{\tau r^2}{td}. \tag {42}$$
对于感兴趣维度的典型尺度 L,局部搜索通常限于 L/10 的区域。也即,$r = L / 10$
。因为迭代是离散的,我们可以取 $\tau = 1$
。通常在元启发式中,我们可以预期代数通常是 t = 100 到 1000,这意味着
$$s \approx \frac{r}{\sqrt{td}} = \frac{L/10}{\sqrt{td}}. \tag {43}$$
对于 d = 1,t = 100,我们有s = 0.01L,而对于 d = 10,t = 1000,有 s = 0.001L。因为步长可能因为变量的不同而不同,步长比 s/L 更通用。因此,对于大多数问题,我们可以使用s/L = 0.001 到 0.01。
假设我们想要达到 $\delta = 10^{-5}$
的精度。然后我们可以估算纯随机游走所需的步数或迭代次数 $N_{max}$
。这实际上是 $N_{max}$
的上限:
$$N_{max} \approx \frac{L^2}{\delta^2d}. \tag {44}$$
例如,对于 L = 10,d = 10,我们有
$$N_{max} \approx \frac{10^2}{(10^{-5}) \times 10} \approx 10^{11}, \tag {45}$$
这是一个在实践中很难实现的巨大数字。然而,这个数字远远小于均匀或强力搜索方法(uniform or brute-force search method)所需的数量。值得指出的是,上面的估计是最坏情况下的上限。实际上,大多数的启发式算法需要的迭代次数要少得多。
另一方面,前面的公式意味着另一个有趣的事实,即迭代次数不会受到维度的影响。事实上,更高维度的问题不一定会显著增加迭代次数。这可能导致一个相当令人惊讶的可能性,即如果优化是高度多峰的(multimodal),则随机游走可能在更高维度上是有效的。这为通过巧妙地使用随机游走和其他随机化技术来设计更好的算法提供了一些启示。
为什么 Lévy 飞行更有效
如果我们使用 Lévy 飞行而不是高斯随机游动,我们有
$$N_{max} \approx \Bigr ( \frac{L^2}{\delta^2d} \Bigl ) ^{1/(3 - \beta)}. \tag {46}$$
如果我们使用 $\beta = 1.5$
,我们有
$$N_{max} \approx 2 \times 10^7. \tag {47}$$
我们可以看到,Lévy 飞行可以将迭代次数从 $O(10^{11})$
减少到 $O(10^7)$
。显然,如果使用其他 $\beta$
值,还可以减少更多。在后面会看到的,与 Lévy 飞行相结合的鹰策略可以更加显著地减少迭代次数,从 $O(10^{11}$
到 $O(10^3)$
。
然而,在我们进一步讨论搜索策略之前,让我们看看客观场景的模态如何影响用于寻找最优的策略的。
模态和间歇搜索策略
即使在实践中没有指导方针,文献中对于非常有限的情况进行了一些初步的工作,这些工作对参数的可能选择提供一些见解,以便平衡这些组成部分。理想情况下,搜索策略应利用目标场景的模态知识,以便以最小的计算工作量达到最优。但是,过多的特定于问题的知识可能会限制算法的有效性。一个足够灵活并且能够处理各种问题的算法需要来自特定问题设置的最小输入,并且几乎可以将问题视为黑盒类型。这产生各种挑战,而且没有关于这些挑战的准则。
在设计搜索策略方面已经进行了各种尝试。其中一种策略是所谓的间歇搜索策略,它涉及在广阔的搜索范围内寻找未知目标的可能的最佳方式。这个策略是迭代的,包括慢检测阶段和快搜索阶段 [2]。这里,慢阶段是通过减速和密集的静态局部搜索技术进行的检测阶段。快阶段是没有检测的搜索,可以被认为是一种探索技术。例如,半径为 R 的较大区域中有半径为 a 的小区域($a \ll R$
)的静态目标检测,可以被建模为具有扩散系数 D 的随机游走的慢扩散过程。
值得指出的是,下面的结果假设目标是局部最优的,目标函数是多峰的。对于单峰函数,没有必要平衡探索和开发,因为开发主要应用在搜索过程中。对于凸单峰,任何找到的局部最优也是全局最优解,因此,利用局部信息和更新进行密集的局部搜索是首选。探索阶段和探索阶段之间的间歇性切换对于多峰函数是最佳的,其中局部模式的面积/体积小于搜索域的面积/体积。因此,我们处理的是稀疏目标模式。
假设 $\tau_a$
和 $\tau_R$
分别是(在二维情况下)在密集检测阶段花费的平均时间和在探索阶段花费的时间 [2]。扩散搜索过程由平均首次通过(first-passage)时间决定,满足以下等式:
$$D\Delta_r^2t_1 + \frac{1}{2\pi\tau_a} \int_0^{2\pi} \bigr[ t_2(r) - t_1(r) \bigl] d\theta + 1 = 0, \tag {48}$$
$$u \cdot \Delta_r t_2(r) - \frac{1}{\tau_R} \bigr[ t_2(r) - t_1(r) \bigl] +1 = 0, \tag {49}$$
其中 $t_2$
和 $t_1$
分别是在慢阶段和快阶段的搜索过程中所花费的时间,u 是搜索速度 [2]。
经过一些冗长的数学分析 [2],这两种方法的最佳平衡可以估计为
$$r_{optimal} = \frac{\tau_a}{\tau_R^2} \approx \frac{D}{a^2} \frac{1}{\bigr[ 2 - \frac{1}{ln (R / a)} \bigl] ^2}. \tag {50}$$
假设搜索步的平均速度在每一步都是一致的,那么每个阶段所需的最小时间可以估计为
$$\tau_a^{min} \approx \frac{D}{2u^2} \frac{ln^2(R/a)}{\bigr[ 2 ln(R/a) - 1\bigl]} \tag {51}$$
和
$$\tau_R^{min} \approx \frac{a}{u} \sqrt{ln(R/a) - \frac 12}. \tag {52}$$
当 $u \to \infty$
时,这些关系将产生之前提到的最优比。有趣的是,前面的结果对域大小 R 的依赖很弱,因此,平衡这两个关键组件使得 [2] 中使用的算法具有非常高效的性能。另外,提高全局搜索速度 u 也可以减少整体搜索时间,从而隐式地提高算法的搜索效率。需要强调的是,以前的结果只适用于二维情况,除了一些特殊的三维情况外,对于其他较高维度都没有一般性的结果。作为一个例子,让我们使用这个有限的结果来指导鹰策略中算法相关参数的选择。
让我们首先使用多峰测试函数,来了解对于给定的任务,如何在算法中找到探索和开发之间的良好平衡。Xin-She Yang 的驻波测试函数 [18, 8] 是一个很好的例子:
$$f(x) = 1 + \biggl{ exp\Bigl[ -\sum_{i=1}^d (\frac{x_i}{\sigma})^{10} \Bigr] - 2 exp \Bigl[ - \sum_{i=1}^d x_i^2 \Bigr] \biggr } \cdot \prod_{i=1}^d cos^2 x_i, \tag {53}$$
它是多峰的,有许多局部峰和谷。它在域 $-20 \le x_i \le 20$
时,在 $i = 1, 2, ..., d$
处具有唯一全局最小值 $f_{min} = 0$
,其中 $i=1,2, ..., d$
、$\sigma = 15$
。在这种情况下,我们可以估计 $R = 20$
、$a \approx \pi / 2$
,这意味着 $R/a \approx 12.7$
,在这种情况下,我们有 d = 2
$$p_e \approx \tau_{optimal} \approx \frac{1}{2 \bigl[ 2 - 1/ ln(R/a)\bigr] ^2} \approx 0.19. \tag {54}$$
这表明该算法应该将其计算量的 80% 用于全局搜索,将 20% 用于局部密集搜索。
但是,值得指出的是,这里的开发和探索之间的最佳比例是基于场景的或者说场景相关的。也就是说,每个问题的实际值会有所不同,并且没有普遍的最佳比例。一个特殊的情况是当 $R \gg a$
或 $R/a \gg 1$
时,由式 (54) 得出
$$t_{optimal} (R \to \infty) \to 1/8. \tag {55}$$
该最优比仅适用于模态尺寸相对于搜索空间尺寸而言较小的宽阔区域中的多峰问题。此外,这仅适用于景观场景的多峰问题。显然,如果我们知道一个问题是单峰的,我们应该集中精力开发而不需要太多的探索,并且有一些有效的算法,例如牛顿-拉夫森(Newton-Raphson)方法,可以非常快地收敛。
另一方面,另一个最优化涉及算法中参数的设置。算法相关参数的这种最优化可以被认为是基于算法或者算法相关的。理想情况下,当基于场景的最优性匹配基于算法的最优性时,效率将真正达到最高。然而,这样的匹配本身就是另一个更高级的优化问题。
即使在算法相关参数设置最好的情况下(具有已知的开发探索比),搜索空间的采样方式也是非常重要的,我们将在下一节讨论这个问题。
随机化的重要性
随机游走的方法
随机化是一种使算法在搜索空间中探索更多的方法,取决于随机化实现的方式,它可以被视为一种多样化的方法也可以被视为一种集中化的方法。执行多样化和集中化的途径有很多。实际上,每种算法及其变种都使用不同的方式来实现探索和开发之间的平衡 [3, 19, 20]。
通过分析所有元启发式算法,我们可以断言,实现探索或多样化的方式主要是随机游走结合确定性过程。这确保了新生成的解尽可能多地分布在可行的搜索空间中。
最简单也最常用的一种随机化技术是使用均匀分布的随机变量来对搜索空间采样
$$X_{new} = L + (U - L) \ast \epsilon_u, \tag {56}$$
其中 L 和 U 分别是下界和上界向量。$\epsilon_u$ 是在 [0, 1] 上均匀分布的随机变量。这种方法常用于和声搜索、粒子群优化、蝙蝠算法等多种算法。显然,使用均匀分布并不是实现随机化的唯一途径。事实上,像全局范围内的 Lévy 飞行这样的随机游走更有效率。
获得多样化的更精细的方法是使用突变和交叉。突变确保新的解尽可能与它们的父解或现有解不同;而交叉提供了良好的混合,限制了过度多样化,因为新的解是通过交换现有解的一部分而产生的。
新解的生成可以围绕有前途的解进行,也可以更集中地进行。这个目标可以通过局部随机游走很容易的实现
$$x_{new} = x_{old} + s , W, \tag {57}$$
其中 W 是一个随机向量,通常服从均值为零的高斯分布。这里 s 是随机游动步长的缩放因子。一般来说,步长应该足够小,以便只访问局部邻居。如果步长太大,所访问的区域可能距离感兴趣的区域太远,这将显著增加多样化,但大大减少集中化。因此,适当的步长应该是比问题规模小得多的(并且与问题规模相关)。例如,和声搜索中的音高调整以及模拟退火中的移动通常是局部随机游走。
如果我们想要提高这种随机游走的效率(从而也增加了探索的效率),我们可以使用其他形式的随机游走,如 Lévy 飞行,其中 s 服从 Lévy 分布。实际上,任何长尾分布都将有助于增加这种随机行走的步长和距离。
另一方面,实现开发的主要途径是围绕最有希望的区域(通常是当前最佳解)产生新解。即使使用标准随机游走,我们也可以在当前最佳解 $x_{best}$
周围使用更有选择性或受控的游走,而不是任何好的解。也就是说,
$$x_{new} = x_{best} + s , W. \tag {58}$$
一些集中化技术不容易解码,但可能同样有效。进化算法中的交叉算子是一个很好的例子,因为它使用来自父代解或字符串来形成后代或新的解。在许多算法中,集中化和多样化之间没有明确的区别。这两个步骤往往是交织在一起的、互动的,在某些情况下可能会成为一个优势。这种交互的好例子有遗传算法、和声搜索、布谷鸟搜索和蝙蝠算法。读者可以分析任意选择的算法,看看这些组件是如何实现的。
另外,选择最好的解是算法成功的关键。如果没有适当选择优质的解,简单、盲目的探索和开发可能是无效的。简单地选择最好的解,可能仅对具有唯一全局最优的优化问题有效。精英主义和保留最佳解对于多峰和多目标问题是有效的。遗传算法中的精英主义、和声的选择是很好的例子。
与最佳解的选择相比,高效的元启发式算法应该有一种方法来丢弃糟糕的解,以提高进化过程中种群的总体质量。这通常通过某种形式的随机化和概率选择准则来实现。例如,遗传算法中的变异就是这样做的一种方式。同样,在布谷鸟搜索中,巢/解的抛弃也是很好的例子。
另一个重要的问题是随机性的减少。随机化主要用于在全局范围内多样化地探索搜索空间,并在一定程度上用于局部的开发。随着更好的解的发现和系统收敛,随机性程度应该减少,否则会减慢收敛速度。例如,在粒子群算法中,粒子群聚集在一起,随机性自动降低。这是因为每个粒子与当前全局最优之间的距离越来越小。
在其他算法中,随机性并没有减少,而是被控制和选择。例如,突变概率通常很小,以限制随机性,而在模拟退火中,迭代过程中的随机性可以保持不变,但是选择解或移动被选择,且接受概率越来越小。
最后,从实现的角度来看,实际的实现是不同的,尽管伪代码可以给出很好的指导,原则上不应该存在歧义。但在实际应用中,算法的实际实现方式对性能有一定的影响。因此,任何算法实现的验证和测试都很重要。
初始化的重要性
理想情况下,好的算法其最终结果应该与起始点无关。然而,实际情况是,几乎所有的随机算法的结果在很大程度上都取决于初始位置。如果目标地貌是丘陵地貌、全局最优位于孤立的小区域,那么种群的初始化是非常重要的。如果随机初始化在全局最优的邻域未产生解,则该种群收敛到真正最优的机会可能很低。另一方面,如果初始种子在初始种群中产生大量位于全局最优邻域中的解,则种群收敛到真正全局最优的机会非常高。因此,种群的初始化非常重要。理想情况下,初始化应使用重要抽样技术,如蒙特卡罗法中使用的技术,以便能够根据客观情况对解进行抽样。但是,这需要对问题有足够的了解,可能不适用于任何算法。
弥补这些缺陷的方法是每次运行使用不同的初始配置并多次运行算法,这将产生一些有意义的统计,如均值和标准差。或者,我们应该运行算法足够长时间,以便它“忘记”初始状态,从而独立于最初的种群,收敛到真正的全局最优。这可以从马尔可夫链的角度来实现。主要缺点是收敛速度可能较慢,因此需要大量的迭代,从而导致高昂的计算成本。
实际上,大多数算法倾向于使用某种初始化来确保新生成的解尽可能多地分布在可行的搜索空间,正如我们前面所讨论的。
重要性抽样
蒙特卡罗方中使用的技术(如重要性抽样)可用于初始化元启发式算法中的种群。例如,假设问题是最小化一个积分
$$\text{minimize} \int_a^b f(u) du \tag {59}$$
通过选择 $f(u)$
的正确形式,这实质上是函数的优化。对于这种问题,我们可以使用重要性抽样技术。
对于一个在一个狭窄区域,如尖峰(如 $f(x) = e^{-(100x)^2}$
)中快速变化的被积函数,唯一重要的采样点在峰值附近,外面采样点的贡献会很少。因此,似乎有很多不必要的采样点被浪费了。有两种更有效地使用采样点的主要方法:改变变量和重要性采样。改变变量使用被积函数本身,以便将其转换为更均匀的(平坦的)函数。例如,积分
$$I = \int_a^b f(u) du \tag {60}$$
可以用已知函数 $u = g(v)$
来变换:
$$I = \int_{a_v}^{b_v} f\bigl[ g(v) \bigr] \frac{dg}{dv} dv. \tag {61}$$
这个想法是确保新的被积函数是(或接近)常数 A:
$$\phi(v) = f\bigl[ g(v) \bigr] \frac{dg(v)}{v} = A, \tag {62}$$
其中 $v = g^{-1}(u)$
。这意味着均匀分布可用于 $\phi$
。新的积分限是 $a_v = g^{-1}(a)$
与 $b_v = g^{-1}(b)$
。
低差异序列
在初始种群中生成初始解时,对随机性的类型没有约束。除了均匀分布和高斯分布外,我们还可以使用低差异序列、Sobol 序列、拉丁超立方体等等。
其中一种有趣的技术是准蒙特卡罗方法中使用的所谓的低差异序列。准随机数在多维空间中具有高水平的一致性,然而,它们并不是统计独立的,这可能会违背标准蒙特卡罗方法的一些优点。使用确定性序列产生准随机数的方法很多,包括自由基反演方法。可能最广泛使用的是由荷兰数学家 J. G. van der Corput 在 1935 年开发的 van der Corput 序列。在这个序列中,任意(十进制)整数 n 以质数基 b 唯一展开
$$n = \sum_{j=0}^m a_j(n)b^j, \tag {63}$$
其中系数 $a_j(n)$
只能在 $\{0, 1, 2, ..., b-1\}$
中取值。这里 m 是对所有 $j \gt m$
使 $a_j(n) = 0$
的最小整数。那么在基 b 中的表达式被反转或反射(reversed or reflected),
$$\phi_b(n) = \sum_{j=0}^m a_j(n) \frac{1}{b^{j+1}}, \tag {64}$$
反射的十进制数是在区间 [0, 1] 中均匀分布的低差异数。
如,整数 n = 6 在基为 2 时可以表示为 110,因为 $6 = 2 \times 2^2 + 1 \times 2^1 + 0 \times 2^0$
,m = 2。表达式 110 可以被反转为 011。当使用十进制表示时,它就变成了 van der Corput 数 $\phi_2(6) = 0 \times 2^{-1} + 1 \times 2^{-2} + 1 \times 2^{-3} = 3/8$
。该数在单位间隔 [0, 1] 内。对于整数 0, 1, 2, …, 15,我们有
$$0, \frac 12, \frac 14, \frac 34, \frac 18, \frac 58, \frac 38, …, \frac{15}{16}. \tag {65}$$
如果我们在单位区间绘制这些点,我们可以看到这些点似乎“填补了空白”。
同样,如果我们使用基 3,整数 5 可以表示为 12,因为 $5 = 1 \times 3^1 + 2 \times 3^0$
。现在系数的反射变为 21。由 van der Corput 序列产生的数变成 $\phi_3(5) = 2 \times 3^{-1} + 1 \times 3^{-2} = \frac 79$
。
低差异序列,包括 Halton 序列、Sobol 序列、Faure 序列和 Niederreiter 序列已经扩展到更高维度。如,Sobol 准随机序列开发于 1967 年是准蒙特卡罗模拟中最广泛使用的序列之一 [16]。但是,这些序列在自然启发式算法中的应用仍然需要更多的研究。
鹰策略
鹰策略的基本思想
鹰策略(Eagle strategy,ES)是 Xin-She Yang 和 Suash Deb 于 2010 年开发的一种新的元启发式优化策略 [19] 。更多扩展性研究请参阅 [20]。鹰策略使用粗略的全局搜索和密集的局部搜索相结合,采用不同的算法来适应不同的目的。实质上,这个策略首先使用 Lévy 飞行随机游走来探索全局搜索空间。如果找到有希望的解,就会采用一种更有效的局部优化方法,如爬山法、差分进化和/或布谷鸟搜索来进行密集的局部搜索。然后,两阶段(two-stage)过程再次从新的全局探索开始,然后在新的区域进行局部搜索。主要步骤如下图所示。
这种组合的优点是在全局搜索(通常很慢)和快速的局部搜索之间使用平衡的折衷。一些折衷(tradeoff)和平衡(balance)是重要的。这种方法的另一个优点是,我们可以在不同阶段使用我们喜欢的不同算法来搜索,甚至可以在不同迭代的不同阶段使用不同的算法。这使得结合各种算法的优点以产生更好的结果变得更容易。
这里唯一的参数是 $p_e$
,它控制局部和全局搜索之间的切换。也就是说,它控制何时进行开发和何时进行探索。值得指出的是,这是一种方法或策略,而不是算法。事实上,我们可以在迭代的不同阶段和不同时间使用不同的算法。用于全局探索的算法应该具有足够的随机性,以便多样地、有效地探索搜索空间。这个过程通常最初是缓慢的,随着系统收敛(或特定次迭代后没有更好的解)速度会加快。另一方面,用于密集地局部开发的算法应该是一个有效的局部优化器。其思想是以最少的函数求值次数尽快达到局部最优。这个阶段应该是快速而有效的。
为什么鹰策略是如此有效
在现代元启发式算法中,步长的控制方式使得它们能够更有效地进行局部搜索。为了说明这一点,让我们像在高效鹰策略中的那样,将搜索过程分为两个阶段。
第一阶段使用粗/大步长,假设 $\delta_1 = 10 ^{-2}$
,然后在第二阶段使用步长 $\delta_2 = 10 ^{-5}$
,以达到与前面部分讨论的相同的最终精度。第一阶段覆盖整个区域 $L_1 = L$
,第二阶段覆盖 $L_1$
大小的区域。通常,$L_2 = O(L_1 /1000)$
。使用前面的值 $L_1 = 1$
、$L_2 = 0.01$
,我们有 $N_{1, max} \approx 10^5$
、$N_{2, max} \approx 10^5$
。在这种情况下,迭代次数可以从 $O(10^{10})$
减少约 5 个数量级($10^5$
)到$O(10^5)$
。
此外,如果我们进一步使用 Lévy 飞行策略,则这些估值可以减少到
$$N_{1, max} \approx N_{2, max} \approx 2 \times 10^3, \tag {66}$$
这既实用又实际。事实上,Lévy 飞行与 ES 的良好结合可以将迭代次数从 $O(10^{10})$ 减少到 $O(10^3)$,这几乎就像一个魔术一样。
因此,使用良好算法的组合,ES 可以显著减少计算量,从而大大提高了搜索效率。
[1] Bell WJ. Searching behaviour: the behavioural ecology of finding resources. London, UK: Chapman & Hall; 1991.
[2] Bénichou O, Loverdo C, Moreau M, Voituriez R. Intermittent search strategies. Rev Mod Phys 2011;83(1):81–129.
[3] Blum C, Roli A. Metaheuristics in combinatorial optimization: overview and conceptual comparison. ACM Comput Surv 2003;35(3):268–308.
[4] Fishman GS. Monte Carlo: concepts, algorithms and applications. New York, NY, USA: Springer; 1995.
[5] Geyer CJ. Practical Markov chain Monte Carlo. Stat Sci 1992;7(6):473–511.
[6] Ghate A, Smith R. Adaptive search with stochastic acceptance probabilities for global optimization. Oper Res Lett 2008;36(3):285–90.
[7] Gutowski M. Lévy flights as an underlying mechanism for global optimization algorithms, ArXiv Mathematical Physics e-Prints; 2001 [accessed 28.06.13].
[8] Jamil M, Yang XS. A literature survey of benchmark functions for global optimisation problems. Int J Math Model Numer Optim 2013;4(2):150–94.
[9] Kirkpatrick S, Gellat CD, Vecchi MP. Optimization by simulated annealing. Science 1983;220(4598):670–80.
[10] Mantegna RN. Fast, accurate algorithm for numerical simulation of Lévy stable stochastic processes. Phys Rev E 1994;49:4677–83.
[11] Nolan J.P.. Stable distributions: models for heavy-tailed data. Berlin: Birkhauser; 2014.
[12] Pavlyukevich I. Lévy flights, non-local search and simulated annealing. J Comput Phys 2007;226(2):1830–44.
[13] Ramos-Fernandez G, Mateos JL, Miramontes O, Cocho G, Larralde H, Ayala-Orozco B. Lévy walk patterns in the foraging movements of spider monkeys (Ateles geoffroyi). Behav Ecol Sociobiol 2004;55:223–30.
[14] Reynolds AM, Frye MA. Free-flight odor tracking in Drosophila is consistent with an optimal intermittent scale-free search. PLoS One 2007;2:e354.
[15] Reynolds AM, Rhodes CJ. The Lévy flight paradigm: random search patterns and mechanisms. Ecology 2009;90:877–87.
[16] Sobol IM. A primer for the Monte Carlo method. CRC Press; 1994.
[17] Viswanathan GM, Buldyrev SV, Havlin S, da Luz MGE, Raposo EP, Stanley HE. Lévy flight search patterns of wandering albatrosses. Nature 1996;381:413–5.
[18] Yang XS. Firefly algorithm, stochastic test functions and design optimisation. Int J Bio Ins Comput 2010;2(2):78–84.
[19] Yang XS, Deb S. Eagle strategy using Lévy walk and firefly algorithm for stochastic optimization. In: Nature inspired cooperative strategies for optimization, NICSO 2010, 2010; 284:101–111.
[20] Yang XS, Deb S. Two-stage eagle strategy with differential evolution. Int J Bio Ins Comput 2012;4(1):1–5.
[21] Yang XS, Ting TO, Karamanoglu M. Random walks, Lévy flights, Markov chains and metaheuristic optimization. In: Future information communication technology and applications. Lecture notes in electrical engineering, 235; 2013. p. 1055–64.