粒子群算法(PSO)优化RBF神经网络实践

2023-11-16

算法原理及流程

关于RBF神经网络的细节详见:RBF神经网络学习及实践

关于PSO算法的细节详见:粒子群优化算法(PSO)python实践

PSO算法优化RBF神经网络训练流程图如下所示。
在这里插入图片描述

代码实现

代码直接使用文章RBF神经网络学习及实践粒子群优化算法(PSO)python实践中的代码框架。

为了能在PSO类内部计算fitness,我们给PSO类初始化方法添加rbfn参数,方便调用rbfn进行训练和计算适应度(适应度直接采用均方误差)。

self.rbfn = rbfN

修改RBFN类中的训练测试函数,使之返回适应度。

def test(self):
G = self._calcAct(self.X)
Y_pre = np.dot(G, self.W)
# 计算整体均方误差
E = 0.5 * (np.linalg.norm(Y_pre - self.Y)) ** 2
return E

def predict(self, x):
G = self._calcAct(x)
Y_pre = np.dot(G, self.W)
return Y_pre

测试主函数

num_sample, num_center, sample_dim = 30, 3, 1
# 数据生成
x_train = np.linspace(-4, 4, num_sample).reshape(-1, 1)
y_train = np.multiply(1.1 * (1 - x_train + 2 * x_train ** 2), np.exp(-0.5 * x_train ** 2))
x_test = np.linspace(-4, 4, 500).reshape(-1, 1)
y_test = np.multiply(1.1 * (1 - x_test + 2 * x_test ** 2), np.exp(-0.5 * x_test ** 2))
# PSO-RBF
rbfn = RBFN(1, num_center, 1, x_train, y_train)
pso = PSO_RBFN(num_center * sample_dim, 30, 400, rbfN = rbfn)
pso.pso()
# print(pso.g_best)
rbfn.train(pso.g_best)
y_pre = rbfn.predict(x_test)
# 绘图
plt.figure(1)
plt.plot(x_test, y_pre, 'k')
plt.plot(x_test, y_test, 'r:')
plt.ylabel('y')
plt.xlabel('x')
for i in range(len(x_train)):
    plt.plot(x_train[i], y_train[i], 'go', markerfacecolor = 'none')
plt.legend(labels = ['reconstruction', 'original', 'sample point'], loc = 'lower left')
plt.show()

测试PSO适应度收敛曲线如下图所示。

11133

PSO-RBFN毕竟结果如下。

Figu1

其中绿色空心圆点为样本数据,红色虚线为期望数据,黑色实线为预测数据。

结果分析与总结

  • PSO粒子与RBFN中心点

    这两个概念我曾混淆,认为:PSO优化RBFN时,每个中心点都编码成一个粒子。但是随后又想,既然在PSO中需要频繁计算每个粒子的适应度,而RBFN的预测结果是由所有中心点共同线性加权决定的,所以这个想法不成立。实际上,我们引入PSO算法的目的在于更好地优化RBFN,使其找到最优的网络构建参数:隐层中心点、方差、输出层到结果的权值。只要隐层中心点确定,方差可以由如下公式计算得到:

    σ = d max ⁡ 2 n \sigma=\frac{d_{\max }}{\sqrt{2 n}} σ=2n dmax
    这里 d max ⁡ \mathrm{d}_{\max } dmax 是选取中心的之间的最大距离。权值也可以通过伪逆法求解得到。

    image-20221109213729271

    因此,我们只需找到构建RBFN的最优中心点即可,即粒子编码中包括基函数中心值。设有 m m m 个中心点,每个中心点为 k k k 维(中心点维度等于输入样本数据维度),那么,每个粒子的位置和速度均为 m × k m\times{k} m×k 维。

  • 粒子位置限制和速度限制

    对于粒子的位置限制,取决于输入样本的各个维度的取值域,如果是取值无约束,可注释掉位置限制相关代码。对于速度限制,一般取最大速度取维度位置变化范围的10%~20%,在测试代码中粒子速度范围限制在[-1,1]之间。

  • RBFN中心点个数确定和初始化

    在测试代码中,对于RBFN中心点个数取3,且在 [ X m i n , X m a x ] [X_{min},X_{max}] [Xmin,Xmax] 中均匀随机初始化,这属于比较简单粗暴的了。正常来说,一般是使用聚类进行初始化。如指定中心点个数进行K-Means聚类得到聚类中心初始化中心点位置。但是K-Means算法的缺点是需要指定聚类中心个数,所以可以考虑采用减法聚类Subtrative Clustering迭代得到一定数量的聚类中心点位置。

  • 样本数据归一化

    对于样本数据的不同维度,其数据量纲、量纲单位、数量级存在差别,为防止计算饱和,需要对其进行归一化处理,以建立各类数据的可比性。

    • min-max标准化

      min-max标准化最终将样本数据限定在[0,1]范围内,其转化函数为:
      X = X − X m i n X m a x − X m i n X=\frac{X-X_{min}}{X_{max}-X_{min}} X=XmaxXminXXmin
      式中 X X X 为样本数据, X m a x X_{max} Xmax 为样本数据最大值, X m i n X_{min} Xmin 为最小值。

    • z-score标准化

      经过 z-score标准化处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
      z = x − μ σ z=\frac{x-\mu}{\sigma} z=σxμ
      其中 μ \mu μ 为样本数据的均值, σ \sigma σ 为样本数据的标准差, x x x 为样本数据。

