http://blog.itpub.net/31509949/viewspace-2158395/
“梯度下降不会让你成为机器学习的专家”
PSO被认为是蚁群算法、鱼群算法之外的一种群体智能的优化算法。后来它被简化并用于解决优化问题。
PSO使用了一堆叫做蜂群的粒子,这些粒子可以四处移动并探索搜索空间。
这些粒子的运动方向是-
-
粒子自身的先前速度(惯性)
-
与单个粒子最佳已知位置的距离(认知力)
-
远离人群最知名的位置(社会力量)
基本上,粒子彼此间的共同通讯会使它们聚得更快。该群集不能完全探索搜索空间,但可能会找到更好的解决方案。
有趣的是,当粒子的个体最佳状态优于群体最佳时,群体运动的总体方向可以在任何时间点改变。这使得许多无序和更多机会接近成本函数的全局最小值。
现在回到现实,PSO相对来说非常容易。
与梯度下降不同,成本函数不可微分的。这是Python中用于模拟这些群粒子的简单实现。令人惊讶的是,你不需要很多数学。它只是简单确定三种不同的速度并计算粒子的适应度。我们尽可能多地迭代。
全居最佳或群体最佳将得到最优价值。
每个粒子都描述一组参数值和初始速度(矢量)。我们只需在成本函数中插入这些值来计算适应度。这将给出我们粒子的适应度。
在每次迭代中,我们计算每个粒子的适应度。获得了群体的最佳适应值,现在我们只需简单地更新速度,即我们之前讨论过的初始速度、认知力和社会力量的结果。
这是一个可以帮助您实现它的代码段。
群体粒子的初始位置是任意的。 为了获得最佳效果,您可以在搜索空间的不同位置生成多个群,以获得最佳效果。