什么是机器学习中的PSO?

2025年2月3日 | 阅读10分钟

粒子群优化 (PSO) 是机器学习和其他领域中用于优化问题的一种计算技术,它模仿鸟群或鱼群的社会行为。在这种技术中,一组候选解,“粒子”,在搜索空间中移动以找到最优解。每个粒子根据其自身和邻居的过往经验来改进其在搜索空间中的位置,并在迭代中收敛到最优解。这种方法对于优化传统优化技术可能不足的复杂多维问题非常有用。PSO 是一种非常简单的算法,易于实现,并应用于神经网络训练、特征选择和机器学习模型的超参数调优。它在机器学习优化相关的各种问题中的应用,得益于其自适应性和鲁棒性。

PSO技术是这样的:每个粒子都有一个内存,其中存储着整个种群的全局最佳位置,以及它自己过去最好的位置。它可能会根据存储在每个个体(粒子)内存中的数据和其速度vi来更新其位置xi(t+1),如下图所示。

What is PSO in Machine Learning

在PSO技术中,X通常表示种群。可以使用随机数生成器按照以下方程初始化此种群:

其中 L 和 U 分别表示问题搜索空间域的下界和上界。X 中的每个个体/粒子 (xi) 的速度 (vi) 可以使用以下方程更新:

此处,

w: 这是一个惯性权重,用于提高收敛速度。

c1 & c2:: 它们代表加速度的系数。

t: 当前时间(迭代次数)。

之后,粒子xi的位置更新为:

此PSO模型的下一步是适应度函数,它将计算每个粒子的质量。然后,找出当前粒子 P 到目前为止已达到的最佳位置。这也被称为最佳个人位置和全局最佳解 P。上述操作将一直持续到满足停止条件。

PSO的最终步骤如下面的伪代码所示:

  1. 参数初始化:N - 粒子数量,d - 维度,L - 下边界,U - 上边界
  2. 随机解初始化:X,在搜索空间内
  3. 随机速度初始化:X 中每个解的 vi
  4. while (不满足终止条件)
  5. for 每个粒子 in X do
  6. 计算当前粒子的目标函数值
  7. 更新当前粒子的最佳个人位置,xp
  8. 更新全局最佳位置(xg)
  9. 使用公式 (2) 更新速度
  10. 使用公式 (3) 更新当前粒子的位置
  11. end for
  12. end while
  13. 返回全局最佳解,xg

现在我们将应用PSO及其基准测试。

导入库

基准函数

需要使用从测试函数(如 A_Rosenbrock、A_Rastgrin、A_Ackley、A_Sphere、A_Beale 等)开发的一组基准函数来解决此优化问题。我们打算在开发的基准函数上实现PSO。

以下是一些标准基准函数,通常用于评估优化方法的性能。这些函数通常用于基准测试优化算法的性能评估。

虽然“A_Rastgrin”是首选,但我们选择了“A_Objective”函数作为我们优化过程的基准。这是应用于优化问题的两个不同的基准函数。

选择测试

我们将尝试找到由基准函数 'x'、'y' 和 'z' 表示的全局最小值和最大值点。现在,由于我们可以找到最高和最低点并与其他点进行比较,因此基准测试变得非常容易,因为在视觉上我们只需要查看图中更接近最小值的点。

绘制等高线图

我们想生成一个二维图,其中我们将根据颜色图表示函数值。基准函数 'z' 将表示为图像。

它还将叠加等高线,显示函数的等高线,并在先前确定的全局最小值点设置一个红色的“x”。

输出

What is PSO in Machine Learning

上面是二维图,其中红色的“X”表示基准的最小值,图中的黑线表示函数的特定等高线值。这种图的颜色表示将帮助您理解值的密度。

参数和初始化

现在我们将设置控制PSO算法行为和收敛的参数。

我们需要初始化PSO的粒子。

 

绘制点

我们将实现的粒子群优化算法发展可视化的基础将是上面绘制的基准函数的等高线图。稍后,我们将在该等高线图本身上绘制点。

输出

What is PSO in Machine Learning

大多数粒子已经从等高图上的最小点散开。这是第一次迭代,请在迭代后再次检查分数。

输出

What is PSO in Machine Learning

PSO解决方案

  • 在 x = 2.99421688 和 y = 1.38382531 时,PSO 发现了解决方案。
  • 此时,目标函数的值为 0.3668918708631955。

全局最优解

  • 对于基准函数,x = 3.1818181818181817 和 y = 3.131313131313131 是已知的全局最优解。
  • A_Objective 函数现在的值为 -1.8082706615747688。

生成的解似乎不完全是全局最优解。尽管如此,PSO方法找到了一个非常接近全局最优解的解。PSO的目标是找到或足够接近全局最优解,并且在某些情况下它可能会收敛到局部最优解。

注意:重要的是要记住,许多因素会影响PSO成功找到全局最优解的程度,包括超参数的选择、优化景观的复杂性以及粒子初始化。通过改变PSO技术、调整超参数或多次运行过程,可以提高达到全局最优解的可能性。

PSO 迭代

现在,让我们直观地看一下 PSO 迭代。

输出

What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning
What is PSO in Machine Learning

因此可以推断,粒子在迭代过程中向红色的“X”或最小值移动,这表明该方法得到了优化,并且更接近最小值的粒子会产生有利的优化信号。

输出

What is PSO in Machine Learning

尽管不完全精确,但PSO算法会收敛到一个非常接近全局最优值的值。尽管粒子群优化算法的目标是在搜索空间内找到全局最优解,但在某些情况下它可能会收敛到局部最优解。PSO的优化在每次迭代中都在改进。