参考

[1] 庹婧艺,徐冰峰,徐悦,等. 基于PSO算法优化的RBF神经网络水厂混凝投药控制[J]. 工业安全与环保,2022,48(9):83-86. DOI:10.3969/j.issn.1001-425X.2022.09.020.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

粒子群算法(PSO)优化RBF神经网络实践 的相关文章

  • input的onchange事件实际触发条件与解决方法

    input中onchange事件已经属于元老级别了 并且现在同onclick一样使用频率很高 然而onchange的机制实际上有很多童鞋并不清楚 我们通过实例来分析这个事件的特征 触发onchange 首先页面有一个input标签 并且已绑
  • python 多线程 线程池的四种实现方式

    python 线程池的四种实现方式 线程简述 一个程序运行起来后 一定有一个执行代码的东西 这个东西就是线程 一般计算 CPU 密集型任务适合多进程 IO密集型任务适合多线程 一个进程可拥有多个并行的 concurrent 线程 当中每一个
  • 【转】开发基于ASP.NET WebService的图片验证码服务

    原文地址 http www webjx com htmldata 2006 01 21 1137824356 html 最近 工作中接到一项任务 开发一个页面验证码功能 查阅了一些网上的资料 并结合以前的绘图方面的知识 实现了如下的解决方案
  • CodeFun如期而至

    背景 将设计稿转代码是前端工程师日常不断重复的工作 这部分工作复杂度较低但工作占比较高 往往又比较枯燥繁琐 有时候开发迭代周期短 静态页面又多 常常让有些前端开发苦不堪言 那么 有没有一款设计稿自动生成代码的工具 减少前端工程师的工作量 提
  • node.js

    node js 关于报错及解决方案 问题一 问题二 问题三 一 Node js基础 1 认识Node js 2 开发环境搭建 3 模块 包 commonJS 4 Npm Yarn 5 内置模块 6 路由 二 Express 1 特色 2 安
  • hadoop 学习笔记

    基于hadoop的贝叶斯文本分类器实现过程 贝叶斯基础理论 这个东西的项目概览 对这个工程总体的流程可以参考这个文献里面的做法即可 参考文献1 远程原件目录 user coderlau input hadoop文件系统命令行主要是hdfs
  • android 电视安装apk文件夹,智能电视无法识别apk文件怎么办?简单几招教你搞定...

    在双十一购买完智能电视后 安装自己喜欢的软件 或许是在正常不过的事情了 但有时候我们会碰到一些APK无法识别 这个时候还以为会认为自己买的是假货 但实际上 这并不是电视的问题 而今天小编就教大家 一旦碰倒APK无法识别时应该如何解决 帮助你
  • 常用语言单元测试框架入门

    本文主要介绍Python java go C OC常用单元测试框架 用于了解各种语言单测 一 python单元测试Pytest 1 Pytest主要功能 pytest是python的一种单元测试框架 同自带的Unittest测试框架类似 相
  • 2023 最新互联网大厂Java面经分享:25 分类、1000 道 Java 面试真题(50w 字解析)

    作为 Java 程序员 选择学习什么样的技术 什么技术该不该学 去招聘网站上搜一搜 看看岗位要求就十分清楚了 自己具备的技术和能力 直接影响到你工作选择范围和能不能面试成功 如果想进大厂 那就需要在 Java 核心技术栈上面好好准备了 具体
  • 通过增加模型的大小来加速Transformer的训练和推理

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Eric Wallace 编译 ronghuaiyang 导读 你没有看错 确实是通过增大模型的大小 大家别忘了 在训练的时候 有个隐含条件 那就是模型需要训练到收敛 模型训练会
  • SQL Server 变量

    变量的种类 在T SQL中 变量按照生存范围分为 局部变量和 全局变量 1 全局变量是由系统定义的 在整个SQL Server实例内都能访问到的变量 以 作为第一个字符 用户只能访问 不可以赋值 2 局部变量由用户定义 生命周期只在一个批处
  • 哈希函数的特征_哈希函数及其特征

    哈希函数的特征 Prerequisite Hashing data structure 先决条件 哈希数据结构 The hash function is the component of hashing that maps the keys
  • 机器学习之SVM支持向量机

    目录 经典SVM 软间隔SVM 核SVM SVM分类器应用于人脸识别 SVM优点 SVM缺点 经典SVM 支持向量机 Support Vector Machine SVM 是一种二分类模型 其基本思想是在特征空间中找到一个最优的超平面 使得
  • UWB系统的定位精度影响因素

    UWB系统的定位精度影响因素 影响UWB定位精度的因素较多 主要包括 多径效应 非视距传播 多址干扰 参考基站数量 参考基站位置和时钟同步误差等因素 1 多径效应 超宽带信号在室内传播过程中受到复杂的室内环境 如墙体 窗体及室内障碍物等 的
  • go的配置文件

    go湖南老乡 2018 2 5 17 55 54 package main import github com kylelemons go gypsy yaml fmt type reply to findnode neighbors st
  • 初学者用Eclipse和IDEA哪个好用一点?

    idea 毫无疑问 它已经强大到各处吊打eclipse了 新人更是推荐idea 它的语法提示十分智能 假如你写了一段很傻的代码 它会提示你使用更优写法 只需要点一下就可以自动变成更优写法了 普通for自动转增强for 自动转lambda语法

