IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 机器学习中的数学——粒子群算法(Particle Swarm Optimization PSO)(一):基础知识 -> 正文阅读

[嵌入式]机器学习中的数学——粒子群算法(Particle Swarm Optimization PSO)(一):基础知识

自然界生物有时候是以群体形式存在的。人工生命研究的主流之一是探索这些自然生物是如何以群体的形式生存,并在计算机里面重构这种模型。很多科学家很早以前就对鸟群和鱼群的生物行为进行计算机模拟,其中较为著名的有Reynolds、Hepper、Kennedy和Grenander对鸟群的模拟。Reynolds通过CG动画仿真了鸟群的复杂群体行为,他是综合三条简单的准则来构建这种行为:

  • 远离最近的邻居
  • 向目标靠近
  • 向群体的中心靠近

其基本思想是受多位科学家早期对许多鸟类的群体行为进行建模与仿真研究结果的启发,他们的模型及仿真算法主要利用了生物学家Hepper的模型。在Hepper的仿真中,鸟在一块栖息地附近聚群,这块栖息地吸引着鸟,直到它们都落在这块地上。Hepper模型中的鸟是知道栖息地的位置的,但在实际情况中,鸟类在刚开始是不知道食物的所在地的。所以Kennedy等认为鸟之间存在着相互交换信息,于是他们在仿真中增加了一些内容:每个个体能够通过一定规则估计自身位置的适应值;每个个体能够记住自己当前所找到的最好位置,称为“局部最优pbest”;此外还记住群体中所有鸟中找到的最好位置,称为“全局最优gbest”。这两个最优变量使得鸟在某种程度上朝这些方向靠近。他们综合这一切内容,提出了实际鸟群的简化模型,即我们所说的粒子群算法。

粒子群算法是一个非常简单的算法,且能够有效地优化各种函数。从某种程度上说,此算法介于遗传算法和进化规划之间。此算法非常依赖于随机的过程,这也是和进化规划的相似之处。此算法中朝全局最优和局部最优靠近的调整非常类似于遗传算法中的交叉算子。此算法还使用了适应值的概念,这是所有进化计算方法所共有的特征。

基本粒子群算法在粒子群算法中,每个个体称为一个“粒子”,其实每个粒子代表一个潜在的解。例如,在一个 D D D维的目标搜索空间中,每个粒子看成是空间内的一个点。设群体由 m m m个粒子构成。 m m m也被称为群体建模,过大的 m m m会影响算法的运算速度和收敛性。设 z i = ( z i 1 , z i 2 , ? ? , z i D ) z_i=(z_{i1}, z_{i2}, \cdots, z_{iD}) zi?=(zi1?,zi2?,?,ziD?)为第 i i i个粒子的 D D D维位置向量,根据事先设定适应值函数(与要解决的问题有关)计算 z i z_i zi?当前的适应值,即可衡量粒子位置的优劣。 v i = ( v i 1 , v i 2 , ? ? , v i D ) vi=(v_{i1}, v_{i2}, \cdots, v_{iD}) vi=(vi1?,vi2?,?,viD?)为粒子 i i i的飞行速度,即粒子移动的距离; p i = ( p i 1 , p i 2 , ? ? , p i D ) p_i=(p_{i1}, p_{i2}, \cdots, p_{iD}) pi?=(pi1?,pi2?,?,piD?)为粒子迄今为止搜索到的最优位置; p g = ( p g 1 , p g 2 , ? ? , p g D ) p_g=(p_{g1}, p_{g2}, \cdots, p_{gD}) pg?=(pg1?,pg2?,?,pgD?)为整个粒子群迄今为止搜索到的最优位置。

在每次迭代中,粒子根据以下式子更新速度和位置:
v i d k + 1 = v i d k + c 1 r 1 ( p i d ? z i d k ) + c 2 v 2 ( p g d ? z i d k ) z i d k + 1 = z i d k + i d k + 1 v_{id}^{k+1}=v_{id}^k+c_1r_1(p_{id}-z_{id}^k)+c_2v_2(p_{gd}-z_{id}^k)\\ \quad\\ z_{id}^{k+1}=z_{id}^k+_{id}^{k+1} vidk+1?=vidk?+c1?r1?(pid??zidk?)+c2?v2?(pgd??zidk?)zidk+1?=zidk?+idk+1?

其中, i = 1 , 2 , ? ? , m i=1, 2, \cdots, m i=1,2,?,m d = 1 , 2 , ? ? , D d=1, 2, \cdots, D d=1,2,?,D k k k是迭代次数, r 1 r_1 r1? r 2 r_2 r2? [ 0 , 1 ] [0, 1] [0,1]之间的随机数,这两个参数是用来保持群体的多样性; c 1 c_1 c1? c 2 c_2 c2?为学习因子,也称加速因子,其使粒子具有自我总结和向群体中优秀个体学习的能力,从而向自己的历史最优点以及群体内历史最优点靠近。这两个参数对粒子群算法的收敛起的作用不是很大,但如果适当调整这两个参数,可以减少局部最小值的困扰,当然也会使收敛速度变快。由于粒子群算法中没有实际的机制来控制粒子速度,所以有必要对速度的最大值进行限制。当速度超过这个阈值时,设其为 v max v_\text{max} vmax?,这个参数被证明是非常重要的,因为值太大会导致粒子跳过最好解,但太小的话又会导致对搜索空间的不充分搜索。此外速度 v i v_i vi?最小取值为 v min v_\text{min} vmin?,位置 Z i Z_i Zi?的取值范围为 Z max ~ Z min Z_\text{max}\sim Z_\text{min} Zmax?Zmin?

v i d k + 1 v_{id}^{k+1} vidk+1?的第二项是“认知”部分(Cognition Part),代表了粒子对自身的学习。而公式的第三项是“社会”部分(Social Part),代表着粒子间的协作。上式正是粒子根据它上一次迭代的速度、它当前位置和自身最好经验与群体最好经验之间的距离来更新速度。

从此可得到粒子群算法是主要遵循了五个基本原则,定义内容如下

  • 邻近原则(Proximity):粒子群必须能够执行简单的空间和时间计算。
  • 品质原则(Quality):粒子群必须能够对周围环境的品质因素有所反应(变量pbestgbest)隐含着这一原则。
  • 多样性反应原则(Diverse Response):粒子群不应该在过于狭窄的范围内活动。④定性原则(Stability):粒子群不应该在每次环境改变的时候都改变自身的行为。⑤适应性原则(Adaptability):在能够接受的计算量下,粒子群需能够在适当的时候改变它们的行为。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:07:25  更:2022-03-21 21:11:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:50:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码