粒子群算法概述
粒子群优化(Partical Swarm Optimization, PSO)是一种群智能优化算法,源自于对鸟群捕食行为的研究,由Eberthart和kennedy博士提出1。PSO算法和遗传算法相似,均需要随机初始化目标函数的解,通过迭代寻优,但是少了染色体的交叉(crossover)和变异(mutation)。每个粒子被抽象为搜索空间中的一只鸟,表示优化问题的解,粒子具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。将粒子位置信息代入待优化函数(适应度函数),将得到适应度值fitness。在寻优过程中,粒子通过自己的飞行经验(即个体极值pbest)和同伴经验(即群体极值gbest)来决定下一次的运动。
算法原理
该算法的目标即通过迭代使适应度值达到最大或者最小(根据待优化函数而定,若求解损失,即优化使适应度最小;若求解分类正确率,即使适应度最大)。迭代结束后当前群体最优位置即对应优化问题的最优解。PSO算法开始阶段需要随机初始化粒子速度和位置信息,然后通过迭代寻找最优解。粒子在迭代过程中通过两个极值来更新速度和位置,即个体极值pbest和全局极值gbest,分别对应每次迭代过程中寻找的最优解。
假设d维搜索空间中第i个粒子的位置和速度分别为 X i = ( x i , 1 x i , 2 . . . x i , d ) X^{i}=(x_{i,1} \ x_{i,2} \ ... \ x_{i,d}) Xi=(xi,1 xi,2 ... xi,d)和 V i = ( v i , 1 v i , 2 . . . v i , d ) V^{i}=(v_{i,1} \ v_{i,2} \ ... \ v_{i,d}) Vi=(vi,1 vi,2 ... v