随机推荐

  • SpringBoot版本升级 2.4.5-->2.7.9 遇到的问题

    原项目功能部署 SpringCache Swagger 项目Boot版本升级遇到的问题 问题一 无法启动 报错信息为 org springframework context ApplicationContextException Faile
  • 查看Mysql表的引擎

    show create table 表名
  • 三.数 据 链 路 层

    数据链路层是实现设备之间通信的非常重要的一层 数据链路层的作用 数据链路层使用的信道 1 使用点对点信道的数据链路层 1 1 数据链路和帧 链路 link 是一条无源的点到点的物理线路段 中间没有任何其他的交换结点 一条链路只是一条通路的一
  • 数据分析之-pandas

    1 pandas库安装导入 windows下和linux下都可以使用pip安装 安装之前最好把pip升级到最新版 python m pip install upgrade pip 升级pip pip install pandas 安装pan
  • myabtis-plus 代码生成器自定义模板

    mybatis plus代码生成器默认生成的controller是下面这样的 一个空的controller RestController RequestMapping sysUserRoleRelevance public class Sy
  • JavaScript中浮点数精确值问题

    js中规定安全整数的范围是 2的53次方至2的53次方 也就是 9007199254740992 9007199254740992 在JavaScript中0 1 0 2不等于0 3的问题 0 1 0 2 0 300000000000000
  • 深度学习系统为什么容易受到对抗样本的欺骗?

    转自 https zhuanlan zhihu com p 89665397 本文作者 kurffzhou 腾讯 TEG 安全工程师 最近 Nature发表了一篇关于深度学习系统被欺骗的新闻文章 该文指出了对抗样本存在的广泛性和深度学习的脆
  • LeetCode 7. 整数反转(C语言)

    Description 给出一个 32 位的有符号整数 你需要将这个整数中每位上的数字进行反转 示例 1 输入 123 输出 321 示例 2 输入 123 输出 321 示例 3 输入 120 输出 21 注意 假设我们的环境只能存储得下
  • 【01规划】POJ 3621 Sightseeing Cows

    POJ 3621 Sightseeing Cows 题意 给定一张 n 个点 m 条边的有向图 每个点都有一个权值 f i 每条边都有一个权值 t i 求图中的一个环 使 环上各点的权值之和 除以 环上各边的权值之和 最大 输出这个最大值
  • MVC 实现登录功能

    1 表单 2 数据层 3 逻辑层 4 servlet分发控制器
  • 高校巡讲总结—侯伯薇讲师

    这个月里面 借助CSDN的平台 在三所高校中做了 程序员修炼之路 的巡讲 在其中讲述了自己的一些经历 并和同学们聊了学习 思考和分享这三个要素 三所高校各自有各自的特点 感觉很有意思 一一叙述如下 首先 第一站是在辽宁工程技术大学 位于葫芦
  • 总结Windows下安装WSL与升级WSL2的方法

    目录 1 安装WSL1的方法 2 安装WSL2的方法 3 升级WSL1到WSL2的方法 1 打开win10的设置 搜索windows功能 打开启用或者关闭Windows功能 2 勾选以下2个地方 并重启 3 下载WSL2升级包 并点击安装
  • JS原型

    原型的概念 实例对象中 proto 是原型 是一个属性也是一个对象 是给浏览器使用的 是不标准的 这个叫隐式原型 构造函数中的prototype是原型 是一个属性也是一个对象 是给程序员用的 是标准的 proto 原型是浏览器使用的 有些浏
  • JDBC-数据库连接字符串

    SQLSERVER Connection conn DriverManager getConnection jdbc sqlserver localhost 1433 sa Oracle Connection conn DriverMana
  • 什么是rem单位和em单位?它们有什么区别?

    聚沙成塔 每天进步一点点 专栏简介 rem 和 em 单位 rem 单位 Root Em em 单位 区别总结 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到
  • vue使用echarts与echarts-gl实现3d地图与 3d柱状图

    目录 前言 一 下载echarts与echarts gl 二 vue引入与页面使用 1 引入 2 页面引入echarts gl 三 下载地图数据 四 使用地图 1 html初始化地图放入位置 2 data创建变量 3 创建地图 4 钩子函数
  • remote: Support for password authentication was removed on August 13, 2021

    1 github在2021年8月13日这天搞事情 如果这天你提交了github代码报错如下 remote Support for password authentication was removed on August 13 2021 P
  • 第3章 分布式文件系统HDFS

    3 1 分布式文件系统 3 1 1 计算机集群结构 3 1 2 分布式文件系统的结构 两类节点 1 主节点 Master Node 或称为 名称节点 NameNode 负责文件和目录的创建 删除和重命名等 同时管理着数据节点和文件块的映射关
  • python噪声

    1 skimage的API noise gs img util random noise img mode gaussian gaussian 高斯加性噪声 noise salt img util random noise img mode
  • 粒子群算法(PSO)优化RBF神经网络实践

    算法原理及流程 关于RBF神经网络的细节详见 RBF神经网络学习及实践 关于PSO算法的细节详见 粒子群优化算法 PSO python实践 PSO算法优化RBF神经网络训练流程图如下所示 代码实现 代码直接使用文章RBF神经网络学习及实践和