热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

泛统计理论初探——初探粒子群算法

神经网络学习-初探粒子群算法理解粒子群算法思路在上一篇介绍搜索的文章中,我们谈到了关于模拟退火算法的思路和算法实现步骤,模拟退火算法是一种启发式的搜索

神经网络学习-初探粒子群算法

理解粒子群算法思路
   在上一篇介绍搜索的文章中,我们谈到了关于模拟退火算法的思路和算法实现步骤,模拟退火算法是一种启发式的搜索方法,可以使用在各个领域。本次文章中需要介绍的是粒子群算法,该算法是一种基于鸟类群体寻找食物的算法,因而也称之为“鸟群算法”,通过整个鸟群的集体搜索,找出全局的最优点,因此该算法其实也是一种启发式搜索算法,并且是类似“群智感知”的一种处理思路。该算法的核心思路其实是通过信息的共享,根据群体的最优和个体的最优进行选择,反复进行位置的移动,最终寻找到全局的最优点。在粒子群算法的解决过程中,每一个可能的可行解都是搜索空间的一个粒子,或者说是一只鸟,而整个问题的最优解就是整个鸟群寻找的食物所在地。
   粒子群算法中每一个粒子都有两个特征,第一个是速度特征、第二个是位置特征;其中速度特征是决定粒子在下一次的移动方向和速度,而位置特征是决定粒子在整个空间的位置,可以用三维空间去理解这个思路,但实际的问题特征维度较高,可能是几十个维度或者几百个维度,所以初学者只需要理解三维空间粒子的移动即可。每一次粒子的移动都是根据目标移动公式去计算当前的目标值,最终的目标是群体的目标值最小或者是最大,整个粒子群在移动的时候,每个粒子可以根据自己历史的位置信息进行学习,也可以根据群体的最优粒子经验去学习,以此去综合考虑下一次移动的方向和速度,经过反复的迭代或者说移动,最终整个群体的粒子就会收敛稳定在一个最优解的位置。
在这里插入图片描述
   对于粒子群算法的大致步骤,我们可以进行一个总结,主要是分为以下5个步骤:
   1、相关参数设置初始化与群体粒子信息初始化,通过随机初始化的方法,并且根据初始化的信息进行计算当前群体的全局最优位置和每个个体的最优位置。
   2、设置好迭代次数和迭代终止条件,并且确定初始化后当前的迭代次数是1次。
   3、速度信息和位置信息更新,即对于每一个粒子来说,去更新它们的速度向量和位置向量。
   4、计算局部位置和全局位置的向量,更新每个粒子的局部最优解和整体粒子群的全局最优解。
   5、判断是否满足终止条件,即如果满足最大迭代次数或者满足终止条件就跳出循环;否则继续进行迭代,继续跳转到步骤3。
根据基本步骤的理解后,我们对于具体的速度向量和位置向量的计算公式来进行分析和介绍,计算公式如下所示。
在这里插入图片描述
   在上面的公式,下标i表示第i个粒子,上标d表示第d个维度的值;w是惯性因子,是一个非负数;r1和r2是[0,1]范围内变化的随机数,α是约束因子。从上述公式我们可以发现,首先是对速度的计算,每个粒子的速度都可以被pi所影响,也就是该粒子的历史最优信息;同时也可以被pg所影响,也就是群体的最优信息。在计算了速度后,通过第二个公式可以计算出下一步的移动位置,从而按照公式进行迭代和计算。
   对于上述的参数,我们在设定初始化参数的时候需要进行确定,一般来说,粒子数量设为20到50个,对于一些计算资源宽裕的情况或者问题复杂的情况,需要设定100到300个粒子。显然粒子的数量越大,搜索的范围就越大,也容易找到全局的最优解,但是非常消耗资源并且计算的时间较长。对于惯性因子w,可以取0.6至0.8范围的值,该参数值对于整个算法的收敛效果有较大的影响,如果设置的较大会使得粒子有很大的惯性,也就是很难改变方向,并且收敛较为困难,所以w设置的较大可以帮助全局搜索、设置的较小可以促进局部搜索。对于常数c1和c2的设定是要看问题而定,一般来说将c1和c2设定的大小一样都是等于2,也就是默认了在粒子迭代的过程中,自身经验和群体经验在迭代步骤的重要性是基本等同的。
   总的来说,粒子群算法是一种适用于不同搜索问题的智能启发式搜索方法,通过对于参数的设置,可以决定是看重于全局的搜索或者是局部的搜索。而该方法还有延伸的方法,也就是所谓的局部粒子群算法,通俗来说就是设定公式中的群体是部分群体,选中的可以被称之为“骨干”,这种方法也被称之为骨干粒子群算法。初学者在学习粒子群算法的过程中,需要理解迭代的公式和里面的参数含义,该算法受到参数的控制影响较大,所以通常需要使用不同的参数进行多次搜索才可以。


推荐阅读
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 基于2-channelnetwork的图片相似度判别一、相关理论本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《LearningtoCompar ... [详细]
  • 在上一篇文章中,我们初步探讨了神经网络的基础概念,并通过一个简单的例子——将摄氏度转换为华氏度——介绍了单个神经元的工作原理。本文将继续探索神经网络的应用,特别是如何构建一个基本的分类器。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 回顾与学习是进步的阶梯。再次审视卷积神经网络(CNNs),我对之前不甚明了的概念有了更深的理解。本文旨在分享这些新的见解,并探讨CNNs在图像识别和自然语言处理等领域中的实际应用。 ... [详细]
  • 李宏毅机器学习笔记:无监督学习之线性方法
    无监督学习主要涵盖两大类别:一是聚类与降维,旨在简化数据结构;二是生成模型,用于从编码生成新的数据样本。本文深入探讨了这些技术的具体应用和理论基础。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • 获取Jedis和Commons Pool JAR包的两种方法及详细步骤
    本文介绍如何通过网盘链接或官方网站获取Jedis和Commons Pool的JAR包,并提供详细的图文教程。同时,还附有导入JAR包到项目的相关建议。 ... [详细]
author-avatar
老陈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有